63 if (evtStore()->
retrieve(TrackRecordColl, CollNameItr).isSuccess()) break ;
67 if (TrackRecordColl == NULL ) {
69 return StatusCode::RECOVERABLE;
76 DataVect rhoVertex; rhoVertex.reserve(TrackRecordColl->
size());
77 DataVect phiVertex; phiVertex.reserve(TrackRecordColl->
size());
78 DataVect zVertex; zVertex.reserve(TrackRecordColl->
size());
83 for (
const auto & record : *TrackRecordColl ) {
86 int pdgCode = record.GetPDGCode();
89 if (abs(pdgCode) != 13) {
90 ATH_MSG_DEBUG(
"Reject non-muon track with PDG ID " << pdgCode );
95 HepGeom::Point3D<double> vertex = record.GetPosition();
96 HepGeom::Vector3D<double> momentum = record.GetMomentum();
99 pt.emplace_back( momentum.perp()/CLHEP::GeV );
100 phi.emplace_back( momentum.phi() < 0 ? momentum.phi() + 2*
M_PI : momentum.phi() );
101 eta.emplace_back( momentum.pseudoRapidity() );
102 rhoVertex.emplace_back( vertex.perp()*CLHEP::mm/CLHEP::cm );
103 phiVertex.emplace_back( vertex.phi() < 0 ? vertex.phi() + 2*
M_PI : vertex.phi() );
104 zVertex.emplace_back( vertex.z()*CLHEP::mm/CLHEP::cm );
105 code.emplace_back( pdgCode );
111 const auto nEntries = pt.size();
112 dataMap[
"pt"] = std::move(pt);
113 dataMap[
"phi"] = std::move(
phi);
114 dataMap[
"eta"] = std::move(
eta);
115 dataMap[
"rhoVertex"] = std::move(rhoVertex);
116 dataMap[
"phiVertex"] = std::move(phiVertex);
117 dataMap[
"zVertex"] = std::move(zVertex);
118 dataMap[
"code"] = std::move(code);
119 dataMap[
"id"] = std::move(
id);
128 std::string emptyStr=
"";
129 return FormatTool->AddToEvent(
dataTypeName(), emptyStr, &dataMap);