Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
IDTPM::TrackAnalysisPlotsMgr Class Reference

#include <TrackAnalysisPlotsMgr.h>

Inheritance diagram for IDTPM::TrackAnalysisPlotsMgr:
Collaboration diagram for IDTPM::TrackAnalysisPlotsMgr:

Public Member Functions

 TrackAnalysisPlotsMgr (const std::string &dirName, const std::string &anaTag, const std::string &chain, PlotMgr *pParent=nullptr)
 Constructor. More...
 
virtual ~TrackAnalysisPlotsMgr ()=default
 Destructor. More...
 
StatusCode initialize ()
 initialize More...
 
const std::string & anaTag () const
 return members More...
 
const std::string & chain () const
 
const std::string & directory () const
 
StatusCode fill (TrackAnalysisCollections &trkAnaColls, float weight=1.0)
 General fill method. More...
 
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. More...
 
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. More...
 
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) More...
 
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. More...
 
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. More...
 
StatusCode book (TH2 *&pHisto, const SinglePlotDefinition &def)
 Book a TH2 histogram. More...
 
StatusCode book (TH3 *&pHisto, const SinglePlotDefinition &def)
 Book a TH3 histogram. More...
 
StatusCode book (TProfile *&pHisto, const SinglePlotDefinition &def)
 Book a TProfile histogram. More...
 
StatusCode book (TProfile2D *&pHisto, const SinglePlotDefinition &def)
 Book a TProfile2D histogram. More...
 
StatusCode book (TEfficiency *&pHisto, const SinglePlotDefinition &def)
 Book a (1D or 2D) TEfficiency histogram. More...
 
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. More...
 
StatusCode fill (TH3 *pTh3, float xval, float yval, float zval, float weight=1.) const
 Fill a TH3 histogram. More...
 
StatusCode fill (TProfile *pTprofile, float xval, float yval, float weight=1.) const
 Fill a TProfile histogram weight allows weighted-averaging in the profile. More...
 
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. More...
 
StatusCode fill (TEfficiency *pTeff, float value, bool accepted, float weight=1.) const
 Fill a (1D) TEfficiency histogram. More...
 
StatusCode fill (TEfficiency *pTeff2d, float xvalue, float yvalue, bool accepted, float weight=1.) const
 Fill a (2D) TEfficiency histogram. More...
 
void finalize ()
 
void setDetailLevel (int iDetailLevel)
 
void RegisterSubPlot (PlotBase *pPlotBase)
 
std::vector< HistDataretrieveBookedHistograms ()
 Retrieve all booked histograms. More...
 
std::vector< TreeDataretrieveBookedTrees ()
 Retrieve all booked trees. More...
 
std::vector< EfficiencyDataretrieveBookedEfficiencies ()
 Retrieve all booked efficiency objects. More...
 
TTree * BookTree (const std::string &name, bool prependDir=true)
 Book a TTree. More...
 
const std::string & getDirectory ()
 
bool msgLvl (const MSG::Level lvl) const
 Test the output level. More...
 
MsgStream & msg () const
 The standard message stream. More...
 
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream. More...
 
void setLevel (MSG::Level lvl)
 Change the current logging level. More...
 

Protected Member Functions

template<class P >
StatusCode setVariableBins (P *&pHisto, const std::vector< float > &binning, char axis)
 SetVariableBins. More...
 
template<class P >
StatusCode setVariableBinsEff (P *&pHisto, const std::vector< float > &binning, char axis)
 SetVariableBins (for Efficiencies) More...
 
template<class P >
StatusCode setLogLinearBins (P *&pHisto, unsigned int nBins, float absMin, float absMax, char axis)
 Set Log-Linear axis. More...
 
template<class P >
StatusCode setLogLinearBinsEff (P *&pHisto, unsigned int nBins, float absMin, float absMax, char axis)
 Set Log-Linear axis (for Efficiencies) More...
 
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. More...
 
template<class P >
StatusCode setBinLabels (P *&pHisto, const std::vector< std::string > &binLabels, char axis)
 SetBinLabels (for TH* and TProfile* only) More...
 

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. More...
 

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. More...
 
std::unique_ptr< SummaryPlotsm_plots_summary
 Plot categories summary plots. More...
 
std::unique_ptr< TrackParametersPlotsm_plots_trkParam_vsTest
 plots w.r.t. test tracks parameters More...
 
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 More...
 
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) More...
 
std::unique_ptr< EfficiencyPlotsm_plots_tech_eff_vsTruth
 
std::unique_ptr< ResolutionPlotsm_plots_resolution
 resolution plots More...
 
std::unique_ptr< FakeRatePlotsm_plots_fakeRate
 fake rate plots (only when reference=truth) More...
 
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 More...
 
std::unique_ptr< OfflineElectronPlotsm_plots_offEle
 plots w.r.t. reference offline electron More...
 
std::unique_ptr< OfflineElectronPlotsm_plots_eff_vsOffEle
 
std::unique_ptr< VertexParametersPlotsm_plots_vtxParam_vsTest
 plots w.r.t. test vertices parameters More...
 
std::unique_ptr< VertexParametersPlotsm_plots_nVtxParam_vsTest
 
std::unique_ptr< VertexParametersPlotsm_plots_vtxParam_vsRef
 plots w.r.t. reference vertices parameters More...
 
std::unique_ptr< VertexParametersPlotsm_plots_nVtxParam_vsRef
 
std::string m_nm
 Message source name. More...
 
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels) More...
 
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer. More...
 
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level. More...
 
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging) More...
 

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 ) { }

◆ ~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 }

◆ 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 }

◆ 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 }

◆ 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 }

◆ 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 }

◆ 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 }

◆ 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 }

◆ 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 }

◆ 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 }

◆ 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 }

◆ 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 206 of file TrackAnalysisPlotsMgr.cxx.

208 {
209  float actualMu = trkAnaColls.eventInfo() ?
210  trkAnaColls.eventInfo()->actualInteractionsPerCrossing() : -1.;
211  float truthMu = trkAnaColls.truthPileupEventContainer() ?
212  static_cast< float >( trkAnaColls.truthPileupEventContainer()->size() ) : -1.;
213 
215  if( m_trkAnaDefSvc->isTestTruth() ) {
217  trkAnaColls.testTruthVec( TrackAnalysisCollections::InRoI ),
218  trkAnaColls.matches(),
219  trkAnaColls.testTruthVertexVec( TrackAnalysisCollections::InRoI ),
220  truthMu, actualMu, weight ) );
221  } else {
223  trkAnaColls.testTrackVec( TrackAnalysisCollections::InRoI ),
224  trkAnaColls.matches(),
225  trkAnaColls.testRecoVertexVec( TrackAnalysisCollections::InRoI ),
226  truthMu, actualMu, weight ) );
227  }
228 
230  if( m_trkAnaDefSvc->isReferenceTruth() ) {
232  trkAnaColls.refTruthVec( TrackAnalysisCollections::InRoI ),
233  trkAnaColls.matches(),
234  trkAnaColls.refTruthVertexVec( TrackAnalysisCollections::InRoI ),
235  truthMu, actualMu, weight ) );
236  } else {
238  trkAnaColls.refTrackVec( TrackAnalysisCollections::InRoI ),
239  trkAnaColls.matches(),
240  trkAnaColls.refRecoVertexVec( TrackAnalysisCollections::InRoI ),
241  truthMu, actualMu, weight ) );
242  }
243 
245  if( m_trkAnaDefSvc->matchingType() == "EFTruthMatch" ) {
247  trkAnaColls.testTrackVec( TrackAnalysisCollections::InRoI ),
248  trkAnaColls.refTrackVec( TrackAnalysisCollections::InRoI ),
249  trkAnaColls.truthPartVec( TrackAnalysisCollections::InRoI ),
250  trkAnaColls.matches(),
251  truthMu, actualMu, weight ) );
252  }
253 
255  std::vector< size_t > testTrackCounts = trkAnaColls.testTrackCounts();
256  std::vector< size_t > refTrackCounts = trkAnaColls.refTrackCounts();
257 
258  std::vector< size_t > testVertexCounts = trkAnaColls.testVertexCounts();
259  std::vector< size_t > refVertexCounts = trkAnaColls.refVertexCounts();
260 
261  if( m_plots_summary ) {
262  ATH_CHECK( m_plots_summary->fillPlots(
263  testTrackCounts, refTrackCounts,
264  trkAnaColls.isNewRoI(), weight ) );
265  }
266 
267  if( m_plots_nTracks_vsTest ) {
268  ATH_CHECK( m_plots_nTracks_vsTest->fillPlots(
269  testTrackCounts, testVertexCounts,
270  truthMu, actualMu, weight ) );
271  }
272 
273  if( m_plots_nTracks_vsRef ) {
274  ATH_CHECK( m_plots_nTracks_vsRef->fillPlots(
275  refTrackCounts, refVertexCounts,
276  truthMu, actualMu, weight ) );
277  }
278 
279  return StatusCode::SUCCESS;
280 }

◆ 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 454 of file TrackAnalysisPlotsMgr.cxx.

459 {
460 
461  for( const PARTICLE* particle : particles ) {
462 
464  if( m_plots_trkParam_vsRef ) {
465  ATH_CHECK( m_plots_trkParam_vsRef->fillPlots( *particle, weight ) );
466  }
467 
470  ATH_CHECK( m_plots_hitsOnTrk_vsRef->fillPlots( *particle, truthMu, actualMu, weight ) );
471  }
472 
473  bool isMatched = matches.isRefMatched( *particle );
474 
476  if( m_plots_eff_vsRef ) {
477  ATH_CHECK( m_plots_eff_vsRef->fillPlots(
478  *particle, isMatched, truthMu, actualMu, weight ) );
479  }
480 
482  if( m_plots_tech_eff_vsRef ) {
483  if( m_trkAnaDefSvc->isReferenceTruth() and
484  nHitsSelVec( *particle, m_trkAnaDefSvc->minSilHits(), m_trkAnaDefSvc->etaBins() ) )
485  {
486  ATH_CHECK( m_plots_tech_eff_vsRef->fillPlots(
487  *particle, isMatched, truthMu, actualMu, weight ) );
488  }
489  else if ( m_trkAnaDefSvc->isTestTruth() ) {
490 
491  bool isTechMatched = false;
492 
493  if (isMatched) {
494  for ( const xAOD::TruthParticle *thisTruth : (matches.getMatchedTestTruths( *particle ))) {
495  if ( nHitsSelVec( *thisTruth, m_trkAnaDefSvc->minSilHits(), m_trkAnaDefSvc->etaBins() ) ) {
496  isTechMatched = true;
497  break;
498  }
499  }
500  }
501  ATH_CHECK( m_plots_tech_eff_vsRef->fillPlots(
502  *particle, isTechMatched, truthMu, actualMu, weight ) );
503  }
504 
505  else if ( m_trkAnaDefSvc->matchingType() == "EFTruthMatch" ) {
506  const xAOD::TruthParticle* linkedTruth = getLinkedTruth(
507  *particle, m_trkAnaDefSvc->truthProbCut() );
508  bool isTechMatched = isMatched ?
509  nHitsSelVec( *linkedTruth, m_trkAnaDefSvc->minSilHits(), m_trkAnaDefSvc->etaBins() ) : false;
510  ATH_CHECK( m_plots_tech_eff_vsRef->fillPlots(
511  *particle, isTechMatched, truthMu, actualMu, weight ) );
512  }
513  }
514 
516  if( m_plots_duplRate ) {
517  unsigned int nMatched = m_trkAnaDefSvc->isTestTruth() ?
518  matches.getMatchedTestTruths( *particle ).size() :
519  matches.getMatchedTestTracks( *particle ).size();
520 
521  ATH_CHECK( m_plots_duplRate->fillPlots(
522  *particle, nMatched, truthMu, actualMu, weight ) );
523  }
524 
526  if( m_trkAnaDefSvc->isReferenceOffline() ) {
527  if( m_plots_offEle ) {
528  ATH_CHECK( m_plots_offEle->fillPlots( *particle, false, weight ) );
529  }
530  if( m_plots_eff_vsOffEle ) {
531  ATH_CHECK( m_plots_eff_vsOffEle->fillPlots( *particle, isMatched, weight ) );
532  }
533  }
534 
535  } // close loop over particles
536 
538  int nGoodVertices(0);
539  for( const VERTEX* vertex : vertices ) {
541  if( vertexType( *vertex ) == xAOD::VxType::NoVtx ) {
542  ATH_MSG_DEBUG( "Found Dummy vertex. Skipping" );
543  continue;
544  }
545  nGoodVertices++;
546 
548  std::vector< const PARTICLE* > vtxTracks{};
549  std::vector< float > vtxTrackWeights{};
551  *vertex, vtxTracks, vtxTrackWeights,
552  particles, m_trkAnaDefSvc->useSelectedVertexTracks() ) ) {
553  ATH_MSG_WARNING( "Problem when retrieving vertex-assocciated tracks" );
554  if( not vtxTracks.empty() ) {
555  ATH_MSG_WARNING( "Invalid associated track links found. Check your input format." );
556  }
557  }
558 
560  if( m_plots_vtxParam_vsRef ) {
561  ATH_CHECK( m_plots_vtxParam_vsRef->fillPlots( *vertex, vtxTracks, vtxTrackWeights, weight ) );
562  }
563  }
564 
567  ATH_CHECK( m_plots_nVtxParam_vsRef->fillPlots( nGoodVertices, truthMu, actualMu, weight ) );
568  }
569 
570  return StatusCode::SUCCESS;
571 }

◆ 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 287 of file TrackAnalysisPlotsMgr.cxx.

292 {
294  for( const PARTICLE* particle : particles ) {
297  ATH_CHECK( m_plots_trkParam_vsTest->fillPlots( *particle, weight ) );
298  }
299 
302  ATH_CHECK( m_plots_hitsOnTrk_vsTest->fillPlots( *particle, truthMu, actualMu, weight ) );
303  }
304 
305  bool isMatched = matches.isTestMatched( *particle );
306 
308  if( m_plots_eff_vsTest ) {
309  ATH_CHECK( m_plots_eff_vsTest->fillPlots(
310  *particle, isMatched, truthMu, actualMu, weight ) );
311  }
312 
315  if ( m_trkAnaDefSvc->isTestTruth() and
316  nHitsSelVec( *particle,
317  m_trkAnaDefSvc->minSilHits(),
318  m_trkAnaDefSvc->etaBins() ) ) {
320  *particle, isMatched, truthMu, actualMu, weight ) );
321  }
322  else if ( m_trkAnaDefSvc->isReferenceTruth() ) {
323  bool isTechMatched = isMatched ?
324  nHitsSelVec( *(matches.getMatchedRefTruth( *particle )),
325  m_trkAnaDefSvc->minSilHits(),
326  m_trkAnaDefSvc->etaBins() ) : false;
328  *particle, isTechMatched, truthMu, actualMu, weight ) );
329  }
330  else if ( m_trkAnaDefSvc->matchingType() == "EFTruthMatch" ) {
331  const xAOD::TruthParticle* linkedTruth = getLinkedTruth(
332  *particle, m_trkAnaDefSvc->truthProbCut() );
333  bool isTechMatched = isMatched ?
334  nHitsSelVec( *linkedTruth,
335  m_trkAnaDefSvc->minSilHits(),
336  m_trkAnaDefSvc->etaBins() ) : false;
338  *particle, isTechMatched, truthMu, actualMu, weight ) );
339  }
340  }
341 
343  if( m_plots_resolution ) {
344  if( isMatched ) {
345  if( m_trkAnaDefSvc->isReferenceTruth() ) {
346  ATH_CHECK( m_plots_resolution->fillPlots(
347  *particle, *(matches.getMatchedRefTruth( *particle )), weight ) );
348  } else {
349  ATH_CHECK( m_plots_resolution->fillPlots(
350  *particle, *(matches.getMatchedRefTrack( *particle )), weight ) );
351  }
352  }
353  }
354 
357  ATH_CHECK( m_plots_hitsOnMatchedTrk->fillPlots( *particle, truthMu, actualMu, weight ) );
358  if( m_trkAnaDefSvc->isReferenceTruth() ) {
360  *particle, *(matches.getMatchedRefTruth( *particle )), truthMu, actualMu, weight ) );
361  } else {
363  *particle, *(matches.getMatchedRefTrack( *particle )), truthMu, actualMu, weight ) );
364  }
365  }
366 
368  bool isUnlinked = isUnlinkedTruth( *particle );
369  bool isFakeTruth = getTruthMatchProb( *particle ) < m_trkAnaDefSvc->truthProbCut();
370  if ( isUnlinked ) {
371  if( m_plots_missingTruth ) {
372  ATH_CHECK( m_plots_missingTruth->fillPlots( *particle, isFakeTruth, truthMu, actualMu, weight ) );
373  }
375  ATH_CHECK( m_plots_hitsOnUnlinkedTrk->fillPlots( *particle, truthMu, actualMu, weight ) );
376  }
377  }
378 
379  bool doFakes = m_trkAnaDefSvc->unlinkedAsFakes() ? true : not isUnlinked;
380  if( doFakes and m_plots_fakeRate ) {
381  ATH_CHECK( m_plots_fakeRate->fillPlots( *particle, isFakeTruth, truthMu, actualMu, weight ) );
382  if( m_plots_hitsOnFakeTrk and isFakeTruth ) {
383  ATH_CHECK( m_plots_hitsOnFakeTrk->fillPlots( *particle, truthMu, actualMu, weight ) );
384  }
385  }
386 
388  if( m_trkAnaDefSvc->isTestOffline() ) {
389  if( m_plots_offEle ) {
390  ATH_CHECK( m_plots_offEle->fillPlots( *particle, false, weight ) );
391  }
392  if( m_plots_eff_vsOffEle ) {
393  ATH_CHECK( m_plots_eff_vsOffEle->fillPlots( *particle, isMatched, weight ) );
394  }
395  }
396 
397  } // close loop over particles
398 
400  int nGoodVertices(0);
401  for( const VERTEX* vertex : vertices ) {
403  if( vertexType( *vertex ) == xAOD::VxType::NoVtx ) {
404  ATH_MSG_DEBUG( "Found Dummy vertex. Skipping" );
405  continue;
406  }
407  nGoodVertices++;
408 
410  std::vector< const PARTICLE* > vtxTracks{};
411  std::vector< float > vtxTrackWeights{};
413  *vertex, vtxTracks, vtxTrackWeights,
414  particles, m_trkAnaDefSvc->useSelectedVertexTracks() ) ) {
415  ATH_MSG_WARNING( "Problem when retrieving vertex-assocciated tracks" );
416  if( not vtxTracks.empty() ) {
417  ATH_MSG_WARNING( "Invalid associated track links found. Check your input format." );
418  }
419  }
420 
423  ATH_CHECK( m_plots_vtxParam_vsTest->fillPlots( *vertex, vtxTracks, vtxTrackWeights, weight ) );
424  }
425  }
426 
429  ATH_CHECK( m_plots_nVtxParam_vsTest->fillPlots( nGoodVertices, truthMu, actualMu, weight ) );
430  }
431 
432  return StatusCode::SUCCESS;
433 }

◆ 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 591 of file TrackAnalysisPlotsMgr.cxx.

597 {
598 
599  for( const xAOD::TruthParticle* thisTruth : truths ) {
600 
601  bool isMatched( false ); // test track matched to reference track through EFTruthMatch method
602  bool refMatched( false ); // reference track matched to thisTruth
603 
605  for( const xAOD::TrackParticle* thisTrack : refTracks ) {
606  const xAOD::TruthParticle* linkedTruth = getLinkedTruth(
607  *thisTrack, m_trkAnaDefSvc->truthProbCut() );
608  if( not linkedTruth ) {
609  ATH_MSG_WARNING( "Unlinked track!!" );
610  continue;
611  }
612  if( thisTruth == linkedTruth ) {
613  refMatched = true;
614  break;
615  }
616  } // close loop over reference tracks
617 
619  if ( not refMatched ) continue;
620 
621  else {
622 
624  for( const xAOD::TrackParticle* thisTrack : testTracks ) {
625  const xAOD::TruthParticle* linkedTruth = getLinkedTruth(
626  *thisTrack, m_trkAnaDefSvc->truthProbCut() );
627  if( not linkedTruth ) {
628  ATH_MSG_WARNING( "Unlinked track!!" );
629  continue;
630  }
631  if( thisTruth == linkedTruth ) {
632  isMatched = matches.isTestMatched( *thisTrack ); // Check if this test is matched to reference with EFTruthMatch
633  break;
634  }
635  } // close loop over test tracks
636 
638  if( m_plots_eff_vsTruth ) {
639  ATH_CHECK( m_plots_eff_vsTruth->fillPlots(
640  *thisTruth, isMatched, truthMu, actualMu, weight ) );
641  }
642 
645  if (nHitsSelVec( *thisTruth, m_trkAnaDefSvc->minSilHits(), m_trkAnaDefSvc->etaBins() )) {
647  *thisTruth, isMatched , truthMu, actualMu, weight ) );
648  }
649  }
650  }
651  } // close loop over truth particles
652 
653  return StatusCode::SUCCESS;
654 }

◆ finalize()

void PlotBase::finalize ( )
inherited

Definition at line 47 of file PlotBase.cxx.

47  {
48  for (auto *subNode: m_vSubNodes) {
49  subNode->finalize();
50  }
51  finalizePlots();
52 }

◆ finalizePlots()

virtual void PlotBase::finalizePlots ( )
inlineprivatevirtualinherited

◆ 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  m_plots_trkParam_vsRef = std::make_unique< TrackParametersPlots >(
59  this, "Tracks/Parameters", m_anaTag, m_trkAnaDefSvc->referenceTag() );
60  }
61 
63  if( m_trkAnaDefSvc->plotTrackMultiplicities() ) {
64  m_plots_nTracks_vsTest = std::make_unique< NtracksPlots >(
65  this, "Tracks/Multiplicities", m_anaTag, m_trkAnaDefSvc->testTag(),
66  m_trkAnaDefSvc->doTrigNavigation(),
67  true, m_trkAnaDefSvc->hasFullPileupTruth() );
68  m_plots_nTracks_vsRef = std::make_unique< NtracksPlots >(
69  this, "Tracks/Multiplicities", m_anaTag, m_trkAnaDefSvc->referenceTag(),
70  m_trkAnaDefSvc->doTrigNavigation() );
71  }
72 
74  if( m_trkAnaDefSvc->plotEfficiencies() ) {
75  m_plots_eff_vsTest = std::make_unique< EfficiencyPlots >(
76  this, "Tracks/Efficiencies/Purities", m_anaTag, m_trkAnaDefSvc->testTag() );
77  m_plots_eff_vsRef = std::make_unique< EfficiencyPlots >(
78  this, "Tracks/Efficiencies", m_anaTag, m_trkAnaDefSvc->referenceTag(),
79  true, m_trkAnaDefSvc->hasFullPileupTruth() );
80  if( m_trkAnaDefSvc->matchingType() == "EFTruthMatch" ) {
81  m_plots_eff_vsTruth = std::make_unique< EfficiencyPlots >(
82  this, "Tracks/Efficiencies", m_anaTag, "truth" );
83  }
84  }
85 
87  if( m_trkAnaDefSvc->plotTechnicalEfficiencies()) {
88  m_plots_tech_eff_vsTest = std::make_unique< EfficiencyPlots >(
89  this, "Tracks/Efficiencies/Technical/Purities", m_anaTag, m_trkAnaDefSvc->testTag());
90  m_plots_tech_eff_vsRef = std::make_unique< EfficiencyPlots >(
91  this, "Tracks/Efficiencies/Technical", m_anaTag, m_trkAnaDefSvc->referenceTag(),
92  true, m_trkAnaDefSvc->hasFullPileupTruth() );
93  if( m_trkAnaDefSvc->matchingType() == "EFTruthMatch" ) {
94  m_plots_tech_eff_vsTruth = std::make_unique< EfficiencyPlots >(
95  this, "Tracks/Efficiencies/Technical", m_anaTag, "truth" );
96  }
97  }
98 
100  if( m_trkAnaDefSvc->plotResolutions() ) {
101  m_plots_resolution = std::make_unique< ResolutionPlots >(
102  this, "Tracks/Resolutions", m_anaTag,
103  m_trkAnaDefSvc->testTag(), m_trkAnaDefSvc->referenceTag(),
104  m_trkAnaDefSvc->resolutionMethod() );
105  }
106 
108  if( m_trkAnaDefSvc->plotFakeRates() and m_trkAnaDefSvc->isReferenceTruth() ) {
109  m_plots_fakeRate = std::make_unique< FakeRatePlots >(
110  this, "Tracks/FakeRates", m_anaTag, m_trkAnaDefSvc->testTag(),
111  true, m_trkAnaDefSvc->hasFullPileupTruth() );
112  if ( not m_trkAnaDefSvc->unlinkedAsFakes() ) {
113  m_plots_missingTruth = std::make_unique< FakeRatePlots >(
114  this, "Tracks/FakeRates/Unlinked", m_anaTag, m_trkAnaDefSvc->testTag(),
115  true, m_trkAnaDefSvc->hasFullPileupTruth() );
116  }
117  }
118 
120  if( m_trkAnaDefSvc->plotDuplicateRates() ) {
121  m_plots_duplRate = std::make_unique< DuplicateRatePlots >(
122  this, "Tracks/Duplicates", m_anaTag, m_trkAnaDefSvc->referenceTag(),
123  true, m_trkAnaDefSvc->hasFullPileupTruth() );
124  }
125 
128  if( m_trkAnaDefSvc->plotHitsOnTracks() and not m_trkAnaDefSvc->isTestTruth() ) {
129  m_plots_hitsOnTrk_vsTest = std::make_unique< HitsOnTracksPlots >(
130  this, "Tracks/HitsOnTracks", m_anaTag,
131  m_trkAnaDefSvc->testTag(), m_trkAnaDefSvc->isITk(),
132  true, m_trkAnaDefSvc->hasFullPileupTruth() );
133  }
134  if( m_trkAnaDefSvc->plotHitsOnTracksReference() and not m_trkAnaDefSvc->isReferenceTruth() ) {
135  m_plots_hitsOnTrk_vsRef = std::make_unique< HitsOnTracksPlots >(
136  this, "Tracks/HitsOnTracks", m_anaTag,
137  m_trkAnaDefSvc->referenceTag(), m_trkAnaDefSvc->isITk() );
138  }
140  if( m_trkAnaDefSvc->plotHitsOnMatchedTracks() and not m_trkAnaDefSvc->isTestTruth() ) {
141  m_plots_hitsOnMatchedTrk = std::make_unique< HitsOnTracksPlots >(
142  this, "Tracks/Resolutions/HitsOnTracks", m_anaTag,
143  m_trkAnaDefSvc->testTag(), m_trkAnaDefSvc->isITk(),
144  true, m_trkAnaDefSvc->hasFullPileupTruth() );
145  m_plots_hitsOnMatchedTrk_vsRef = std::make_unique< HitsOnTracksPlots >(
146  this, "Tracks/Resolutions/HitsOnTracks", m_anaTag,
147  m_trkAnaDefSvc->testTag(), m_trkAnaDefSvc->referenceTag(), m_trkAnaDefSvc->isITk() );
148  }
150  if( m_trkAnaDefSvc->plotHitsOnFakeTracks() and m_trkAnaDefSvc->isReferenceTruth() ) {
151  m_plots_hitsOnFakeTrk = std::make_unique< HitsOnTracksPlots >(
152  this, "Tracks/FakeRates/HitsOnTracks", m_anaTag,
153  m_trkAnaDefSvc->testTag(), m_trkAnaDefSvc->isITk(),
154  true, m_trkAnaDefSvc->hasFullPileupTruth() );
155  if ( not m_trkAnaDefSvc->unlinkedAsFakes() ) {
156  m_plots_hitsOnUnlinkedTrk = std::make_unique< HitsOnTracksPlots >(
157  this, "Tracks/FakeRates/Unlinked/HitsOnTracks", m_anaTag,
158  m_trkAnaDefSvc->testTag(), m_trkAnaDefSvc->isITk(),
159  true, m_trkAnaDefSvc->hasFullPileupTruth() );
160  }
161  }
162 
164  if( m_trkAnaDefSvc->plotOfflineElectrons() ) {
165  m_plots_offEle = std::make_unique< OfflineElectronPlots >(
166  this, "Tracks/Parameters", m_anaTag );
167  if( m_trkAnaDefSvc->plotEfficiencies() ) {
168  m_plots_eff_vsOffEle = std::make_unique< OfflineElectronPlots >(
169  this, "Tracks/Efficiencies", m_anaTag, true );
170  }
171  }
172 
174  if( m_trkAnaDefSvc->plotVertexParameters() ) {
176  m_plots_vtxParam_vsTest = std::make_unique< VertexParametersPlots >(
177  this, "Vertices/AllPrimary/Parameters", m_anaTag,
178  m_trkAnaDefSvc->testTag(),
179  not m_trkAnaDefSvc->isTestTruth() ); // do associated tracks plots for reco only
180  m_plots_vtxParam_vsRef = std::make_unique< VertexParametersPlots >(
181  this, "Vertices/AllPrimary/Parameters", m_anaTag,
182  m_trkAnaDefSvc->referenceTag(),
183  not m_trkAnaDefSvc->isReferenceTruth() ); // do associated tracks plots for reco only
184 
186  m_plots_nVtxParam_vsTest = std::make_unique< VertexParametersPlots >(
187  this, "Vertices/AllPrimary/Parameters", m_anaTag,
188  m_trkAnaDefSvc->testTag(), false,
189  true, m_trkAnaDefSvc->hasFullPileupTruth() );
190  m_plots_nVtxParam_vsRef = std::make_unique< VertexParametersPlots >(
191  this, "Vertices/AllPrimary/Parameters", m_anaTag,
192  m_trkAnaDefSvc->referenceTag(), false,
193  true, m_trkAnaDefSvc->hasFullPileupTruth() );
194  }
195 
198 
199  return StatusCode::SUCCESS;
200 }

◆ initializePlots()

virtual void PlotBase::initializePlots ( )
inlineprivatevirtualinherited

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

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  m_lvl = m_imsg ?
43  static_cast<MSG::Level>( m_imsg.load()->outputLevel(m_nm) ) :
44  MSG::INFO;
45 }

◆ 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 164 of file AthMessaging.h.

165 {
166  MsgStream* ms = m_msg_tls.get();
167  if (!ms) {
168  if (!m_initialized.test_and_set()) initMessaging();
169  ms = new MsgStream(m_imsg,m_nm);
170  m_msg_tls.reset( ms );
171  }
172 
173  ms->setLevel (m_lvl);
174  return *ms;
175 }

◆ 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 179 of file AthMessaging.h.

180 { return msg() << lvl; }

◆ 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_initialized.test_and_set()) initMessaging();
154  if (m_lvl <= lvl) {
155  msg() << lvl;
156  return true;
157  } else {
158  return false;
159  }
160 }

◆ 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  }

◆ 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 }

◆ 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 }

◆ 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  }

◆ 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  }

◆ 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.

◆ m_lvl

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

Current logging level.

Definition at line 138 of file AthMessaging.h.

◆ 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:
AthMessaging::m_lvl
std::atomic< MSG::Level > m_lvl
Current logging level.
Definition: AthMessaging.h:138
IDTPM::TrackAnalysisPlotsMgr::chain
const std::string & chain() const
Definition: TrackAnalysisPlotsMgr.h:64
PlotBase::constructPrefix
static std::string constructPrefix(std::string dir, bool prependDir)
Definition: PlotBase.cxx:293
WritePulseShapeToCool.yhi
yhi
Definition: WritePulseShapeToCool.py:153
replace
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition: hcg.cxx:307
PlotBase::m_iDetailLevel
int m_iDetailLevel
Definition: PlotBase.h:101
IDTPM::PlotMgr::book
StatusCode book(TH1 *&pHisto, const SinglePlotDefinition &def)
Book a TH1 histogram.
Definition: PlotMgr.cxx:78
IDTPM::TrackAnalysisPlotsMgr::m_plots_tech_eff_vsTruth
std::unique_ptr< EfficiencyPlots > m_plots_tech_eff_vsTruth
Definition: TrackAnalysisPlotsMgr.h:126
PlotBase::m_vBookedHistograms
std::vector< HistData > m_vBookedHistograms
Definition: PlotBase.h:97
IDTPM::TrackAnalysisPlotsMgr::m_plots_vtxParam_vsRef
std::unique_ptr< VertexParametersPlots > m_plots_vtxParam_vsRef
plots w.r.t. reference vertices parameters
Definition: TrackAnalysisPlotsMgr.h:143
IDTPM::nHitsSelVec
bool nHitsSelVec(const PARTICLE &p, const std::vector< unsigned int > &minHits, const std::vector< float > &etaBins)
Definition: OfflineObjectDecorHelper.h:93
IDTPM::TrackAnalysisPlotsMgr::m_plots_nTracks_vsRef
std::unique_ptr< NtracksPlots > m_plots_nTracks_vsRef
Definition: TrackAnalysisPlotsMgr.h:123
AddEmptyComponent.binning
binning
Definition: AddEmptyComponent.py:34
IDTPM::getTruthMatchProb
float getTruthMatchProb(const xAOD::TrackParticle &track)
getTruthMatchProb
Definition: OfflineObjectDecorHelper.cxx:53
IDTPM::PlotMgr::getLogLinearBins
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
IDTPM::TrackAnalysisPlotsMgr::m_plots_trkParam_vsTest
std::unique_ptr< TrackParametersPlots > m_plots_trkParam_vsTest
plots w.r.t. test tracks parameters
Definition: TrackAnalysisPlotsMgr.h:111
make_coralServer_rep.opt
opt
Definition: make_coralServer_rep.py:19
IDTPM::PlotMgr::setVariableBinsEff
StatusCode setVariableBinsEff(P *&pHisto, const std::vector< float > &binning, char axis)
SetVariableBins (for Efficiencies)
Definition: PlotMgr.h:150
IDTPM::PlotMgr::setLogLinearBinsEff
StatusCode setLogLinearBinsEff(P *&pHisto, unsigned int nBins, float absMin, float absMax, char axis)
Set Log-Linear axis (for Efficiencies)
Definition: PlotMgr.h:180
IDTPM::getLinkedTruth
const xAOD::TruthParticle * getLinkedTruth(const xAOD::TrackParticle &track, const float truthProbCut)
getLinkedTruth
Definition: OfflineObjectDecorHelper.cxx:61
plotmaker.hist
hist
Definition: plotmaker.py:148
mergePhysValFiles.start
start
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:14
PlotBase::m_sDirectory
std::string m_sDirectory
Definition: PlotBase.h:100
PlotBase::m_vBookedEfficiencies
std::vector< EfficiencyData > m_vBookedEfficiencies
Definition: PlotBase.h:99
tree
TChain * tree
Definition: tile_monitor.h:30
IDTPM::TrackAnalysisPlotsMgr::m_plots_hitsOnTrk_vsTest
std::unique_ptr< HitsOnTracksPlots > m_plots_hitsOnTrk_vsTest
Definition: TrackAnalysisPlotsMgr.h:114
yodamerge_tmp.axis
list axis
Definition: yodamerge_tmp.py:241
IDTPM::TrackAnalysisPlotsMgr::m_plots_hitsOnUnlinkedTrk
std::unique_ptr< HitsOnTracksPlots > m_plots_hitsOnUnlinkedTrk
Definition: TrackAnalysisPlotsMgr.h:133
IDTPM::TrackAnalysisPlotsMgr::m_plots_hitsOnMatchedTrk
std::unique_ptr< HitsOnTracksPlots > m_plots_hitsOnMatchedTrk
Definition: TrackAnalysisPlotsMgr.h:115
PlotBase::BookTEfficiency
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
IDTPM::TrackAnalysisPlotsMgr::m_chain
std::string m_chain
Definition: TrackAnalysisPlotsMgr.h:101
IDTPM::TrackAnalysisPlotsMgr::fillPlotsTruth
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)
Definition: TrackAnalysisPlotsMgr.cxx:591
bin
Definition: BinsDiffFromStripMedian.h:43
PlotBase::Book2D
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
IDTPM::TrackAnalysisPlotsMgr::m_plots_eff_vsTruth
std::unique_ptr< EfficiencyPlots > m_plots_eff_vsTruth
plots w.r.t. efficiency plots w.r.t. truth (for EFTruthMatch only)
Definition: TrackAnalysisPlotsMgr.h:125
IDTPM::TrackAnalysisPlotsMgr::m_plots_fakeRate
std::unique_ptr< FakeRatePlots > m_plots_fakeRate
fake rate plots (only when reference=truth)
Definition: TrackAnalysisPlotsMgr.h:130
athena.value
value
Definition: athena.py:124
IDTPM::PlotMgr::retrieveDefinition
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
InDetSecVtxTruthMatchUtils::isMatched
bool isMatched(int matchInfo)
Definition: InDetSecVtxTruthMatchTool.h:48
IDTPM::TrackAnalysisPlotsMgr::m_plots_resolution
std::unique_ptr< ResolutionPlots > m_plots_resolution
resolution plots
Definition: TrackAnalysisPlotsMgr.h:128
PrintTrkAnaSummary.dirName
dirName
Definition: PrintTrkAnaSummary.py:126
IDTPM::TrackAnalysisPlotsMgr::m_anaTag
std::string m_anaTag
Definition: TrackAnalysisPlotsMgr.h:100
xAOD::identifier
identifier
Definition: UncalibratedMeasurement_v1.cxx:15
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
IDTPM::TrackAnalysisPlotsMgr::m_plots_nVtxParam_vsTest
std::unique_ptr< VertexParametersPlots > m_plots_nVtxParam_vsTest
Definition: TrackAnalysisPlotsMgr.h:141
python.TrigEgammaMonitorHelper.TH2F
def TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:45
AthMessaging::m_imsg
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
Definition: AthMessaging.h:135
python.SystemOfUnits.ms
int ms
Definition: SystemOfUnits.py:132
xAOD::VxType::NoVtx
@ NoVtx
Dummy vertex. TrackParticle was not used in vertex fit.
Definition: TrackingPrimitives.h:571
IDTPM::TrackAnalysisPlotsMgr::m_plots_tech_eff_vsRef
std::unique_ptr< EfficiencyPlots > m_plots_tech_eff_vsRef
Definition: TrackAnalysisPlotsMgr.h:120
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
PlotBase::BookTProfile2D
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
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:189
PlotBase::Book1D
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
IDTPM::TrackAnalysisPlotsMgr::fillPlotsTest
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.
Definition: TrackAnalysisPlotsMgr.cxx:287
beamspotnt.labels
list labels
Definition: bin/beamspotnt.py:1447
PlotBase::m_vSubNodes
std::vector< PlotBase * > m_vSubNodes
Definition: PlotBase.h:96
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
IDTPM::TrackAnalysisPlotsMgr::m_plots_eff_vsRef
std::unique_ptr< EfficiencyPlots > m_plots_eff_vsRef
Definition: TrackAnalysisPlotsMgr.h:119
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
plotting.yearwise_efficiency_vs_mu.xval
float xval
Definition: yearwise_efficiency_vs_mu.py:35
WritePulseShapeToCool.xhi
xhi
Definition: WritePulseShapeToCool.py:152
IDTPM::TrackAnalysisPlotsMgr::fillPlotsReference
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.
Definition: TrackAnalysisPlotsMgr.cxx:454
python.TrigEgammaMonitorHelper.TProfile
def TProfile(*args, **kwargs)
Definition: TrigEgammaMonitorHelper.py:81
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
IDTPM::TrackAnalysisPlotsMgr::m_plots_missingTruth
std::unique_ptr< FakeRatePlots > m_plots_missingTruth
Definition: TrackAnalysisPlotsMgr.h:131
ChangeHistoRange.binsY
list binsY
Definition: ChangeHistoRange.py:59
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
IDTPM::PlotMgr::setBinLabels
StatusCode setBinLabels(P *&pHisto, const std::vector< std::string > &binLabels, char axis)
SetBinLabels (for TH* and TProfile* only)
Definition: PlotMgr.h:196
checkCorrelInHIST.prefix
dictionary prefix
Definition: checkCorrelInHIST.py:391
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
IDTPM::TrackAnalysisPlotsMgr::m_plots_summary
std::unique_ptr< SummaryPlots > m_plots_summary
Plot categories summary plots.
Definition: TrackAnalysisPlotsMgr.h:109
IDTPM::PlotMgr::PlotMgr
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
WritePulseShapeToCool.xlo
xlo
Definition: WritePulseShapeToCool.py:133
IDTPM::TrackAnalysisPlotsMgr::m_plots_duplRate
std::unique_ptr< DuplicateRatePlots > m_plots_duplRate
duplicate rate plots
Definition: TrackAnalysisPlotsMgr.h:135
WritePulseShapeToCool.ylo
ylo
Definition: WritePulseShapeToCool.py:134
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:164
PlotBase::Book3D
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
IDTPM::TrackAnalysisPlotsMgr::m_plots_hitsOnFakeTrk
std::unique_ptr< HitsOnTracksPlots > m_plots_hitsOnFakeTrk
Definition: TrackAnalysisPlotsMgr.h:132
beamspotman.dir
string dir
Definition: beamspotman.py:623
dumpTgcDigiJitter.nBins
list nBins
Definition: dumpTgcDigiJitter.py:29
IDTPM::TrackAnalysisPlotsMgr::m_plots_trkParam_vsRef
std::unique_ptr< TrackParametersPlots > m_plots_trkParam_vsRef
plots w.r.t. reference tracks parameters
Definition: TrackAnalysisPlotsMgr.h:118
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
IDTPM::TrackAnalysisPlotsMgr::m_plots_eff_vsOffEle
std::unique_ptr< OfflineElectronPlots > m_plots_eff_vsOffEle
Definition: TrackAnalysisPlotsMgr.h:138
IDTPM::TrackAnalysisPlotsMgr::m_directory
std::string m_directory
Definition: TrackAnalysisPlotsMgr.h:102
plotting.yearwise_efficiency_vs_mu.yval
float yval
Definition: yearwise_efficiency_vs_mu.py:36
IDTPM::TrackAnalysisPlotsMgr::m_plots_vtxParam_vsTest
std::unique_ptr< VertexParametersPlots > m_plots_vtxParam_vsTest
plots w.r.t. test vertices parameters
Definition: TrackAnalysisPlotsMgr.h:140
IDTPM::PlotMgr::setVariableBins
StatusCode setVariableBins(P *&pHisto, const std::vector< float > &binning, char axis)
SetVariableBins.
Definition: PlotMgr.h:135
IDTPM::TrackAnalysisPlotsMgr::m_plots_hitsOnTrk_vsRef
std::unique_ptr< HitsOnTracksPlots > m_plots_hitsOnTrk_vsRef
Definition: TrackAnalysisPlotsMgr.h:121
IDTPM::TrackAnalysisPlotsMgr::m_plots_hitsOnMatchedTrk_vsRef
std::unique_ptr< HitsOnTracksPlots > m_plots_hitsOnMatchedTrk_vsRef
Definition: TrackAnalysisPlotsMgr.h:122
IDTPM::TrackAnalysisPlotsMgr::m_plots_tech_eff_vsTest
std::unique_ptr< EfficiencyPlots > m_plots_tech_eff_vsTest
Definition: TrackAnalysisPlotsMgr.h:113
IDTPM::TrackAnalysisPlotsMgr::m_plots_nVtxParam_vsRef
std::unique_ptr< VertexParametersPlots > m_plots_nVtxParam_vsRef
Definition: TrackAnalysisPlotsMgr.h:144
IDTPM::getVertexTracksAndWeights
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
Definition: OfflineObjectDecorHelper.cxx:84
IDTPM::PlotMgr::setLogLinearBins
StatusCode setLogLinearBins(P *&pHisto, unsigned int nBins, float absMin, float absMax, char axis)
Set Log-Linear axis.
Definition: PlotMgr.h:170
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
IDTPM::TrackAnalysisPlotsMgr::m_trkAnaDefSvc
SmartIF< ITrackAnalysisDefinitionSvc > m_trkAnaDefSvc
TrackAnalysis definition service to "hold" the histograms configurations/flags.
Definition: TrackAnalysisPlotsMgr.h:105
IDTPM::TrackAnalysisCollections::InRoI
@ InRoI
Definition: TrackAnalysisCollections.h:54
IDTPM::vertexType
int vertexType(const V &v)
Definition: VertexParametersHelper.h:69
AthMessaging::m_nm
std::string m_nm
Message source name.
Definition: AthMessaging.h:129
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
LArG4FSStartPointFilter.particles
list particles
Definition: LArG4FSStartPointFilter.py:84
PlotBase::BookTProfile
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
ChangeHistoRange.binsX
list binsX
Definition: ChangeHistoRange.py:56
IDTPM::PlotMgr::initialize
StatusCode initialize()
initialize
Definition: PlotMgr.cxx:37
IDTPM::PlotMgr::m_anaTag
std::string m_anaTag
Definition: PlotMgr.h:232
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
AthMessaging::initMessaging
void initMessaging() const
Initialize our message level and MessageSvc.
Definition: AthMessaging.cxx:39
AthMessaging::m_msg_tls
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
Definition: AthMessaging.h:132
IDTPM::TrackAnalysisPlotsMgr::m_plots_offEle
std::unique_ptr< OfflineElectronPlots > m_plots_offEle
plots w.r.t. reference offline electron
Definition: TrackAnalysisPlotsMgr.h:137
PlotBase::finalizePlots
virtual void finalizePlots()
Definition: PlotBase.h:92
IDTPM::TrackAnalysisPlotsMgr::anaTag
const std::string & anaTag() const
return members
Definition: TrackAnalysisPlotsMgr.h:63
PlotBase::m_vBookedTrees
std::vector< TreeData > m_vBookedTrees
Definition: PlotBase.h:98
IDTPM::isUnlinkedTruth
bool isUnlinkedTruth(const xAOD::TrackParticle &track)
isUnlinkedTruth
Definition: OfflineObjectDecorHelper.cxx:45
IDTPM::TrackAnalysisPlotsMgr::m_plots_nTracks_vsTest
std::unique_ptr< NtracksPlots > m_plots_nTracks_vsTest
Definition: TrackAnalysisPlotsMgr.h:116
IDTPM::TrackAnalysisPlotsMgr::m_plots_eff_vsTest
std::unique_ptr< EfficiencyPlots > m_plots_eff_vsTest
Definition: TrackAnalysisPlotsMgr.h:112
python.LArMinBiasAlgConfig.float
float
Definition: LArMinBiasAlgConfig.py:65