ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
ElectronPhotonID
ElectronPhotonFourMomentumCorrection
Root
e1hg_systematics.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
ElectronPhotonFourMomentumCorrection/e1hg_systematics.h
"
6
7
#include <cmath>
8
#include <cstdlib>
9
10
#include "
PathResolver/PathResolver.h
"
11
#include "Riostream.h"
12
#include "TAxis.h"
13
14
e1hg_systematics::e1hg_systematics
(
const
std::string& filename) {
15
16
m_file0
= TFile::Open(filename.c_str());
17
18
for
(Int_t ieta = 0; ieta < 8; ieta++) {
19
char
name[60];
20
sprintf(name,
"elec_%d"
, ieta);
21
m_helec
[ieta] = (TH1D*)
m_file0
->Get(name);
22
sprintf(name,
"unconv_%d"
, ieta);
23
m_hphot
[ieta] = (TH1D*)
m_file0
->Get(name);
24
sprintf(name,
"conv_%d"
, ieta);
25
m_hphot2
[ieta] = (TH1D*)
m_file0
->Get(name);
26
}
27
28
TAxis* aa =
m_helec
[0]->GetXaxis();
29
m_etBins
= aa->GetXbins();
30
}
31
32
//=========================================================================
33
e1hg_systematics::~e1hg_systematics
() {
34
m_file0
->Close();
35
}
36
37
//============================================================================
38
// inputs are particle_type (0=elec, 1=reco unconv photon, 2=reco conv photon)
39
// energy in MeV
40
// eta
41
//
42
// returned value is alpha = DeltaE / E
43
//
44
double
e1hg_systematics::getAlpha
(
int
particle_type,
double
energy,
double
eta
,
45
bool
interpolate)
const
{
46
47
// cout << " in getDelta " << endl;
48
if
(particle_type < 0 || particle_type > 2)
49
return
0.;
50
51
float
aeta = fabs(
eta
);
52
int
ieta = 0;
53
if
(aeta < 0.4)
54
ieta = 0;
55
else
if
(aeta < 0.8)
56
ieta = 1;
57
else
if
(aeta < 1.1)
58
ieta = 2;
59
else
if
(aeta < 1.37)
60
ieta = 3;
61
else
if
(aeta < 1.52)
62
ieta = 4;
63
else
if
(aeta < 1.80)
64
ieta = 5;
65
else
if
(aeta < 2.10)
66
ieta = 6;
67
else
68
ieta = 7;
69
70
double
energyGeV = energy * 0.001;
71
double
et
= energyGeV / std::cosh(
eta
);
72
73
int
ibinEt =
m_etBins
->GetSize() - 2;
74
for
(
int
i = 1; i <
m_etBins
->GetSize(); i++) {
75
if
(
et < m_etBins->
GetAt(i)) {
76
ibinEt = i - 1;
77
break
;
78
}
79
}
80
81
// cout << " energy, et , ibinEt " << energyGeV << " " << et << " " <<
82
// ibinEt << endl;
83
84
Double_t scale = 0.;
85
// HACK: some ES model dependency needs to be introduced
86
/*Default up to es2017_summer
87
if (aeta<1.80) scale=0.;
88
else if (aeta<2.3) scale = 0.050*(aeta-1.8)/0.4 /0.05;
89
else scale=0.025/0.05;
90
*/
91
92
if
(aeta < 1.80)
93
scale = 0.;
94
else
if
(aeta < 2.3)
95
scale = (0.050 * (aeta - 1.8) / 0.4 + 0.025) / 0.05;
96
else
97
scale = 0.05 / 0.05;
98
99
if
(!interpolate) {
100
if
(particle_type == 0)
101
return
scale *
m_helec
[ieta]->GetBinContent(ibinEt + 1);
102
else
if
(particle_type == 1)
103
return
scale *
m_hphot
[ieta]->GetBinContent(ibinEt + 1);
104
else
105
return
scale *
m_hphot2
[ieta]->GetBinContent(
106
ibinEt + 1);
// This is 2, since if particle_type is
107
// not 0,1,2 we have returned 0 above
108
}
else
{
109
if
(particle_type == 0)
110
return
scale *
m_helec
[ieta]->Interpolate(
et
);
111
else
if
(particle_type == 1)
112
return
scale *
m_hphot
[ieta]->Interpolate(
et
);
113
else
114
return
scale *
m_hphot2
[ieta]->Interpolate(
115
et
);
// This is 2, since if particle_type is not 0,1,2
116
// we have returned 0
117
}
118
}
eta
Scalar eta() const
pseudorapidity method
Definition
AmgMatrixBasePlugin.h:83
et
float et(const xAOD::jFexSRJetRoI *j)
Definition
L1MonitorAdaptors.h:17
PathResolver.h
e1hg_systematics::m_hphot
TH1D * m_hphot[8]
Definition
e1hg_systematics.h:37
e1hg_systematics::~e1hg_systematics
~e1hg_systematics()
Definition
e1hg_systematics.cxx:33
e1hg_systematics::m_etBins
const TArrayD * m_etBins
Definition
e1hg_systematics.h:40
e1hg_systematics::m_hphot2
TH1D * m_hphot2[8]
Definition
e1hg_systematics.h:38
e1hg_systematics::getAlpha
double getAlpha(int particle_type, double energy, double eta, bool interpolate=false) const
particle_type = 0 (electrons), 1 (unconv photons), 2 (conv photons)
Definition
e1hg_systematics.cxx:44
e1hg_systematics::m_file0
TFile * m_file0
Definition
e1hg_systematics.h:39
e1hg_systematics::e1hg_systematics
e1hg_systematics(const std::string &filename)
constructor (initialization done there reading root files)
Definition
e1hg_systematics.cxx:14
e1hg_systematics::m_helec
TH1D * m_helec[8]
Definition
e1hg_systematics.h:36
e1hg_systematics.h
et
Extra patterns decribing particle interation process.
Generated on
for ATLAS Offline Software by
1.17.0