ATLAS Offline Software
Loading...
Searching...
No Matches
InDetPerfPlot_Resolution Class Reference

class holding res plots for Inner Detector RTT Validation and implementing fill methods More...

#include <InDetPerfPlot_Resolution.h>

Inheritance diagram for InDetPerfPlot_Resolution:
Collaboration diagram for InDetPerfPlot_Resolution:

Public Types

enum  Param {
  D0 , Z0 , QOVERP , QOVERPT ,
  THETA , PHI , PT , Z0SIN ,
  TIME , NPARAMS
}

Public Member Functions

 InDetPerfPlot_Resolution (InDetPlotBase *pParent, const std::string &dirName, bool d0Only=false, bool hasHGTDReco=false)
void fill (const xAOD::TrackParticle &trkprt, const xAOD::TruthParticle &truthprt, float weight)
void fill (const xAOD::TrackParticle &trkprt, float weight)
virtual ~InDetPerfPlot_Resolution ()
SingleHistogramDefinition retrieveDefinition (const std::string &histoIdentifier, const std::string &folder="default", const std::string &nameOverride="")
 Retrieve a single histogram definition, given the unique string identifier.
template<class Htype>
void book (Htype *&pHisto, const std::string &histoIdentifier, const std::string &nameOverride="", const std::string &folder="default")
 Helper method to book histograms using an identifier string.
void book (TH1 *&pHisto, const SingleHistogramDefinition &hd)
 Book a TH1 histogram.
void book (TProfile *&pHisto, const SingleHistogramDefinition &hd)
 Book a TProfile histogram.
void book (TProfile2D *&pHisto, const SingleHistogramDefinition &hd)
 Book a TProfile2D histogram.
void book (TH2 *&pHisto, const SingleHistogramDefinition &hd)
 Book a 2D histogram (TH2)
void book (TEfficiency *&pHisto, const SingleHistogramDefinition &hd)
 Book a (1-D) TEfficiency.
void initialize ()
void finalize ()
void setDetailLevel (int iDetailLevel)
void RegisterSubPlot (PlotBase *pPlotBase)
std::vector< HistDataretrieveBookedHistograms ()
 Retrieve all booked histograms.
std::vector< TreeDataretrieveBookedTrees ()
 Retrieve all booked trees.
std::vector< EfficiencyDataretrieveBookedEfficiencies ()
 Retrieve all booked efficiency objects.
TTree * BookTree (const std::string &name, bool prependDir=true)
 Book a TTree.
const std::string & getDirectory ()
bool msgLvl (const MSG::Level lvl) const
 Test the output level.
MsgStream & msg () const
 The standard message stream.
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream.
void setLevel (MSG::Level lvl)
 Change the current logging level.
Methods to book monitoring histograms

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

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

Static Public Member Functions

static void fillHisto (TProfile *pTprofile, const float bin, const float weight, const float weight2=1.0)
static void fillHisto (TProfile2D *pTprofile, const float xval, const float yval, const float weight, const float weight2=1.0)
static void fillHisto (TH1 *pTh1, const float value)
static void fillHisto (TH1 *pTh1, const float value, const float weight)
static void fillHisto (TH2 *pTh2, const float xval, const float yval)
static void fillHisto (TH2 *pTh2, const float xval, const float yval, const float weight)
static void fillHisto (TH3 *pTh3, const float xval, const float yval, const float zval)
static void fillHisto (TEfficiency *pTeff, const float value, const bool accepted, float weight)
static void fillHisto (TEfficiency *eff2d, const float xvalue, const float yvalue, const bool accepted, const float weight)

Protected Member Functions

template<class T>
void mBook (T &pHisto, const std::string &histoIdentifier)
 book, for use by macro

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

void initializePlots ()
void finalizePlots ()
void getTrackParameters (const xAOD::TruthParticle &truthprt)
void getTrackParameters (const xAOD::TrackParticle &truthprt)
void getPlotParameters ()
void getPlots (float weight=1.0, bool useTruthKin=true)
void initMessaging () const
 Initialize our message level and MessageSvc.

Static Private Member Functions

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

Private Attributes

const double m_ptMin = 0.745
const double m_ptMax = 1000.0
float m_PtBins [m_nPtBins+1] {}
const double m_lowPtMin = 0.01
const double m_lowPtMax = 1.0
float m_LowPtBins [m_nLowPtBins+1] {}
std::string m_paramProp [NPARAMS] = { "d0", "z0", "qoverp", "ptqopt", "theta", "phi", "pt", "z0sin", "time" }
IDPVM::ResolutionHelper m_resolutionHelper
IDPVM::ResolutionHelper::methods m_resolutionMethod
bool m_d0Only = false
bool m_hasHGTDReco = false
bool m_primTrk
bool m_secdTrk
bool m_allTrk
float m_trkP [NPARAMS]
float m_truetrkP [NPARAMS]
float m_trkErrP [NPARAMS]
float m_resP [NPARAMS]
float m_pullP [NPARAMS]
float m_sigP [NPARAMS]
TH1 * m_pull [NPARAMS]
TH1 * m_res [NPARAMS]
TH1 * m_sigma [NPARAMS]
TH2 * m_resHelpereta [NPARAMS]
TH2 * m_resHelperpt [NPARAMS]
TH2 * m_resHelperlowpt [NPARAMS]
TH2 * m_pullHelpereta [NPARAMS]
TH2 * m_pullHelperpt [NPARAMS]
TH2 * m_pullHelperlowpt [NPARAMS]
TH1 * m_reswidth_vs_eta [NPARAMS]
TH1 * m_resmean_vs_eta [NPARAMS]
TH1 * m_reswidth_vs_pt [NPARAMS]
TH1 * m_resmean_vs_pt [NPARAMS]
TH1 * m_reswidth_vs_lowpt [NPARAMS]
TH1 * m_resmean_vs_lowpt [NPARAMS]
TH1 * m_pullwidth_vs_eta [NPARAMS]
TH1 * m_pullmean_vs_eta [NPARAMS]
TH1 * m_pullwidth_vs_pt [NPARAMS]
TH1 * m_pullmean_vs_pt [NPARAMS]
TH1 * m_pullwidth_vs_lowpt [NPARAMS]
TH1 * m_pullmean_vs_lowpt [NPARAMS]
TH2 * m_resHelpereta_pos [NPARAMS]
TH2 * m_resHelpereta_neg [NPARAMS]
TH2 * m_resHelperpt_pos [NPARAMS]
TH2 * m_resHelperpt_neg [NPARAMS]
TH2 * m_resHelperlowpt_pos [NPARAMS]
TH2 * m_resHelperlowpt_neg [NPARAMS]
TH1 * m_reswidth_vs_eta_pos [NPARAMS]
TH1 * m_resmean_vs_eta_pos [NPARAMS]
TH1 * m_reswidth_vs_pt_pos [NPARAMS]
TH1 * m_resmean_vs_pt_pos [NPARAMS]
TH1 * m_reswidth_vs_lowpt_pos [NPARAMS]
TH1 * m_resmean_vs_lowpt_pos [NPARAMS]
TH1 * m_reswidth_vs_eta_neg [NPARAMS]
TH1 * m_resmean_vs_eta_neg [NPARAMS]
TH1 * m_reswidth_vs_pt_neg [NPARAMS]
TH1 * m_resmean_vs_pt_neg [NPARAMS]
TH1 * m_reswidth_vs_lowpt_neg [NPARAMS]
TH1 * m_resmean_vs_lowpt_neg [NPARAMS]
TH1 * m_pullProjections_vs_pt [NPARAMS][m_nPtBins]
TH1 * m_pullProjections_vs_lowpt [NPARAMS][m_nLowPtBins]
TH1 * m_pullProjections_vs_eta [NPARAMS][m_nEtaBins]
TH1 * m_resProjections_vs_pt [NPARAMS][m_nPtBins]
TH1 * m_resProjections_vs_lowpt [NPARAMS][m_nLowPtBins]
TH1 * m_resProjections_vs_eta [NPARAMS][m_nEtaBins]
TProfile * m_sigma_vs_eta [NPARAMS]
TProfile * m_sigma_vs_pt [NPARAMS]
TProfile * m_sigma_vs_lowpt [NPARAMS]
ServiceHandle< IHistogramDefinitionSvcm_histoDefSvc
std::string m_nm
 Message source name.
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels)
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer.
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level.
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging)

Static Private Attributes

static const int m_nResHist = 4
static const int m_nEtaBins = 64
static const int m_nPtBins = 49
static const int m_nLowPtBins = 99

Detailed Description

class holding res plots for Inner Detector RTT Validation and implementing fill methods

Definition at line 40 of file InDetPerfPlot_Resolution.h.

Member Enumeration Documentation

◆ Param

Constructor & Destructor Documentation

◆ InDetPerfPlot_Resolution()

InDetPerfPlot_Resolution::InDetPerfPlot_Resolution ( InDetPlotBase * pParent,
const std::string & dirName,
bool d0Only = false,
bool hasHGTDReco = false )

Definition at line 29 of file InDetPerfPlot_Resolution.cxx.

29 : InDetPlotBase(pParent, sDir),
31 m_primTrk(false),
32 m_secdTrk(false),
33 m_allTrk(false),
34
35 m_trkP{},
36 m_truetrkP{},
37 m_trkErrP{},
38
39 m_resP{},
40 m_pullP{},
41 m_sigP{},
42
43 m_pull{},
44 m_res{},
45 m_sigma{},
46
53
60
67
74
81
88
95
99 {
100 m_d0Only = d0Only;
101 m_hasHGTDReco = hasHGTDReco;
102
103 TString tsDir = (TString) sDir;
104
105 if (tsDir.Contains("Primary")) {
106 m_primTrk = true; // control if sec/prim from init
107 } else if (tsDir.Contains("Secondary")) {
108 m_secdTrk = true;
109 } else {
110 m_allTrk = true;
111 }
112
113
114
115 std::vector<double> ptBins = IDPVM::logLinearBinning(m_nPtBins, m_ptMin, m_ptMax, false);
116 for (int ipt = 0; ipt <= m_nPtBins; ipt++) {
117 m_PtBins[ipt] = (float) ptBins[ipt];
118 }
119
120 std::vector<double> lowPtBins = IDPVM::logLinearBinning(m_nLowPtBins, m_lowPtMin, m_lowPtMax, false);
121 for (int ipt = 0; ipt <= m_nLowPtBins; ipt++) {
122 m_LowPtBins[ipt] = (float) lowPtBins[ipt];
123 }
124
125
126
127}
IDPVM::ResolutionHelper::methods m_resolutionMethod
TH1 * m_resProjections_vs_eta[NPARAMS][m_nEtaBins]
TH1 * m_pullProjections_vs_lowpt[NPARAMS][m_nLowPtBins]
TH1 * m_resProjections_vs_pt[NPARAMS][m_nPtBins]
TH1 * m_pullProjections_vs_eta[NPARAMS][m_nEtaBins]
float m_LowPtBins[m_nLowPtBins+1]
TH1 * m_pullProjections_vs_pt[NPARAMS][m_nPtBins]
TH1 * m_resProjections_vs_lowpt[NPARAMS][m_nLowPtBins]
InDetPlotBase(InDetPlotBase *pParent, const std::string &dirName)
Constructor taking parent node and directory name for plots.
std::vector< double > logLinearBinning(const unsigned int nBins, const double absXmin, const double absXmax, const bool symmetriseAroundZero)

◆ ~InDetPerfPlot_Resolution()

virtual InDetPerfPlot_Resolution::~InDetPerfPlot_Resolution ( )
inlinevirtual

nop

Definition at line 53 of file InDetPerfPlot_Resolution.h.

53 {
54 }

Member Function Documentation

◆ book() [1/6]

template<class Htype>
void InDetPlotBase::book ( Htype *& pHisto,
const std::string & histoIdentifier,
const std::string & nameOverride = "",
const std::string & folder = "default" )
inherited

Helper method to book histograms using an identifier string.

Parameters
pHistoPointer to the histogram to be booked (assumed to be initialized to nullptr)
histoIdentifierIdentifier (looked up in the XML file)
nameOverrideAllows to override the histo name w.r.t the identifier. Leave empty for no override. This can be used to instantiate multiple, identically binned plots from a single entry in the XML.
folderFolder to place the plot (if any)

◆ book() [2/6]

void InDetPlotBase::book ( TEfficiency *& pHisto,
const SingleHistogramDefinition & hd )
inherited

Book a (1-D) TEfficiency.

Definition at line 71 of file InDetPlotBase.cxx.

71 {
72 if (hd.isValid()) {
73 if(hd.nBinsY==0) {
74 pHisto = BookTEfficiency(hd.name, hd.allTitles, hd.nBinsX, hd.xAxis.first, hd.xAxis.second, false);
75 } else {
76 pHisto = BookTEfficiency(hd.name, hd.allTitles, hd.nBinsX, hd.xAxis.first, hd.xAxis.second, hd.nBinsY, hd.yAxis.first, hd.yAxis.second, false);
77 }
78 }
79 }
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
bool isValid() const
Is the histogram definition valid.
IHistogramDefinitionSvc::axesLimits_t xAxis
IHistogramDefinitionSvc::axesLimits_t yAxis

◆ book() [3/6]

void InDetPlotBase::book ( TH1 *& pHisto,
const SingleHistogramDefinition & hd )
inherited

Book a TH1 histogram.

Definition at line 43 of file InDetPlotBase.cxx.

43 {
44 if (hd.isValid()) {
45 pHisto = Book1D(hd.name, hd.allTitles, hd.nBinsX, hd.xAxis.first, hd.xAxis.second, false);
46 }
47 }
TH1D * Book1D(const std::string &name, const std::string &labels, int nBins, float start, float end, bool prependDir=true)
Book a TH1D histogram.
Definition PlotBase.cxx:94

◆ book() [4/6]

void InDetPlotBase::book ( TH2 *& pHisto,
const SingleHistogramDefinition & hd )
inherited

Book a 2D histogram (TH2)

Definition at line 63 of file InDetPlotBase.cxx.

63 {
64 if (hd.isValid()) {
65 pHisto = Book2D(hd.name, hd.allTitles, hd.nBinsX, hd.xAxis.first, hd.xAxis.second, hd.nBinsY, hd.yAxis.first,
66 hd.yAxis.second, false);
67 }
68 }
TH2F * Book2D(const std::string &name, const std::string &labels, int nBinsX, float startX, float endX, int nBinsY, float startY, float endY, bool prependDir=true)
Book a TH2F histogram.
Definition PlotBase.cxx:123

◆ book() [5/6]

void InDetPlotBase::book ( TProfile *& pHisto,
const SingleHistogramDefinition & hd )
inherited

Book a TProfile histogram.

Definition at line 49 of file InDetPlotBase.cxx.

49 {
50 if (hd.isValid()) {
51 pHisto = BookTProfile(hd.name, hd.allTitles, hd.nBinsX, hd.xAxis.first, hd.xAxis.second, hd.yAxis.first,
52 hd.yAxis.second, false);
53 }
54 }
TProfile * BookTProfile(const std::string &name, const std::string &labels, int nBinsX, float startX, float endX, float startY=-1, float endY=-1, bool prependDir=true, bool useRMS=false)
Book a TProfile histogram.
Definition PlotBase.cxx:186

◆ book() [6/6]

void InDetPlotBase::book ( TProfile2D *& pHisto,
const SingleHistogramDefinition & hd )
inherited

Book a TProfile2D histogram.

Definition at line 56 of file InDetPlotBase.cxx.

56 {
57 if (hd.isValid()) {
58 pHisto = BookTProfile2D(hd.name, hd.allTitles, hd.nBinsX, hd.xAxis.first, hd.xAxis.second, hd.nBinsY, hd.yAxis.first,
59 hd.yAxis.second, false);
60 }
61 }
TProfile2D * BookTProfile2D(const std::string &name, const std::string &labels, const int nBinsX, const double xlo, const double xhi, const int nBinsY, const double ylo, const double yhi, bool prependDir=true, bool useRMS=false)
Book a TProfile 2D histogram with variable binning in x-axis and limits in y-values.
Definition PlotBase.cxx:231

◆ Book1D() [1/2]

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

Book a TH1D histogram.

Definition at line 94 of file PlotBase.cxx.

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

◆ Book1D() [2/2]

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

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

Definition at line 108 of file PlotBase.cxx.

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

◆ Book2D() [1/3]

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

Book a TH2F histogram with variable x axis binning.

Definition at line 144 of file PlotBase.cxx.

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

◆ Book2D() [2/3]

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

Book a TH2F histogram.

Definition at line 123 of file PlotBase.cxx.

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

◆ Book2D() [3/3]

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

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

Definition at line 138 of file PlotBase.cxx.

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

◆ Book3D() [1/2]

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

Book a TH3F histogram.

Definition at line 157 of file PlotBase.cxx.

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

◆ Book3D() [2/2]

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

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

Definition at line 171 of file PlotBase.cxx.

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

◆ BookTEfficiency() [1/2]

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

Book a (1-D) TEfficiency histogram.

Definition at line 257 of file PlotBase.cxx.

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

◆ BookTEfficiency() [2/2]

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

Book a (2-D) TEfficiency histogram.

Definition at line 270 of file PlotBase.cxx.

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

◆ BookTProfile() [1/2]

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

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

Definition at line 204 of file PlotBase.cxx.

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

◆ BookTProfile() [2/2]

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

Book a TProfile histogram.

Definition at line 186 of file PlotBase.cxx.

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

◆ BookTProfile2D() [1/2]

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

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

Definition at line 231 of file PlotBase.cxx.

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

◆ BookTProfile2D() [2/2]

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

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

Definition at line 245 of file PlotBase.cxx.

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

◆ BookTProfileRangeY()

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

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

Definition at line 217 of file PlotBase.cxx.

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

◆ BookTree()

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

Book a TTree.

Definition at line 281 of file PlotBase.cxx.

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

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

◆ fill() [1/2]

void InDetPerfPlot_Resolution::fill ( const xAOD::TrackParticle & trkprt,
const xAOD::TruthParticle & truthprt,
float weight )

Definition at line 297 of file InDetPerfPlot_Resolution.cxx.

297 {
298
299 int isPrimTrk = 0;
300 int isSecdTrk = 0;
301
302 if (HepMC::is_simulation_particle(&truthprt)) {
303 isSecdTrk = 1;
304 } else {
305 if (HepMC::uniqueID(truthprt) > 0) isPrimTrk = 1;
306 }
307
308 // Move on to the next track incase the wrong track category
309 if (!isPrimTrk && !isSecdTrk) {
310 return;
311 }
312 if (!isPrimTrk && m_primTrk) {
313 return;
314 }
315 if (!isSecdTrk && m_secdTrk) {
316 return;
317 }
318
319 // Get track paramters for truth and reco tracks for easy access
320 // store all in track parameter maps trkP/truetrkP
321 getTrackParameters(trkprt);
322 getTrackParameters(truthprt);
324 getPlots(weight);
325
326}
void getTrackParameters(const xAOD::TruthParticle &truthprt)
void getPlots(float weight=1.0, bool useTruthKin=true)
int uniqueID(const T &p)
bool is_simulation_particle(const T &p)
Method to establish if a particle (or barcode) was created during the simulation (TODO update to be s...

◆ fill() [2/2]

void InDetPerfPlot_Resolution::fill ( const xAOD::TrackParticle & trkprt,
float weight )

Definition at line 330 of file InDetPerfPlot_Resolution.cxx.

330 {
331 for (int iParams = 0; iParams < NPARAMS; iParams++) m_truetrkP[iParams] = 0.;
332 getTrackParameters(trkprt);
334 getPlots(weight, false);
335}

◆ fillHisto() [1/9]

void InDetPlotBase::fillHisto ( TEfficiency * eff2d,
const float xvalue,
const float yvalue,
const bool accepted,
const float weight )
staticinherited

Definition at line 142 of file InDetPlotBase.cxx.

142 {
143 if (eff2d and validArguments(xvalue, yvalue)) {
144 if(weight==1.) eff2d->Fill(accepted, xvalue, yvalue);
145 else eff2d->FillWeighted(accepted, weight, xvalue, yvalue);
146 }
147}

◆ fillHisto() [2/9]

void InDetPlotBase::fillHisto ( TEfficiency * pTeff,
const float value,
const bool accepted,
float weight )
staticinherited

Definition at line 134 of file InDetPlotBase.cxx.

134 {
135 if (pTeff and validArguments(value)) {
136 if(weight==1.) pTeff->Fill(accepted, value); // To get proper error estimate when possible
137 else pTeff->FillWeighted(accepted, weight, value);
138 }
139}

◆ fillHisto() [3/9]

void InDetPlotBase::fillHisto ( TH1 * pTh1,
const float value )
staticinherited

Definition at line 97 of file InDetPlotBase.cxx.

97 {
98 if (pTh1 and validArguments(value)) {
99 pTh1->Fill(value);
100 }
101}

◆ fillHisto() [4/9]

void InDetPlotBase::fillHisto ( TH1 * pTh1,
const float value,
const float weight )
staticinherited

Definition at line 104 of file InDetPlotBase.cxx.

104 {
105 if (pTh1 and validArguments(value)) {
106 pTh1->Fill(value, weight);
107 }
108}

◆ fillHisto() [5/9]

void InDetPlotBase::fillHisto ( TH2 * pTh2,
const float xval,
const float yval )
staticinherited

Definition at line 112 of file InDetPlotBase.cxx.

112 {
113 if (pTh2 and validArguments(xval, yval)) {
114 pTh2->Fill(xval, yval);
115 }
116}

◆ fillHisto() [6/9]

void InDetPlotBase::fillHisto ( TH2 * pTh2,
const float xval,
const float yval,
const float weight )
staticinherited

Definition at line 120 of file InDetPlotBase.cxx.

120 {
121 if (pTh2 and validArguments(xval, yval)) {
122 pTh2->Fill(xval, yval, weight);
123 }
124}

◆ fillHisto() [7/9]

void InDetPlotBase::fillHisto ( TH3 * pTh3,
const float xval,
const float yval,
const float zval )
staticinherited

Definition at line 127 of file InDetPlotBase.cxx.

127 {
128 if (pTh3 and validArguments(xval, yval, zval)) {
129 pTh3->Fill(xval, yval, zval);
130 }
131}

◆ fillHisto() [8/9]

void InDetPlotBase::fillHisto ( TProfile * pTprofile,
const float bin,
const float weight,
const float weight2 = 1.0 )
staticinherited

Definition at line 82 of file InDetPlotBase.cxx.

82 {
83 if (pTprofile and validArguments(bin, weight)) {
84 pTprofile->Fill(bin, weight,weight2);
85 }
86}

◆ fillHisto() [9/9]

void InDetPlotBase::fillHisto ( TProfile2D * pTprofile,
const float xval,
const float yval,
const float weight,
const float weight2 = 1.0 )
staticinherited

Definition at line 89 of file InDetPlotBase.cxx.

89 {
90 if (pTprofile and validArguments(xval,yval, weight) and validArguments(weight2)) {
91 pTprofile->Fill(xval,yval, weight,weight2);
92 }
93}

◆ finalize()

void PlotBase::finalize ( )
inherited

Definition at line 47 of file PlotBase.cxx.

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

◆ finalizePlots()

void InDetPerfPlot_Resolution::finalizePlots ( )
privatevirtual

Reimplemented from PlotBase.

Definition at line 522 of file InDetPerfPlot_Resolution.cxx.

522 {
523
524 bool saveProjections = (m_iDetailLevel > 200);
525 for (unsigned int iparam = 0; iparam < NPARAMS; iparam++) {
526 if(iparam == PT) continue;
527 if(m_d0Only && iparam != D0) continue;
528 if(!m_hasHGTDReco && iparam == TIME) continue;
529 //
530 //Only save vert detailed information if... high detail level
531 //Reduces output for ART / PhysVal
532 //
533 if(m_iDetailLevel >= 200){
534 m_resolutionHelper.makeResolutions(m_resHelpereta[iparam], m_reswidth_vs_eta[iparam], m_resmean_vs_eta[iparam],
535 (saveProjections ? m_resProjections_vs_eta[iparam] : nullptr), saveProjections, m_resolutionMethod);
536 m_resolutionHelper.makeResolutions(m_resHelperpt[iparam], m_reswidth_vs_pt[iparam], m_resmean_vs_pt[iparam],
537 (saveProjections ? m_resProjections_vs_pt[iparam] : nullptr), saveProjections, m_resolutionMethod);
538 m_resolutionHelper.makeResolutions(m_resHelperlowpt[iparam], m_reswidth_vs_lowpt[iparam], m_resmean_vs_lowpt[iparam],
539 (saveProjections ? m_resProjections_vs_lowpt[iparam] : nullptr), saveProjections, m_resolutionMethod);
540 m_resolutionHelper.makeResolutions(m_pullHelperpt[iparam], m_pullwidth_vs_pt[iparam], m_pullmean_vs_pt[iparam],
541 (saveProjections ? m_pullProjections_vs_pt[iparam] : nullptr), saveProjections, m_resolutionMethod);
542 m_resolutionHelper.makeResolutions(m_pullHelperlowpt[iparam], m_pullwidth_vs_lowpt[iparam], m_pullmean_vs_lowpt[iparam],
543 (saveProjections ? m_pullProjections_vs_lowpt[iparam] : nullptr), saveProjections, m_resolutionMethod);
544 m_resolutionHelper.makeResolutions(m_pullHelpereta[iparam], m_pullwidth_vs_eta[iparam], m_pullmean_vs_eta[iparam],
545 (saveProjections ? m_pullProjections_vs_eta[iparam] : nullptr), saveProjections, m_resolutionMethod);
552 } else {
554 m_resolutionHelper.makeResolutions(m_resHelperpt[iparam], m_reswidth_vs_pt[iparam], m_resmean_vs_pt[iparam], m_resolutionMethod);
559 }
560
561 }
562
563}
IDPVM::ResolutionHelper m_resolutionHelper
int m_iDetailLevel
Definition PlotBase.h:101

◆ getDirectory()

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

Definition at line 88 of file PlotBase.h.

88{return m_sDirectory;}

◆ getPlotParameters()

void InDetPerfPlot_Resolution::getPlotParameters ( )
private

Definition at line 382 of file InDetPerfPlot_Resolution.cxx.

382 {
383 for (unsigned int iparam = 0; iparam < NPARAMS; iparam++) {
384 m_resP[iparam] = m_trkP[iparam] - m_truetrkP[iparam];
385 if(iparam==PHI) m_resP[iparam] = xAOD::P4Helpers::deltaPhi(m_trkP[iparam], m_truetrkP[iparam]);
386 m_sigP[iparam] = m_trkErrP[iparam];
387 (m_sigP[iparam] != 0) ? m_pullP[iparam] = m_resP[iparam] / m_sigP[iparam] : m_pullP[iparam] = undefinedValue;
388 }
389 bool saneQoverPt = std::abs(m_truetrkP[QOVERPT]) > smallestAllowableQoverPt;
390 if (not saneQoverPt){
391 m_resP[QOVERPT] = undefinedValue;
392 } else {
393 m_resP[QOVERPT] = (m_trkP[QOVERPT] - m_truetrkP[QOVERPT]) * (1 / m_truetrkP[QOVERPT]); // relative q/pt resolution
394 }
395 bool saneQoverPtrec = std::abs(m_trkP[QOVERPT]) > smallestAllowableQoverPt;
396 if (not saneQoverPtrec){
397 m_sigP[QOVERPT] = undefinedValue;
398 } else {
399 m_sigP[QOVERPT] *= 1. / std::abs(m_trkP[QOVERPT]); // relative q/pt error
400 }
401
402 // Missing time information - fill with undefined values
403 if (m_truetrkP[TIME] < -9000. || m_trkP[TIME] < -9000.) {
404 m_resP[TIME] = undefinedValue;
405 m_pullP[TIME] = undefinedValue;
406 }
407 if (m_trkErrP[TIME] < -9000.) {
408 m_sigP[TIME] = undefinedValue;
409 m_pullP[TIME] = undefinedValue;
410 }
411}
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[

◆ getPlots()

void InDetPerfPlot_Resolution::getPlots ( float weight = 1.0,
bool useTruthKin = true )
private

Definition at line 340 of file InDetPerfPlot_Resolution.cxx.

340 {
341 float pt = useTruthKin ? m_truetrkP[PT] : m_trkP[PT];
342 float theta = useTruthKin ? m_truetrkP[THETA] : m_trkP[THETA];
343 const float tanHalfTheta = std::tan(theta * 0.5);
344 const bool tanThetaIsSane = std::abs(tanHalfTheta) > smallestAllowableTan;
345 float eta = undefinedValue;
346 if (tanThetaIsSane) eta = -std::log(tanHalfTheta);
347 for (unsigned int iparam = 0; iparam < NPARAMS; iparam++) {
348 if(iparam == PT) continue;
349 if(m_d0Only && iparam != D0) continue;
350 if(!m_hasHGTDReco && iparam == TIME) continue;
351 m_pull[iparam]->Fill(m_pullP[iparam], weight);
352 m_res[iparam]->Fill(m_resP[iparam], weight);
353 m_sigma[iparam]->Fill(m_sigP[iparam], weight);
354 m_sigma_vs_eta[iparam]->Fill(eta, m_sigP[iparam], weight);
355 m_sigma_vs_pt[iparam]->Fill(pt, m_sigP[iparam], weight);
356 m_sigma_vs_lowpt[iparam]->Fill(pt, m_sigP[iparam], weight);
357 m_resHelpereta[iparam]->Fill(eta, m_resP[iparam], weight);
358 m_resHelperpt[iparam]->Fill(pt, m_resP[iparam], weight);
359 m_resHelperlowpt[iparam]->Fill(pt, m_resP[iparam], weight);
360 m_pullHelperpt[iparam]->Fill(pt, m_pullP[iparam], weight);
361 m_pullHelperlowpt[iparam]->Fill(pt, m_pullP[iparam], weight);
362 m_pullHelpereta[iparam]->Fill(eta, m_pullP[iparam], weight);
363
364 if(m_iDetailLevel >= 200){
365 if (m_trkP[QOVERPT] >= 0.) {
366 m_resHelpereta_pos[iparam]->Fill(eta, m_resP[iparam], weight);
367 m_resHelperpt_pos[iparam]->Fill(pt, m_resP[iparam], weight);
368 m_resHelperlowpt_pos[iparam]->Fill(pt, m_resP[iparam], weight);
369 }
370 if (m_trkP[QOVERPT] < 0.) {
371 m_resHelpereta_neg[iparam]->Fill(eta, m_resP[iparam], weight);
372 m_resHelperpt_neg[iparam]->Fill(pt, m_resP[iparam], weight);
373 m_resHelperlowpt_neg[iparam]->Fill(pt, m_resP[iparam], weight);
374 }
375 }
376
377 }
378
379}
Scalar eta() const
pseudorapidity method
Scalar theta() const
theta method

◆ getTrackParameters() [1/2]

void InDetPerfPlot_Resolution::getTrackParameters ( const xAOD::TrackParticle & truthprt)
private

Definition at line 414 of file InDetPerfPlot_Resolution.cxx.

414 {
415
416 m_trkP[D0] = trkprt.d0();
417 m_trkP[Z0] = trkprt.z0();
418 m_trkP[QOVERP] = trkprt.qOverP() * Gaudi::Units::GeV;
419 const float sinTheta{std::sin(trkprt.theta())};
420 const float cosTheta{std::cos(trkprt.theta())};
421 const bool saneSineValue = (std::abs(sinTheta) > smallestAllowableSin);
422 const float inverseSinTheta = saneSineValue ? 1./sinTheta : undefinedValue;
423 m_trkP[QOVERPT] = saneSineValue ?
424 trkprt.qOverP()*inverseSinTheta * Gaudi::Units::GeV : undefinedValue;
425 m_trkP[THETA] = trkprt.theta();
426 m_trkP[PHI] = trkprt.phi0();
427 m_trkP[PT] = trkprt.pt() / Gaudi::Units::GeV;
428 m_trkP[Z0SIN] = trkprt.z0() * sinTheta;
429
430 // Track fit errors
431 m_trkErrP[D0] = trkprt.definingParametersCovMatrix()(0, 0) < 0 ? 0 : std::sqrt(trkprt.definingParametersCovMatrix()(0, 0));
432 m_trkErrP[Z0] = trkprt.definingParametersCovMatrix()(1, 1) < 0 ? 0 : std::sqrt(trkprt.definingParametersCovMatrix()(1, 1));
433 m_trkErrP[PHI] = trkprt.definingParametersCovMatrix()(2, 2) < 0 ? 0 : std::sqrt(trkprt.definingParametersCovMatrix()(2, 2));
434 m_trkErrP[THETA] = trkprt.definingParametersCovMatrix()(3, 3) < 0 ? 0 : std::sqrt(trkprt.definingParametersCovMatrix()(3, 3));
435 m_trkErrP[QOVERP] = trkprt.definingParametersCovMatrix()(4, 4) < 0 ? 0 : std::sqrt(trkprt.definingParametersCovMatrix()(4, 4)) * Gaudi::Units::GeV;
436 float qOverPT_err2 = trkprt.definingParametersCovMatrix()(4, 4) * std::pow(inverseSinTheta, 2)
437 + trkprt.definingParametersCovMatrix()(3, 3) * std::pow(trkprt.qOverP() * cosTheta * std::pow(inverseSinTheta, 2), 2)
438 - 2 * trkprt.qOverP() * cosTheta * trkprt.definingParametersCovMatrix()(3, 4) * std::pow(inverseSinTheta, 3);
439 m_trkErrP[QOVERPT] = qOverPT_err2 > 0 ? std::sqrt(qOverPT_err2) * Gaudi::Units::GeV : 0.;
440 float z0sin2 = std::pow(m_trkErrP[Z0] * std::sin(m_trkP[THETA]), 2) + std::pow(m_trkP[Z0] * m_trkErrP[THETA] * std::cos(m_trkP[THETA]), 2) + 2 * m_trkP[Z0] * std::sin(m_trkP[THETA]) * std::cos(m_trkP[THETA]) * trkprt.definingParametersCovMatrix()(1, 3); // Fixing incorrect formula for z0sin error
441 m_trkErrP[Z0SIN] = z0sin2 < 0 ? 0 : std::sqrt(z0sin2);
442
443
444 // Get error on pT, taken from xAOD::TrackingHelpers.pTErr() but this function only works on a pointer input...
445 if (trkprt.definingParametersCovMatrixVec().size() < 15) {
446 throw std::runtime_error(
447 "TrackParticle without covariance matrix for defining parameters or the covariance matrix is wrong dimensionality.");
448 }
449 if (std::abs(trkprt.qOverP()) < 0) {
450 m_trkErrP[PT] = 0.0;
451 throw std::runtime_error("q/p is zero");
452 } else {
453 double pt = trkprt.pt();
454 double diff_qp = -pt / std::abs(trkprt.qOverP());
455 double diff_theta = trkprt.theta() == 0 ? 0 : pt / std::tan(trkprt.theta());
456 const std::vector<float>& cov = trkprt.definingParametersCovMatrixVec();
457 double pt_err2 = diff_qp * (diff_qp * cov[14] + diff_theta * cov[13]) + diff_theta * diff_theta * cov[9];
458 m_trkErrP[PT] = pt_err2 < 0 ? 0 : std::sqrt(pt_err2) / Gaudi::Units::GeV;
459 }
460
461 // Initialize track time and uncertainty to undefined
462 m_trkP[TIME] = undefinedValue;
463 m_trkErrP[TIME] = undefinedValue;
464 if (m_hasHGTDReco) {
465 static const SG::Accessor<uint8_t> accValidTime("hasValidTime");
466 static const SG::Accessor<float> accTime("time");
467 static const SG::Accessor<float> accTimeRes("timeResolution");
468 if(accValidTime.isAvailable(trkprt) && accTime.isAvailable(trkprt) && accTimeRes.isAvailable(trkprt)) {
469 if (trkprt.hasValidTime()) {
470 m_trkP[TIME] = trkprt.time();
471 m_trkErrP[TIME] = trkprt.timeResolution();
472 }
473 }
474 }
475
476}
xAOD::ParametersCovMatrix_t definingParametersCovMatrix(std::span< const float > covMatrixDiag, std::span< const float > covMatrixOffDiag, bool &valid)

◆ getTrackParameters() [2/2]

void InDetPerfPlot_Resolution::getTrackParameters ( const xAOD::TruthParticle & truthprt)
private

Definition at line 480 of file InDetPerfPlot_Resolution.cxx.

480 {
481 // "d0", "z0", "phi", "theta" , "qOverP"
482 // Perigee for truth particles are in aux container
483 for (int iParams = 0; iParams < NPARAMS; iParams++) {
484 m_truetrkP[iParams] = undefinedValue;
485 SG::ConstAccessor<float> acc(m_paramProp[iParams]);
486 if (acc.isAvailable(truthprt)) {
487 m_truetrkP[iParams] = acc(truthprt);
488 }
489 }
490 //rescale Pt
491 m_truetrkP[PT] = truthprt.pt() / Gaudi::Units::GeV;
492 //special cases
493 //need both theta and qOverP for qOverPT
494 //we didnt check qOverP yet, since the closest named variable (strangely; see header) is ptqopt
495 static const SG::ConstAccessor<float> qOverPAcc("qOverP");
496 const float qOverP = qOverPAcc.isAvailable(truthprt) ? qOverPAcc(truthprt) : undefinedValue;
497 if ((qOverP != undefinedValue) and (m_truetrkP[THETA] != undefinedValue)){
498 const float sinTheta =std::sin(m_truetrkP[THETA]);
499 if (std::abs(sinTheta) > smallestAllowableSin){
500 m_truetrkP[QOVERPT] = qOverP / sinTheta * Gaudi::Units::GeV;
501 } else {
502 m_truetrkP[QOVERPT] = undefinedValue;
503 }
504 }
505 m_truetrkP[QOVERP] = qOverP * Gaudi::Units::GeV;
506 //need both z0 and theta for z0sinTheta
507 if ((m_truetrkP[Z0] != undefinedValue) and (m_truetrkP[THETA] != undefinedValue)){
508 const float sinTheta =std::sin(m_truetrkP[THETA]);
509 m_truetrkP[Z0SIN] = m_truetrkP[Z0] * sinTheta;
510 } else {
511 m_truetrkP[Z0SIN] = undefinedValue;
512 }
513
514 // Even if we don't have a track time, we always have a truth particle time
515 static const SG::Accessor<float> accTruthTime("time");
516 m_truetrkP[TIME] = accTruthTime.isAvailable(truthprt) ? accTruthTime(truthprt) : undefinedValue;
517
518}
virtual double pt() const override final
The transverse momentum ( ) of the particle.
@ qOverP
perigee

◆ initialize()

void PlotBase::initialize ( )
inherited

Definition at line 39 of file PlotBase.cxx.

39 {
40 for (auto *subNode: m_vSubNodes) {
41 subNode->initialize();
42 }
44}
virtual void initializePlots()
Definition PlotBase.h:91

◆ initializePlots()

void InDetPerfPlot_Resolution::initializePlots ( )
privatevirtual

Reimplemented from PlotBase.

Definition at line 130 of file InDetPerfPlot_Resolution.cxx.

130 {
131
132 for (unsigned int iparam = 0; iparam < NPARAMS; iparam++) {
133 //
134 //1D distributions
135 //
136
137 if(iparam == PT) continue;
138 if(m_d0Only && iparam != D0) continue;
139 if(!m_hasHGTDReco && iparam == TIME) continue;
140
141 book(m_pull[iparam], "pull_" + m_paramProp[iparam]);
142 book(m_res[iparam], "res_" + m_paramProp[iparam]);
143
144 book(m_sigma[iparam], "sigma_" + m_paramProp[iparam]); //New One
145 //
146 //2D Distributions to evaluate resolutions vs eta and pT
147 //
148 book(m_resHelpereta[iparam], "resHelper_eta_" + m_paramProp[iparam]);
149 book(m_resHelperpt[iparam], "resHelper_pt_" + m_paramProp[iparam]);
150 book(m_resHelperlowpt[iparam], "resHelper_lowpt_" + m_paramProp[iparam]);
151 book(m_pullHelpereta[iparam], "pullHelper_eta_" + m_paramProp[iparam]);
152 book(m_pullHelperpt[iparam], "pullHelper_pt_" + m_paramProp[iparam]);
153 book(m_pullHelperlowpt[iparam], "pullHelper_lowpt_" + m_paramProp[iparam]);
154 m_resHelperpt[iparam]->GetXaxis()->Set(m_nPtBins,m_PtBins);
155 m_pullHelperpt[iparam]->GetXaxis()->Set(m_nPtBins,m_PtBins);
156 m_resHelperlowpt[iparam]->GetXaxis()->Set(m_nLowPtBins,m_LowPtBins);
157 m_pullHelperlowpt[iparam]->GetXaxis()->Set(m_nLowPtBins,m_LowPtBins);
158 //
159 //1D Histograms for the final resolution and means
160 //
161 book(m_reswidth_vs_eta[iparam], "resolution_vs_eta_" + m_paramProp[iparam]);
162 book(m_resmean_vs_eta[iparam], "resmean_vs_eta_" + m_paramProp[iparam]);
163 book(m_reswidth_vs_pt[iparam], "resolution_vs_pt_" + m_paramProp[iparam]);
164 book(m_resmean_vs_pt[iparam], "resmean_vs_pt_" + m_paramProp[iparam]);
165 book(m_reswidth_vs_lowpt[iparam], "resolution_vs_lowpt_" + m_paramProp[iparam]);
166 book(m_resmean_vs_lowpt[iparam], "resmean_vs_lowpt_" + m_paramProp[iparam]);
167
168 book(m_pullwidth_vs_eta[iparam], "pullwidth_vs_eta_" + m_paramProp[iparam]);
169 book(m_pullmean_vs_eta[iparam], "pullmean_vs_eta_" + m_paramProp[iparam]);
170 book(m_pullwidth_vs_pt[iparam], "pullwidth_vs_pt_" + m_paramProp[iparam]);
171 book(m_pullmean_vs_pt[iparam], "pullmean_vs_pt_" + m_paramProp[iparam]);
172 book(m_pullwidth_vs_lowpt[iparam], "pullwidth_vs_lowpt_" + m_paramProp[iparam]);
173 book(m_pullmean_vs_lowpt[iparam], "pullmean_vs_lowpt_" + m_paramProp[iparam]);
174
175 m_reswidth_vs_pt[iparam]->GetXaxis()->Set(m_nPtBins, m_PtBins);
176 m_resmean_vs_pt[iparam]->GetXaxis()->Set(m_nPtBins, m_PtBins);
177 m_pullwidth_vs_pt[iparam]->GetXaxis()->Set(m_nPtBins, m_PtBins);
178 m_pullmean_vs_pt[iparam]->GetXaxis()->Set(m_nPtBins, m_PtBins);
179 m_reswidth_vs_lowpt[iparam]->GetXaxis()->Set(m_nLowPtBins, m_LowPtBins);
180 m_resmean_vs_lowpt[iparam]->GetXaxis()->Set(m_nLowPtBins, m_LowPtBins);
181 m_pullwidth_vs_lowpt[iparam]->GetXaxis()->Set(m_nLowPtBins, m_LowPtBins);
182 m_pullmean_vs_lowpt[iparam]->GetXaxis()->Set(m_nLowPtBins, m_LowPtBins);
183
184 //
185 //TProfiles of the sqrt(covii)
186 //
187 book(m_sigma_vs_eta[iparam], "sigma_vs_eta_" + m_paramProp[iparam]);
188 book(m_sigma_vs_pt[iparam], "sigma_vs_pt_" + m_paramProp[iparam]);
189 book(m_sigma_vs_lowpt[iparam], "sigma_vs_lowpt_" + m_paramProp[iparam]);
190
191 //NORA
192 //
193 //Projections only done if high level of detail specified
194 //To keep functionalies to produce projections for varied number of pt / eta bins
195 //keep histogram to the old Book1D methods instead of xml definitions
196 //
197 //
198 //Detailed histograms
199 //
200 if(m_iDetailLevel >= 200){
201 book(m_resHelpereta_pos[iparam], "resHelper_eta_" + m_paramProp[iparam], "resHelper_eta_" + m_paramProp[iparam]+"_posQ");
202 book(m_resHelpereta_neg[iparam], "resHelper_eta_" + m_paramProp[iparam], "resHelper_eta_" + m_paramProp[iparam]+"_negQ");
203 book(m_resHelperpt_pos[iparam], "resHelper_pt_" + m_paramProp[iparam], "resHelper_pt_" + m_paramProp[iparam]+"_posQ");
204 book(m_resHelperpt_neg[iparam], "resHelper_pt_" + m_paramProp[iparam], "resHelper_pt_" + m_paramProp[iparam]+"_negQ");
205 book(m_resHelperlowpt_pos[iparam], "resHelper_lowpt_" + m_paramProp[iparam], "resHelper_lowpt_" + m_paramProp[iparam]+"_posQ");
206 book(m_resHelperlowpt_neg[iparam], "resHelper_lowpt_" + m_paramProp[iparam], "resHelper_lowpt_" + m_paramProp[iparam]+"_negQ");
207
208 //Add log binning
209 m_resHelperpt_pos[iparam]->GetXaxis()->Set(m_nPtBins,m_PtBins);
210 m_resHelperpt_neg[iparam]->GetXaxis()->Set(m_nPtBins,m_PtBins);
211 m_resHelperlowpt_pos[iparam]->GetXaxis()->Set(m_nLowPtBins,m_LowPtBins);
212 m_resHelperlowpt_neg[iparam]->GetXaxis()->Set(m_nLowPtBins,m_LowPtBins);
213
214 //Resolution, Resolution Mean, Pull, Pull Mean
215 book(m_reswidth_vs_eta_pos[iparam], "resolution_vs_eta_" + m_paramProp[iparam], "resolution_vs_eta_" + m_paramProp[iparam] + "_posQ");
216 book(m_reswidth_vs_eta_neg[iparam], "resolution_vs_eta_" + m_paramProp[iparam], "resolution_vs_eta_" + m_paramProp[iparam] + "_negQ");
217 book(m_resmean_vs_eta_pos[iparam], "resmean_vs_eta_" + m_paramProp[iparam], "resmean_vs_eta_" + m_paramProp[iparam] + "_posQ");
218 book(m_resmean_vs_eta_neg[iparam], "resmean_vs_eta_" + m_paramProp[iparam], "resmean_vs_eta_" + m_paramProp[iparam] + "_negQ");
219
220 book(m_reswidth_vs_pt_pos[iparam], "resolution_vs_pt_" + m_paramProp[iparam], "resolution_vs_pt_" + m_paramProp[iparam] + "_posQ");
221 book(m_reswidth_vs_pt_neg[iparam], "resolution_vs_pt_" + m_paramProp[iparam], "resolution_vs_pt_" + m_paramProp[iparam] + "_negQ");
222 book(m_resmean_vs_pt_pos[iparam], "resmean_vs_pt_" + m_paramProp[iparam], "resmean_vs_pt_" + m_paramProp[iparam] + "_posQ");
223 book(m_resmean_vs_pt_neg[iparam], "resmean_vs_pt_" + m_paramProp[iparam], "resmean_vs_pt_" + m_paramProp[iparam] + "_negQ");
224
225 book(m_reswidth_vs_lowpt_pos[iparam], "resolution_vs_lowpt_" + m_paramProp[iparam], "resolution_vs_lowpt_" + m_paramProp[iparam] + "_posQ");
226 book(m_reswidth_vs_lowpt_neg[iparam], "resolution_vs_lowpt_" + m_paramProp[iparam], "resolution_vs_lowpt_" + m_paramProp[iparam] + "_negQ");
227 book(m_resmean_vs_lowpt_pos[iparam], "resmean_vs_lowpt_" + m_paramProp[iparam], "resmean_vs_lowpt_" + m_paramProp[iparam] + "_posQ");
228 book(m_resmean_vs_lowpt_neg[iparam], "resmean_vs_lowpt_" + m_paramProp[iparam], "resmean_vs_lowpt_" + m_paramProp[iparam] + "_negQ");
229
230 m_reswidth_vs_pt_pos[iparam]->GetXaxis()->Set(m_nPtBins, m_PtBins);
231 m_resmean_vs_pt_pos[iparam]->GetXaxis()->Set(m_nPtBins, m_PtBins);
232 m_reswidth_vs_pt_neg[iparam]->GetXaxis()->Set(m_nPtBins, m_PtBins);
233 m_resmean_vs_pt_neg[iparam]->GetXaxis()->Set(m_nPtBins, m_PtBins);
234 m_reswidth_vs_lowpt_pos[iparam]->GetXaxis()->Set(m_nLowPtBins, m_LowPtBins);
235 m_resmean_vs_lowpt_pos[iparam]->GetXaxis()->Set(m_nLowPtBins, m_LowPtBins);
236 m_reswidth_vs_lowpt_neg[iparam]->GetXaxis()->Set(m_nLowPtBins, m_LowPtBins);
237 m_resmean_vs_lowpt_neg[iparam]->GetXaxis()->Set(m_nLowPtBins, m_LowPtBins);
238
239 std::string tmpName, tmpTitle;
240
241 int nPtBins = m_pullHelperpt[iparam]->GetNbinsX();
242 int nLowPtBins = m_pullHelperlowpt[iparam]->GetNbinsX();
243 int nEtaBins = m_pullHelpereta[iparam]->GetNbinsX();
244
245 std::shared_ptr<TH1D> refHistEta { m_pullHelpereta[iparam]->ProjectionY("refEta")};
246 std::shared_ptr<TH1D> refHistPt { m_pullHelperpt[iparam]->ProjectionY("refPt")};
247 std::shared_ptr<TH1D> refHistLowPt { m_pullHelperlowpt[iparam]->ProjectionY("refLowPt")};
248
249 //Projections - VERY expensive, hence only at higher detail levels above 200
250 if(m_iDetailLevel > 200){
251 for (int ibins = 0; ibins < nPtBins; ibins++) {
252 tmpName = "pullProjection_pt_" + m_paramProp[iparam] +"_bin_"+ std::to_string(ibins + 1);
253 tmpTitle = tmpName + "; (" + m_paramProp[iparam] + "^{reco}-" + m_paramProp[iparam] +
254 "^{true})/#sigma_{" + m_paramProp[iparam] + "}";
255 m_pullProjections_vs_pt[iparam][ibins] = Book1D(tmpName, refHistPt.get(), tmpTitle , false);
256
257
258 tmpName = "resProjection_pt_" + m_paramProp[iparam] +"_bin_"+ std::to_string(ibins + 1);
259 tmpTitle = tmpName + "; " + m_paramProp[iparam] + "^{reco}-" + m_paramProp[iparam] + "^{true} ";
260 m_resProjections_vs_pt[iparam][ibins] = Book1D(tmpName, refHistPt.get(), tmpTitle , false);
261
262 }
263 for (int ibins = 0; ibins < nLowPtBins; ibins++) {
264 tmpName = "pullProjection_lowpt_" + m_paramProp[iparam] +"_bin_"+ std::to_string(ibins + 1);
265 tmpTitle = tmpName + "; (" + m_paramProp[iparam] + "^{reco}-" + m_paramProp[iparam] +
266 "^{true})/#sigma_{" + m_paramProp[iparam] + "}";
267 m_pullProjections_vs_lowpt[iparam][ibins] = Book1D(tmpName, refHistLowPt.get(), tmpTitle , false);
268
269
270 tmpName = "resProjection_lowpt_" + m_paramProp[iparam] +"_bin_"+ std::to_string(ibins + 1);
271 tmpTitle = tmpName + "; " + m_paramProp[iparam] + "^{reco}-" + m_paramProp[iparam] + "^{true} ";
272 m_resProjections_vs_lowpt[iparam][ibins] = Book1D(tmpName, refHistLowPt.get(), tmpTitle , false);
273
274 }
275 for (int ibins = 0; ibins < nEtaBins; ibins++) {
276 tmpName = "pullProjection_eta_" + m_paramProp[iparam] +"_bin_"+ std::to_string(ibins + 1);
277 tmpTitle = tmpName + "; (" + m_paramProp[iparam] + "^{reco}-" + m_paramProp[iparam] +
278 "^{true})/#sigma_{" + m_paramProp[iparam] + "}";
279 m_pullProjections_vs_eta[iparam][ibins] = Book1D(tmpName, refHistEta.get(), tmpTitle , false);
280
281
282 tmpName = "resProjection_eta_" + m_paramProp[iparam] +"_bin_"+ std::to_string(ibins + 1);
283 tmpTitle = tmpName + "; " + m_paramProp[iparam] + "^{reco}-" + m_paramProp[iparam] + "^{true} ";
284 m_resProjections_vs_eta[iparam][ibins] = Book1D(tmpName, refHistEta.get(), tmpTitle , false);
285 }
286 }
287 }
288 //
289 //End of saving resolution and pull residual binnings
290 //
291
292 }
293
294}
void book(Htype *&pHisto, const std::string &histoIdentifier, const std::string &nameOverride="", const std::string &folder="default")
Helper method to book histograms using an identifier string.
constexpr unsigned nEtaBins

◆ initMessaging()

void AthMessaging::initMessaging ( ) const
privateinherited

Initialize our message level and MessageSvc.

This method should only be called once.

Definition at line 39 of file AthMessaging.cxx.

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

◆ mBook()

template<class T>
void InDetPlotBase::mBook ( T & pHisto,
const std::string & histoIdentifier )
inlineprotectedinherited

book, for use by macro

Definition at line 83 of file InDetPlotBase.h.

83 {
84 return book(pHisto, histoIdentifier.substr(2));
85 }

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

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

◆ msg() [2/2]

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

The standard message stream.

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

Definition at line 182 of file AthMessaging.h.

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

◆ msgLvl()

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

Test the output level.

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

Definition at line 151 of file AthMessaging.h.

152{
153 // If user did not set explicit message level we have to initialize
154 // the messaging and retrieve the default via the MessageSvc.
155 if (m_lvl==MSG::NIL && !m_initialized.test_and_set()) initMessaging();
156
157 if (m_lvl <= lvl) {
158 msg() << lvl;
159 return true;
160 } else {
161 return false;
162 }
163}

◆ RegisterSubPlot()

void PlotBase::RegisterSubPlot ( PlotBase * pPlotBase)
inlineinherited

Definition at line 41 of file PlotBase.h.

41{m_vSubNodes.push_back(pPlotBase);}

◆ 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()

SingleHistogramDefinition InDetPlotBase::retrieveDefinition ( const std::string & histoIdentifier,
const std::string & folder = "default",
const std::string & nameOverride = "" )
inherited

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

Definition at line 151 of file InDetPlotBase.cxx.

151 {
152
153 ATH_CHECK( m_histoDefSvc.retrieve(), {} );
154
155 bool folderDefault = (folder.empty() or folder == "default");
156 SingleHistogramDefinition s = m_histoDefSvc->definition(histoIdentifier, folder);
157 // "default" and empty string should be equivalent
158 if (folderDefault and s.empty()) {
159 const std::string otherDefault = (folder.empty()) ? ("default") : "";
160 s = m_histoDefSvc->definition(histoIdentifier, otherDefault);
161 }
162 if (s.empty()) {
163 ATH_MSG_WARNING("Histogram definition is empty for identifier " << histoIdentifier);
164 }
165 if (!nameOverride.empty()){
166 s.name = nameOverride;
167 }
168 return s;
169}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
ServiceHandle< IHistogramDefinitionSvc > m_histoDefSvc

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

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_allTrk

bool InDetPerfPlot_Resolution::m_allTrk
private

Definition at line 89 of file InDetPerfPlot_Resolution.h.

◆ m_d0Only

bool InDetPerfPlot_Resolution::m_d0Only = false
private

Definition at line 84 of file InDetPerfPlot_Resolution.h.

◆ m_hasHGTDReco

bool InDetPerfPlot_Resolution::m_hasHGTDReco = false
private

Definition at line 85 of file InDetPerfPlot_Resolution.h.

◆ m_histoDefSvc

ServiceHandle<IHistogramDefinitionSvc> InDetPlotBase::m_histoDefSvc
privateinherited

Definition at line 88 of file InDetPlotBase.h.

◆ m_iDetailLevel

int PlotBase::m_iDetailLevel
protectedinherited

Definition at line 101 of file PlotBase.h.

◆ m_imsg

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

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

135{ nullptr };

◆ m_LowPtBins

float InDetPerfPlot_Resolution::m_LowPtBins[m_nLowPtBins+1] {}
private

Definition at line 77 of file InDetPerfPlot_Resolution.h.

77{};

◆ m_lowPtMax

const double InDetPerfPlot_Resolution::m_lowPtMax = 1.0
private

Definition at line 75 of file InDetPerfPlot_Resolution.h.

◆ m_lowPtMin

const double InDetPerfPlot_Resolution::m_lowPtMin = 0.01
private

Definition at line 74 of file InDetPerfPlot_Resolution.h.

◆ m_lvl

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

Current logging level.

Definition at line 138 of file AthMessaging.h.

138{ MSG::NIL };

◆ m_msg_tls

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

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

Definition at line 132 of file AthMessaging.h.

◆ m_nEtaBins

const int InDetPerfPlot_Resolution::m_nEtaBins = 64
staticprivate

Definition at line 61 of file InDetPerfPlot_Resolution.h.

◆ m_nLowPtBins

const int InDetPerfPlot_Resolution::m_nLowPtBins = 99
staticprivate

Definition at line 73 of file InDetPerfPlot_Resolution.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_nPtBins

const int InDetPerfPlot_Resolution::m_nPtBins = 49
staticprivate

Definition at line 66 of file InDetPerfPlot_Resolution.h.

◆ m_nResHist

const int InDetPerfPlot_Resolution::m_nResHist = 4
staticprivate

Definition at line 59 of file InDetPerfPlot_Resolution.h.

◆ m_paramProp

std::string InDetPerfPlot_Resolution::m_paramProp[NPARAMS] = { "d0", "z0", "qoverp", "ptqopt", "theta", "phi", "pt", "z0sin", "time" }
private

Definition at line 79 of file InDetPerfPlot_Resolution.h.

79{ "d0", "z0", "qoverp", "ptqopt", "theta", "phi", "pt", "z0sin", "time" };

◆ m_primTrk

bool InDetPerfPlot_Resolution::m_primTrk
private

Definition at line 87 of file InDetPerfPlot_Resolution.h.

◆ m_PtBins

float InDetPerfPlot_Resolution::m_PtBins[m_nPtBins+1] {}
private

Definition at line 70 of file InDetPerfPlot_Resolution.h.

70{};

◆ m_ptMax

const double InDetPerfPlot_Resolution::m_ptMax = 1000.0
private

Definition at line 68 of file InDetPerfPlot_Resolution.h.

◆ m_ptMin

const double InDetPerfPlot_Resolution::m_ptMin = 0.745
private

Definition at line 67 of file InDetPerfPlot_Resolution.h.

◆ m_pull

TH1* InDetPerfPlot_Resolution::m_pull[NPARAMS]
private

Definition at line 108 of file InDetPerfPlot_Resolution.h.

◆ m_pullHelpereta

TH2* InDetPerfPlot_Resolution::m_pullHelpereta[NPARAMS]
private

Definition at line 115 of file InDetPerfPlot_Resolution.h.

◆ m_pullHelperlowpt

TH2* InDetPerfPlot_Resolution::m_pullHelperlowpt[NPARAMS]
private

Definition at line 117 of file InDetPerfPlot_Resolution.h.

◆ m_pullHelperpt

TH2* InDetPerfPlot_Resolution::m_pullHelperpt[NPARAMS]
private

Definition at line 116 of file InDetPerfPlot_Resolution.h.

◆ m_pullmean_vs_eta

TH1* InDetPerfPlot_Resolution::m_pullmean_vs_eta[NPARAMS]
private

Definition at line 127 of file InDetPerfPlot_Resolution.h.

◆ m_pullmean_vs_lowpt

TH1* InDetPerfPlot_Resolution::m_pullmean_vs_lowpt[NPARAMS]
private

Definition at line 131 of file InDetPerfPlot_Resolution.h.

◆ m_pullmean_vs_pt

TH1* InDetPerfPlot_Resolution::m_pullmean_vs_pt[NPARAMS]
private

Definition at line 129 of file InDetPerfPlot_Resolution.h.

◆ m_pullP

float InDetPerfPlot_Resolution::m_pullP[NPARAMS]
private

Definition at line 105 of file InDetPerfPlot_Resolution.h.

◆ m_pullProjections_vs_eta

TH1* InDetPerfPlot_Resolution::m_pullProjections_vs_eta[NPARAMS][m_nEtaBins]
private

Definition at line 156 of file InDetPerfPlot_Resolution.h.

◆ m_pullProjections_vs_lowpt

TH1* InDetPerfPlot_Resolution::m_pullProjections_vs_lowpt[NPARAMS][m_nLowPtBins]
private

Definition at line 155 of file InDetPerfPlot_Resolution.h.

◆ m_pullProjections_vs_pt

TH1* InDetPerfPlot_Resolution::m_pullProjections_vs_pt[NPARAMS][m_nPtBins]
private

Definition at line 154 of file InDetPerfPlot_Resolution.h.

◆ m_pullwidth_vs_eta

TH1* InDetPerfPlot_Resolution::m_pullwidth_vs_eta[NPARAMS]
private

Definition at line 126 of file InDetPerfPlot_Resolution.h.

◆ m_pullwidth_vs_lowpt

TH1* InDetPerfPlot_Resolution::m_pullwidth_vs_lowpt[NPARAMS]
private

Definition at line 130 of file InDetPerfPlot_Resolution.h.

◆ m_pullwidth_vs_pt

TH1* InDetPerfPlot_Resolution::m_pullwidth_vs_pt[NPARAMS]
private

Definition at line 128 of file InDetPerfPlot_Resolution.h.

◆ m_res

TH1* InDetPerfPlot_Resolution::m_res[NPARAMS]
private

Definition at line 109 of file InDetPerfPlot_Resolution.h.

◆ m_resHelpereta

TH2* InDetPerfPlot_Resolution::m_resHelpereta[NPARAMS]
private

Definition at line 112 of file InDetPerfPlot_Resolution.h.

◆ m_resHelpereta_neg

TH2* InDetPerfPlot_Resolution::m_resHelpereta_neg[NPARAMS]
private

Definition at line 134 of file InDetPerfPlot_Resolution.h.

◆ m_resHelpereta_pos

TH2* InDetPerfPlot_Resolution::m_resHelpereta_pos[NPARAMS]
private

Definition at line 133 of file InDetPerfPlot_Resolution.h.

◆ m_resHelperlowpt

TH2* InDetPerfPlot_Resolution::m_resHelperlowpt[NPARAMS]
private

Definition at line 114 of file InDetPerfPlot_Resolution.h.

◆ m_resHelperlowpt_neg

TH2* InDetPerfPlot_Resolution::m_resHelperlowpt_neg[NPARAMS]
private

Definition at line 138 of file InDetPerfPlot_Resolution.h.

◆ m_resHelperlowpt_pos

TH2* InDetPerfPlot_Resolution::m_resHelperlowpt_pos[NPARAMS]
private

Definition at line 137 of file InDetPerfPlot_Resolution.h.

◆ m_resHelperpt

TH2* InDetPerfPlot_Resolution::m_resHelperpt[NPARAMS]
private

Definition at line 113 of file InDetPerfPlot_Resolution.h.

◆ m_resHelperpt_neg

TH2* InDetPerfPlot_Resolution::m_resHelperpt_neg[NPARAMS]
private

Definition at line 136 of file InDetPerfPlot_Resolution.h.

◆ m_resHelperpt_pos

TH2* InDetPerfPlot_Resolution::m_resHelperpt_pos[NPARAMS]
private

Definition at line 135 of file InDetPerfPlot_Resolution.h.

◆ m_resmean_vs_eta

TH1* InDetPerfPlot_Resolution::m_resmean_vs_eta[NPARAMS]
private

Definition at line 120 of file InDetPerfPlot_Resolution.h.

◆ m_resmean_vs_eta_neg

TH1* InDetPerfPlot_Resolution::m_resmean_vs_eta_neg[NPARAMS]
private

Definition at line 148 of file InDetPerfPlot_Resolution.h.

◆ m_resmean_vs_eta_pos

TH1* InDetPerfPlot_Resolution::m_resmean_vs_eta_pos[NPARAMS]
private

Definition at line 141 of file InDetPerfPlot_Resolution.h.

◆ m_resmean_vs_lowpt

TH1* InDetPerfPlot_Resolution::m_resmean_vs_lowpt[NPARAMS]
private

Definition at line 124 of file InDetPerfPlot_Resolution.h.

◆ m_resmean_vs_lowpt_neg

TH1* InDetPerfPlot_Resolution::m_resmean_vs_lowpt_neg[NPARAMS]
private

Definition at line 152 of file InDetPerfPlot_Resolution.h.

◆ m_resmean_vs_lowpt_pos

TH1* InDetPerfPlot_Resolution::m_resmean_vs_lowpt_pos[NPARAMS]
private

Definition at line 145 of file InDetPerfPlot_Resolution.h.

◆ m_resmean_vs_pt

TH1* InDetPerfPlot_Resolution::m_resmean_vs_pt[NPARAMS]
private

Definition at line 122 of file InDetPerfPlot_Resolution.h.

◆ m_resmean_vs_pt_neg

TH1* InDetPerfPlot_Resolution::m_resmean_vs_pt_neg[NPARAMS]
private

Definition at line 150 of file InDetPerfPlot_Resolution.h.

◆ m_resmean_vs_pt_pos

TH1* InDetPerfPlot_Resolution::m_resmean_vs_pt_pos[NPARAMS]
private

Definition at line 143 of file InDetPerfPlot_Resolution.h.

◆ m_resolutionHelper

IDPVM::ResolutionHelper InDetPerfPlot_Resolution::m_resolutionHelper
private

Definition at line 81 of file InDetPerfPlot_Resolution.h.

◆ m_resolutionMethod

IDPVM::ResolutionHelper::methods InDetPerfPlot_Resolution::m_resolutionMethod
private

Definition at line 82 of file InDetPerfPlot_Resolution.h.

◆ m_resP

float InDetPerfPlot_Resolution::m_resP[NPARAMS]
private

Definition at line 104 of file InDetPerfPlot_Resolution.h.

◆ m_resProjections_vs_eta

TH1* InDetPerfPlot_Resolution::m_resProjections_vs_eta[NPARAMS][m_nEtaBins]
private

Definition at line 159 of file InDetPerfPlot_Resolution.h.

◆ m_resProjections_vs_lowpt

TH1* InDetPerfPlot_Resolution::m_resProjections_vs_lowpt[NPARAMS][m_nLowPtBins]
private

Definition at line 158 of file InDetPerfPlot_Resolution.h.

◆ m_resProjections_vs_pt

TH1* InDetPerfPlot_Resolution::m_resProjections_vs_pt[NPARAMS][m_nPtBins]
private

Definition at line 157 of file InDetPerfPlot_Resolution.h.

◆ m_reswidth_vs_eta

TH1* InDetPerfPlot_Resolution::m_reswidth_vs_eta[NPARAMS]
private

Definition at line 119 of file InDetPerfPlot_Resolution.h.

◆ m_reswidth_vs_eta_neg

TH1* InDetPerfPlot_Resolution::m_reswidth_vs_eta_neg[NPARAMS]
private

Definition at line 147 of file InDetPerfPlot_Resolution.h.

◆ m_reswidth_vs_eta_pos

TH1* InDetPerfPlot_Resolution::m_reswidth_vs_eta_pos[NPARAMS]
private

Definition at line 140 of file InDetPerfPlot_Resolution.h.

◆ m_reswidth_vs_lowpt

TH1* InDetPerfPlot_Resolution::m_reswidth_vs_lowpt[NPARAMS]
private

Definition at line 123 of file InDetPerfPlot_Resolution.h.

◆ m_reswidth_vs_lowpt_neg

TH1* InDetPerfPlot_Resolution::m_reswidth_vs_lowpt_neg[NPARAMS]
private

Definition at line 151 of file InDetPerfPlot_Resolution.h.

◆ m_reswidth_vs_lowpt_pos

TH1* InDetPerfPlot_Resolution::m_reswidth_vs_lowpt_pos[NPARAMS]
private

Definition at line 144 of file InDetPerfPlot_Resolution.h.

◆ m_reswidth_vs_pt

TH1* InDetPerfPlot_Resolution::m_reswidth_vs_pt[NPARAMS]
private

Definition at line 121 of file InDetPerfPlot_Resolution.h.

◆ m_reswidth_vs_pt_neg

TH1* InDetPerfPlot_Resolution::m_reswidth_vs_pt_neg[NPARAMS]
private

Definition at line 149 of file InDetPerfPlot_Resolution.h.

◆ m_reswidth_vs_pt_pos

TH1* InDetPerfPlot_Resolution::m_reswidth_vs_pt_pos[NPARAMS]
private

Definition at line 142 of file InDetPerfPlot_Resolution.h.

◆ m_sDirectory

std::string PlotBase::m_sDirectory
protectedinherited

Definition at line 100 of file PlotBase.h.

◆ m_secdTrk

bool InDetPerfPlot_Resolution::m_secdTrk
private

Definition at line 88 of file InDetPerfPlot_Resolution.h.

◆ m_sigma

TH1* InDetPerfPlot_Resolution::m_sigma[NPARAMS]
private

Definition at line 110 of file InDetPerfPlot_Resolution.h.

◆ m_sigma_vs_eta

TProfile* InDetPerfPlot_Resolution::m_sigma_vs_eta[NPARAMS]
private

Definition at line 161 of file InDetPerfPlot_Resolution.h.

◆ m_sigma_vs_lowpt

TProfile* InDetPerfPlot_Resolution::m_sigma_vs_lowpt[NPARAMS]
private

Definition at line 163 of file InDetPerfPlot_Resolution.h.

◆ m_sigma_vs_pt

TProfile* InDetPerfPlot_Resolution::m_sigma_vs_pt[NPARAMS]
private

Definition at line 162 of file InDetPerfPlot_Resolution.h.

◆ m_sigP

float InDetPerfPlot_Resolution::m_sigP[NPARAMS]
private

Definition at line 106 of file InDetPerfPlot_Resolution.h.

◆ m_trkErrP

float InDetPerfPlot_Resolution::m_trkErrP[NPARAMS]
private

Definition at line 102 of file InDetPerfPlot_Resolution.h.

◆ m_trkP

float InDetPerfPlot_Resolution::m_trkP[NPARAMS]
private

Definition at line 100 of file InDetPerfPlot_Resolution.h.

◆ m_truetrkP

float InDetPerfPlot_Resolution::m_truetrkP[NPARAMS]
private

Definition at line 101 of file InDetPerfPlot_Resolution.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: