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();
103 pt.emplace_back( momentum.perp()/CLHEP::GeV );
104 phi.emplace_back( momentum.phi() < 0 ? momentum.phi() + 2*
M_PI : momentum.phi() );
105 eta.emplace_back( momentum.pseudoRapidity() );
106 rhoVertex.emplace_back( vertex.perp()*CLHEP::mm/CLHEP::cm );
107 phiVertex.emplace_back( vertex.phi() < 0 ? vertex.phi() + 2*
M_PI : vertex.phi() );
108 zVertex.emplace_back( vertex.z()*CLHEP::mm/CLHEP::cm );
109 code.emplace_back( pdgCode );
115 const auto nEntries = pt.size();
116 dataMap[
"pt"] = std::move(pt);
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);
122 dataMap[
"code"] = std::move(code);
123 dataMap[
"id"] = std::move(
id);
132 std::string emptyStr=
"";
133 return FormatTool->AddToEvent(
dataTypeName(), emptyStr, &dataMap);