ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkValidation
TrkValTools
src
JetTruthNtupleTool.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
// JetTruthNtupleTool.cxx
7
// Source file for class JetTruthNtupleTool
9
// (c) ATLAS Detector software
11
12
#include "GaudiKernel/ITHistSvc.h"
13
#include "GaudiKernel/ISvcLocator.h"
14
15
// Trk
16
#include "
TrkValTools/JetTruthNtupleTool.h
"
17
#include "
TrkParameters/TrackParameters.h
"
18
#include "
TrkValEvent/GenParticleJet.h
"
19
// Truth
20
#include "
TrkTruthData/TrackTruth.h
"
21
22
#include "
AtlasHepMC/GenParticle.h
"
23
24
#include <TGraphAsymmErrors.h>
25
#include "TTree.h"
26
27
// constructor
28
Trk::JetTruthNtupleTool::JetTruthNtupleTool
(
29
const
std::string& t,
30
const
std::string& n,
31
const
IInterface* p )
32
:
33
AthAlgTool
(t,n,p),
34
m_nt
(nullptr),
35
m_numberOfTreeEntries
(0),
36
m_runNumber
{},
37
m_eventNumber
{},
38
m_genParticleLinkIndex
(nullptr),
39
m_mc_trackToJetAngle
(nullptr),
40
m_mc_jetMultiplicity
{},
41
m_mc_jetSphericity
{},
42
m_mc_jetThrust
{},
43
m_mc_jetEnergy
{},
44
m_mc_jetMomentum
{}
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
}
52
53
// destructor
54
Trk::JetTruthNtupleTool::~JetTruthNtupleTool
() =
default
;
55
56
// initialize
57
StatusCode
Trk::JetTruthNtupleTool::initialize
() {
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
}
95
96
100
StatusCode
Trk::JetTruthNtupleTool::finalize
() {
101
102
ATH_MSG_INFO
(
"finalize() in "
<< name() );
103
delete
m_genParticleLinkIndex
;
104
delete
m_mc_trackToJetAngle
;
105
106
return
StatusCode::SUCCESS;
107
}
108
112
StatusCode
Trk::JetTruthNtupleTool::writeJetTruthData
(
113
const
std::vector< Trk::GenParticleJet >& jets,
114
const
int
& nTruthRecordsAtCurrentEvent
115
// const std::vector<unsigned int>& /*particleToJetIndex*/
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();
156
m_numberOfTreeEntries
++;
157
}
158
return
StatusCode::SUCCESS;
159
}
160
161
162
unsigned
int
Trk::JetTruthNtupleTool::getNumberOfTreeRecords
()
const
{
163
return
m_numberOfTreeEntries
;
164
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition
AthMsgStreamMacros.h:28
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition
AthMsgStreamMacros.h:32
GenParticleJet.h
GenParticle.h
JetTruthNtupleTool.h
TrackTruth.h
TrackParameters.h
AthAlgTool::AthAlgTool
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Definition
AthAlgTool.cxx:16
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition
AthCommonDataStore.h:145
SG::ReadHandle
Definition
StoreGate/StoreGate/ReadHandle.h:67
Trk::JetTruthNtupleTool::~JetTruthNtupleTool
~JetTruthNtupleTool()
Trk::JetTruthNtupleTool::m_mc_jetEnergy
float m_mc_jetEnergy
Definition
JetTruthNtupleTool.h:75
Trk::JetTruthNtupleTool::m_mc_jetMultiplicity
float m_mc_jetMultiplicity
Definition
JetTruthNtupleTool.h:72
Trk::JetTruthNtupleTool::m_mc_jetMomentum
float m_mc_jetMomentum
Definition
JetTruthNtupleTool.h:76
Trk::JetTruthNtupleTool::m_nt
TTree * m_nt
Pointer to the NTuple tree.
Definition
JetTruthNtupleTool.h:61
Trk::JetTruthNtupleTool::getNumberOfTreeRecords
virtual unsigned int getNumberOfTreeRecords() const
Definition
JetTruthNtupleTool.cxx:162
Trk::JetTruthNtupleTool::m_runNumber
int m_runNumber
Definition
JetTruthNtupleTool.h:66
Trk::JetTruthNtupleTool::m_ntupleFileName
std::string m_ntupleFileName
jobOption: Ntuple file and dir name
Definition
JetTruthNtupleTool.h:58
Trk::JetTruthNtupleTool::m_evt
SG::ReadHandleKey< xAOD::EventInfo > m_evt
Definition
JetTruthNtupleTool.h:78
Trk::JetTruthNtupleTool::writeJetTruthData
virtual StatusCode writeJetTruthData(const std::vector< Trk::GenParticleJet > &, const int &)
fill ntuple data for a given vector of truth jets
Definition
JetTruthNtupleTool.cxx:112
Trk::JetTruthNtupleTool::m_eventNumber
int m_eventNumber
Definition
JetTruthNtupleTool.h:67
Trk::JetTruthNtupleTool::finalize
StatusCode finalize()
finalize
Definition
JetTruthNtupleTool.cxx:100
Trk::JetTruthNtupleTool::JetTruthNtupleTool
JetTruthNtupleTool(const std::string &, const std::string &, const IInterface *)
Definition
JetTruthNtupleTool.cxx:28
Trk::JetTruthNtupleTool::m_mc_jetThrust
float m_mc_jetThrust
Definition
JetTruthNtupleTool.h:74
Trk::JetTruthNtupleTool::m_genParticleLinkIndex
std::vector< unsigned int > * m_genParticleLinkIndex
Definition
JetTruthNtupleTool.h:70
Trk::JetTruthNtupleTool::initialize
StatusCode initialize()
Definition
JetTruthNtupleTool.cxx:57
Trk::JetTruthNtupleTool::m_mc_trackToJetAngle
std::vector< float > * m_mc_trackToJetAngle
Definition
JetTruthNtupleTool.h:71
Trk::JetTruthNtupleTool::m_mc_jetSphericity
float m_mc_jetSphericity
Definition
JetTruthNtupleTool.h:73
Trk::JetTruthNtupleTool::m_ntupleTreeName
std::string m_ntupleTreeName
jobOption: Ntuple tree name
Definition
JetTruthNtupleTool.h:57
Trk::JetTruthNtupleTool::m_numberOfTreeEntries
unsigned int m_numberOfTreeEntries
Definition
JetTruthNtupleTool.h:63
Trk::indices
std::pair< long int, long int > indices
Definition
AlSymMatBase.h:27
Generated on
for ATLAS Offline Software by
1.17.0