65 uint64_t evtnum = std::max(0,evt->event_number());
69 evtnum = evtInfo->eventNumber();
74 return StatusCode::SUCCESS;
79 return StatusCode::SUCCESS;
88 HepMC::Print::line(std::cout, *evt);
95 std::cout <<
"GenEvent: #" << evt->event_number()
97 <<
" SignalProcessGenVertex Barcode: "
99 std::cout <<
" Entries this event: " << evt->vertices_size() <<
" vertices, "
100 << evt->particles_size() <<
" particles.\n";
101 if (evt->heavy_ion()) {
102 std::cout <<
" HeavyIon: jatt=" << evt->heavy_ion()->Ncoll_hard
103 <<
" np=" << evt->heavy_ion()->Npart_proj
104 <<
" nt=" << evt->heavy_ion()->Npart_targ
105 <<
" ncoll=" << evt->heavy_ion()->Ncoll
106 <<
" specn=" << evt->heavy_ion()->spectator_neutrons
107 <<
" specp=" << evt->heavy_ion()->spectator_protons
108 <<
" n01=" << evt->heavy_ion()->N_Nwounded_collisions
109 <<
" n10=" << evt->heavy_ion()->Nwounded_N_collisions
110 <<
" n11=" << evt->heavy_ion()->Nwounded_Nwounded_collisions
111 <<
" impact=" << evt->heavy_ion()->impact_parameter
112 <<
" evplane=" << evt->heavy_ion()->event_plane_angle
113 <<
" ecc=" << evt->heavy_ion()->eccentricity
114 <<
" sigmaNNinel=" << evt->heavy_ion()->sigma_inel_NN
118 std::cout <<
"HeavyIon: EMPTY"
124 std::cout <<
" Weights(" << evt->weights().size() <<
")=";
125 for (
auto wgt = evt->weights().begin();
126 wgt != evt->weights().end(); wgt++ ) { std::cout << *wgt <<
" "; }
132 if (evt->pdf_info()) {
133 std::cout <<
"PdfInfo: id1=" << evt->pdf_info()->parton_id[0]
134 <<
" id2=" << evt->pdf_info()->parton_id[1]
135 <<
" x1=" << evt->pdf_info()->x[0]
136 <<
" x2=" << evt->pdf_info()->x[1]
137 <<
" q=" << evt->pdf_info()->scale
138 <<
" xpdf1=" << evt->pdf_info()->pdf_id[0]
139 <<
" xpdf2=" << evt->pdf_info()->pdf_id[1]
143 std::cout <<
"PdfInfo: EMPTY"
148 char particle_legend[120];
149 sprintf( particle_legend,
" %9s %8s %-15s %4s %8s %8s (%9s,%9s,%9s,%9s,%9s)",
150 "Barcode",
"PDG ID",
"Name",
"Stat",
"ProdVtx",
"DecayVtx",
"Px",
"Py",
"Pz",
"E ",
"m");
151 std::cout << std::endl;
152 std::cout <<
" GenParticle Legend\n" << particle_legend <<
"\n";
154 sprintf( particle_legend,
" %60s (%9s,%9s,%9s,%9s)",
" ",
"Vx",
"Vy",
"Vz",
"Vct ");
155 std::cout << particle_legend << std::endl;
162 int p_pdg_id = p->pdg_id();
164 int p_stat = p->status();
165 int p_prodvtx = p->production_vertex()?
HepMC::barcode(p->production_vertex()):0;
170 double p_mass = p->generated_mass();
171 auto ap =
m_gendata->particleMass(std::abs(p_pdg_id));
173 ATH_MSG_DEBUG(
"PID " << std::abs(p_pdg_id) <<
" is not in particle data table");
177 sname =
m_gendata->particleName(std::abs(p_pdg_id)).value();
179 const size_t plusidx = sname.rfind(
"+");
180 if (plusidx != std::string::npos) {
181 sname.replace(plusidx, 1,
"-");
187 if (p_pdg_id == 21) sname=
"g";
188 else if (p_pdg_id == 1) sname=
"d";
189 else if (p_pdg_id == -1) sname=
"d~";
190 else if (p_pdg_id == 2) sname=
"u";
191 else if (p_pdg_id == -2) sname=
"u~";
192 else if (p_pdg_id == 3) sname=
"s";
193 else if (p_pdg_id == -3) sname=
"s~";
194 else if (p_pdg_id == 4) sname=
"c";
195 else if (p_pdg_id == -4) sname=
"c~";
196 else if (p_pdg_id == 5) sname=
"b";
197 else if (p_pdg_id == -5) sname=
"b~";
198 else if (p_pdg_id == 6) sname=
"t";
199 else if (p_pdg_id == -6) sname=
"t~";
201 else if (p_pdg_id == 91) sname=
"cluster";
202 else if (p_pdg_id == 92) sname=
"string";
203 else if (p_pdg_id == 9922212) sname=
"remn";
204 else if (p_pdg_id == 2101) sname=
"ud";
205 else if (p_pdg_id == 2203) sname=
"uu";
209 if (p_mass == 0 && (p_stat == 2 || (p_stat != 1 && p_pdg_id != 22))) {
213 const char* p_name = sname.c_str() ;
214 char particle_entries[120];
215 sprintf(particle_entries,
" %9i %8i %-15s %4i %8i %8i (%+9.3g,%+9.3g,%+9.3g,%+9.3g,%9.3g)",
216 p_bcode, p_pdg_id, p_name, p_stat, p_prodvtx, p_endvtx, mom.px(), mom.py(),mom.pz(), mom.e(), p_mass);
217 std::cout << particle_entries <<
"\n";
219 sprintf(particle_entries,
" %60s (%+9.3g,%+9.3g,%+9.3g,%+9.3g)",
" ",prodvtx.x(), prodvtx.y(),prodvtx.z(), prodvtx.t());
220 std::cout << particle_entries <<
"\n";
228 return StatusCode::SUCCESS;