10 #include "Math/Vector4D.h"
19 std::map<std::pair<uint64_t,unsigned int>,
evInf_entry>& Event_Info)
const {
21 std::vector<ROOT::Math::PtEtaPhiEVector> truthParticles, truthParticles_ent, truthParticles_pos;
23 std::vector<ROOT::Math::XYZVector>
vertex;
24 float phiEntry_tmp = 0;
25 float phiPosition_tmp = 0;
26 float etaEntry_tmp = 0;
27 float etaPosition_tmp = 0;
29 ROOT::Math::XYZVector vertex_tmp(0.,0.,0.);
31 ROOT::Math::PtEtaPhiEVector thePart, theInfo;
32 auto MuEntry_Particle_n = (trackRecordCollection!=
nullptr)?trackRecordCollection->
size():0;
34 if( truthContainer !=
nullptr ){
35 for(
const auto subEvent : *truthContainer) {
36 for(
const auto&
particle : *subEvent){
40 if(trackRecordCollection!=
nullptr){
41 for(
const auto & mit : *trackRecordCollection ) {
42 const CLHEP::Hep3Vector mumomentum = mit.GetMomentum();
43 const CLHEP::Hep3Vector muposition = mit.GetPosition();
46 phiEntry_tmp = mumomentum.getPhi();
47 etaEntry_tmp = mumomentum.getEta();
48 phiPosition_tmp = muposition.getPhi();
49 etaPosition_tmp = muposition.getEta();
54 vertex_tmp = subEvent->vertices().front()->position();
57 for(
const auto vit : subEvent->vertex_range())
61 const HepMC::GenVertex *vertex1 = vit;
62 const HepMC::FourVector& position = vertex1->position();
63 vertex_tmp.SetXYZ(position.x(),position.y(),position.z());
71 for(
unsigned int ipart=0; ipart < truthParticles.size(); ipart++){
72 if( std::abs(thePart.Pt()-truthParticles[ipart].Pt()) < 0.001 ||
73 std::abs(thePart.Eta()-truthParticles[ipart].Eta()) < 0.001 ||
75 std::abs(thePart.E()-truthParticles[ipart].E()) < 0.001 ) addIt =
false;
78 truthParticles.push_back(thePart);
80 vertex.push_back(vertex_tmp);
81 pdg.push_back(pdg_tmp);
82 truthParticles_ent.push_back(ROOT::Math::PtEtaPhiEVector(
momentum.perp(),etaEntry_tmp ,phiEntry_tmp ,
momentum.e()));
83 truthParticles_pos.push_back(ROOT::Math::PtEtaPhiEVector(
momentum.perp(),etaPosition_tmp,phiPosition_tmp,
momentum.e()));
91 uint64_t event = ctx.eventID().event_number();
92 for(
unsigned int i=0;
i<truthParticles.size();
i++) {
94 truthParticles[
i].
E(), truthParticles[
i].
Pt(),
95 truthParticles[
i].
Eta(), truthParticles_pos[
i].
Eta(), truthParticles_ent[
i].
Eta(),
96 truthParticles[
i].
Phi(), truthParticles_pos[
i].
Phi(), truthParticles_ent[
i].
Phi(),
97 truthParticles[
i].Theta(), truthParticles_pos[
i].Theta(), truthParticles_ent[
i].Theta(), truthParticles_ent[
i].Theta()-truthParticles_pos[
i].Theta(),
98 j,MuEntry_Particle_n,
vertex[
i]);
99 Event_Info[{
event,
i}] = std::move(particle_info);
102 return StatusCode::SUCCESS;
105 evInf_entry::evInf_entry(
uint64_t event,
int pdg,
double e,
double p,
double ieta,
double peta,
double eeta,
double iphi,
double pphi,
double ephi,
double ithe,
double pthe,
double ethe,
double dth,
106 int trn,
int mun,
const ROOT::Math::XYZVector& tex):
107 athena_event(
event),pdg_id(pdg),
E(
e),
pt(
p),eta_ip(ieta),eta_pos(peta),eta_ent(eeta),phi_ip(iphi),phi_pos(pphi),phi_ent(ephi),theta_ip(ithe),theta_pos(pthe),theta_ent(ethe),
108 dtheta(dth),truth_n(trn),mu_n(mun),
vertex(tex) {}