CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ECALProperties.h
Go to the documentation of this file.
1 #ifndef ECALProperties_H
2 #define ECALProperties_H
3 
5 
16 public:
18 
19  ~ECALProperties() override {}
20 
22  inline double theAeff() const override { return Aeff_; }
23 
25  inline double theZeff() const override { return Zeff_; }
26 
28  inline double rho() const override { return rho_; }
29 
31  // inline double radLenIncm() const { return radiationLengthIncm(); }: 0.89 for Standard ECAL
32  inline double radLenIncm() const override { return radLenIncm_; }
33 
35  // This is needed in Calorimetry/CrystalSegment. Patrick, if you don't like it, give
36  // me an other solution to access the ECALProperties efficiently.
37  // static inline double radiationLengthIncm() { return 0.89; }
38 
40  inline double radLenIngcm2() const override { return radLenIngcm2_; }
41 
43  inline double moliereRadius() const override { return moliereRadius_; }
44 
46  inline double criticalEnergy() const override { return criticalEnergy_; }
47 
49  inline double interactionLength() const override { return interactionLength_; }
50 
52  inline double theFs() const { return Fs_; }
53 
55  inline double ehat() const { return ehat_; }
56 
58  inline double resE() const { return resE_; }
59 
61  inline double da() const { return da_; }
62 
64  inline double dp() const { return dp_; }
65 
67  inline bool isHom() const { return bHom_; }
68 
70  virtual double photoStatistics() const = 0;
71 
73  virtual double lightCollectionEfficiency() const = 0;
74 
76  virtual double lightCollectionUniformity() const = 0;
77 
78 protected:
79  double lightColl_;
82  double thickness_;
84 
85  double Aeff_;
86  double Zeff_;
87  double rho_;
88  double radLenIncm_;
89  double radLenIngcm2_;
91 
93 
94  double Fs_;
95  double ehat_;
96  double resE_;
97 
98  double da_;
99  double dp_;
100 
101  bool bHom_;
102 
103  //Es=sqrt(4*Pi/alphaEM)*me*c^2=0.0212 GeV used for Moliere Radius calculation
104  const double scaleEnergy_;
105 };
106 
107 #endif
double radLenIncm() const override
Radiation length in cm.
~ECALProperties() override
const double scaleEnergy_
double criticalEnergy() const override
Critical energy in GeV (2.66E-3*(x0*Z/A)^1.1): 8.74E-3 for Standard ECAL.
double moliereRadius_
double theAeff() const override
Effective A: 170.87 for Standard ECAL.
double criticalEnergy_
bool isHom() const
a rough estimate of ECAL resolution sigma/E = resE/sqrt(E)
double radLenIngcm2_
double dp() const
the width of the passive layer in the case of the homogeneous detector
double moliereRadius() const override
Moliere Radius in cm : 2.190 for Standard ECAL.
double da() const
the width of the active layer in the case of the homogeneous detector
double ehat() const
ehat = e/mip of the calorimeter. 0 for homogeneous one
double rho() const override
Density in g/cm3: 8.280 for Standard ECAL.
double theZeff() const override
Effective Z: 68.36 for Standard ECAL.
double theFs() const
Sampling fraction Fs of the calorimeter. 0 for homogeneous one.
double radLenIngcm2() const override
Radiation length in cm but static.
double lightCollUnif_
virtual double lightCollectionEfficiency() const =0
Light Collection efficiency.
double interactionLength_
virtual double lightCollectionUniformity() const =0
Light Collection uniformity.
double photoStatistics_
double interactionLength() const override
Interaction length in cm: 18.5 for Standard ECAL.
virtual double photoStatistics() const =0
Photostatistics (photons/GeV) in the homegeneous material.
double resE() const
a rough estimate of ECAL resolution sigma/E = resE/sqrt(E)