CMS 3D CMS Logo

ECALProperties.h
Go to the documentation of this file.
1 #ifndef ECALProperties_H
2 #define ECALProperties_H
3 
5 
16 {
17 
18  public:
19 
20  ECALProperties() : scaleEnergy_(0.0212){ }
21 
22  ~ECALProperties() override {
23  }
24 
26  inline double theAeff() const override { return Aeff_; }
27 
29  inline double theZeff() const override { return Zeff_; }
30 
32  inline double rho() const override { return rho_; }
33 
35  // inline double radLenIncm() const { return radiationLengthIncm(); }: 0.89 for Standard ECAL
36  inline double radLenIncm() const override { return radLenIncm_; }
37 
39  // This is needed in Calorimetry/CrystalSegment. Patrick, if you don't like it, give
40  // me an other solution to access the ECALProperties efficiently.
41  // static inline double radiationLengthIncm() { return 0.89; }
42 
44  inline double radLenIngcm2() const override { return radLenIngcm2_; }
45 
47  inline double moliereRadius() const override { return moliereRadius_; }
48 
50  inline double criticalEnergy() const override { return criticalEnergy_; }
51 
53  inline double interactionLength() const override { return interactionLength_; }
54 
56  inline double theFs() const { return Fs_; }
57 
59  inline double ehat() const { return ehat_; }
60 
62  inline double resE() const { return resE_; }
63 
65  inline double da() const { return da_; }
66 
68  inline double dp() const { return dp_; }
69 
70 
72  inline bool isHom() const { return bHom_; }
73 
75  virtual double photoStatistics() const=0;
76 
78  virtual double lightCollectionEfficiency() const=0;
79 
81  virtual double lightCollectionUniformity() const=0;
82 
83  protected:
84 
85  double lightColl_;
88  double thickness_;
90 
91  double Aeff_;
92  double Zeff_;
93  double rho_;
94  double radLenIncm_;
95  double radLenIngcm2_;
97 
99 
100  double Fs_;
101  double ehat_;
102  double resE_;
103 
104  double da_;
105  double dp_;
106 
107  bool bHom_;
108 
109  //Es=sqrt(4*Pi/alphaEM)*me*c^2=0.0212 GeV used for Moliere Radius calculation
110  const double scaleEnergy_;
111 
112 };
113 
114 #endif
~ECALProperties() override
const double scaleEnergy_
double theAeff() const override
Effective A: 170.87 for Standard ECAL.
double moliereRadius_
virtual double lightCollectionEfficiency() const =0
Light Collection efficiency.
double criticalEnergy_
bool isHom() const
a rough estimate of ECAL resolution sigma/E = resE/sqrt(E)
double moliereRadius() const override
Moliere Radius in cm : 2.190 for Standard ECAL.
double radLenIncm() const override
Radiation length in cm.
double radLenIngcm2_
double interactionLength() const override
Interaction length in cm: 18.5 for Standard ECAL.
double dp() const
the width of the passive layer in the case of the homogeneous detector
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
virtual double photoStatistics() const =0
Photostatistics (photons/GeV) in the homegeneous material.
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 lightCollUnif_
double radLenIngcm2() const override
Radiation length in cm but static.
double interactionLength_
double photoStatistics_
double rho() const override
Density in g/cm3: 8.280 for Standard ECAL.
virtual double lightCollectionUniformity() const =0
Light Collection uniformity.
double criticalEnergy() const override
Critical energy in GeV (2.66E-3*(x0*Z/A)^1.1): 8.74E-3 for Standard ECAL.
double resE() const
a rough estimate of ECAL resolution sigma/E = resE/sqrt(E)