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){
37 const HepMC::FourVector momentum = particle->momentum();
39 thePart.SetCoordinates(momentum.perp(),momentum.eta(),momentum.phi(),momentum.e());
40 if(trackRecordCollection!=
nullptr){
41 for(
const auto & mit : *trackRecordCollection ) {
42 const CLHEP::Hep3Vector mumomentum = mit.GetMomentum();
43 const CLHEP::Hep3Vector muposition = mit.GetPosition();
44 if(!trackRecordCollection->empty() &&
HepMC::barcode(particle) == mit.barcode()) {
45 pdg_tmp = particle->pdg_id();
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;
evInf_entry(uint64_t event=0, int pdg=0, double e=0, double p=0, double ieta=0, double peta=0, double eeta=0, double iphi=0, double pphi=0, double ephi=0, double ithe=0, double pthe=0, double ethe=0, double dth=0, int trn=0, int mun=0, const ROOT::Math::XYZVector &tex=ROOT::Math::XYZVector())
ROOT::Math::XYZVector vertex