7 #include "GaudiKernel/IPartPropSvc.h"
12 #include "HepPDT/ParticleData.hh"
13 #include "HepPDT/ParticleDataTable.hh"
14 #include "CLHEP/Geometry/Point3D.h"
15 #include "CLHEP/Geometry/Vector3D.h"
16 #include "CLHEP/Units/SystemOfUnits.h"
36 declareProperty(
"TrackRecCollNames",
m_TrackRecCollNames,
"List of track records collections to try in this order - only one is retrieved");
47 return StatusCode::SUCCESS;
66 if ( !evtStore()->contains<TrackRecordCollection>( CollNameItr )){
continue; }
67 if (evtStore()->
retrieve(TrackRecordColl, CollNameItr).isSuccess()) break ;
71 if (TrackRecordColl == NULL ) {
73 return StatusCode::RECOVERABLE;
80 DataVect rhoVertex; rhoVertex.reserve(TrackRecordColl->
size());
81 DataVect phiVertex; phiVertex.reserve(TrackRecordColl->
size());
82 DataVect zVertex; zVertex.reserve(TrackRecordColl->
size());
87 for (
const auto & record : *TrackRecordColl ) {
90 int pdgCode = record.GetPDGCode();
93 if (abs(pdgCode) != 13) {
94 ATH_MSG_DEBUG(
"Reject non-muon track with PDG ID " << pdgCode );
99 HepGeom::Point3D<double>
vertex = record.GetPosition();
100 HepGeom::Vector3D<double>
momentum = record.GetMomentum();
105 eta.emplace_back(
momentum.pseudoRapidity() );
109 code.emplace_back( pdgCode );
117 dataMap[
"phi"] = std::move(phi);
118 dataMap[
"eta"] = std::move(eta);
119 dataMap[
"rhoVertex"] = std::move(rhoVertex);
120 dataMap[
"phiVertex"] = std::move(phiVertex);
121 dataMap[
"zVertex"] = std::move(zVertex);
132 std::string emptyStr=
"";