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 38 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 28 of file TruthMuonTrackRetriever.cxx.

28 :
29 base_class(type, name, parent),
30 m_typeName("SMTr") {
31 //Fill the list with the names of track record collections to try
32 m_TrackRecCollNames.push_back("MuonEntryLayer");
33 m_TrackRecCollNames.push_back("MuonEntryRecord");
34
35 //Declare the properties
36 declareProperty("TrackRecCollNames",m_TrackRecCollNames,"List of track records collections to try in this order - only one is retrieved");
37
38 }
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 49 of file TruthMuonTrackRetriever.h.

49{ return m_typeName; };

◆ initialize()

StatusCode JiveXML::TruthMuonTrackRetriever::initialize ( )

Default AthAlgTool methods.

Initialize before event loop.

Definition at line 44 of file TruthMuonTrackRetriever.cxx.

44 {
45
46 //Nothing to be done here
47 return StatusCode::SUCCESS;
48 }

◆ 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 54 of file TruthMuonTrackRetriever.cxx.

54 {
55
56 ATH_MSG_DEBUG( "Retrieving " << dataTypeName() );
57
58 //Try to retrieve the track record collection
59 const TrackRecordCollection* TrackRecordColl = NULL ;
60 //Loop over all the collections and try a retrieve (more efficenct than
61 //contain-retrieve combination)
62 for (const auto & CollNameItr : m_TrackRecCollNames ) {
63 //be verbose
64 ATH_MSG_DEBUG( "Trying to retrieve " << CollNameItr );
65 //try to retrieve
66 if ( !evtStore()->contains<TrackRecordCollection>( CollNameItr )){ continue; } // skip if not in SG
67 if (evtStore()->retrieve(TrackRecordColl, CollNameItr).isSuccess()) break ;
68 }
69
70 //If we didnt' get any, return
71 if (TrackRecordColl == NULL ) {
72 ATH_MSG_WARNING( "Unable to retrieve any track collection from " << m_TrackRecCollNames );
73 return StatusCode::RECOVERABLE;
74 }
75
76 //Reserve space for the output
77 DataVect pt; pt.reserve(TrackRecordColl->size());
78 DataVect phi; phi.reserve(TrackRecordColl->size());
79 DataVect eta; eta.reserve(TrackRecordColl->size());
80 DataVect rhoVertex; rhoVertex.reserve(TrackRecordColl->size());
81 DataVect phiVertex; phiVertex.reserve(TrackRecordColl->size());
82 DataVect zVertex; zVertex.reserve(TrackRecordColl->size());
83 DataVect code; code.reserve(TrackRecordColl->size());
84 DataVect id; id.reserve(TrackRecordColl->size());
85
86 //Now loop over the collection and retrieve data
87 for (const auto & record : *TrackRecordColl ) {
88
89 //Get the pdg code
90 int pdgCode = record.GetPDGCode();
91
92 //Only accept muons
93 if (abs(pdgCode) != 13) {
94 ATH_MSG_DEBUG( "Reject non-muon track with PDG ID " << pdgCode );
95 continue;
96 }
97
98 //Get vertex and momentum
99 HepGeom::Point3D<double> vertex = record.GetPosition();
100 HepGeom::Vector3D<double> momentum = record.GetMomentum();
101
102 //And store output
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 );
110 id.emplace_back( HepMC::barcode(record) ); // FIXME barcode-based
111 }
112
113 //Finall add everything to the datamap
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);
124
125 //some summary
126 ATH_MSG_DEBUG( dataTypeName() << ": "<< nEntries );
127
128 //forward data to formating tool
129 //return FormatTool->AddToEvent(dataTypeName(), (*CollNameItr), &dataMap);
132 std::string emptyStr="";
133 return FormatTool->AddToEvent(dataTypeName(), emptyStr, &dataMap);
134 }
#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:114
int barcode(const T *p)
Definition Barcode.h:16
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 59 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 56 of file TruthMuonTrackRetriever.h.


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