22 HEPMC3_ERROR_LEVEL(100,
"WriterDOT: could not open output file: "<<filename )
36 auto* ofs =
dynamic_cast<std::ofstream*
>(
m_stream);
37 if (ofs && !ofs->is_open())
return;
39 if (ofs) ofs->close();
46 if (pd==81||pd==82||pd<25) parton=
true;
48 (pd/1000==1||pd/1000==2||pd/1000==3||pd/1000==4||pd/1000==5)
49 &&(pd%1000/100==1||pd%1000/100==2||pd%1000/100==3||pd%1000/100==4)
50 &&(pd%100==1||pd%100==3)
62 for(
const auto& v: evt.
vertices() ) {
67 if (v->status() == 2) {
m_cursor += sprintf(
m_cursor,
"node [color=\"green\"];\n");}
75 for(
const auto& p: evt.
beams() ) {
76 if (!p->end_vertex())
continue;
78 m_cursor += sprintf(
m_cursor,
"v0 -> v%d [label=\"%d(%d)\"];\n", -p->end_vertex()->id(),p->id(),p->pid());
81 for(
const auto& v: evt.
vertices() ) {
82 for(
const auto& p: v->particles_out() ) {
95 m_cursor += sprintf(
m_cursor,
"v%d -> o%d [label=\"%d(%d)\"];\n", -v->id(), p->id(), p->id(), p->pid());
100 m_cursor += sprintf(
m_cursor,
"v%d -> v%d [label=\"%d(%d)\"];\n", -v->id(), -p->end_vertex()->id(), p->id(), p->pid());
114 }
catch (
const std::bad_alloc& e) {
#define HEPMC3_WARNING_LEVEL(LEVEL, MESSAGE)
Macro for printing HEPMC3_HEPMC3_WARNING messages.
#define HEPMC3_ERROR_LEVEL(LEVEL, MESSAGE)
Macro for printing error messages.
Definition of class WriterDOT converter of GenEvent into .dot format.
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() override
Close file stream.
std::ofstream m_file
Output file.
unsigned long m_buffer_size
Buffer size.
void write_event(const GenEvent &evt) override
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.