ATLAS Offline Software
Loading...
Searching...
No Matches
IDTPM::TrackAnalysisPlotsMgr Class Reference

#include <TrackAnalysisPlotsMgr.h>

Inheritance diagram for IDTPM::TrackAnalysisPlotsMgr:

Public Member Functions

 TrackAnalysisPlotsMgr (const std::string &dirName, const std::string &anaTag, const std::string &chain, PlotMgr *pParent=nullptr)
 Constructor.
virtual ~TrackAnalysisPlotsMgr ()=default
 Destructor.
StatusCode initialize ()
 initialize
const std::string & anaTag () const
 return members
const std::string & chain () const
const std::string & directory () const
StatusCode fill (TrackAnalysisCollections &trkAnaColls, float weight=1.0)
 General fill method.
template<typename PARTICLE, typename VERTEX>
StatusCode fillPlotsTest (const std::vector< const PARTICLE * > &particles, const ITrackMatchingLookup &matches, const std::vector< const VERTEX * > &vertices, float truthMu=0., float actualMu=0., float weight=1.0)
 Fill all plots w.r.t.
template<typename PARTICLE, typename VERTEX>
StatusCode fillPlotsReference (const std::vector< const PARTICLE * > &particles, const ITrackMatchingLookup &matches, const std::vector< const VERTEX * > &vertices, float truthMu=0., float actualMu=0., float weight=1.0)
 Fill all plots w.r.t.
StatusCode fillPlotsTruth (const std::vector< const xAOD::TrackParticle * > &testTracks, const std::vector< const xAOD::TrackParticle * > &refTracks, const std::vector< const xAOD::TruthParticle * > &truths, const ITrackMatchingLookup &matches, float truthMu=0., float actualMu=0., float weight=1.0)
 Fill efficiency plots w.r.t. truth (for EFTruthMatch only)
SinglePlotDefinition retrieveDefinition (const std::string &identifier, const std::string &folderOverride="", const std::string &nameOverride="") const
 Retrieve a single histogram definition, given the unique string identifier.
template<class P>
StatusCode retrieveAndBook (P *&pHisto, const std::string &identifier, const std::string &folderOverride="", const std::string &nameOverride="")
StatusCode book (TH1 *&pHisto, const SinglePlotDefinition &def)
 Book a TH1 histogram.
StatusCode book (TH2 *&pHisto, const SinglePlotDefinition &def)
 Book a TH2 histogram.
StatusCode book (TH3 *&pHisto, const SinglePlotDefinition &def)
 Book a TH3 histogram.
StatusCode book (TProfile *&pHisto, const SinglePlotDefinition &def)
 Book a TProfile histogram.
StatusCode book (TProfile2D *&pHisto, const SinglePlotDefinition &def)
 Book a TProfile2D histogram.
StatusCode book (TEfficiency *&pHisto, const SinglePlotDefinition &def)
 Book a (1D or 2D) TEfficiency histogram.
StatusCode fill (TH1 *pTh1, float value, float weight=1.) const
StatusCode fill (TH2 *pTh2, float xval, float yval, float weight=1.) const
 Fill a TH2 histogram.
StatusCode fill (TH3 *pTh3, float xval, float yval, float zval, float weight=1.) const
 Fill a TH3 histogram.
StatusCode fill (TProfile *pTprofile, float xval, float yval, float weight=1.) const
 Fill a TProfile histogram weight allows weighted-averaging in the profile.
StatusCode fill (TProfile2D *pTprofile, float xval, float yval, float zval, float weight=1.) const
 Fill a TProfile2D histogram weight allows weighted-averaging in the profile.
StatusCode fill (TEfficiency *pTeff, float value, bool accepted, float weight=1.) const
 Fill a (1D) TEfficiency histogram.
StatusCode fill (TEfficiency *pTeff2d, float xvalue, float yvalue, bool accepted, float weight=1.) const
 Fill a (2D) TEfficiency histogram.
void finalize ()
void setDetailLevel (int iDetailLevel)
void RegisterSubPlot (PlotBase *pPlotBase)
std::vector< HistDataretrieveBookedHistograms ()
 Retrieve all booked histograms.
std::vector< TreeDataretrieveBookedTrees ()
 Retrieve all booked trees.
std::vector< EfficiencyDataretrieveBookedEfficiencies ()
 Retrieve all booked efficiency objects.
TTree * BookTree (const std::string &name, bool prependDir=true)
 Book a TTree.
const std::string & getDirectory ()
bool msgLvl (const MSG::Level lvl) const
 Test the output level.
MsgStream & msg () const
 The standard message stream.
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream.
void setLevel (MSG::Level lvl)
 Change the current logging level.
Methods to book monitoring histograms

Note: methods starting with capitals should be deprecated in favour of camel-cased methods

TH1D * Book1D (const std::string &name, const std::string &labels, int nBins, float start, float end, bool prependDir=true)
 Book a TH1D histogram.
TH1D * Book1D (const std::string &name, TH1 *refHist, const std::string &labels, bool prependDir=true)
 Book a TH1D histogram using refHist as reference for number of bins and axis range.
TH2F * Book2D (const std::string &name, const std::string &labels, int nBinsX, float startX, float endX, int nBinsY, float startY, float endY, bool prependDir=true)
 Book a TH2F histogram.
TH2F * Book2D (const std::string &name, TH2 *refHist, const std::string &labels, bool prependDir=true)
 Book a TH2D histogram using refHist as reference for number of bins and axis range.
TH2F * Book2D (const std::string &name, const std::string &labels, int nBinsX, Double_t *binsX, int nBinsY, Double_t startY, Double_t endY, bool prependDir=true)
 Book a TH2F histogram with variable x axis binning.
TH3F * Book3D (const std::string &name, const std::string &labels, int nBinsX, float startX, float endX, int nBinsY, float startY, float endY, int nBinsZ, float startZ, float endZ, bool prependDir=true)
 Book a TH3F histogram.
TH3F * Book3D (const std::string &name, TH3 *refHist, const std::string &labels, bool prependDir=true)
 Book a TH3F histogram using refHist as reference for number of bins and axis range.
TProfile * BookTProfile (const std::string &name, const std::string &labels, int nBinsX, float startX, float endX, float startY=-1, float endY=-1, bool prependDir=true, bool useRMS=false)
 Book a TProfile histogram.
TProfile * BookTProfile (const std::string &name, const std::string &labels, int nBinsX, float *binsX, bool prependDir=true)
 Book a TProfile histogram with variable binning in x-axis.
TProfile * BookTProfileRangeY (const std::string &name, const std::string &labels, int nBinsX, double *binsX, double startY, double endY, bool prependDir=true)
 Book a TProfile histogram with variable binning in x-axis and limits in y-values.
TProfile2D * BookTProfile2D (const std::string &name, const std::string &labels, const int nBinsX, const double xlo, const double xhi, const int nBinsY, const double ylo, const double yhi, bool prependDir=true, bool useRMS=false)
 Book a TProfile 2D histogram with variable binning in x-axis and limits in y-values.
TProfile2D * BookTProfile2D (const std::string &name, const std::string &labels, const int nBinsX, double *binsX, const int nBinsY, double *binsY, bool prependDir=true, bool useRMS=false)
 Book a TProfile 2D histogram with variable binning in x-axis and limits in y-values.
TEfficiency * BookTEfficiency (const std::string &name, const std::string &labels, const int nBinsX, const float xlo, const float xhi, const bool prependDir=true)
 Book a (1-D) TEfficiency histogram.
TEfficiency * BookTEfficiency (const std::string &name, const std::string &labels, const int nBinsX, const float xlo, const float xhi, const int nBinsy, const float ylo, const float yhi, const bool prependDir=true)
 Book a (2-D) TEfficiency histogram.

Protected Member Functions

template<class P>
StatusCode setVariableBins (P *&pHisto, const std::vector< float > &binning, char axis)
 SetVariableBins.
template<class P>
StatusCode setVariableBinsEff (P *&pHisto, const std::vector< float > &binning, char axis)
 SetVariableBins (for Efficiencies)
template<class P>
StatusCode setLogLinearBins (P *&pHisto, unsigned int nBins, float absMin, float absMax, char axis)
 Set Log-Linear axis.
template<class P>
StatusCode setLogLinearBinsEff (P *&pHisto, unsigned int nBins, float absMin, float absMax, char axis)
 Set Log-Linear axis (for Efficiencies)
std::vector< float > getLogLinearBins (unsigned int nBins, float absMin, float absMax, bool symmetriseAroundZero=false)
 Get Log-Linear binning vector inherited from InDetPhysValMonitoring/src/logLinearBinning.h.
template<class P>
StatusCode setBinLabels (P *&pHisto, const std::vector< std::string > &binLabels, char axis)
 SetBinLabels (for TH* and TProfile* only)

Protected Attributes

std::vector< PlotBase * > m_vSubNodes
std::vector< HistDatam_vBookedHistograms
std::vector< TreeDatam_vBookedTrees
std::vector< EfficiencyDatam_vBookedEfficiencies
std::string m_sDirectory
int m_iDetailLevel

Private Member Functions

virtual void initializePlots ()
virtual void finalizePlots ()
void initMessaging () const
 Initialize our message level and MessageSvc.

Static Private Member Functions

static std::string constructPrefix (std::string dir, bool prependDir)

Private Attributes

std::string m_anaTag
std::string m_chain
std::string m_directory
SmartIF< ITrackAnalysisDefinitionSvcm_trkAnaDefSvc
 TrackAnalysis definition service to "hold" the histograms configurations/flags.
std::unique_ptr< SummaryPlotsm_plots_summary
 Plot categories summary plots.
std::unique_ptr< TrackParametersPlotsm_plots_trkParam_vsTest
 plots w.r.t. test tracks parameters
std::unique_ptr< EfficiencyPlotsm_plots_eff_vsTest
std::unique_ptr< EfficiencyPlotsm_plots_tech_eff_vsTest
std::unique_ptr< HitsOnTracksPlotsm_plots_hitsOnTrk_vsTest
std::unique_ptr< HitsOnTracksPlotsm_plots_hitsOnMatchedTrk
std::unique_ptr< NtracksPlotsm_plots_nTracks_vsTest
std::unique_ptr< TrackParametersPlotsm_plots_trkParam_vsRef
 plots w.r.t. reference tracks parameters
std::unique_ptr< EfficiencyPlotsm_plots_eff_vsRef
std::unique_ptr< EfficiencyPlotsm_plots_tech_eff_vsRef
std::unique_ptr< HitsOnTracksPlotsm_plots_hitsOnTrk_vsRef
std::unique_ptr< HitsOnTracksPlotsm_plots_hitsOnMatchedTrk_vsRef
std::unique_ptr< NtracksPlotsm_plots_nTracks_vsRef
std::unique_ptr< EfficiencyPlotsm_plots_eff_vsTruth
 plots w.r.t. efficiency plots w.r.t. truth (for EFTruthMatch only)
std::unique_ptr< EfficiencyPlotsm_plots_tech_eff_vsTruth
std::unique_ptr< ResolutionPlotsm_plots_resolution
 resolution plots
std::unique_ptr< FakeRatePlotsm_plots_fakeRate
 fake rate plots (only when reference=truth)
std::unique_ptr< FakeRatePlotsm_plots_missingTruth
std::unique_ptr< HitsOnTracksPlotsm_plots_hitsOnFakeTrk
std::unique_ptr< HitsOnTracksPlotsm_plots_hitsOnUnlinkedTrk
std::unique_ptr< DuplicateRatePlotsm_plots_duplRate
 duplicate rate plots
std::unique_ptr< OfflineElectronPlotsm_plots_offEle
 plots w.r.t. reference offline electron
std::unique_ptr< OfflineElectronPlotsm_plots_eff_vsOffEle
std::unique_ptr< VertexParametersPlotsm_plots_vtxParam_vsTest
 plots w.r.t. test vertices parameters
std::unique_ptr< VertexParametersPlotsm_plots_nVtxParam_vsTest
std::unique_ptr< VertexParametersPlotsm_plots_vtxParam_vsRef
 plots w.r.t. reference vertices parameters
std::unique_ptr< VertexParametersPlotsm_plots_nVtxParam_vsRef
std::string m_nm
 Message source name.
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels)
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer.
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level.
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging)

Detailed Description

Definition at line 46 of file TrackAnalysisPlotsMgr.h.

Constructor & Destructor Documentation

◆ TrackAnalysisPlotsMgr()

IDTPM::TrackAnalysisPlotsMgr::TrackAnalysisPlotsMgr ( const std::string & dirName,
const std::string & anaTag,
const std::string & chain,
PlotMgr * pParent = nullptr )

Constructor.

local includes

Gaudi include(s)


— Constructor —

Definition at line 26 of file TrackAnalysisPlotsMgr.cxx.

30 :
31 PlotMgr( dirName, anaTag, pParent ),
33 m_directory( dirName ) { }
PlotMgr(const std::string &dirName, const std::string &anaTag, PlotMgr *pParent=nullptr)
Constructor taking parent node and directory name for plots pParent = nullptr by default to book plot...
Definition PlotMgr.cxx:25
const std::string & anaTag() const
return members
const std::string & chain() const

◆ ~TrackAnalysisPlotsMgr()

virtual IDTPM::TrackAnalysisPlotsMgr::~TrackAnalysisPlotsMgr ( )
virtualdefault

Destructor.

Member Function Documentation

◆ anaTag()

const std::string & IDTPM::TrackAnalysisPlotsMgr::anaTag ( ) const
inline

return members

Definition at line 63 of file TrackAnalysisPlotsMgr.h.

63{ return m_anaTag; }

◆ book() [1/6]

StatusCode IDTPM::PlotMgr::book ( TEfficiency *& pHisto,
const SinglePlotDefinition & def )
inherited

Book a (1D or 2D) TEfficiency histogram.

Definition at line 276 of file PlotMgr.cxx.

278{
279 if( not def.isValid() ) {
280 ATH_MSG_ERROR( "Non-valid TEfficiency plot : " << def.identifier() );
281 return StatusCode::FAILURE;
282 }
283
284 pHisto = ( def.nBinsY() == 0 ) ?
285 BookTEfficiency( def.name(), def.titleDigest(),
286 def.nBinsX(), def.xLow(), def.xHigh(),
287 false ) :
288 BookTEfficiency( def.name(), def.titleDigest(),
289 def.nBinsX(), def.xLow(), def.xHigh(),
290 def.nBinsY(), def.yLow(), def.yHigh(),
291 false );
292
293 if( def.doLogLinBinsX() ) {
294 ATH_CHECK( setLogLinearBinsEff( pHisto, def.nBinsX(), def.xLow(), def.xHigh(), 'X' ) );
295 }
296
297 if( def.doLogLinBinsY() and def.nBinsY() != 0 ) {
298 ATH_CHECK( setLogLinearBinsEff( pHisto, def.nBinsY(), def.yLow(), def.yHigh(), 'Y' ) );
299 }
300
301 if( def.doVarBinsX() ) {
302 ATH_CHECK( setVariableBinsEff( pHisto, def.xBinsVec(), 'X' ) );
303 }
304
305 if( def.doVarBinsY() and def.nBinsY() != 0 ) {
306 ATH_CHECK( setVariableBinsEff( pHisto, def.yBinsVec(), 'Y' ) );
307 }
308
309 return StatusCode::SUCCESS;
310}
#define ATH_MSG_ERROR(x)
TEfficiency * BookTEfficiency(const std::string &name, const std::string &labels, const int nBinsX, const float xlo, const float xhi, const bool prependDir=true)
Book a (1-D) TEfficiency histogram.
Definition PlotBase.cxx:257

◆ book() [2/6]

StatusCode IDTPM::PlotMgr::book ( TH1 *& pHisto,
const SinglePlotDefinition & def )
inherited

Book a TH1 histogram.


— Book histograms methods —

Book a TH1 histogram

Definition at line 78 of file PlotMgr.cxx.

80{
81 if( not def.isValid() ) {
82 ATH_MSG_ERROR( "Non-valid TH1 plot : " << def.identifier() );
83 return StatusCode::FAILURE;
84 }
85
86 pHisto = Book1D( def.name(), def.titleDigest(),
87 def.nBinsX(), def.xLow(), def.xHigh(),
88 false );
89
90 if( def.doLogLinBinsX() ) {
91 ATH_CHECK( setLogLinearBins( pHisto, def.nBinsX(), def.xLow(), def.xHigh(), 'X' ) );
92 }
93
94 if( def.doVarBinsX() ) {
95 ATH_CHECK( setVariableBins( pHisto, def.xBinsVec(), 'X' ) );
96 }
97
98 if( not def.xBinLabelsVec().empty() ) {
99 ATH_CHECK( setBinLabels( pHisto, def.xBinLabelsVec(), 'X' ) );
100 }
101
102 return StatusCode::SUCCESS;
103}
#define ATH_CHECK
Evaluate an expression and check for errors.
StatusCode setLogLinearBins(P *&pHisto, unsigned int nBins, float absMin, float absMax, char axis)
Set Log-Linear axis.
Definition PlotMgr.h:170
StatusCode setVariableBins(P *&pHisto, const std::vector< float > &binning, char axis)
SetVariableBins.
Definition PlotMgr.h:135
StatusCode setBinLabels(P *&pHisto, const std::vector< std::string > &binLabels, char axis)
SetBinLabels (for TH* and TProfile* only)
Definition PlotMgr.h:196
TH1D * Book1D(const std::string &name, const std::string &labels, int nBins, float start, float end, bool prependDir=true)
Book a TH1D histogram.
Definition PlotBase.cxx:94

◆ book() [3/6]

StatusCode IDTPM::PlotMgr::book ( TH2 *& pHisto,
const SinglePlotDefinition & def )
inherited

Book a TH2 histogram.

Definition at line 107 of file PlotMgr.cxx.

109{
110 if( not def.isValid() ) {
111 ATH_MSG_ERROR( "Non-valid TH2 plot : " << def.identifier() );
112 return StatusCode::FAILURE;
113 }
114
115 pHisto = Book2D( def.name(), def.titleDigest(),
116 def.nBinsX(), def.xLow(), def.xHigh(),
117 def.nBinsY(), def.yLow(), def.yHigh(),
118 false );
119
120 if( def.doLogLinBinsX() ) {
121 ATH_CHECK( setLogLinearBins( pHisto, def.nBinsX(), def.xLow(), def.xHigh(), 'X' ) );
122 }
123
124 if( def.doLogLinBinsY() ) {
125 ATH_CHECK( setLogLinearBins( pHisto, def.nBinsY(), def.yLow(), def.yHigh(), 'Y' ) );
126 }
127
128 if( def.doVarBinsX() ) {
129 ATH_CHECK( setVariableBins( pHisto, def.xBinsVec(), 'X' ) );
130 }
131
132 if( def.doVarBinsY() ) {
133 ATH_CHECK( setVariableBins( pHisto, def.yBinsVec(), 'Y' ) );
134 }
135
136 if( not def.xBinLabelsVec().empty() ) {
137 ATH_CHECK( setBinLabels( pHisto, def.xBinLabelsVec(), 'X' ) );
138 }
139
140 if( not def.yBinLabelsVec().empty() ) {
141 ATH_CHECK( setBinLabels( pHisto, def.yBinLabelsVec(), 'Y' ) );
142 }
143
144 return StatusCode::SUCCESS;
145}
TH2F * Book2D(const std::string &name, const std::string &labels, int nBinsX, float startX, float endX, int nBinsY, float startY, float endY, bool prependDir=true)
Book a TH2F histogram.
Definition PlotBase.cxx:123

◆ book() [4/6]

StatusCode IDTPM::PlotMgr::book ( TH3 *& pHisto,
const SinglePlotDefinition & def )
inherited

Book a TH3 histogram.

Definition at line 149 of file PlotMgr.cxx.

151{
152 if( not def.isValid() ) {
153 ATH_MSG_ERROR( "Non-valid TH3 plot : " << def.identifier() );
154 return StatusCode::FAILURE;
155 }
156
157 pHisto = Book3D( def.name(), def.titleDigest(),
158 def.nBinsX(), def.xLow(), def.xHigh(),
159 def.nBinsY(), def.yLow(), def.yHigh(),
160 def.nBinsZ(), def.zLow(), def.zHigh(),
161 false );
162
163 if( def.doLogLinBinsX() ) {
164 ATH_CHECK( setLogLinearBins( pHisto, def.nBinsX(), def.xLow(), def.xHigh(), 'X' ) );
165 }
166
167 if( def.doLogLinBinsY() ) {
168 ATH_CHECK( setLogLinearBins( pHisto, def.nBinsY(), def.yLow(), def.yHigh(), 'Y' ) );
169 }
170
171 if( def.doLogLinBinsZ() ) {
172 ATH_CHECK( setLogLinearBins( pHisto, def.nBinsZ(), def.zLow(), def.zHigh(), 'Z' ) );
173 }
174
175 if( def.doVarBinsX() ) {
176 ATH_CHECK( setVariableBins( pHisto, def.xBinsVec(), 'X' ) );
177 }
178
179 if( def.doVarBinsY() ) {
180 ATH_CHECK( setVariableBins( pHisto, def.yBinsVec(), 'Y' ) );
181 }
182
183 if( def.doVarBinsZ() ) {
184 ATH_CHECK( setVariableBins( pHisto, def.zBinsVec(), 'Z' ) );
185 }
186
187 if( not def.xBinLabelsVec().empty() ) {
188 ATH_CHECK( setBinLabels( pHisto, def.xBinLabelsVec(), 'X' ) );
189 }
190
191 if( not def.yBinLabelsVec().empty() ) {
192 ATH_CHECK( setBinLabels( pHisto, def.yBinLabelsVec(), 'Y' ) );
193 }
194
195 if( not def.zBinLabelsVec().empty() ) {
196 ATH_CHECK( setBinLabels( pHisto, def.zBinLabelsVec(), 'Z' ) );
197 }
198
199 return StatusCode::SUCCESS;
200}
TH3F * Book3D(const std::string &name, const std::string &labels, int nBinsX, float startX, float endX, int nBinsY, float startY, float endY, int nBinsZ, float startZ, float endZ, bool prependDir=true)
Book a TH3F histogram.
Definition PlotBase.cxx:157

◆ book() [5/6]

StatusCode IDTPM::PlotMgr::book ( TProfile *& pHisto,
const SinglePlotDefinition & def )
inherited

Book a TProfile histogram.

Definition at line 204 of file PlotMgr.cxx.

206{
207 if( not def.isValid() ) {
208 ATH_MSG_ERROR( "Non-valid TProfile plot : " << def.identifier() );
209 return StatusCode::FAILURE;
210 }
211
212 pHisto = BookTProfile( def.name(), def.titleDigest(),
213 def.nBinsX(), def.xLow(), def.xHigh(),
214 def.yLow(), def.yHigh(),
215 false );
216
217 if( def.doLogLinBinsX() ) {
218 ATH_CHECK( setLogLinearBins( pHisto, def.nBinsX(), def.xLow(), def.xHigh(), 'X' ) );
219 }
220
221 if( def.doVarBinsX() ) {
222 ATH_CHECK( setVariableBins( pHisto, def.xBinsVec(), 'X' ) );
223 }
224
225 if( not def.xBinLabelsVec().empty() ) {
226 ATH_CHECK( setBinLabels( pHisto, def.xBinLabelsVec(), 'X' ) );
227 }
228
229 return StatusCode::SUCCESS;
230}
TProfile * BookTProfile(const std::string &name, const std::string &labels, int nBinsX, float startX, float endX, float startY=-1, float endY=-1, bool prependDir=true, bool useRMS=false)
Book a TProfile histogram.
Definition PlotBase.cxx:186

◆ book() [6/6]

StatusCode IDTPM::PlotMgr::book ( TProfile2D *& pHisto,
const SinglePlotDefinition & def )
inherited

Book a TProfile2D histogram.

Definition at line 234 of file PlotMgr.cxx.

236{
237 if( not def.isValid() ) {
238 ATH_MSG_ERROR( "Non-valid TProfile2D plot : " << def.identifier() );
239 return StatusCode::FAILURE;
240 }
241
242 pHisto = BookTProfile2D( def.name(), def.titleDigest(),
243 def.nBinsX(), def.xLow(), def.xHigh(),
244 def.nBinsY(), def.yLow(), def.yHigh(),
245 false );
246
247 if( def.doLogLinBinsX() ) {
248 ATH_CHECK( setLogLinearBins( pHisto, def.nBinsX(), def.xLow(), def.xHigh(), 'X' ) );
249 }
250
251 if( def.doLogLinBinsY() ) {
252 ATH_CHECK( setLogLinearBins( pHisto, def.nBinsY(), def.yLow(), def.yHigh(), 'Y' ) );
253 }
254
255 if( def.doVarBinsX() ) {
256 ATH_CHECK( setVariableBins( pHisto, def.xBinsVec(), 'X' ) );
257 }
258
259 if( def.doVarBinsY() ) {
260 ATH_CHECK( setVariableBins( pHisto, def.yBinsVec(), 'Y' ) );
261 }
262
263 if( not def.xBinLabelsVec().empty() ) {
264 ATH_CHECK( setBinLabels( pHisto, def.xBinLabelsVec(), 'X' ) );
265 }
266
267 if( not def.yBinLabelsVec().empty() ) {
268 ATH_CHECK( setBinLabels( pHisto, def.yBinLabelsVec(), 'Y' ) );
269 }
270
271 return StatusCode::SUCCESS;
272}
TProfile2D * BookTProfile2D(const std::string &name, const std::string &labels, const int nBinsX, const double xlo, const double xhi, const int nBinsY, const double ylo, const double yhi, bool prependDir=true, bool useRMS=false)
Book a TProfile 2D histogram with variable binning in x-axis and limits in y-values.
Definition PlotBase.cxx:231

◆ Book1D() [1/2]

TH1D * PlotBase::Book1D ( const std::string & name,
const std::string & labels,
int nBins,
float start,
float end,
bool prependDir = true )
inherited

Book a TH1D histogram.

Definition at line 94 of file PlotBase.cxx.

95 {
96 std::string prefix = constructPrefix(m_sDirectory, prependDir);
97 Bool_t oldstat = TH1::AddDirectoryStatus();
98 TH1::AddDirectory(false);
99 TH1D *hist = new TH1D((prefix + name).c_str(), labels.c_str(), nBins, start, end);
100 TH1::AddDirectory(oldstat);
101
102 hist->Sumw2();
103 m_vBookedHistograms.emplace_back(hist, m_sDirectory);
104 return hist;
105}
static std::string constructPrefix(std::string dir, bool prependDir)
Definition PlotBase.cxx:293
std::vector< HistData > m_vBookedHistograms
Definition PlotBase.h:97
std::string m_sDirectory
Definition PlotBase.h:100

◆ Book1D() [2/2]

TH1D * PlotBase::Book1D ( const std::string & name,
TH1 * refHist,
const std::string & labels,
bool prependDir = true )
inherited

Book a TH1D histogram using refHist as reference for number of bins and axis range.

Definition at line 108 of file PlotBase.cxx.

108 {
109 std::string prefix = constructPrefix(m_sDirectory, prependDir);
110 Bool_t oldstat = TH1::AddDirectoryStatus();
111 TH1::AddDirectory(false);
112 TH1D *hist = new TH1D((prefix + name).c_str(), labels.c_str(), refHist->GetNbinsX(),
113 refHist->GetXaxis()->GetXbins()->GetArray());
114 hist->Sumw2();
115 TH1::AddDirectory(oldstat);
116
117
118 m_vBookedHistograms.emplace_back(hist, m_sDirectory);
119 return hist;
120}

◆ Book2D() [1/3]

TH2F * PlotBase::Book2D ( const std::string & name,
const std::string & labels,
int nBinsX,
Double_t * binsX,
int nBinsY,
Double_t startY,
Double_t endY,
bool prependDir = true )
inherited

Book a TH2F histogram with variable x axis binning.

Definition at line 144 of file PlotBase.cxx.

145 {
146 std::string prefix = constructPrefix(m_sDirectory, prependDir);
147 Bool_t oldstat = TH2::AddDirectoryStatus();
148 TH2::AddDirectory(false);
149 TH2F *hist = new TH2F((prefix + name).c_str(), labels.c_str(), nBinsX, binsX, nBinsY, startY, endY);
150 hist->Sumw2();
151 TH2::AddDirectory(oldstat);
152 m_vBookedHistograms.emplace_back(hist, m_sDirectory);
153 return hist;
154}
TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)

◆ Book2D() [2/3]

TH2F * PlotBase::Book2D ( const std::string & name,
const std::string & labels,
int nBinsX,
float startX,
float endX,
int nBinsY,
float startY,
float endY,
bool prependDir = true )
inherited

Book a TH2F histogram.

Definition at line 123 of file PlotBase.cxx.

124 {
125 std::string prefix = constructPrefix(m_sDirectory, prependDir);
126 Bool_t oldstat = TH2::AddDirectoryStatus();
127 TH2::AddDirectory(false);
128 TH2F *hist = new TH2F((prefix + name).c_str(), labels.c_str(), nBinsX, startX, endX, nBinsY, startY, endY);
129 hist->Sumw2();
130 TH2::AddDirectory(oldstat);
131
132
133 m_vBookedHistograms.emplace_back(hist, m_sDirectory);
134 return hist;
135}

◆ Book2D() [3/3]

TH2F * PlotBase::Book2D ( const std::string & name,
TH2 * refHist,
const std::string & labels,
bool prependDir = true )
inherited

Book a TH2D histogram using refHist as reference for number of bins and axis range.

Definition at line 138 of file PlotBase.cxx.

138 {
139 return Book2D(name, labels, refHist->GetNbinsX(), refHist->GetXaxis()->GetXmin(), refHist->GetXaxis()->GetXmax(),
140 refHist->GetNbinsY(), refHist->GetYaxis()->GetXmin(), refHist->GetYaxis()->GetXmax(), prependDir);
141}

◆ Book3D() [1/2]

TH3F * PlotBase::Book3D ( const std::string & name,
const std::string & labels,
int nBinsX,
float startX,
float endX,
int nBinsY,
float startY,
float endY,
int nBinsZ,
float startZ,
float endZ,
bool prependDir = true )
inherited

Book a TH3F histogram.

Definition at line 157 of file PlotBase.cxx.

158 {
159 std::string prefix = constructPrefix(m_sDirectory, prependDir);
160 Bool_t oldstat = TH3::AddDirectoryStatus();
161 TH3::AddDirectory(false);
162 TH3F *hist = new TH3F((prefix + name).c_str(),
163 labels.c_str(), nBinsX, startX, endX, nBinsY, startY, endY, nBinsZ, startZ, endZ);
164 hist->Sumw2();
165 TH3::AddDirectory(oldstat);
166 m_vBookedHistograms.emplace_back(hist, m_sDirectory);
167 return hist;
168}

◆ Book3D() [2/2]

TH3F * PlotBase::Book3D ( const std::string & name,
TH3 * refHist,
const std::string & labels,
bool prependDir = true )
inherited

Book a TH3F histogram using refHist as reference for number of bins and axis range.

Definition at line 171 of file PlotBase.cxx.

171 {
172 std::string prefix = constructPrefix(m_sDirectory, prependDir);
173 Bool_t oldstat = TH3::AddDirectoryStatus();
174 TH3::AddDirectory(false);
175 TH3F *hist = new TH3F((prefix + name).c_str(), labels.c_str(), refHist->GetNbinsX(),
176 refHist->GetXaxis()->GetXbins()->GetArray(), refHist->GetNbinsY(),
177 refHist->GetYaxis()->GetXbins()->GetArray(), refHist->GetNbinsZ(),
178 refHist->GetZaxis()->GetXbins()->GetArray());
179 TH3::AddDirectory(oldstat);
180
181 m_vBookedHistograms.emplace_back(hist, m_sDirectory);
182 return hist;
183}

◆ BookTEfficiency() [1/2]

TEfficiency * PlotBase::BookTEfficiency ( const std::string & name,
const std::string & labels,
const int nBinsX,
const float xlo,
const float xhi,
const bool prependDir = true )
inherited

Book a (1-D) TEfficiency histogram.

Definition at line 257 of file PlotBase.cxx.

257 {
258 std::string prefix = constructPrefix(m_sDirectory, prependDir);
259 //Bool_t oldstat = TEfficiency::AddDirectoryStatus();
260 TEfficiency *hist = new TEfficiency((prefix + name).c_str(), labels.c_str(), nBinsX, xlo, xhi);
261 //hist->SetAutoSave(0);
262 //hist->SetAtoFlush(0);
263 hist->SetDirectory(nullptr);
264 m_vBookedEfficiencies.emplace_back(hist, m_sDirectory);
265 //TEfficiency::AddDirectory(oldstat);
266 return hist;
267}
std::vector< EfficiencyData > m_vBookedEfficiencies
Definition PlotBase.h:99

◆ BookTEfficiency() [2/2]

TEfficiency * PlotBase::BookTEfficiency ( const std::string & name,
const std::string & labels,
const int nBinsX,
const float xlo,
const float xhi,
const int nBinsy,
const float ylo,
const float yhi,
const bool prependDir = true )
inherited

Book a (2-D) TEfficiency histogram.

Definition at line 270 of file PlotBase.cxx.

270 {
271 std::string prefix = constructPrefix(m_sDirectory, prependDir);
272
273 TEfficiency *hist = new TEfficiency((prefix + name).c_str(), labels.c_str(), nBinsX, xlo, xhi, nBinsY, ylo, yhi);
274 hist->SetDirectory(nullptr);
275 m_vBookedEfficiencies.emplace_back(hist, m_sDirectory);
276
277 return hist;
278}

◆ BookTProfile() [1/2]

TProfile * PlotBase::BookTProfile ( const std::string & name,
const std::string & labels,
int nBinsX,
float * binsX,
bool prependDir = true )
inherited

Book a TProfile histogram with variable binning in x-axis.

Definition at line 204 of file PlotBase.cxx.

204 {
205 std::string prefix = constructPrefix(m_sDirectory, prependDir);
206 TProfile *hist(nullptr);
207 Bool_t oldstat = TProfile::AddDirectoryStatus();
208 TProfile::AddDirectory(false);
209
210 hist = new TProfile((prefix + name).c_str(), labels.c_str(), nBinsX, binsX);
211 TProfile::AddDirectory(oldstat);
212 m_vBookedHistograms.emplace_back(hist, m_sDirectory);
213 return hist;
214}

◆ BookTProfile() [2/2]

TProfile * PlotBase::BookTProfile ( const std::string & name,
const std::string & labels,
int nBinsX,
float startX,
float endX,
float startY = -1,
float endY = -1,
bool prependDir = true,
bool useRMS = false )
inherited

Book a TProfile histogram.

Definition at line 186 of file PlotBase.cxx.

187 {
188 std::string prefix = constructPrefix(m_sDirectory, prependDir);
189 TProfile *hist(nullptr);
190 Bool_t oldstat = TProfile::AddDirectoryStatus();
191 TProfile::AddDirectory(false);
192 std::string opt = useRMS ? "S" : "";
193 if ((startY == -1) and (endY == -1)) {
194 hist = new TProfile((prefix + name).c_str(), labels.c_str(), nBinsX, startX, endX, opt.c_str());
195 } else {
196 hist = new TProfile((prefix + name).c_str(), labels.c_str(), nBinsX, startX, endX, startY, endY, opt.c_str());
197 }
198 TProfile::AddDirectory(oldstat);
199 m_vBookedHistograms.emplace_back(hist, m_sDirectory);
200 return hist;
201}

◆ BookTProfile2D() [1/2]

TProfile2D * PlotBase::BookTProfile2D ( const std::string & name,
const std::string & labels,
const int nBinsX,
const double xlo,
const double xhi,
const int nBinsY,
const double ylo,
const double yhi,
bool prependDir = true,
bool useRMS = false )
inherited

Book a TProfile 2D histogram with variable binning in x-axis and limits in y-values.

Definition at line 231 of file PlotBase.cxx.

233 {
234 std::string prefix = constructPrefix(m_sDirectory, prependDir);
235 Bool_t oldstat = TProfile2D::AddDirectoryStatus();
236 TProfile2D::AddDirectory(false);
237 std::string opt = useRMS ? "S" : "";
238 TProfile2D *hist = new TProfile2D((prefix + name).c_str(), labels.c_str(), nBinsX, xlo, xhi, nBinsY, ylo, yhi, opt.c_str());
239 TProfile2D::AddDirectory(oldstat);
240 m_vBookedHistograms.emplace_back(hist, m_sDirectory);
241 return hist;
242}

◆ BookTProfile2D() [2/2]

TProfile2D * PlotBase::BookTProfile2D ( const std::string & name,
const std::string & labels,
const int nBinsX,
double * binsX,
const int nBinsY,
double * binsY,
bool prependDir = true,
bool useRMS = false )
inherited

Book a TProfile 2D histogram with variable binning in x-axis and limits in y-values.

Definition at line 245 of file PlotBase.cxx.

245 {
246 std::string prefix = constructPrefix(m_sDirectory, prependDir);
247 Bool_t oldstat = TProfile2D::AddDirectoryStatus();
248 TProfile2D::AddDirectory(false);
249 std::string opt = useRMS ? "S" : "";
250 TProfile2D *hist = new TProfile2D((prefix + name).c_str(), labels.c_str(), nBinsX, binsX, nBinsY, binsY, opt.c_str());
251 TProfile2D::AddDirectory(oldstat);
252 m_vBookedHistograms.emplace_back(hist, m_sDirectory);
253 return hist;
254}

◆ BookTProfileRangeY()

TProfile * PlotBase::BookTProfileRangeY ( const std::string & name,
const std::string & labels,
int nBinsX,
double * binsX,
double startY,
double endY,
bool prependDir = true )
inherited

Book a TProfile histogram with variable binning in x-axis and limits in y-values.

Definition at line 217 of file PlotBase.cxx.

218 {
219 std::string prefix = constructPrefix(m_sDirectory, prependDir);
220 TProfile *hist(nullptr);
221 Bool_t oldstat = TProfile::AddDirectoryStatus();
222 TProfile::AddDirectory(false);
223
224 hist = new TProfile((prefix + name).c_str(), labels.c_str(), (Int_t) nBinsX, binsX, startY, endY);
225 TProfile::AddDirectory(oldstat);
226 m_vBookedHistograms.emplace_back(hist, m_sDirectory);
227 return hist;
228}

◆ BookTree()

TTree * PlotBase::BookTree ( const std::string & name,
bool prependDir = true )
inherited

Book a TTree.

Definition at line 281 of file PlotBase.cxx.

281 {
282 std::string prefix = constructPrefix(m_sDirectory, prependDir);
283 TTree *tree = new TTree((prefix + name).c_str(), "");
284
285 tree->SetAutoSave(0);
286 tree->SetAutoFlush(0);
287 tree->SetDirectory(nullptr);
288 m_vBookedTrees.emplace_back(tree, m_sDirectory);
289 return tree;
290}
std::vector< TreeData > m_vBookedTrees
Definition PlotBase.h:98
TChain * tree

◆ chain()

const std::string & IDTPM::TrackAnalysisPlotsMgr::chain ( ) const
inline

Definition at line 64 of file TrackAnalysisPlotsMgr.h.

64{ return m_chain; }

◆ constructPrefix()

std::string PlotBase::constructPrefix ( std::string dir,
bool prependDir )
staticprivateinherited

Definition at line 293 of file PlotBase.cxx.

293 {
294 if (!prependDir) {
295 return "";
296 }
297 std::replace(dir.begin(), dir.end(), '/', '_');
298 return dir;
299}

◆ directory()

const std::string & IDTPM::TrackAnalysisPlotsMgr::directory ( ) const
inline

Definition at line 65 of file TrackAnalysisPlotsMgr.h.

65{ return m_directory; }

◆ fill() [1/8]

StatusCode IDTPM::PlotMgr::fill ( TEfficiency * pTeff,
float value,
bool accepted,
float weight = 1. ) const
inherited

Fill a (1D) TEfficiency histogram.

fill the plot To get proper error estimate when possible

Definition at line 420 of file PlotMgr.cxx.

422{
423 if( not pTeff ) {
424 ATH_MSG_ERROR( "Trying to fill non-definded 1D TEfficiency" );
425 return StatusCode::FAILURE;
426 }
427
428 if( std::isnan( value ) or std::isnan( weight ) ) {
429 ATH_MSG_ERROR( "Non-valid fill arguments for 1D TEfficiency:" << pTeff->GetName() );
430 return StatusCode::FAILURE;
431 }
432
435 if( weight==1.) pTeff->Fill( accepted, value );
436 else pTeff->FillWeighted( accepted, weight, value );
437 return StatusCode::SUCCESS;
438}

◆ fill() [2/8]

StatusCode IDTPM::PlotMgr::fill ( TEfficiency * pTeff2d,
float xvalue,
float yvalue,
bool accepted,
float weight = 1. ) const
inherited

Fill a (2D) TEfficiency histogram.

fill the plot To get proper error estimate when possible

Definition at line 442 of file PlotMgr.cxx.

444{
445 if( not pTeff2d ) {
446 ATH_MSG_ERROR( "Trying to fill non-definded 2D TEfficiency" );
447 return StatusCode::FAILURE;
448 }
449
450 if( std::isnan( xvalue ) or std::isnan( yvalue ) or std::isnan( weight ) ) {
451 ATH_MSG_ERROR( "Non-valid fill arguments for 2D TEfficiency:" << pTeff2d->GetName() );
452 return StatusCode::FAILURE;
453 }
454
457 if( weight==1.) pTeff2d->Fill( accepted, xvalue, yvalue );
458 else pTeff2d->FillWeighted( accepted, weight, xvalue, yvalue );
459 return StatusCode::SUCCESS;
460}

◆ fill() [3/8]

StatusCode IDTPM::PlotMgr::fill ( TH1 * pTh1,
float value,
float weight = 1. ) const
inherited

— Fill plots methods —

Fill a TH1 histogram


— Fill histograms methods —

Fill a TH1 histogram

fill the plot

Definition at line 317 of file PlotMgr.cxx.

319{
320 if( not pTh1 ) {
321 ATH_MSG_ERROR( "Trying to fill non-definded TH1" );
322 return StatusCode::FAILURE;
323 }
324
325 if( std::isnan( value ) or std::isnan( weight ) ) {
326 ATH_MSG_ERROR( "Non-valid fill arguments for TH1:" << pTh1->GetName() );
327 return StatusCode::FAILURE;
328 }
329
331 pTh1->Fill( value, weight );
332 return StatusCode::SUCCESS;
333}

◆ fill() [4/8]

StatusCode IDTPM::PlotMgr::fill ( TH2 * pTh2,
float xval,
float yval,
float weight = 1. ) const
inherited

Fill a TH2 histogram.

fill the plot

Definition at line 337 of file PlotMgr.cxx.

339{
340 if( not pTh2 ) {
341 ATH_MSG_ERROR( "Trying to fill non-definded TH2" );
342 return StatusCode::FAILURE;
343 }
344
345 if( std::isnan( xval ) or std::isnan( yval ) or std::isnan( weight ) ) {
346 ATH_MSG_ERROR( "Non-valid fill arguments for TH2:" << pTh2->GetName() );
347 return StatusCode::FAILURE;
348 }
349
351 pTh2->Fill( xval, yval, weight );
352 return StatusCode::SUCCESS;
353}

◆ fill() [5/8]

StatusCode IDTPM::PlotMgr::fill ( TH3 * pTh3,
float xval,
float yval,
float zval,
float weight = 1. ) const
inherited

Fill a TH3 histogram.

fill the plot

Definition at line 357 of file PlotMgr.cxx.

359{
360 if( not pTh3 ) {
361 ATH_MSG_ERROR( "Trying to fill non-definded TH3" );
362 return StatusCode::FAILURE;
363 }
364
365 if( std::isnan( xval ) or std::isnan( yval ) or
366 std::isnan( zval ) or std::isnan( weight ) ) {
367 ATH_MSG_ERROR( "Non-valid fill arguments for TH3:" << pTh3->GetName() );
368 return StatusCode::FAILURE;
369 }
370
371
373 pTh3->Fill( xval, yval, zval, weight );
374 return StatusCode::SUCCESS;
375}

◆ fill() [6/8]

StatusCode IDTPM::PlotMgr::fill ( TProfile * pTprofile,
float xval,
float yval,
float weight = 1. ) const
inherited

Fill a TProfile histogram weight allows weighted-averaging in the profile.

Fill a TProfile histogram.

fill the plot

Definition at line 379 of file PlotMgr.cxx.

381{
382 if( not pTprofile ) {
383 ATH_MSG_ERROR( "Trying to fill non-definded TProfile" );
384 return StatusCode::FAILURE;
385 }
386
387 if( std::isnan( xval ) or std::isnan( yval ) or std::isnan( weight ) ) {
388 ATH_MSG_ERROR( "Non-valid fill arguments for TProfile:" << pTprofile->GetName() );
389 return StatusCode::FAILURE;
390 }
391
393 pTprofile->Fill( xval, yval, weight );
394 return StatusCode::SUCCESS;
395}

◆ fill() [7/8]

StatusCode IDTPM::PlotMgr::fill ( TProfile2D * pTprofile,
float xval,
float yval,
float zval,
float weight = 1. ) const
inherited

Fill a TProfile2D histogram weight allows weighted-averaging in the profile.

Fill a TProfile2D histogram.

fill the plot

Definition at line 399 of file PlotMgr.cxx.

401{
402 if( not pTprofile ) {
403 ATH_MSG_ERROR( "Trying to fill non-definded TProfile2D" );
404 return StatusCode::FAILURE;
405 }
406
407 if( std::isnan( xval ) or std::isnan( yval ) or
408 std::isnan( zval ) or std::isnan( weight ) ) {
409 ATH_MSG_ERROR( "Non-valid fill arguments for TProfile2D:" << pTprofile->GetName() );
410 return StatusCode::FAILURE;
411 }
412
414 pTprofile->Fill( xval, yval, zval, weight );
415 return StatusCode::SUCCESS;
416}

◆ fill() [8/8]

StatusCode IDTPM::TrackAnalysisPlotsMgr::fill ( TrackAnalysisCollections & trkAnaColls,
float weight = 1.0 )

General fill method.


---— General fill ---—

Plots w.r.t. test tracks quantities

Plots w.r.t. reference tracks quantities

Plots w.r.t. truth quantities (for EFTruthMatch only)

Track and vertex multiplicity plots

Definition at line 209 of file TrackAnalysisPlotsMgr.cxx.

211{
212 float actualMu = trkAnaColls.eventInfo() ?
213 trkAnaColls.eventInfo()->actualInteractionsPerCrossing() : -1.;
214 float truthMu = trkAnaColls.truthPileupEventContainer() ?
215 static_cast< float >( trkAnaColls.truthPileupEventContainer()->size() ) : -1.;
216
218 if( m_trkAnaDefSvc->isTestTruth() ) {
220 trkAnaColls.testTruthVec( TrackAnalysisCollections::InRoI ),
221 trkAnaColls.matches(),
222 trkAnaColls.testTruthVertexVec( TrackAnalysisCollections::InRoI ),
223 truthMu, actualMu, weight ) );
224 } else {
226 trkAnaColls.testTrackVec( TrackAnalysisCollections::InRoI ),
227 trkAnaColls.matches(),
228 trkAnaColls.testRecoVertexVec( TrackAnalysisCollections::InRoI ),
229 truthMu, actualMu, weight ) );
230 }
231
233 if( m_trkAnaDefSvc->isReferenceTruth() ) {
235 trkAnaColls.refTruthVec( TrackAnalysisCollections::InRoI ),
236 trkAnaColls.matches(),
237 trkAnaColls.refTruthVertexVec( TrackAnalysisCollections::InRoI ),
238 truthMu, actualMu, weight ) );
239 } else {
241 trkAnaColls.refTrackVec( TrackAnalysisCollections::InRoI ),
242 trkAnaColls.matches(),
243 trkAnaColls.refRecoVertexVec( TrackAnalysisCollections::InRoI ),
244 truthMu, actualMu, weight ) );
245 }
246
248 if( m_trkAnaDefSvc->matchingType() == "EFTruthMatch" ) {
250 trkAnaColls.testTrackVec( TrackAnalysisCollections::InRoI ),
251 trkAnaColls.refTrackVec( TrackAnalysisCollections::InRoI ),
252 trkAnaColls.truthPartVec( TrackAnalysisCollections::InRoI ),
253 trkAnaColls.matches(),
254 truthMu, actualMu, weight ) );
255 }
256
258 std::vector< size_t > testTrackCounts = trkAnaColls.testTrackCounts();
259 std::vector< size_t > refTrackCounts = trkAnaColls.refTrackCounts();
260
261 std::vector< size_t > testVertexCounts = trkAnaColls.testVertexCounts();
262 std::vector< size_t > refVertexCounts = trkAnaColls.refVertexCounts();
263
264 if( m_plots_summary ) {
265 ATH_CHECK( m_plots_summary->fillPlots(
266 testTrackCounts, refTrackCounts,
267 trkAnaColls.isNewRoI(), weight ) );
268 }
269
272 testTrackCounts, testVertexCounts,
273 truthMu, actualMu, weight ) );
274 }
275
278 refTrackCounts, refVertexCounts,
279 truthMu, actualMu, weight ) );
280 }
281
282 return StatusCode::SUCCESS;
283}
std::unique_ptr< NtracksPlots > m_plots_nTracks_vsRef
SmartIF< ITrackAnalysisDefinitionSvc > m_trkAnaDefSvc
TrackAnalysis definition service to "hold" the histograms configurations/flags.
std::unique_ptr< SummaryPlots > m_plots_summary
Plot categories summary plots.
StatusCode fillPlotsTruth(const std::vector< const xAOD::TrackParticle * > &testTracks, const std::vector< const xAOD::TrackParticle * > &refTracks, const std::vector< const xAOD::TruthParticle * > &truths, const ITrackMatchingLookup &matches, float truthMu=0., float actualMu=0., float weight=1.0)
Fill efficiency plots w.r.t. truth (for EFTruthMatch only)
StatusCode fillPlotsReference(const std::vector< const PARTICLE * > &particles, const ITrackMatchingLookup &matches, const std::vector< const VERTEX * > &vertices, float truthMu=0., float actualMu=0., float weight=1.0)
Fill all plots w.r.t.
std::unique_ptr< NtracksPlots > m_plots_nTracks_vsTest
StatusCode fillPlotsTest(const std::vector< const PARTICLE * > &particles, const ITrackMatchingLookup &matches, const std::vector< const VERTEX * > &vertices, float truthMu=0., float actualMu=0., float weight=1.0)
Fill all plots w.r.t.

◆ fillPlotsReference()

template<typename PARTICLE, typename VERTEX>
StatusCode IDTPM::TrackAnalysisPlotsMgr::fillPlotsReference ( const std::vector< const PARTICLE * > & particles,
const ITrackMatchingLookup & matches,
const std::vector< const VERTEX * > & vertices,
float truthMu = 0.,
float actualMu = 0.,
float weight = 1.0 )

Fill all plots w.r.t.

reference tracks quantities for a specific collection (trigger tracks, offline tracks, truth particles) also including vertices for the reference collection


— Fill plots w.r.t. reference —

track parameters plots

hits on tracks plots

efficiency plots

technical efficiency plots

duplicate rate plots

offline electron plots (Offline is always either test or reference)

Selected vertices loop

skip dummy vertex

getting vertex-associated tracks and their weights

vertex parameters plots

close loop over vertices

Vertices multiplicity plots

Definition at line 457 of file TrackAnalysisPlotsMgr.cxx.

462{
463
464 for( const PARTICLE* particle : particles ) {
465
468 ATH_CHECK( m_plots_trkParam_vsRef->fillPlots( *particle, weight ) );
469 }
470
473 ATH_CHECK( m_plots_hitsOnTrk_vsRef->fillPlots( *particle, truthMu, actualMu, weight ) );
474 }
475
476 bool isMatched = matches.isRefMatched( *particle );
477
479 if( m_plots_eff_vsRef ) {
480 ATH_CHECK( m_plots_eff_vsRef->fillPlots(
481 *particle, isMatched, truthMu, actualMu, weight ) );
482 }
483
486 if( m_trkAnaDefSvc->isReferenceTruth() and
487 nHitsSelVec( *particle, m_trkAnaDefSvc->minSilHits(), m_trkAnaDefSvc->etaBins() ) )
488 {
490 *particle, isMatched, truthMu, actualMu, weight ) );
491 }
492 else if ( m_trkAnaDefSvc->isTestTruth() ) {
493
494 bool isTechMatched = false;
495
496 if (isMatched) {
497 for ( const xAOD::TruthParticle *thisTruth : (matches.getMatchedTestTruths( *particle ))) {
498 if ( nHitsSelVec( *thisTruth, m_trkAnaDefSvc->minSilHits(), m_trkAnaDefSvc->etaBins() ) ) {
499 isTechMatched = true;
500 break;
501 }
502 }
503 }
505 *particle, isTechMatched, truthMu, actualMu, weight ) );
506 }
507
508 else if ( m_trkAnaDefSvc->matchingType() == "EFTruthMatch" ) {
509 const xAOD::TruthParticle* linkedTruth = getLinkedTruth(
510 *particle, m_trkAnaDefSvc->truthProbCut() );
511 bool isTechMatched = isMatched ?
512 nHitsSelVec( *linkedTruth, m_trkAnaDefSvc->minSilHits(), m_trkAnaDefSvc->etaBins() ) : false;
514 *particle, isTechMatched, truthMu, actualMu, weight ) );
515 }
516 }
517
519 if( m_plots_duplRate ) {
520 unsigned int nMatched = m_trkAnaDefSvc->isTestTruth() ?
521 matches.getMatchedTestTruths( *particle ).size() :
522 matches.getMatchedTestTracks( *particle ).size();
523
524 ATH_CHECK( m_plots_duplRate->fillPlots(
525 *particle, nMatched, truthMu, actualMu, weight ) );
526 }
527
529 if( m_trkAnaDefSvc->isReferenceOffline() ) {
530 if( m_plots_offEle ) {
531 ATH_CHECK( m_plots_offEle->fillPlots( *particle, false, weight ) );
532 }
534 ATH_CHECK( m_plots_eff_vsOffEle->fillPlots( *particle, isMatched, weight ) );
535 }
536 }
537
538 } // close loop over particles
539
541 int nGoodVertices(0);
542 for( const VERTEX* vertex : vertices ) {
544 if( vertexType( *vertex ) == xAOD::VxType::NoVtx ) {
545 ATH_MSG_DEBUG( "Found Dummy vertex. Skipping" );
546 continue;
547 }
548 nGoodVertices++;
549
551 std::vector< const PARTICLE* > vtxTracks{};
552 std::vector< float > vtxTrackWeights{};
554 *vertex, vtxTracks, vtxTrackWeights,
555 particles, m_trkAnaDefSvc->useSelectedVertexTracks() ) ) {
556 ATH_MSG_WARNING( "Problem when retrieving vertex-assocciated tracks" );
557 if( not vtxTracks.empty() ) {
558 ATH_MSG_WARNING( "Invalid associated track links found. Check your input format." );
559 }
560 }
561
564 ATH_CHECK( m_plots_vtxParam_vsRef->fillPlots( *vertex, vtxTracks, vtxTrackWeights, weight ) );
565 }
566 }
567
570 ATH_CHECK( m_plots_nVtxParam_vsRef->fillPlots( nGoodVertices, truthMu, actualMu, weight ) );
571 }
572
573 return StatusCode::SUCCESS;
574}
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
std::unique_ptr< EfficiencyPlots > m_plots_eff_vsRef
std::unique_ptr< EfficiencyPlots > m_plots_tech_eff_vsRef
std::unique_ptr< OfflineElectronPlots > m_plots_offEle
plots w.r.t. reference offline electron
std::unique_ptr< VertexParametersPlots > m_plots_vtxParam_vsRef
plots w.r.t. reference vertices parameters
std::unique_ptr< HitsOnTracksPlots > m_plots_hitsOnTrk_vsRef
std::unique_ptr< VertexParametersPlots > m_plots_nVtxParam_vsRef
std::unique_ptr< TrackParametersPlots > m_plots_trkParam_vsRef
plots w.r.t. reference tracks parameters
std::unique_ptr< DuplicateRatePlots > m_plots_duplRate
duplicate rate plots
std::unique_ptr< OfflineElectronPlots > m_plots_eff_vsOffEle
bool nHitsSelVec(const PARTICLE &p, const std::vector< unsigned int > &minHits, const std::vector< float > &etaBins)
bool getVertexTracksAndWeights(const xAOD::Vertex &vtx, std::vector< const xAOD::TrackParticle * > &vtxTracks, std::vector< float > &vtxTrackWeights, const std::vector< const xAOD::TrackParticle * > &selTracks, bool useSelected)
getVertexTracksAndWeights
const xAOD::TruthParticle * getLinkedTruth(const xAOD::TrackParticle &track, const float truthProbCut)
getLinkedTruth
int vertexType(const V &v)
@ NoVtx
Dummy vertex. TrackParticle was not used in vertex fit.
TruthParticle_v1 TruthParticle
Typedef to implementation.

◆ fillPlotsTest()

template<typename PARTICLE, typename VERTEX>
StatusCode IDTPM::TrackAnalysisPlotsMgr::fillPlotsTest ( const std::vector< const PARTICLE * > & particles,
const ITrackMatchingLookup & matches,
const std::vector< const VERTEX * > & vertices,
float truthMu = 0.,
float actualMu = 0.,
float weight = 1.0 )

Fill all plots w.r.t.

test tracks quantities for a specific collection (trigger tracks, offline tracks, truth particles) also including vertices for the test collection


— Fill plots w.r.t. test —

Selected particles loop

track parameters plots

hits on tracks plots

efficiency plots

technical efficiency plots

resolution plots

hits on matched tracks plots

fake rate plots (and hits on fake plots)

offline electron plots (Offline is always either test or reference)

Selected vertices loop

skip dummy vertex

getting vertex-associated tracks and their weights

vertex parameters plots

close loop over vertices

Vertices multiplicity plots

Definition at line 290 of file TrackAnalysisPlotsMgr.cxx.

295{
297 for( const PARTICLE* particle : particles ) {
300 ATH_CHECK( m_plots_trkParam_vsTest->fillPlots( *particle, weight ) );
301 }
302
305 ATH_CHECK( m_plots_hitsOnTrk_vsTest->fillPlots( *particle, truthMu, actualMu, weight ) );
306 }
307
308 bool isMatched = matches.isTestMatched( *particle );
309
311 if( m_plots_eff_vsTest ) {
312 ATH_CHECK( m_plots_eff_vsTest->fillPlots(
313 *particle, isMatched, truthMu, actualMu, weight ) );
314 }
315
318 if ( m_trkAnaDefSvc->isTestTruth() and
319 nHitsSelVec( *particle,
320 m_trkAnaDefSvc->minSilHits(),
321 m_trkAnaDefSvc->etaBins() ) ) {
323 *particle, isMatched, truthMu, actualMu, weight ) );
324 }
325 else if ( m_trkAnaDefSvc->isReferenceTruth() ) {
326 bool isTechMatched = isMatched ?
327 nHitsSelVec( *(matches.getMatchedRefTruth( *particle )),
328 m_trkAnaDefSvc->minSilHits(),
329 m_trkAnaDefSvc->etaBins() ) : false;
331 *particle, isTechMatched, truthMu, actualMu, weight ) );
332 }
333 else if ( m_trkAnaDefSvc->matchingType() == "EFTruthMatch" ) {
334 const xAOD::TruthParticle* linkedTruth = getLinkedTruth(
335 *particle, m_trkAnaDefSvc->truthProbCut() );
336 bool isTechMatched = isMatched ?
337 nHitsSelVec( *linkedTruth,
338 m_trkAnaDefSvc->minSilHits(),
339 m_trkAnaDefSvc->etaBins() ) : false;
341 *particle, isTechMatched, truthMu, actualMu, weight ) );
342 }
343 }
344
346 if( m_plots_resolution ) {
347 if( isMatched ) {
348 if( m_trkAnaDefSvc->isReferenceTruth() ) {
349 ATH_CHECK( m_plots_resolution->fillPlots(
350 *particle, *(matches.getMatchedRefTruth( *particle )), weight ) );
351 } else {
352 ATH_CHECK( m_plots_resolution->fillPlots(
353 *particle, *(matches.getMatchedRefTrack( *particle )), weight ) );
354 }
355 }
356 }
357
360 ATH_CHECK( m_plots_hitsOnMatchedTrk->fillPlots( *particle, truthMu, actualMu, weight ) );
361 if( m_trkAnaDefSvc->isReferenceTruth() ) {
363 *particle, *(matches.getMatchedRefTruth( *particle )), truthMu, actualMu, weight ) );
364 } else {
366 *particle, *(matches.getMatchedRefTrack( *particle )), truthMu, actualMu, weight ) );
367 }
368 }
369
371 bool isUnlinked = isUnlinkedTruth( *particle );
372 bool isFakeTruth = getTruthMatchProb( *particle ) < m_trkAnaDefSvc->truthProbCut();
373 if ( isUnlinked ) {
375 ATH_CHECK( m_plots_missingTruth->fillPlots( *particle, isFakeTruth, truthMu, actualMu, weight ) );
376 }
378 ATH_CHECK( m_plots_hitsOnUnlinkedTrk->fillPlots( *particle, truthMu, actualMu, weight ) );
379 }
380 }
381
382 bool doFakes = m_trkAnaDefSvc->unlinkedAsFakes() ? true : not isUnlinked;
383 if( doFakes and m_plots_fakeRate ) {
384 ATH_CHECK( m_plots_fakeRate->fillPlots( *particle, isFakeTruth, truthMu, actualMu, weight ) );
385 if( m_plots_hitsOnFakeTrk and isFakeTruth ) {
386 ATH_CHECK( m_plots_hitsOnFakeTrk->fillPlots( *particle, truthMu, actualMu, weight ) );
387 }
388 }
389
391 if( m_trkAnaDefSvc->isTestOffline() ) {
392 if( m_plots_offEle ) {
393 ATH_CHECK( m_plots_offEle->fillPlots( *particle, false, weight ) );
394 }
396 ATH_CHECK( m_plots_eff_vsOffEle->fillPlots( *particle, isMatched, weight ) );
397 }
398 }
399
400 } // close loop over particles
401
403 int nGoodVertices(0);
404 for( const VERTEX* vertex : vertices ) {
406 if( vertexType( *vertex ) == xAOD::VxType::NoVtx ) {
407 ATH_MSG_DEBUG( "Found Dummy vertex. Skipping" );
408 continue;
409 }
410 nGoodVertices++;
411
413 std::vector< const PARTICLE* > vtxTracks{};
414 std::vector< float > vtxTrackWeights{};
416 *vertex, vtxTracks, vtxTrackWeights,
417 particles, m_trkAnaDefSvc->useSelectedVertexTracks() ) ) {
418 ATH_MSG_WARNING( "Problem when retrieving vertex-assocciated tracks" );
419 if( not vtxTracks.empty() ) {
420 ATH_MSG_WARNING( "Invalid associated track links found. Check your input format." );
421 }
422 }
423
426 ATH_CHECK( m_plots_vtxParam_vsTest->fillPlots( *vertex, vtxTracks, vtxTrackWeights, weight ) );
427 }
428 }
429
432 ATH_CHECK( m_plots_nVtxParam_vsTest->fillPlots( nGoodVertices, truthMu, actualMu, weight ) );
433 }
434
435 return StatusCode::SUCCESS;
436}
std::unique_ptr< ResolutionPlots > m_plots_resolution
resolution plots
std::unique_ptr< FakeRatePlots > m_plots_fakeRate
fake rate plots (only when reference=truth)
std::unique_ptr< EfficiencyPlots > m_plots_tech_eff_vsTest
std::unique_ptr< FakeRatePlots > m_plots_missingTruth
std::unique_ptr< HitsOnTracksPlots > m_plots_hitsOnUnlinkedTrk
std::unique_ptr< VertexParametersPlots > m_plots_vtxParam_vsTest
plots w.r.t. test vertices parameters
std::unique_ptr< HitsOnTracksPlots > m_plots_hitsOnTrk_vsTest
std::unique_ptr< HitsOnTracksPlots > m_plots_hitsOnMatchedTrk
std::unique_ptr< HitsOnTracksPlots > m_plots_hitsOnMatchedTrk_vsRef
std::unique_ptr< EfficiencyPlots > m_plots_eff_vsTest
std::unique_ptr< VertexParametersPlots > m_plots_nVtxParam_vsTest
std::unique_ptr< TrackParametersPlots > m_plots_trkParam_vsTest
plots w.r.t. test tracks parameters
std::unique_ptr< HitsOnTracksPlots > m_plots_hitsOnFakeTrk
float getTruthMatchProb(const xAOD::TrackParticle &track)
getTruthMatchProb
bool isUnlinkedTruth(const xAOD::TrackParticle &track)
isUnlinkedTruth

◆ fillPlotsTruth()

StatusCode IDTPM::TrackAnalysisPlotsMgr::fillPlotsTruth ( const std::vector< const xAOD::TrackParticle * > & testTracks,
const std::vector< const xAOD::TrackParticle * > & refTracks,
const std::vector< const xAOD::TruthParticle * > & truths,
const ITrackMatchingLookup & matches,
float truthMu = 0.,
float actualMu = 0.,
float weight = 1.0 )

Fill efficiency plots w.r.t. truth (for EFTruthMatch only)


— Fill plots w.r.t. truth —

Loop over reference tracks to look for a reference matched to thisTruth

Fill the histogram only if a matched reference is found

Loop over test tracks to look for a test matched to thisTruth

efficiency plots (for EFTruthMatch only)

technical efficiency plots (for EFTruthMatch only)

Definition at line 594 of file TrackAnalysisPlotsMgr.cxx.

600{
601
602 for( const xAOD::TruthParticle* thisTruth : truths ) {
603
604 bool isMatched( false ); // test track matched to reference track through EFTruthMatch method
605 bool refMatched( false ); // reference track matched to thisTruth
606
608 for( const xAOD::TrackParticle* thisTrack : refTracks ) {
609 const xAOD::TruthParticle* linkedTruth = getLinkedTruth(
610 *thisTrack, m_trkAnaDefSvc->truthProbCut() );
611 if( not linkedTruth ) {
612 ATH_MSG_WARNING( "Unlinked track!!" );
613 continue;
614 }
615 if( thisTruth == linkedTruth ) {
616 refMatched = true;
617 break;
618 }
619 } // close loop over reference tracks
620
622 if ( not refMatched ) continue;
623
624 else {
625
627 for( const xAOD::TrackParticle* thisTrack : testTracks ) {
628 const xAOD::TruthParticle* linkedTruth = getLinkedTruth(
629 *thisTrack, m_trkAnaDefSvc->truthProbCut() );
630 if( not linkedTruth ) {
631 ATH_MSG_WARNING( "Unlinked track!!" );
632 continue;
633 }
634 if( thisTruth == linkedTruth ) {
635 isMatched = matches.isTestMatched( *thisTrack ); // Check if this test is matched to reference with EFTruthMatch
636 break;
637 }
638 } // close loop over test tracks
639
641 if( m_plots_eff_vsTruth ) {
642 ATH_CHECK( m_plots_eff_vsTruth->fillPlots(
643 *thisTruth, isMatched, truthMu, actualMu, weight ) );
644 }
645
648 if (nHitsSelVec( *thisTruth, m_trkAnaDefSvc->minSilHits(), m_trkAnaDefSvc->etaBins() )) {
650 *thisTruth, isMatched , truthMu, actualMu, weight ) );
651 }
652 }
653 }
654 } // close loop over truth particles
655
656 return StatusCode::SUCCESS;
657}
std::unique_ptr< EfficiencyPlots > m_plots_tech_eff_vsTruth
std::unique_ptr< EfficiencyPlots > m_plots_eff_vsTruth
plots w.r.t. efficiency plots w.r.t. truth (for EFTruthMatch only)
TrackParticle_v1 TrackParticle
Reference the current persistent version:

◆ finalize()

void PlotBase::finalize ( )
inherited

Definition at line 47 of file PlotBase.cxx.

47 {
48 for (auto *subNode: m_vSubNodes) {
49 subNode->finalize();
50 }
52}
std::vector< PlotBase * > m_vSubNodes
Definition PlotBase.h:96
virtual void finalizePlots()
Definition PlotBase.h:92

◆ finalizePlots()

◆ getDirectory()

const std::string & PlotBase::getDirectory ( )
inlineinherited

Definition at line 88 of file PlotBase.h.

88{return m_sDirectory;}

◆ getLogLinearBins()

std::vector< float > IDTPM::PlotMgr::getLogLinearBins ( unsigned int nBins,
float absMin,
float absMax,
bool symmetriseAroundZero = false )
protectedinherited

Get Log-Linear binning vector inherited from InDetPhysValMonitoring/src/logLinearBinning.h.

Get Log-Linear binning vector.

some checks to ensure the user is requesting something sensible

reserve the vector space

define our starting bin edge and step size in log space

then populate the bin array

FIXME: currently disabled

Definition at line 464 of file PlotMgr.cxx.

466{
467 std::vector<float> emptyVec;
469 if( absMin<=0 or absMax<=0 ) {
470 ATH_MSG_WARNING( "absMin or absMax argument to getLogLinearBins is out of range" );
471 return emptyVec;
472 } else if( nBins==0 ) {
473 ATH_MSG_WARNING( "nBins argument to getLogLinearBins is zero" );
474 return emptyVec;
475 }
477 unsigned int asymVecSize = nBins + 1;
478 std::vector<float> theBinning( asymVecSize, 0.);
480 float logStart = std::log( absMin );
481 float logDist = std::log( absMax ) - logStart;
482 float logStep = logDist / (float) nBins;
484 float thisLog{ logStart };
485 for( float& thisBin : theBinning ) {
486 thisBin = std::exp( thisLog );
487 thisLog += logStep;
488 }
489 if( symmetriseAroundZero ) {
491 return emptyVec;
492 }
493 return theBinning;
494}

◆ initialize()

StatusCode IDTPM::TrackAnalysisPlotsMgr::initialize ( )

initialize


— initialize —

load trkAnaDefSvc

Summary plots

Track parameters plots

Track multiplicity plots

Efficiency plots

Technical efficiency plots

Resolution plots

Fake Rate plots (only if reference is Truth)

Duplicate Rate plots

Hits on tracks plots – all tracks

– matched tracks

– fake and unlinked tracks

Offline electron plots

Vertex parameters plots

Vertices parameters plots

Vertices multiplicity plots

intialize PlotBase

Definition at line 39 of file TrackAnalysisPlotsMgr.cxx.

40{
41 ATH_MSG_DEBUG( "Initialising in directory: " << m_directory );
42
44 m_trkAnaDefSvc = Gaudi::svcLocator()->service( "TrkAnaDefSvc"+m_anaTag );
45 ATH_CHECK( m_trkAnaDefSvc.isValid() );
46
48 if( m_trkAnaDefSvc->plotTrackMultiplicities() ) {
49 m_plots_summary = std::make_unique< SummaryPlots >(
50 this, "Tracks/Multiplicities", m_anaTag,
51 m_trkAnaDefSvc->doTrigNavigation() );
52 }
53
55 if( m_trkAnaDefSvc->plotTrackParameters() ) {
56 m_plots_trkParam_vsTest = std::make_unique< TrackParametersPlots >(
57 this, "Tracks/Parameters", m_anaTag, m_trkAnaDefSvc->testTag(),
58 ( not m_trkAnaDefSvc->isTestTruth() ) and m_trkAnaDefSvc->plotTrackParametersErrors(),
59 m_trkAnaDefSvc->plotTracksInJets() );
60 m_plots_trkParam_vsRef = std::make_unique< TrackParametersPlots >(
61 this, "Tracks/Parameters", m_anaTag, m_trkAnaDefSvc->referenceTag(),
62 ( not m_trkAnaDefSvc->isReferenceTruth() ) and m_trkAnaDefSvc->plotTrackParametersErrors(),
63 m_trkAnaDefSvc->plotTracksInJets() );
64 }
65
67 if( m_trkAnaDefSvc->plotTrackMultiplicities() ) {
68 m_plots_nTracks_vsTest = std::make_unique< NtracksPlots >(
69 this, "Tracks/Multiplicities", m_anaTag, m_trkAnaDefSvc->testTag(),
70 m_trkAnaDefSvc->doTrigNavigation(), m_trkAnaDefSvc->hasFullPileupTruth() );
71 m_plots_nTracks_vsRef = std::make_unique< NtracksPlots >(
72 this, "Tracks/Multiplicities", m_anaTag, m_trkAnaDefSvc->referenceTag(),
73 m_trkAnaDefSvc->doTrigNavigation(), m_trkAnaDefSvc->hasFullPileupTruth() );
74 }
75
77 if( m_trkAnaDefSvc->plotEfficiencies() ) {
78 m_plots_eff_vsTest = std::make_unique< EfficiencyPlots >(
79 this, "Tracks/Efficiencies/Purities", m_anaTag, m_trkAnaDefSvc->testTag(), false );
80 m_plots_eff_vsRef = std::make_unique< EfficiencyPlots >(
81 this, "Tracks/Efficiencies", m_anaTag, m_trkAnaDefSvc->referenceTag(), false,
82 true, m_trkAnaDefSvc->hasFullPileupTruth() );
83 if( m_trkAnaDefSvc->matchingType() == "EFTruthMatch" ) {
84 m_plots_eff_vsTruth = std::make_unique< EfficiencyPlots >(
85 this, "Tracks/Efficiencies", m_anaTag, "truth", false );
86 }
87 }
88
90 if( m_trkAnaDefSvc->plotTechnicalEfficiencies()) {
91 m_plots_tech_eff_vsTest = std::make_unique< EfficiencyPlots >(
92 this, "Tracks/Efficiencies/Technical/Purities", m_anaTag, m_trkAnaDefSvc->testTag(), true );
93 m_plots_tech_eff_vsRef = std::make_unique< EfficiencyPlots >(
94 this, "Tracks/Efficiencies/Technical", m_anaTag, m_trkAnaDefSvc->referenceTag(), true,
95 true, m_trkAnaDefSvc->hasFullPileupTruth() );
96 if( m_trkAnaDefSvc->matchingType() == "EFTruthMatch" ) {
97 m_plots_tech_eff_vsTruth = std::make_unique< EfficiencyPlots >(
98 this, "Tracks/Efficiencies/Technical", m_anaTag, "truth", true );
99 }
100 }
101
103 if( m_trkAnaDefSvc->plotResolutions() ) {
104 m_plots_resolution = std::make_unique< ResolutionPlots >(
105 this, "Tracks/Resolutions", m_anaTag,
106 m_trkAnaDefSvc->testTag(), m_trkAnaDefSvc->referenceTag(),
107 m_trkAnaDefSvc->resolutionMethod() );
108 }
109
111 if( m_trkAnaDefSvc->plotFakeRates() and m_trkAnaDefSvc->isReferenceTruth() ) {
112 m_plots_fakeRate = std::make_unique< FakeRatePlots >(
113 this, "Tracks/FakeRates", m_anaTag, m_trkAnaDefSvc->testTag(),
114 true, m_trkAnaDefSvc->hasFullPileupTruth() );
115 if ( not m_trkAnaDefSvc->unlinkedAsFakes() ) {
116 m_plots_missingTruth = std::make_unique< FakeRatePlots >(
117 this, "Tracks/FakeRates/Unlinked", m_anaTag, m_trkAnaDefSvc->testTag(),
118 true, m_trkAnaDefSvc->hasFullPileupTruth() );
119 }
120 }
121
123 if( m_trkAnaDefSvc->plotDuplicateRates() ) {
124 m_plots_duplRate = std::make_unique< DuplicateRatePlots >(
125 this, "Tracks/Duplicates", m_anaTag, m_trkAnaDefSvc->referenceTag(),
126 true, m_trkAnaDefSvc->hasFullPileupTruth() );
127 }
128
131 if( m_trkAnaDefSvc->plotHitsOnTracks() and not m_trkAnaDefSvc->isTestTruth() ) {
132 m_plots_hitsOnTrk_vsTest = std::make_unique< HitsOnTracksPlots >(
133 this, "Tracks/HitsOnTracks", m_anaTag,
134 m_trkAnaDefSvc->testTag(), m_trkAnaDefSvc->isITk(),
135 true, m_trkAnaDefSvc->hasFullPileupTruth(), m_trkAnaDefSvc->plotHitsOnTracksExpert() );
136 }
137 if( m_trkAnaDefSvc->plotHitsOnTracksReference() and not m_trkAnaDefSvc->isReferenceTruth() ) {
138 m_plots_hitsOnTrk_vsRef = std::make_unique< HitsOnTracksPlots >(
139 this, "Tracks/HitsOnTracks", m_anaTag,
140 m_trkAnaDefSvc->referenceTag(), m_trkAnaDefSvc->isITk(), m_trkAnaDefSvc->plotHitsOnTracksExpert() );
141 }
143 if( m_trkAnaDefSvc->plotHitsOnMatchedTracks() and not m_trkAnaDefSvc->isTestTruth() ) {
144 m_plots_hitsOnMatchedTrk = std::make_unique< HitsOnTracksPlots >(
145 this, "Tracks/Resolutions/HitsOnTracks", m_anaTag,
146 m_trkAnaDefSvc->testTag(), m_trkAnaDefSvc->isITk(),
147 true, m_trkAnaDefSvc->hasFullPileupTruth(), m_trkAnaDefSvc->plotHitsOnTracksExpert() );
148 m_plots_hitsOnMatchedTrk_vsRef = std::make_unique< HitsOnTracksPlots >(
149 this, "Tracks/Resolutions/HitsOnTracks", m_anaTag,
150 m_trkAnaDefSvc->testTag(), m_trkAnaDefSvc->referenceTag(), m_trkAnaDefSvc->isITk(), m_trkAnaDefSvc->plotHitsOnTracksExpert() );
151 }
153 if( m_trkAnaDefSvc->plotHitsOnFakeTracks() and m_trkAnaDefSvc->isReferenceTruth() ) {
154 m_plots_hitsOnFakeTrk = std::make_unique< HitsOnTracksPlots >(
155 this, "Tracks/FakeRates/HitsOnTracks", m_anaTag,
156 m_trkAnaDefSvc->testTag(), m_trkAnaDefSvc->isITk(),
157 true, m_trkAnaDefSvc->hasFullPileupTruth(), m_trkAnaDefSvc->plotHitsOnTracksExpert() );
158 if ( not m_trkAnaDefSvc->unlinkedAsFakes() ) {
159 m_plots_hitsOnUnlinkedTrk = std::make_unique< HitsOnTracksPlots >(
160 this, "Tracks/FakeRates/Unlinked/HitsOnTracks", m_anaTag,
161 m_trkAnaDefSvc->testTag(), m_trkAnaDefSvc->isITk(),
162 true, m_trkAnaDefSvc->hasFullPileupTruth(), m_trkAnaDefSvc->plotHitsOnTracksExpert() );
163 }
164 }
165
167 if( m_trkAnaDefSvc->plotOfflineElectrons() ) {
168 m_plots_offEle = std::make_unique< OfflineElectronPlots >(
169 this, "Tracks/Parameters", m_anaTag );
170 if( m_trkAnaDefSvc->plotEfficiencies() ) {
171 m_plots_eff_vsOffEle = std::make_unique< OfflineElectronPlots >(
172 this, "Tracks/Efficiencies", m_anaTag, true );
173 }
174 }
175
177 if( m_trkAnaDefSvc->plotVertexParameters() ) {
179 m_plots_vtxParam_vsTest = std::make_unique< VertexParametersPlots >(
180 this, "Vertices/AllPrimary/Parameters", m_anaTag,
181 m_trkAnaDefSvc->testTag(),
182 not m_trkAnaDefSvc->isTestTruth() ); // do associated tracks plots for reco only
183 m_plots_vtxParam_vsRef = std::make_unique< VertexParametersPlots >(
184 this, "Vertices/AllPrimary/Parameters", m_anaTag,
185 m_trkAnaDefSvc->referenceTag(),
186 not m_trkAnaDefSvc->isReferenceTruth() ); // do associated tracks plots for reco only
187
189 m_plots_nVtxParam_vsTest = std::make_unique< VertexParametersPlots >(
190 this, "Vertices/AllPrimary/Parameters", m_anaTag,
191 m_trkAnaDefSvc->testTag(), false,
192 true, m_trkAnaDefSvc->hasFullPileupTruth() );
193 m_plots_nVtxParam_vsRef = std::make_unique< VertexParametersPlots >(
194 this, "Vertices/AllPrimary/Parameters", m_anaTag,
195 m_trkAnaDefSvc->referenceTag(), false,
196 true, m_trkAnaDefSvc->hasFullPileupTruth() );
197 }
198
201
202 return StatusCode::SUCCESS;
203}
StatusCode initialize()
initialize
Definition PlotMgr.cxx:37

◆ initializePlots()

virtual void PlotBase::initializePlots ( )
inlineprivatevirtualinherited

Reimplemented in DiTau::CorePlots, DiTau::ResolutionPlots, Egamma::ClusMomentumPlots, Egamma::ElectronFrwdPlots, Egamma::ElectronPlots, Egamma::IsolationPlots, Egamma::KinematicsPlots, Egamma::LRTElectronPlots, Egamma::PhotonAmbPlots, Egamma::PhotonCnvPlots, Egamma::PhotonConversionPlots, Egamma::PhotonPlots, Egamma::ShowerShapesPlots, Egamma::TrackPlots, ElectronValidationPlots, IDTPM::DuplicateRatePlots, IDTPM::EfficiencyPlots, IDTPM::FakeRatePlots, IDTPM::HitsOnTracksPlots, IDTPM::NtracksPlots, IDTPM::OfflineElectronPlots, IDTPM::ResolutionPlots, IDTPM::SummaryPlots, IDTPM::TrackParametersPlots, IDTPM::VertexParametersPlots, InDetBasicPlot, InDetPerfNtuple, InDetPerfPlot_Duplicate, InDetPerfPlot_Efficiency, InDetPerfPlot_FakeRate, InDetPerfPlot_HitEfficiency, InDetPerfPlot_HitResidual, InDetPerfPlot_Hits, InDetPerfPlot_nTracks, InDetPerfPlot_Resolution, InDetPerfPlot_TrackParameters, InDetPerfPlot_TrkInJet, InDetPerfPlot_TRTExtension, InDetPerfPlot_Vertex, InDetPerfPlot_VertexTruthMatching, InDetPerfPlot_VerticesVsMu, JetTagDQA::BTaggingValidationPlots, LRTElectronValidationPlots, Muon::BetaPlots, Muon::ChargeDepParamPlots, Muon::HitFracTypePlots, Muon::IsoCorrPlots, Muon::IsoPlots, Muon::MomentumPullPlots, Muon::MomentumTruthPullPlots, Muon::MuonParamElossPlots, Muon::MuonParamPlots, Muon::MuonTree, Muon::RecoInfoPlots, Muon::SlowMuonParamPlots, PFO::ClusterMomentPlots, PFO::ClusterPlots, PFO::FlowElement_LinkerPlots, PFO::LeptonFELinkerPlots, PFO::PFOAlgPropertyPlots, PFO::PFOAttributePlots, PFO::PFOCalibHitClusterMomentPlots, PFO::PFOClusterMomentPlots, PFO::PFOPlots, PFO::PFOPVMatchedPlots, PhotonValidationPlots, PhysVal::BTagPlots, PhysVal::EventInfoPlots, PhysVal::KinematicsPlots, PhysVal::METPlots, PhysVal::TrkAndVtxPlots, RecoLumiPlots, RecoMuonIDTrackPlots, RecoMuonPlots, RecoMuonSegmentPlots, RecoMuonTrackPlots, RecoPhysPlots, RecoVertexPlots, Tau::CorePlots, Tau::DecayModeMigration, Tau::EfficiencyPlots, Tau::EVetoPlots, Tau::GeneralTauPlots, Tau::ResolutionPlots, Tau::TauIDVariablesPlots, Tau::TauKinematicPlots, Tau::TauParticleFlowPlots, TCCPlots, Trk::DefParamPullPlots, Trk::EfficiencyPlots, Trk::ExtrLayerPlots, Trk::ExtrRegionPlots, Trk::HitResidualPlots, Trk::HitTypePlots, Trk::IDHitPlots, Trk::ImpactPlots, Trk::ParamPlots, Trk::RecoInfoPlots, Trk::ResolutionPlots, Trk::TruthInfoPlots, ZeeValidation::FWDZeePlots, ZeeValidation::ReconElectronsPlots, ZeeValidation::TrueElectronsPlots, ZeeValidation::TrueFwdElectronsPlots, and ZeeValidation::ZeePlots.

Definition at line 91 of file PlotBase.h.

91{;}

◆ initMessaging()

void AthMessaging::initMessaging ( ) const
privateinherited

Initialize our message level and MessageSvc.

This method should only be called once.

Definition at line 39 of file AthMessaging.cxx.

40{
42 // If user did not set an explicit level, set a default
43 if (m_lvl == MSG::NIL) {
44 m_lvl = m_imsg ?
45 static_cast<MSG::Level>( m_imsg.load()->outputLevel(m_nm) ) :
46 MSG::INFO;
47 }
48}
std::string m_nm
Message source name.
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
std::atomic< MSG::Level > m_lvl
Current logging level.
IMessageSvc * getMessageSvc(bool quiet=false)

◆ msg() [1/2]

MsgStream & AthMessaging::msg ( ) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 163 of file AthMessaging.h.

164{
165 MsgStream* ms = m_msg_tls.get();
166 if (!ms) {
167 if (!m_initialized.test_and_set()) initMessaging();
168 ms = new MsgStream(m_imsg,m_nm);
169 m_msg_tls.reset( ms );
170 }
171
172 ms->setLevel (m_lvl);
173 return *ms;
174}
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
void initMessaging() const
Initialize our message level and MessageSvc.

◆ msg() [2/2]

MsgStream & AthMessaging::msg ( const MSG::Level lvl) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 178 of file AthMessaging.h.

179{ return msg() << lvl; }
MsgStream & msg() const
The standard message stream.

◆ msgLvl()

bool AthMessaging::msgLvl ( const MSG::Level lvl) const
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicating if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 151 of file AthMessaging.h.

152{
153 if (m_lvl <= lvl) {
154 msg() << lvl;
155 return true;
156 } else {
157 return false;
158 }
159}

◆ RegisterSubPlot()

void PlotBase::RegisterSubPlot ( PlotBase * pPlotBase)
inlineinherited

Definition at line 41 of file PlotBase.h.

41{m_vSubNodes.push_back(pPlotBase);}

◆ retrieveAndBook()

template<class P>
StatusCode IDTPM::PlotMgr::retrieveAndBook ( P *& pHisto,
const std::string & identifier,
const std::string & folderOverride = "",
const std::string & nameOverride = "" )
inlineinherited

— Book plots methods —

Helper method to book plots using an identifier string

Parameters
pHistoPointer to the histogram to be booked (assumed to be initialized to nullptr)
histoIdentifierstring identifier of the plot (looked up from PlotsDefinitionSvc)
nameOverrideAllows to override the histo name
folderOverrideAllows to override the folder of the histo

Definition at line 64 of file PlotMgr.h.

69 {
70 const SinglePlotDefinition& def =
71 retrieveDefinition( identifier, folderOverride, nameOverride );
72 if( def.isEmpty() or not def.isValid() ) {
73 ATH_MSG_WARNING( "Trying to book empty or non-valid plot : " << identifier );
74 return StatusCode::RECOVERABLE;
75 }
76 ATH_CHECK( book( pHisto, def ) );
77 return StatusCode::SUCCESS;
78 }
StatusCode book(TH1 *&pHisto, const SinglePlotDefinition &def)
Book a TH1 histogram.
Definition PlotMgr.cxx:78
SinglePlotDefinition retrieveDefinition(const std::string &identifier, const std::string &folderOverride="", const std::string &nameOverride="") const
Retrieve a single histogram definition, given the unique string identifier.
Definition PlotMgr.cxx:48

◆ retrieveBookedEfficiencies()

std::vector< EfficiencyData > PlotBase::retrieveBookedEfficiencies ( )
inherited

Retrieve all booked efficiency objects.

Definition at line 83 of file PlotBase.cxx.

83 {
84 std::vector<EfficiencyData> vBookedEfficiencies = m_vBookedEfficiencies;
85 for (const auto &subNode: m_vSubNodes) {
86 std::vector<EfficiencyData> subNodeHists = subNode->retrieveBookedEfficiencies();
87 vBookedEfficiencies.insert(vBookedEfficiencies.end(), subNodeHists.begin(), subNodeHists.end());
88 }
89 return vBookedEfficiencies;
90}

◆ retrieveBookedHistograms()

std::vector< HistData > PlotBase::retrieveBookedHistograms ( )
inherited

Retrieve all booked histograms.

Definition at line 63 of file PlotBase.cxx.

63 {
64 std::vector<HistData> vBookedHistograms = m_vBookedHistograms;
65 for (const auto &subNode: m_vSubNodes) {
66 std::vector<HistData> subNodeHists = subNode->retrieveBookedHistograms();
67 vBookedHistograms.insert(vBookedHistograms.end(), subNodeHists.begin(), subNodeHists.end());
68 }
69 return vBookedHistograms;
70}

◆ retrieveBookedTrees()

std::vector< TreeData > PlotBase::retrieveBookedTrees ( )
inherited

Retrieve all booked trees.

Definition at line 73 of file PlotBase.cxx.

73 {
74 std::vector<TreeData> vBookedTrees = m_vBookedTrees;
75 for (auto *subNode: m_vSubNodes) {
76 std::vector<TreeData> subNodeTrees = subNode->retrieveBookedTrees();
77 vBookedTrees.insert(vBookedTrees.end(), subNodeTrees.begin(), subNodeTrees.end());
78 }
79 return vBookedTrees;
80}

◆ retrieveDefinition()

IDTPM::SinglePlotDefinition IDTPM::PlotMgr::retrieveDefinition ( const std::string & identifier,
const std::string & folderOverride = "",
const std::string & nameOverride = "" ) const
inherited

Retrieve a single histogram definition, given the unique string identifier.


— retrieveDefinition —

Loading PlotsDefinitionSvc

retrieve a copy of the plot definition

Check if definition is empty or non-valid

Override directory?

Override name?

Definition at line 48 of file PlotMgr.cxx.

52{
54 ISvcLocator* svcLoc = Gaudi::svcLocator();
55 SmartIF<IPlotsDefinitionSvc> plotsDefSvc(svcLoc->service( "PlotsDefSvc"+m_anaTag ));
56 ATH_CHECK( plotsDefSvc.isValid(), {} );
57
59 SinglePlotDefinition sDef = plotsDefSvc->definition( identifier );
60
62 if( sDef.isEmpty() or not sDef.isValid() ) return sDef;
63
65 if( not folderOverride.empty() ) sDef.folder( folderOverride );
66
68 if( not nameOverride.empty() ) sDef.name( nameOverride );
69
70 return sDef;
71}
std::string m_anaTag
Definition PlotMgr.h:232

◆ setBinLabels()

template<class P>
StatusCode IDTPM::PlotMgr::setBinLabels ( P *& pHisto,
const std::vector< std::string > & binLabels,
char axis )
inlineprotectedinherited

SetBinLabels (for TH* and TProfile* only)

Definition at line 196 of file PlotMgr.h.

198 {
199 if( axis == 'X' ) {
200 size_t nBinsX = pHisto->GetXaxis()->GetNbins();
201 if( nBinsX != binLabels.size() ) {
202 ATH_MSG_ERROR( "Mismstch in number of X bin labels for : " << pHisto->GetName() );
203 return StatusCode::FAILURE;
204 }
205 for( size_t bin = 0; bin < nBinsX; bin++ ) {
206 pHisto->GetXaxis()->SetBinLabel( bin+1, binLabels[ bin ].c_str() );
207 }
208 }
209 if( axis == 'Y' ) {
210 size_t nBinsY = pHisto->GetYaxis()->GetNbins();
211 if( nBinsY != binLabels.size() ) {
212 ATH_MSG_ERROR( "Mismstch in number of Y bin labels for : " << pHisto->GetName() );
213 return StatusCode::FAILURE;
214 }
215 for( size_t bin = 0; bin < nBinsY; bin++ ) {
216 pHisto->GetYaxis()->SetBinLabel( bin+1, binLabels[ bin ].c_str() );
217 }
218 }
219 if( axis == 'Z' ) {
220 size_t nBinsZ = pHisto->GetZaxis()->GetNbins();
221 if( nBinsZ != binLabels.size() ) {
222 ATH_MSG_ERROR( "Mismstch in number of Z bin labels for : " << pHisto->GetName() );
223 return StatusCode::FAILURE;
224 }
225 for( size_t bin = 0; bin < nBinsZ; bin++ ) {
226 pHisto->GetZaxis()->SetBinLabel( bin+1, binLabels[ bin ].c_str() );
227 }
228 }
229 return StatusCode::SUCCESS;
230 }

◆ setDetailLevel()

void PlotBase::setDetailLevel ( int iDetailLevel)
inherited

Definition at line 55 of file PlotBase.cxx.

55 {
56 for (auto *subNode: m_vSubNodes) {
57 subNode->setDetailLevel(iDetailLevel);
58 }
59 m_iDetailLevel = iDetailLevel;
60}
int m_iDetailLevel
Definition PlotBase.h:101

◆ setLevel()

void AthMessaging::setLevel ( MSG::Level lvl)
inherited

Change the current logging level.

Use this rather than msg().setLevel() for proper operation with MT.

Definition at line 28 of file AthMessaging.cxx.

29{
30 m_lvl = lvl;
31}

◆ setLogLinearBins()

template<class P>
StatusCode IDTPM::PlotMgr::setLogLinearBins ( P *& pHisto,
unsigned int nBins,
float absMin,
float absMax,
char axis )
inlineprotectedinherited

Set Log-Linear axis.

Definition at line 170 of file PlotMgr.h.

172 {
173 std::vector<float> binning = getLogLinearBins( nBins, absMin, absMax );
174 ATH_CHECK( setVariableBins( pHisto, binning, axis ) );
175 return StatusCode::SUCCESS;
176 }
std::vector< float > getLogLinearBins(unsigned int nBins, float absMin, float absMax, bool symmetriseAroundZero=false)
Get Log-Linear binning vector inherited from InDetPhysValMonitoring/src/logLinearBinning....
Definition PlotMgr.cxx:464

◆ setLogLinearBinsEff()

template<class P>
StatusCode IDTPM::PlotMgr::setLogLinearBinsEff ( P *& pHisto,
unsigned int nBins,
float absMin,
float absMax,
char axis )
inlineprotectedinherited

Set Log-Linear axis (for Efficiencies)

Definition at line 180 of file PlotMgr.h.

182 {
183 std::vector<float> binning = getLogLinearBins( nBins, absMin, absMax );
184 ATH_CHECK( setVariableBinsEff( pHisto, binning, axis ) );
185 return StatusCode::SUCCESS;
186 }
StatusCode setVariableBinsEff(P *&pHisto, const std::vector< float > &binning, char axis)
SetVariableBins (for Efficiencies)
Definition PlotMgr.h:150

◆ setVariableBins()

template<class P>
StatusCode IDTPM::PlotMgr::setVariableBins ( P *& pHisto,
const std::vector< float > & binning,
char axis )
inlineprotectedinherited

SetVariableBins.

Definition at line 135 of file PlotMgr.h.

137 {
138 if( binning.empty() ) {
139 ATH_MSG_ERROR( "Non-valid variable plot binning : " << pHisto->GetName() );
140 return StatusCode::FAILURE;
141 }
142 if( axis == 'X' ) pHisto->GetXaxis()->Set( binning.size()-1, binning.data() );
143 if( axis == 'Y' ) pHisto->GetYaxis()->Set( binning.size()-1, binning.data() );
144 if( axis == 'Z' ) pHisto->GetZaxis()->Set( binning.size()-1, binning.data() );
145 return StatusCode::SUCCESS;
146 }

◆ setVariableBinsEff()

template<class P>
StatusCode IDTPM::PlotMgr::setVariableBinsEff ( P *& pHisto,
const std::vector< float > & binning,
char axis )
inlineprotectedinherited

SetVariableBins (for Efficiencies)

Definition at line 150 of file PlotMgr.h.

152 {
153 if( binning.empty() ) {
154 ATH_MSG_ERROR( "Non-valid variable plot binning : " << pHisto->GetName() );
155 return StatusCode::FAILURE;
156 }
157 std::vector<double> binningD( binning.begin(), binning.end() );
158 if( axis == 'X' ) pHisto->SetBins( binningD.size()-1, binningD.data() );
159 if( axis == 'Y' ) {
160 pHisto->SetBins(
161 pHisto->GetTotalHistogram()->GetNbinsX(),
162 pHisto->GetTotalHistogram()->GetXaxis()->GetXbins()->GetArray(),
163 binningD.size()-1, binningD.data() );
164 }
165 return StatusCode::SUCCESS;
166 }

Member Data Documentation

◆ ATLAS_THREAD_SAFE

std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
mutableprivateinherited

Messaging initialized (initMessaging)

Definition at line 141 of file AthMessaging.h.

◆ m_anaTag

std::string IDTPM::TrackAnalysisPlotsMgr::m_anaTag
private

Definition at line 100 of file TrackAnalysisPlotsMgr.h.

◆ m_chain

std::string IDTPM::TrackAnalysisPlotsMgr::m_chain
private

Definition at line 101 of file TrackAnalysisPlotsMgr.h.

◆ m_directory

std::string IDTPM::TrackAnalysisPlotsMgr::m_directory
private

Definition at line 102 of file TrackAnalysisPlotsMgr.h.

◆ m_iDetailLevel

int PlotBase::m_iDetailLevel
protectedinherited

Definition at line 101 of file PlotBase.h.

◆ m_imsg

std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr }
mutableprivateinherited

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

135{ nullptr };

◆ m_lvl

std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL }
mutableprivateinherited

Current logging level.

Definition at line 138 of file AthMessaging.h.

138{ MSG::NIL };

◆ m_msg_tls

boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls
mutableprivateinherited

MsgStream instance (a std::cout like with print-out levels)

Definition at line 132 of file AthMessaging.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_plots_duplRate

std::unique_ptr< DuplicateRatePlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_duplRate
private

duplicate rate plots

Definition at line 135 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_eff_vsOffEle

std::unique_ptr< OfflineElectronPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_eff_vsOffEle
private

Definition at line 138 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_eff_vsRef

std::unique_ptr< EfficiencyPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_eff_vsRef
private

Definition at line 119 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_eff_vsTest

std::unique_ptr< EfficiencyPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_eff_vsTest
private

Definition at line 112 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_eff_vsTruth

std::unique_ptr< EfficiencyPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_eff_vsTruth
private

plots w.r.t. efficiency plots w.r.t. truth (for EFTruthMatch only)

Definition at line 125 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_fakeRate

std::unique_ptr< FakeRatePlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_fakeRate
private

fake rate plots (only when reference=truth)

Definition at line 130 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_hitsOnFakeTrk

std::unique_ptr< HitsOnTracksPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_hitsOnFakeTrk
private

Definition at line 132 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_hitsOnMatchedTrk

std::unique_ptr< HitsOnTracksPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_hitsOnMatchedTrk
private

Definition at line 115 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_hitsOnMatchedTrk_vsRef

std::unique_ptr< HitsOnTracksPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_hitsOnMatchedTrk_vsRef
private

Definition at line 122 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_hitsOnTrk_vsRef

std::unique_ptr< HitsOnTracksPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_hitsOnTrk_vsRef
private

Definition at line 121 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_hitsOnTrk_vsTest

std::unique_ptr< HitsOnTracksPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_hitsOnTrk_vsTest
private

Definition at line 114 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_hitsOnUnlinkedTrk

std::unique_ptr< HitsOnTracksPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_hitsOnUnlinkedTrk
private

Definition at line 133 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_missingTruth

std::unique_ptr< FakeRatePlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_missingTruth
private

Definition at line 131 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_nTracks_vsRef

std::unique_ptr< NtracksPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_nTracks_vsRef
private

Definition at line 123 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_nTracks_vsTest

std::unique_ptr< NtracksPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_nTracks_vsTest
private

Definition at line 116 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_nVtxParam_vsRef

std::unique_ptr< VertexParametersPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_nVtxParam_vsRef
private

Definition at line 144 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_nVtxParam_vsTest

std::unique_ptr< VertexParametersPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_nVtxParam_vsTest
private

Definition at line 141 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_offEle

std::unique_ptr< OfflineElectronPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_offEle
private

plots w.r.t. reference offline electron

Definition at line 137 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_resolution

std::unique_ptr< ResolutionPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_resolution
private

resolution plots

Definition at line 128 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_summary

std::unique_ptr< SummaryPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_summary
private

Plot categories summary plots.

Definition at line 109 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_tech_eff_vsRef

std::unique_ptr< EfficiencyPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_tech_eff_vsRef
private

Definition at line 120 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_tech_eff_vsTest

std::unique_ptr< EfficiencyPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_tech_eff_vsTest
private

Definition at line 113 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_tech_eff_vsTruth

std::unique_ptr< EfficiencyPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_tech_eff_vsTruth
private

Definition at line 126 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_trkParam_vsRef

std::unique_ptr< TrackParametersPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_trkParam_vsRef
private

plots w.r.t. reference tracks parameters

Definition at line 118 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_trkParam_vsTest

std::unique_ptr< TrackParametersPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_trkParam_vsTest
private

plots w.r.t. test tracks parameters

Definition at line 111 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_vtxParam_vsRef

std::unique_ptr< VertexParametersPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_vtxParam_vsRef
private

plots w.r.t. reference vertices parameters

Definition at line 143 of file TrackAnalysisPlotsMgr.h.

◆ m_plots_vtxParam_vsTest

std::unique_ptr< VertexParametersPlots > IDTPM::TrackAnalysisPlotsMgr::m_plots_vtxParam_vsTest
private

plots w.r.t. test vertices parameters

Definition at line 140 of file TrackAnalysisPlotsMgr.h.

◆ m_sDirectory

std::string PlotBase::m_sDirectory
protectedinherited

Definition at line 100 of file PlotBase.h.

◆ m_trkAnaDefSvc

SmartIF< ITrackAnalysisDefinitionSvc > IDTPM::TrackAnalysisPlotsMgr::m_trkAnaDefSvc
private

TrackAnalysis definition service to "hold" the histograms configurations/flags.

Definition at line 105 of file TrackAnalysisPlotsMgr.h.

◆ m_vBookedEfficiencies

std::vector<EfficiencyData> PlotBase::m_vBookedEfficiencies
protectedinherited

Definition at line 99 of file PlotBase.h.

◆ m_vBookedHistograms

std::vector<HistData> PlotBase::m_vBookedHistograms
protectedinherited

Definition at line 97 of file PlotBase.h.

◆ m_vBookedTrees

std::vector<TreeData> PlotBase::m_vBookedTrees
protectedinherited

Definition at line 98 of file PlotBase.h.

◆ m_vSubNodes

std::vector<PlotBase*> PlotBase::m_vSubNodes
protectedinherited

Definition at line 96 of file PlotBase.h.


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