15 #include "GaudiKernel/ServiceHandle.h"
18 #include "GaudiKernel/ITHistSvc.h"
19 #include "Gaudi/Property.h"
98 return StatusCode::SUCCESS;
111 return StatusCode::SUCCESS;
134 return StatusCode::FAILURE;
146 return StatusCode::SUCCESS;
150 for (
const HepMC::GenEvent* itr : *mcColl){
151 HepMC::GenEvent
evt = (*itr);
179 return StatusCode::SUCCESS;
188 const HepMC::FourVector fv(
p->momentum().px() / 1000.,
189 p->momentum().py() / 1000.,
190 p->momentum().pz() / 1000.,
191 p->momentum().e() / 1000.);
202 const HepMC::FourVector fv(
p->momentum().px() * 1000.,
203 p->momentum().py() * 1000.,
204 p->momentum().pz() * 1000.,
205 p->momentum().e() * 1000.);
236 m_FileBeam1 << evt_number <<
"\t" << std::setprecision(17)
237 <<
m_PosRP1.
x() << std::setprecision(17) <<
"\t"
238 <<
m_PosRP1.
y() <<
"\t" << std::setprecision(17)
239 <<
m_PosRP1.
z() <<
"\t" << std::setprecision(17)
240 <<
m_MomRP1.
x() << std::setprecision(17) <<
"\t"
241 <<
m_MomRP1.
y() <<
"\t" << std::setprecision(17)
242 <<
m_MomRP1.
z() <<
"\t" << std::setprecision(17)
244 m_FileBeam2 << evt_number <<
"\t" << std::setprecision(17)
245 <<
m_PosRP3.
x() << std::setprecision(17) <<
"\t"
246 <<
m_PosRP3.
y() <<
"\t" << std::setprecision(17)
247 <<
m_PosRP3.
z() <<
"\t" << std::setprecision(17)
248 <<
m_MomRP3.
x() << std::setprecision(17) <<
"\t"
249 <<
m_MomRP3.
y() <<
"\t" << std::setprecision(17)
250 <<
m_MomRP3.
z() <<
"\t" << std::setprecision(17)
262 std::vector<FPTracker::Point> PosAtRP1;
263 std::vector<FPTracker::Point> PosAtRP3;
264 std::vector<FPTracker::Point> MomAtPR1;
265 std::vector<FPTracker::Point> MomAtPR3;
266 std::vector<double> EnergyRP1;
267 std::vector<double> EnergyRP3;
282 theta = std::acos(std::abs(
p->momentum().pz()) /
mom);
286 (!
p->end_vertex())) {
290 int pid =
p->pdg_id();
295 HepMC::FourVector Position =
p->production_vertex()->position();
297 HepMC::FourVector Momentum =
p->momentum();
308 if (
p->momentum().pz() > 0. &&
314 p1->production_vertex()->position().x() / 1000.,
315 p1->production_vertex()->position().y() / 1000.,
316 p1->production_vertex()->position().z() / 1000.,
319 p1->momentum().pz());
336 m_FileBeam1 << evt_number <<
"\t" << std::setprecision(17)
337 <<
m_PosRP1.
x() << std::setprecision(17) <<
"\t"
338 <<
m_PosRP1.
y() <<
"\t" << std::setprecision(17)
339 <<
m_PosRP1.
z() <<
"\t" << std::setprecision(17)
340 <<
m_MomRP1.
x() << std::setprecision(17) <<
"\t"
341 <<
m_MomRP1.
y() <<
"\t" << std::setprecision(17)
342 <<
m_MomRP1.
z() <<
"\t" << std::setprecision(17)
346 }
else if (
p->momentum().pz() < 0. &&
pid == 2212) {
350 p2->production_vertex()->position().x() / 1000.,
351 p2->production_vertex()->position().y() / 1000.,
352 p2->production_vertex()->position().z() / 1000.,
355 p2->momentum().pz());
370 m_FileBeam2 << evt_number <<
"\t" << std::setprecision(17)
371 <<
m_PosRP3.
x() << std::setprecision(17) <<
"\t"
372 <<
m_PosRP3.
y() <<
"\t" << std::setprecision(17)
373 <<
m_PosRP3.
z() <<
"\t" << std::setprecision(17)
374 <<
m_MomRP3.
x() << std::setprecision(17) <<
"\t"
375 <<
m_MomRP3.
y() <<
"\t" << std::setprecision(17)
376 <<
m_MomRP3.
z() <<
"\t" << std::setprecision(17)
389 ATH_MSG_ERROR(
"Strange: More than two protons in this event!");
398 ATH_MSG_INFO(
"Add transproted particle into HepMC event record Beam 1");
401 for(
int i=0;
i<(
int)PosAtRP1.size();
i++){
406 HepMC::FourVector PositionVectorRP1 = HepMC::FourVector(PosAtRP1.at(
i).x()*1000.,PosAtRP1.at(
i).y()*1000.,PosAtRP1.at(
i).z()*1000.,0.*1000.);
408 HepMC::FourVector MomentumVectorRP1 = HepMC::FourVector(MomAtPR1.at(
i).x(),MomAtPR1.at(
i).y(),MomAtPR1.at(
i).z(),EnergyRP1.at(
i));
413 VertexRP1->add_particle_out(ParticleRP1);
416 evt.add_vertex(VertexRP1);
419 ATH_MSG_INFO (
"Add transproted particle into HepMC event record Beam 2" );
420 for(
int i=0;
i<(
int)PosAtRP3.size();
i++){
425 HepMC::FourVector PositionVectorRP3 = HepMC::FourVector(PosAtRP3.at(
i).x()*1000.,PosAtRP3.at(
i).y()*1000.,PosAtRP3.at(
i).z()*1000.,0.*1000.);
427 HepMC::FourVector MomentumVectorRP3 = HepMC::FourVector(MomAtPR3.at(
i).x(),MomAtPR3.at(
i).y(),MomAtPR3.at(
i).z(),EnergyRP3.at(
i));
432 VertexRP3->add_particle_out(ParticleRP3);
436 evt.add_vertex(VertexRP3);