ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigTools
TrigT2CaloCalibration
src
EgammaHitsShowerDepth.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
// ********************************************************************
6
//
7
// NAME: EgammaShowerDepth.cxx
8
// PACKAGE: Trigger/TrigTools/EgammaHitsShowerDepth.cxx
9
//
10
// AUTHOR: Werner Spolidoro Freund (wsfreund@cern.ch)
11
//
12
// REFERENCES: Auxiliar Class for Hits Calibration (BASED ON OFFLINE)
13
//
14
// Updated: January 14, 2011
15
// Modifications on EgammaHitsCalibration updated for offline rev 30069
16
//
17
// ********************************************************************
18
19
20
#include "
EgammaHitsCalibration.h
"
21
//#include "TrigCaloEvent/TrigEMCluster.h"
22
#include "
xAODTrigCalo/TrigEMCluster.h
"
23
#include "GaudiKernel/MsgStream.h"
24
25
26
const
CaloSampling::CaloSample
EgammaHitsShowerDepth::m_samps
[2][4] =
27
{ { CaloSampling::PreSamplerB,
28
CaloSampling::EMB1,
29
CaloSampling::EMB2,
30
CaloSampling::EMB3 },
31
{ CaloSampling::PreSamplerE,
32
CaloSampling::EME1,
33
CaloSampling::EME2,
34
CaloSampling::EME3 }
35
};
36
37
44
float
EgammaHitsShowerDepth::depth
(
const
float
&aeta,
45
const
float
start_crack,
46
const
float
end_crack,
47
const
CxxUtils::Array<2>
& sampling_depth,
48
const
float
etamax,
49
const
xAOD::TrigEMCluster
* cluster)
const
50
{
51
52
float
R[4];
53
int
si;
54
55
if
(aeta < start_crack) {
56
barrelCoefs
(aeta, R);
57
si = 0;
58
}
59
else
if
(aeta > end_crack) {
60
if
(!
endcapCoefs
(aeta, sampling_depth, etamax, R))
61
return
0;
62
si = 1;
63
}
64
else
65
return
0;
66
67
double
rsum = 0;
68
double
esum = 0;
69
for
(
int
i=0; i < 4; i++) {
70
float
e = cluster->
energy
(
m_samps
[si][i]);
71
rsum += R[i] * e;
72
esum += e;
73
}
74
75
if
(esum == 0)
76
return
0;
77
78
float
depth
= rsum / esum;
79
80
return
depth
;
81
}
82
83
89
void
EgammaHitsShowerDepth::barrelCoefs
(
const
float
&aeta,
float
R[4])
const
90
{
91
//----------------------------------------------------------------------
92
// APPROXIMATE Longitudinal segmentation of the EM Barrel
93
// Inspired from M.Seman's former ACCOMPA.
94
// - PURPOSE Computes the shower longitudinal barycenter
95
// - Inputs: shower eta and energies in the compartments
96
//----------------------------------------------------------------------
97
98
// Constants:
99
static
const
float
100
X0IN = 1.6,
// 1.7 X0 before strips
101
X0S1 = 6.0,
// 6 X0 till end of strips
102
// X0S2 = 24.0, // 24 X0 till end of S2
103
// X0S3 = 2.0, // 2 X0 at least in S3
104
// RIN = 150.0024, // where strips start (cm)
105
// ROUT = 197.0482, // where S3 ends (cm)
106
// RCLR = 0.7, // clearance for resistive ink (cm)
107
//BEND1 = 152.1000, // first 3 bends radii (cm)
108
//BEND2 = 155.9659,
109
//BEND3 = 159.7202,
110
ETASTEP = 0.8,
// where lead changes
111
//DENSHI = 2.137, // cm/X0 high density
112
//DENSLO = 2.695, // cm/X0 low density
113
X0THI = 23.74,
// total depth high density part (not indep?)
114
X0TLO = 19.177;
// total depth low density part (not indep?)
115
116
float
/*DENS,*/
X0T
/*, RLO, RHI*/
;
117
float
R12, R23;
118
119
if
( aeta < ETASTEP ) {
120
//DENS = DENSHI;
121
X0T = X0THI;
122
//RLO = BEND2; // break strips between bends 2 and 3
123
//RHI = BEND3;
124
}
else
{
125
//DENS = DENSLO;
126
X0T = X0TLO;
127
//RLO = BEND1; // break strips between bends 1 and 2
128
//RHI = BEND2;
129
}
130
131
R[0] = (X0IN) * cosh(aeta);
132
133
// R12 is radius at transition strips->Sampling2
134
// R23 is radius at transition Sampling2->Sampling3
135
136
R12 = X0S1;
137
138
//.. total depth of calo at given eta
139
140
float
RADLTOT = X0T*cosh(aeta);
141
142
//.. radius where S2 ends. Make sure there are 2X0 left for S3
143
144
if
(aeta < 0.5){
145
R23 = 22 * cosh(aeta) ;
146
}
else
{
147
R23 = 25;
148
}
149
150
R[1] = R[0] + (R12 - R[0])/2 ;
151
R[2] = R12 + (R23 - R12)/2;
152
R[3] = R23 + (RADLTOT - R23)/2;
153
}
154
155
163
bool
EgammaHitsShowerDepth::endcapCoefs
(
const
float
&aeta,
164
const
CxxUtils::Array<2>
& sampling_depth,
165
const
float
etamax,
166
float
R[4])
const
167
{
168
unsigned
int
ibin = (
static_cast<
unsigned
int
>
(aeta / etamax * 100)) ;
169
if
(ibin >= sampling_depth.
size
())
170
return
false
;
171
172
for
(
int
i=0; i < 4; i++)
173
R[i] = sampling_depth[ibin][i+1];
174
return
true
;
175
}
176
EgammaHitsCalibration.h
TrigEMCluster.h
CaloSampling::CaloSample
CaloSample
Definition
Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
CxxUtils::Array
Read-only multidimensional array.
Definition
Control/CxxUtils/CxxUtils/Array.h:135
CxxUtils::Array::size
unsigned int size(unsigned int dim=0) const
Return the size of the array along one dimension.
EgammaHitsShowerDepth::m_samps
static const CaloSampling::CaloSample m_samps[2][4]
Definition
EgammaHitsShowerDepth.h:26
EgammaHitsShowerDepth::depth
float depth(const float &aeta, const float start_crack, const float end_crack, const CxxUtils::Array< 2 > &sampling_depth, const float etamax, const xAOD::TrigEMCluster *cluster) const
Calculate the depth of the cluster.
Definition
EgammaHitsShowerDepth.cxx:44
EgammaHitsShowerDepth::barrelCoefs
void barrelCoefs(const float &aeta, float R[4]) const
Calculate the sampling depth coefficients for the barrel.
Definition
EgammaHitsShowerDepth.cxx:89
EgammaHitsShowerDepth::endcapCoefs
bool endcapCoefs(const float &aeta, const CxxUtils::Array< 2 > &sampling_depth, const float etamax, float R[4]) const
Calculate the sampling depth coefficients for the endcap.
Definition
EgammaHitsShowerDepth.cxx:163
xAOD::TrigEMCluster_v1::energy
float energy() const
get Energy (calibrated)
xAOD::TrigEMCluster
TrigEMCluster_v1 TrigEMCluster
Define the latest version of the trigger EM cluster class.
Definition
Event/xAOD/xAODTrigCalo/xAODTrigCalo/TrigEMCluster.h:17
Generated on
for ATLAS Offline Software by
1.17.0