ATLAS Offline Software
Loading...
Searching...
No Matches
egammaMonitoring::TruthPhotonHistograms Class Reference

#include <TruthPhotonHistograms.h>

Inheritance diagram for egammaMonitoring::TruthPhotonHistograms:
Collaboration diagram for egammaMonitoring::TruthPhotonHistograms:

Public Member Functions

StatusCode initializePlots ()
void fill (const xAOD::IParticle &)
void fill (const xAOD::IParticle &, float mu)
void hasFwd (bool a=true)
 IHistograms ()
 IHistograms (std::string name, std::string title, std::string folder, SmartIF< ITHistSvc > rootHistSvc)

Public Attributes

std::map< std::string, TH2D * > histo2DMap
std::map< std::string, TH1D * > histoMap

Protected Attributes

std::string m_name
std::string m_title
std::string m_folder
SmartIF< ITHistSvc > m_rootHistSvc

Private Attributes

float m_cR_bins [15] = {0, 50, 89, 123, 170, 210, 250, 299, 335, 371, 443, 514, 554, 800, 1085}
bool m_hasFwd = false

Detailed Description

Definition at line 18 of file TruthPhotonHistograms.h.

Member Function Documentation

◆ fill() [1/2]

void TruthPhotonHistograms::fill ( const xAOD::IParticle & phrec)
virtual

Reimplemented from egammaMonitoring::ParticleHistograms.

Definition at line 65 of file TruthPhotonHistograms.cxx.

65 {
67}

◆ fill() [2/2]

void TruthPhotonHistograms::fill ( const xAOD::IParticle & phrec,
float mu )
virtual

Reimplemented from egammaMonitoring::ParticleHistograms.

Definition at line 69 of file TruthPhotonHistograms.cxx.

69 {
70
72
74
75 float trueR = -999;
76 if (truth) {
77 if (truth->pdgId() == 22 && truth->hasDecayVtx()) {
78
79 trueR = truth->decayVtx()->perp();
80
81 }
82 }
83
84 histoMap["convRadius_all"]->Fill(trueR);
85 histoMap["convRadius"]->Fill(trueR);
86 histoMap["pileup"]->Fill(mu);
87 histoMap["onebin"]->Fill(0.5);
88
89 if(phrec.pt()/1000. > 15) {
90 histoMap["convRadius_15GeV"]->Fill(trueR);
91 histoMap["pileup_15GeV"]->Fill(mu);
92 histoMap["onebin_15GeV"]->Fill(0.5);
93 }
94
95 // access reco photon from the xAOD::TruthParticle (can't use the IParticle* here)
96 const auto *truthParticle = dynamic_cast<const xAOD::TruthParticle*>(&phrec);
97 if (truthParticle) {
99
100 if (photon) {
101 float res_e = photon->e()/truth->e() - 1.;
102 float res_eta = photon->eta() - truth->eta();
103 float res_phi = photon->phi() - truth->phi();
104 float recoR = xAOD::EgammaHelpers::conversionRadius(photon);
105
106 // Resolution histograms only make sense if there was a reco particle !
107 // And for resolution on R, only if true conv, reco conv
108 if (recoR < 1000 && trueR > 0)
109 histoMap["convRadiusTrueVsReco"]->Fill(recoR - trueR);
110
111 histoMap["resolution_e"]->Fill(res_e);
112 histoMap["resolution_eta"]->Fill(res_eta);
113 histoMap["resolution_phi"]->Fill(res_phi);
114
115 histo2DMap["resolution_e_vs_pT"]->Fill(phrec.pt()/1000., res_e);
116 histo2DMap["resolution_e_vs_eta"]->Fill(std::abs(phrec.eta()), res_e);
117
118 }
119 }
120
121
122} // fill
std::map< std::string, TH1D * > histoMap
Definition IHistograms.h:42
void fill(const xAOD::IParticle &egamma)
std::map< std::string, TH2D * > histo2DMap
virtual double eta() const =0
The pseudorapidity ( ) of the particle.
virtual double pt() const =0
The transverse momentum ( ) of the particle.
int pdgId() const
PDG ID code.
const TruthVertex_v1 * decayVtx() const
The decay vertex of this particle.
bool hasDecayVtx() const
Check for a decay vertex on this particle.
virtual double e() const override final
The total energy of the particle.
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
virtual double phi() const override final
The azimuthal angle ( ) of the particle.
float perp() const
Vertex transverse distance from the beam line.
const xAOD::Photon * getRecoPhoton(const xAOD::TruthParticle *particle)
return the reco photon associated to the given TruthParticle (if any)
float conversionRadius(const xAOD::Vertex *vx)
return the conversion radius or 9999.
const xAOD::TruthParticle * getTruthParticle(const xAOD::IParticle &p)
Return the truthParticle associated to the given IParticle (if any)
TruthParticle_v1 TruthParticle
Typedef to implementation.
Photon_v1 Photon
Definition of the current "egamma version".

◆ hasFwd()

void egammaMonitoring::ParticleHistograms::hasFwd ( bool a = true)
inlineinherited

Definition at line 26 of file ParticleHistograms.h.

◆ IHistograms() [1/2]

egammaMonitoring::IHistograms::IHistograms ( )
inherited

◆ IHistograms() [2/2]

egammaMonitoring::IHistograms::IHistograms ( std::string name,
std::string title,
std::string folder,
SmartIF< ITHistSvc > rootHistSvc )
inlineinherited

Definition at line 26 of file IHistograms.h.

30 :
31 m_name(std::move(std::move(name))),
32 m_title(std::move(std::move(title))),
33 m_folder(std::move(std::move(folder))),
34 m_rootHistSvc(std::move(rootHistSvc)) {}
SmartIF< ITHistSvc > m_rootHistSvc
Definition IHistograms.h:48

◆ initializePlots()

StatusCode TruthPhotonHistograms::initializePlots ( )
virtual

Reimplemented from egammaMonitoring::ParticleHistograms.

Definition at line 21 of file TruthPhotonHistograms.cxx.

21 {
22
24
25 const char* fN = m_name.c_str();
26
27 histoMap["convRadius_all"] = new TH1D(Form("%s_convRadius_all",fN), ";Conversion Radius [mm]; Conversion Radius Events", 200, 0, 2000);
28 histoMap["convRadius"] = new TH1D(Form("%s_convRadius",fN), ";Conversion Radius [mm]; Conversion Radius Events", 14, m_cR_bins);
29 histoMap["convRadius_15GeV"] = new TH1D(Form("%s_convRadius_15GeV",fN), ";Conversion Radius [mm]; Conversion Radius Events", 14, m_cR_bins);
30 histoMap["convRadiusTrueVsReco"] = new TH1D(Form("%s_convRadiusTrueVsReco",fN), ";R^{reco}_{conv. vtx} - R^{true}_{conv. vtx} [mm]; Events", 100, -200, 200);
31
32 histoMap["pileup"] = new TH1D(Form("%s_pileup",fN), ";mu; mu Events", 35, 0., 70.);
33 histoMap["pileup_15GeV"] = new TH1D(Form("%s_pileup_15GeV",fN), ";mu; mu Events", 35, 0., 70.);
34 histoMap["onebin"] = new TH1D(Form("%s_onebin",fN), "; ; Events", 1, 0., 1.);
35 histoMap["onebin_15GeV"] = new TH1D(Form("%s_onebin_15GeV",fN), "; ; Events", 1, 0., 1.);
36
37 histoMap["resolution_e"] = new TH1D(Form("%s_resolution_e",fN), "; E_{reco} / E_{true} - 1; Events", 40, -0.2, 0.2);
38 histoMap["resolution_eta"] = new TH1D(Form("%s_resolution_eta",fN), "; #eta_{reco} - #eta_{true}; Events", 20, -0.05, 0.05);
39 histoMap["resolution_phi"] = new TH1D(Form("%s_resolution_phi",fN), "; #phi_{reco} - #phi_{true}; Events", 20, -0.05, 0.05);
40
41 histo2DMap["resolution_e_vs_pT"] = new TH2D(Form("%s_resolution_e_vs_pT",fN), ";p_{T} [GeV];E_{reco} / E_{true} - 1", 40, 0, 200, 160, -0.2, 0.2);
42 histo2DMap["resolution_e_vs_eta"] = new TH2D(Form("%s_resolution_e_vs_eta",fN), ";|#eta|;E_{reco} / E_{true} - 1", 25, 0, 2.5, 160, -0.2, 0.2);
43
44 ATH_CHECK(m_rootHistSvc->regHist(m_folder+"convRadius_all", histoMap["convRadius_all"]));
45 ATH_CHECK(m_rootHistSvc->regHist(m_folder+"convRadius", histoMap["convRadius"]));
46 ATH_CHECK(m_rootHistSvc->regHist(m_folder+"convRadius_15GeV", histoMap["convRadius_15GeV"]));
47 ATH_CHECK(m_rootHistSvc->regHist(m_folder+"convRadiusTrueVsReco", histoMap["convRadiusTrueVsReco"]));
48
49 ATH_CHECK(m_rootHistSvc->regHist(m_folder+"pileup", histoMap["pileup"]));
50 ATH_CHECK(m_rootHistSvc->regHist(m_folder+"pileup_15GeV", histoMap["pileup_15GeV"]));
51 ATH_CHECK(m_rootHistSvc->regHist(m_folder+"onebin", histoMap["onebin"]));
52 ATH_CHECK(m_rootHistSvc->regHist(m_folder+"onebin_15GeV", histoMap["onebin_15GeV"]));
53
54 ATH_CHECK(m_rootHistSvc->regHist(m_folder+"resolution_e", histoMap["resolution_e"]));
55 ATH_CHECK(m_rootHistSvc->regHist(m_folder+"resolution_eta", histoMap["resolution_eta"]));
56 ATH_CHECK(m_rootHistSvc->regHist(m_folder+"resolution_phi", histoMap["resolution_phi"]));
57
58 ATH_CHECK(m_rootHistSvc->regHist(m_folder+"resolution_e_vs_pT", histo2DMap["resolution_e_vs_pT"]));
59 ATH_CHECK(m_rootHistSvc->regHist(m_folder+"resolution_e_vs_eta", histo2DMap["resolution_e_vs_eta"]));
60
61 return StatusCode::SUCCESS;
62
63}
#define ATH_CHECK
Evaluate an expression and check for errors.

Member Data Documentation

◆ histo2DMap

std::map<std::string, TH2D* > egammaMonitoring::TruthPhotonHistograms::histo2DMap

Definition at line 24 of file TruthPhotonHistograms.h.

◆ histoMap

std::map<std::string, TH1D*> egammaMonitoring::IHistograms::histoMap
inherited

Definition at line 42 of file IHistograms.h.

◆ m_cR_bins

float egammaMonitoring::TruthPhotonHistograms::m_cR_bins[15] = {0, 50, 89, 123, 170, 210, 250, 299, 335, 371, 443, 514, 554, 800, 1085}
private

Definition at line 35 of file TruthPhotonHistograms.h.

35{0, 50, 89, 123, 170, 210, 250, 299, 335, 371, 443, 514, 554, 800, 1085};

◆ m_folder

std::string egammaMonitoring::IHistograms::m_folder
protectedinherited

Definition at line 47 of file IHistograms.h.

◆ m_hasFwd

bool egammaMonitoring::ParticleHistograms::m_hasFwd = false
privateinherited

Definition at line 29 of file ParticleHistograms.h.

◆ m_name

std::string egammaMonitoring::IHistograms::m_name
protectedinherited

Definition at line 45 of file IHistograms.h.

◆ m_rootHistSvc

SmartIF<ITHistSvc> egammaMonitoring::IHistograms::m_rootHistSvc
protectedinherited

Definition at line 48 of file IHistograms.h.

◆ m_title

std::string egammaMonitoring::IHistograms::m_title
protectedinherited

Definition at line 46 of file IHistograms.h.


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