ATLAS Offline Software
Loading...
Searching...
No Matches
JiveXML::TruthMuonTrackRetriever Class Reference

Retrieves the muons information from the TrackRecordCollection. More...

#include <TruthMuonTrackRetriever.h>

Inheritance diagram for JiveXML::TruthMuonTrackRetriever:
Collaboration diagram for JiveXML::TruthMuonTrackRetriever:

Public Member Functions

 TruthMuonTrackRetriever (const std::string &type, const std::string &name, const IInterface *parent)
 Standard Constructor.
virtual StatusCode retrieve (ToolHandle< IFormatTool > &FormatTool)
 Retrieve all the data.
virtual std::string dataTypeName () const
 Return the name of the data type.
StatusCode initialize ()
 Default AthAlgTool methods.

Private Attributes

const std::string m_typeName
 The data type that is generated by this retriever.
std::vector< std::string > m_TrackRecCollNames
 A list of StoreGate names to probe in this order for the muon record collecton.

Detailed Description

Retrieves the muons information from the TrackRecordCollection.

  • Properties
    • TrackRecCollNames = ["MuonEntryLayer","MuonEntryRecord"] :
  • Retrieved Data
    • code : the PDG ID of the particle
    • id : the particle barcode
    • pt : transverse momentum
    • eta, phi : \(\eta\) and \(\phi\) of the momentum vector
    • rhoVertex,phiVertex,zVertex : position of the production vertex in \(\rho\), \(\phi\) and \(z\)

Definition at line 33 of file TruthMuonTrackRetriever.h.

Constructor & Destructor Documentation

◆ TruthMuonTrackRetriever()

JiveXML::TruthMuonTrackRetriever::TruthMuonTrackRetriever ( const std::string & type,
const std::string & name,
const IInterface * parent )

Standard Constructor.

This is the standard AthAlgTool constructor.

Parameters
typeAlgTool type name
nameAlgTool instance name
parentAlgTools parent owning this tool

Definition at line 24 of file TruthMuonTrackRetriever.cxx.

24 :
25 base_class(type, name, parent),
26 m_typeName("SMTr") {
27 //Fill the list with the names of track record collections to try
28 m_TrackRecCollNames.push_back("MuonEntryLayer");
29 m_TrackRecCollNames.push_back("MuonEntryRecord");
30
31 //Declare the properties
32 declareProperty("TrackRecCollNames",m_TrackRecCollNames,"List of track records collections to try in this order - only one is retrieved");
33
34 }
const std::string m_typeName
The data type that is generated by this retriever.
std::vector< std::string > m_TrackRecCollNames
A list of StoreGate names to probe in this order for the muon record collecton.

Member Function Documentation

◆ dataTypeName()

virtual std::string JiveXML::TruthMuonTrackRetriever::dataTypeName ( ) const
inlinevirtual

Return the name of the data type.

Definition at line 44 of file TruthMuonTrackRetriever.h.

44{ return m_typeName; };

◆ initialize()

StatusCode JiveXML::TruthMuonTrackRetriever::initialize ( )

Default AthAlgTool methods.

Initialize before event loop.

Definition at line 40 of file TruthMuonTrackRetriever.cxx.

40 {
41
42 //Nothing to be done here
43 return StatusCode::SUCCESS;
44 }

◆ retrieve()

StatusCode JiveXML::TruthMuonTrackRetriever::retrieve ( ToolHandle< IFormatTool > & FormatTool)
virtual

Retrieve all the data.

Loop over all true particles, find the muons and get their basic parameters.

Parameters
FormatToolthe tool that will create formated output from the DataMap

Definition at line 50 of file TruthMuonTrackRetriever.cxx.

50 {
51
52 ATH_MSG_DEBUG( "Retrieving " << dataTypeName() );
53
54 //Try to retrieve the track record collection
55 const TrackRecordCollection* TrackRecordColl = NULL ;
56 //Loop over all the collections and try a retrieve (more efficenct than
57 //contain-retrieve combination)
58 for (const auto & CollNameItr : m_TrackRecCollNames ) {
59 //be verbose
60 ATH_MSG_DEBUG( "Trying to retrieve " << CollNameItr );
61 //try to retrieve
62 if ( !evtStore()->contains<TrackRecordCollection>( CollNameItr )){ continue; } // skip if not in SG
63 if (evtStore()->retrieve(TrackRecordColl, CollNameItr).isSuccess()) break ;
64 }
65
66 //If we didnt' get any, return
67 if (TrackRecordColl == NULL ) {
68 ATH_MSG_WARNING( "Unable to retrieve any track collection from " << m_TrackRecCollNames );
69 return StatusCode::RECOVERABLE;
70 }
71
72 //Reserve space for the output
73 DataVect pt; pt.reserve(TrackRecordColl->size());
74 DataVect phi; phi.reserve(TrackRecordColl->size());
75 DataVect eta; eta.reserve(TrackRecordColl->size());
76 DataVect rhoVertex; rhoVertex.reserve(TrackRecordColl->size());
77 DataVect phiVertex; phiVertex.reserve(TrackRecordColl->size());
78 DataVect zVertex; zVertex.reserve(TrackRecordColl->size());
79 DataVect code; code.reserve(TrackRecordColl->size());
80 DataVect id; id.reserve(TrackRecordColl->size());
81
82 //Now loop over the collection and retrieve data
83 for (const auto & record : *TrackRecordColl ) {
84
85 //Get the pdg code
86 int pdgCode = record.GetPDGCode();
87
88 //Only accept muons
89 if (abs(pdgCode) != 13) {
90 ATH_MSG_DEBUG( "Reject non-muon track with PDG ID " << pdgCode );
91 continue;
92 }
93
94 //Get vertex and momentum
95 HepGeom::Point3D<double> vertex = record.GetPosition();
96 HepGeom::Vector3D<double> momentum = record.GetMomentum();
97
98 //And store output
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 );
106 id.emplace_back( HepMC::barcode(record) ); // FIXME barcode-based
107 }
108
109 //Finall add everything to the datamap
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);
120
121 //some summary
122 ATH_MSG_DEBUG( dataTypeName() << ": "<< nEntries );
123
124 //forward data to formating tool
125 //return FormatTool->AddToEvent(dataTypeName(), (*CollNameItr), &dataMap);
128 std::string emptyStr="";
129 return FormatTool->AddToEvent(dataTypeName(), emptyStr, &dataMap);
130 }
#define M_PI
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
AtlasHitsVector< TrackRecord > TrackRecordCollection
size_type size() const
virtual std::string dataTypeName() const
Return the name of the data type.
virtual StatusCode retrieve(ToolHandle< IFormatTool > &FormatTool)
Retrieve all the data.
bool contains(const std::string &s, const std::string &regx)
does a string contain the substring
Definition hcg.cxx:116
int barcode(const T *p)
Definition Barcode.h:15
std::map< std::string, DataVect > DataMap
Definition DataType.h:59
std::vector< DataType > DataVect
Defines a map with a key and a vector of DataType objects e.g.
Definition DataType.h:58

Member Data Documentation

◆ m_TrackRecCollNames

std::vector<std::string> JiveXML::TruthMuonTrackRetriever::m_TrackRecCollNames
private

A list of StoreGate names to probe in this order for the muon record collecton.

Definition at line 54 of file TruthMuonTrackRetriever.h.

◆ m_typeName

const std::string JiveXML::TruthMuonTrackRetriever::m_typeName
private

The data type that is generated by this retriever.

Definition at line 51 of file TruthMuonTrackRetriever.h.


The documentation for this class was generated from the following files: