9 m_buffer_size( 256*1024 )
12 HEPMC3_ERROR(
"WriterDOT: could not open output file: "<<filename )
22 m_buffer_size( 256*1024 )
27 std::ofstream* ofs =
dynamic_cast<std::ofstream*
>(
m_stream);
28 if (ofs && !ofs->is_open())
return;
30 if (ofs) ofs->close();
37 if (pd==81||pd==82||pd<25) parton=
true;
39 (pd/1000==1||pd/1000==2||pd/1000==3||pd/1000==4||pd/1000==5)
40 &&(pd%1000/100==1||pd%1000/100==2||pd%1000/100==3||pd%1000/100==4)
41 &&(pd%100==1||pd%100==3)
58 if (v->status() == 2)
m_cursor += sprintf(
m_cursor,
"node [color=\"green\"];\n");
66 for(
auto p: evt.
beams() ) {
67 if (!p->end_vertex())
continue;
69 m_cursor += sprintf(
m_cursor,
"v0 -> v%d [label=\"%d(%d)\"];\n", -p->end_vertex()->id(),p->id(),p->pid());
73 for(
auto p: v->particles_out() ) {
86 m_cursor += sprintf(
m_cursor,
"v%d -> o%d [label=\"%d(%d)\"];\n", -v->id(), p->id(), p->id(), p->pid());
91 m_cursor += sprintf(
m_cursor,
"v%d -> v%d [label=\"%d(%d)\"];\n", -v->id(), -p->end_vertex()->id(), p->id(), p->pid());
105 }
catch (
const std::bad_alloc& e) {
113 HEPMC3_ERROR(
"WriterDOT::allocate_buffer: could not allocate buffer!" )
#define HEPMC3_WARNING(MESSAGE)
Macro for printing HEPMC3_HEPMC3_WARNING messages.
#define HEPMC3_ERROR(MESSAGE)
Macro for printing error messages.
Definition of class WriterDOT.
Stores event-related information.
int event_number() const
Get event number.
std::vector< ConstGenParticlePtr > beams() const
Vector of beam particles.
const std::vector< ConstGenVertexPtr > & vertices() const
Get list of vertices (const)
const std::vector< ConstGenParticlePtr > & particles() const
Get list of particles (const)
void allocate_buffer()
allocates buffer for output
char * m_cursor
Cursor inside stream buffer.
char * m_buffer
Stream buffer.
void close()
Close file stream.
std::ofstream m_file
Output file.
unsigned long m_buffer_size
Buffer size.
void write_event(const GenEvent &evt)
Write event to file.
void flush()
flushes output buffer
void forced_flush()
flushes output buffer
std::ostream * m_stream
Output stream.
int m_style
style of dot file
WriterDOT(const std::string &filename, std::shared_ptr< GenRunInfo > run=std::shared_ptr< GenRunInfo >())
Constructor.
bool is_parton(const int &pd)
Detects if particle is parton. Might be used to draw partons different from hadrons.