55 return StatusCode::SUCCESS;
59 return StatusCode::SUCCESS;
65 for ( ; McEvtCollItr != McEvtColl->
end(); ++McEvtCollItr)
66 NParticles += (*McEvtCollItr)->particles_size();
75 DataVect rhoVertex; rhoVertex.reserve(NParticles);
76 DataVect phiVertex; phiVertex.reserve(NParticles);
77 DataVect zVertex; zVertex.reserve(NParticles);
78 DataVect code; code.reserve(NParticles);
80 DataVect rhoEndVertex; rhoEndVertex.reserve(NParticles);
81 DataVect phiEndVertex; phiEndVertex.reserve(NParticles);
82 DataVect zEndVertex; zEndVertex.reserve(NParticles);
86 for ( McEvtCollItr = McEvtColl->
begin(); McEvtCollItr != McEvtColl->
end(); ++McEvtCollItr){
90 std::map<int,int> id_to_barcode_map;
91 if (barcodes) id_to_barcode_map = barcodes->id_to_barcode_map();
92 for (
const auto& particle: *(*McEvtCollItr) ) {
95 if ( particle->end_vertex() ) {
97 if ( particle->momentum().perp() <
m_MinPtCut) continue ;
99 if (particle->end_vertex()->position().perp() <
m_MinRhoCut ) continue ;
103 pt.emplace_back(particle->momentum().perp()/Gaudi::Units::GeV);
104 float thePhi = particle->momentum().phi();
105 phi.emplace_back( (thePhi<0) ? thePhi+=2*
M_PI : thePhi );
106 eta.emplace_back( particle->momentum().pseudoRapidity() );
107 code.emplace_back( particle->pdg_id() );
108 id.emplace_back( id_to_barcode_map.at(particle->id() ));
111 const auto& vertexprod = particle->production_vertex();
113 const auto& pos=vertexprod->position();
114 rhoVertex.emplace_back( std::sqrt(pos.x()*pos.x()+pos.y()*pos.y()+pos.z()*pos.z())*Gaudi::Units::mm/Gaudi::Units::cm );
115 float vtxPhi = pos.phi();
116 phiVertex.emplace_back( (vtxPhi<0)? vtxPhi+=2*
M_PI : vtxPhi );
117 zVertex.emplace_back( pos.z()*Gaudi::Units::mm/Gaudi::Units::cm );
119 rhoVertex.emplace_back( 0. );
120 phiVertex.emplace_back( 0. );
121 zVertex.emplace_back( 0. );
124 const auto& vertexend = particle->end_vertex();
126 const auto& pos=vertexend->position();
127 rhoEndVertex.emplace_back(std::sqrt(pos.x()*pos.x()+pos.y()*pos.y()+pos.z()*pos.z())*Gaudi::Units::mm/Gaudi::Units::cm);
128 float vtxPhi = pos.phi();
129 phiEndVertex.emplace_back( (vtxPhi<0)? vtxPhi+=2*
M_PI : vtxPhi );
130 zEndVertex.emplace_back(pos.z()*Gaudi::Units::mm/Gaudi::Units::cm);
132 rhoEndVertex.emplace_back( 0. );
133 phiEndVertex.emplace_back( 0. );
134 zEndVertex.emplace_back( 0. );
140 const auto nEntries = pt.size();
141 myDataMap[
"pt"] = std::move(pt);
142 myDataMap[
"phi"] = std::move(
phi);
143 myDataMap[
"eta"] = std::move(
eta);
144 myDataMap[
"code"] = std::move(code);
145 myDataMap[
"id"] = std::move(
id);
146 myDataMap[
"rhoVertex"] = std::move(rhoVertex);
147 myDataMap[
"phiVertex"] = std::move(phiVertex);
148 myDataMap[
"zVertex"] = std::move(zVertex);
149 myDataMap[
"rhoEndVertex"] = std::move(rhoEndVertex);
150 myDataMap[
"phiEndVertex"] = std::move(phiEndVertex);
151 myDataMap[
"zEndVertex"] = std::move(zEndVertex);