ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::JetTruthNtupleTool Class Reference

Tool to fill basic information about truth jets, establishing track-to-jet association indices with the truth ntuple tree. More...

#include <JetTruthNtupleTool.h>

Inheritance diagram for Trk::JetTruthNtupleTool:
Collaboration diagram for Trk::JetTruthNtupleTool:

Public Member Functions

 JetTruthNtupleTool (const std::string &, const std::string &, const IInterface *)
 ~JetTruthNtupleTool ()
StatusCode initialize ()
StatusCode finalize ()
 finalize
virtual StatusCode writeJetTruthData (const std::vector< Trk::GenParticleJet > &, const int &)
 fill ntuple data for a given vector of truth jets
virtual unsigned int getNumberOfTreeRecords () const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Static Public Member Functions

static const InterfaceID & interfaceID ()
 Interface ID, declared here, and defined below.

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

std::string m_ntupleTreeName
 jobOption: Ntuple tree name
std::string m_ntupleFileName
 jobOption: Ntuple file and dir name
std::vector< double > m_etaBins
TTree * m_nt
 Pointer to the NTuple tree.
unsigned int m_numberOfTreeEntries
int m_runNumber
int m_eventNumber
std::vector< unsigned int > * m_genParticleLinkIndex
std::vector< float > * m_mc_trackToJetAngle
float m_mc_jetMultiplicity
float m_mc_jetSphericity
float m_mc_jetThrust
float m_mc_jetEnergy
float m_mc_jetMomentum
SG::ReadHandleKey< xAOD::EventInfom_evt {this, "EvtInfo", "EventInfo", "EventInfo name"}
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Tool to fill basic information about truth jets, establishing track-to-jet association indices with the truth ntuple tree.

Author
Sebastian.Fleischmann -at- cern.ch, Wolfgang.Liebig -at- cern.ch

Definition at line 37 of file JetTruthNtupleTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ JetTruthNtupleTool()

Trk::JetTruthNtupleTool::JetTruthNtupleTool ( const std::string & t,
const std::string & n,
const IInterface * p )

Definition at line 28 of file JetTruthNtupleTool.cxx.

32 :
33 AthAlgTool(t,n,p),
34 m_nt(nullptr),
39 m_mc_trackToJetAngle(nullptr),
45{
46 declareInterface<IJetTruthNtupleTool>(this);
47
48 // Declare the properties
49 declareProperty("NtupleFileName", m_ntupleFileName = "TRKVAL/Validation","Ntuple file handle");
50 declareProperty("NtupleTreeName", m_ntupleTreeName = "TruthJets", "Name of the ntuple tree");
51}
AthAlgTool()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
TTree * m_nt
Pointer to the NTuple tree.
std::string m_ntupleFileName
jobOption: Ntuple file and dir name
std::vector< unsigned int > * m_genParticleLinkIndex
std::vector< float > * m_mc_trackToJetAngle
std::string m_ntupleTreeName
jobOption: Ntuple tree name

◆ ~JetTruthNtupleTool()

Trk::JetTruthNtupleTool::~JetTruthNtupleTool ( )
default

Member Function Documentation

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ finalize()

StatusCode Trk::JetTruthNtupleTool::finalize ( )

finalize

Definition at line 100 of file JetTruthNtupleTool.cxx.

100 {
101
102 ATH_MSG_INFO ( "finalize() in " << name() );
105
106 return StatusCode::SUCCESS;
107}
#define ATH_MSG_INFO(x)

◆ getNumberOfTreeRecords()

unsigned int Trk::JetTruthNtupleTool::getNumberOfTreeRecords ( ) const
virtual

Implements Trk::IJetTruthNtupleTool.

Definition at line 162 of file JetTruthNtupleTool.cxx.

162 {
164}

◆ initialize()

StatusCode Trk::JetTruthNtupleTool::initialize ( )

Definition at line 57 of file JetTruthNtupleTool.cxx.

57 {
58
59 ATH_CHECK( m_evt.initialize() );
60
61 // ---------------------------
62 // retrieve pointer to THistSvc
63 SmartIF<ITHistSvc> tHistSvc{service("THistSvc")};
64 ATH_CHECK( tHistSvc.isValid() );
65
66 // ---------------------------
67 // create tree and register it to THistSvc
68 m_nt = new TTree(TString(m_ntupleTreeName), "Track Validation JetTruth");
69 // NB: we must not delete the tree, this is done by THistSvc
70 std::string fullNtupleName = "/"+m_ntupleFileName+"/"+m_ntupleTreeName;
71 ATH_CHECK( tHistSvc->regTree(fullNtupleName, m_nt) );
72
73 //-----------------
74 // add items
75 // event info:
76 m_nt->Branch("RunNumber", &m_runNumber ); // Run number
77 m_nt->Branch("EventNumber", &m_eventNumber ); // Event number
78
79 m_nt->Branch( "truth_jetMultiplicity", &m_mc_jetMultiplicity );
80 m_nt->Branch( "truth_jetSphericity", &m_mc_jetSphericity );
81 m_nt->Branch( "truth_jetThrust", &m_mc_jetThrust );
82 m_nt->Branch( "truth_jetEnergy", &m_mc_jetEnergy );
83 m_nt->Branch( "truth_jetMomentum", &m_mc_jetMomentum );
84
85 m_genParticleLinkIndex = new std::vector<unsigned int>();
86 m_nt->Branch( "GenParticleLinkIndex", &m_genParticleLinkIndex);// link to particles
87 m_mc_trackToJetAngle = new std::vector<float>();
88 m_nt->Branch( "truth_trackToJetAngle", &m_mc_trackToJetAngle); // truth_trackToJetAngle
89
90 ATH_MSG_VERBOSE ( "added items to ntuple" );
91
92 return StatusCode::SUCCESS;
93
94}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
SG::ReadHandleKey< xAOD::EventInfo > m_evt

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

const InterfaceID & Trk::IJetTruthNtupleTool::interfaceID ( )
inlinestaticinherited

Interface ID, declared here, and defined below.

Definition at line 47 of file IJetTruthNtupleTool.h.

47 {
48 return IID_IJetTruthNtupleTool;
49}

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

◆ writeJetTruthData()

StatusCode Trk::JetTruthNtupleTool::writeJetTruthData ( const std::vector< Trk::GenParticleJet > & jets,
const int & nTruthRecordsAtCurrentEvent )
virtual

fill ntuple data for a given vector of truth jets

write track data to ntuple

Implements Trk::IJetTruthNtupleTool.

Definition at line 112 of file JetTruthNtupleTool.cxx.

116 {
117 ATH_MSG_VERBOSE ( "in writeJetTruthData(...)" );
118
119 // ---------------------------------------
120 // fill event data
121 SG::ReadHandle<xAOD::EventInfo> evt(m_evt);
122 if (!evt.isValid()) {
123 ATH_MSG_WARNING ( "Could not retrieve event info" );
124 return StatusCode::FAILURE;
125 }
126 m_runNumber=evt->runNumber();
127 m_eventNumber=evt->eventNumber();
128
129 for (std::vector<Trk::GenParticleJet>::const_iterator itJet = jets.begin();
130 itJet < jets.end(); ++itJet ) {
131
132 m_mc_jetMultiplicity = itJet->getNumParticles();
133 m_mc_jetMomentum = itJet->getMomentum().mag();
134 m_mc_jetEnergy = itJet->getEnergy();
135 m_mc_jetSphericity = itJet->getSphericity();
136 m_mc_jetThrust = itJet->getThrust();
137
138 auto particles = itJet->getParticles();
139 m_mc_trackToJetAngle->reserve(particles.size());
140 m_genParticleLinkIndex->reserve(particles.size());
141 std::vector<int> indices = itJet->getIndicesInEvent();
142 std::vector<int>::iterator itIdx = indices.begin();
143 m_genParticleLinkIndex->clear();
144 m_mc_trackToJetAngle->clear();
145 for (auto itPrt = particles.begin();
146 itPrt < particles.end(); ++itPrt, ++itIdx) {
147
148 HepGeom::Vector3D<double> tempMomentum((*itPrt)->momentum().px(),
149 (*itPrt)->momentum().py(),
150 (*itPrt)->momentum().pz());
151 // attention: push_back calls need a clear() to avoid growth with each entry
152 m_mc_trackToJetAngle->push_back((float)tempMomentum.angle(itJet->getMomentum()));
153 m_genParticleLinkIndex->push_back(nTruthRecordsAtCurrentEvent+1+(unsigned int)(*itIdx));
154 }
155 m_nt->Fill();
157 }
158 return StatusCode::SUCCESS;
159}
#define ATH_MSG_WARNING(x)
std::pair< long int, long int > indices

Member Data Documentation

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_etaBins

std::vector<double> Trk::JetTruthNtupleTool::m_etaBins
private

Definition at line 59 of file JetTruthNtupleTool.h.

◆ m_eventNumber

int Trk::JetTruthNtupleTool::m_eventNumber
private

Definition at line 67 of file JetTruthNtupleTool.h.

◆ m_evt

SG::ReadHandleKey<xAOD::EventInfo> Trk::JetTruthNtupleTool::m_evt {this, "EvtInfo", "EventInfo", "EventInfo name"}
private

Definition at line 78 of file JetTruthNtupleTool.h.

78{this, "EvtInfo", "EventInfo", "EventInfo name"};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_genParticleLinkIndex

std::vector<unsigned int>* Trk::JetTruthNtupleTool::m_genParticleLinkIndex
private

Definition at line 70 of file JetTruthNtupleTool.h.

◆ m_mc_jetEnergy

float Trk::JetTruthNtupleTool::m_mc_jetEnergy
private

Definition at line 75 of file JetTruthNtupleTool.h.

◆ m_mc_jetMomentum

float Trk::JetTruthNtupleTool::m_mc_jetMomentum
private

Definition at line 76 of file JetTruthNtupleTool.h.

◆ m_mc_jetMultiplicity

float Trk::JetTruthNtupleTool::m_mc_jetMultiplicity
private

Definition at line 72 of file JetTruthNtupleTool.h.

◆ m_mc_jetSphericity

float Trk::JetTruthNtupleTool::m_mc_jetSphericity
private

Definition at line 73 of file JetTruthNtupleTool.h.

◆ m_mc_jetThrust

float Trk::JetTruthNtupleTool::m_mc_jetThrust
private

Definition at line 74 of file JetTruthNtupleTool.h.

◆ m_mc_trackToJetAngle

std::vector<float>* Trk::JetTruthNtupleTool::m_mc_trackToJetAngle
private

Definition at line 71 of file JetTruthNtupleTool.h.

◆ m_nt

TTree* Trk::JetTruthNtupleTool::m_nt
private

Pointer to the NTuple tree.

Definition at line 61 of file JetTruthNtupleTool.h.

◆ m_ntupleFileName

std::string Trk::JetTruthNtupleTool::m_ntupleFileName
private

jobOption: Ntuple file and dir name

Definition at line 58 of file JetTruthNtupleTool.h.

◆ m_ntupleTreeName

std::string Trk::JetTruthNtupleTool::m_ntupleTreeName
private

jobOption: Ntuple tree name

Definition at line 57 of file JetTruthNtupleTool.h.

◆ m_numberOfTreeEntries

unsigned int Trk::JetTruthNtupleTool::m_numberOfTreeEntries
private

Definition at line 63 of file JetTruthNtupleTool.h.

◆ m_runNumber

int Trk::JetTruthNtupleTool::m_runNumber
private

Definition at line 66 of file JetTruthNtupleTool.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


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