1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
#ifndef ECALProperties_H
#define ECALProperties_H
#include "FastSimulation/CalorimeterProperties/interface/CalorimeterProperties.h"
/**
* Functions to return atomic properties of the material
* A_eff and Z_eff are computed as the A-weighted sums
* of the A's and the Z's of Pb, W and O
*
* \author Patrick Janot
* \date: 25-Jan-2004
*/
class ECALProperties : public CalorimeterProperties {
public:
ECALProperties() : scaleEnergy_(0.0212) {}
~ECALProperties() override {}
/// Effective A: 170.87 for Standard ECAL
inline double theAeff() const override { return Aeff_; }
/// Effective Z: 68.36 for Standard ECAL
inline double theZeff() const override { return Zeff_; }
/// Density in g/cm3: 8.280 for Standard ECAL
inline double rho() const override { return rho_; }
/// Radiation length in cm
// inline double radLenIncm() const { return radiationLengthIncm(); }: 0.89 for Standard ECAL
inline double radLenIncm() const override { return radLenIncm_; }
/// Radiation length in cm but static
// This is needed in Calorimetry/CrystalSegment. Patrick, if you don't like it, give
// me an other solution to access the ECALProperties efficiently.
// static inline double radiationLengthIncm() { return 0.89; }
/// Radiation length in g/cm^2: 7.37 for Standard ECAL
inline double radLenIngcm2() const override { return radLenIngcm2_; }
/// Moliere Radius in cm : 2.190 for Standard ECAL
inline double moliereRadius() const override { return moliereRadius_; }
/// Critical energy in GeV (2.66E-3*(x0*Z/A)^1.1): 8.74E-3 for Standard ECAL
inline double criticalEnergy() const override { return criticalEnergy_; }
///Interaction length in cm: 18.5 for Standard ECAL
inline double interactionLength() const override { return interactionLength_; }
///Sampling fraction Fs of the calorimeter. 0 for homogeneous one
inline double theFs() const { return Fs_; }
/// ehat = e/mip of the calorimeter. 0 for homogeneous one
inline double ehat() const { return ehat_; }
/// a rough estimate of ECAL resolution sigma/E = resE/sqrt(E)
inline double resE() const { return resE_; }
/// the width of the active layer in the case of the homogeneous detector
inline double da() const { return da_; }
/// the width of the passive layer in the case of the homogeneous detector
inline double dp() const { return dp_; }
/// a rough estimate of ECAL resolution sigma/E = resE/sqrt(E)
inline bool isHom() const { return bHom_; }
///Photostatistics (photons/GeV) in the homegeneous material
virtual double photoStatistics() const = 0;
///Light Collection efficiency
virtual double lightCollectionEfficiency() const = 0;
///Light Collection uniformity
virtual double lightCollectionUniformity() const = 0;
protected:
double lightColl_;
double lightCollUnif_;
double photoStatistics_;
double thickness_;
double interactionLength_;
double Aeff_;
double Zeff_;
double rho_;
double radLenIncm_;
double radLenIngcm2_;
double moliereRadius_;
double criticalEnergy_;
double Fs_;
double ehat_;
double resE_;
double da_;
double dp_;
bool bHom_;
//Es=sqrt(4*Pi/alphaEM)*me*c^2=0.0212 GeV used for Moliere Radius calculation
const double scaleEnergy_;
};
#endif
|