Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:11:13

0001 #ifndef ECALProperties_H
0002 #define ECALProperties_H
0003 
0004 #include "FastSimulation/CalorimeterProperties/interface/CalorimeterProperties.h"
0005 
0006 /** 
0007  * Functions to return atomic properties of the material
0008  * A_eff and Z_eff are computed as the A-weighted sums 
0009  * of the A's and the Z's of Pb, W and O
0010  *
0011  * \author Patrick Janot
0012  * \date: 25-Jan-2004
0013  */
0014 
0015 class ECALProperties : public CalorimeterProperties {
0016 public:
0017   ECALProperties() : scaleEnergy_(0.0212) {}
0018 
0019   ~ECALProperties() override {}
0020 
0021   /// Effective A: 170.87 for Standard ECAL
0022   inline double theAeff() const override { return Aeff_; }
0023 
0024   /// Effective Z: 68.36 for Standard ECAL
0025   inline double theZeff() const override { return Zeff_; }
0026 
0027   /// Density in g/cm3: 8.280 for Standard ECAL
0028   inline double rho() const override { return rho_; }
0029 
0030   /// Radiation length in cm
0031   //  inline double radLenIncm()  const { return radiationLengthIncm(); }: 0.89 for Standard ECAL
0032   inline double radLenIncm() const override { return radLenIncm_; }
0033 
0034   /// Radiation length in cm but static
0035   // This is needed in Calorimetry/CrystalSegment. Patrick, if you don't like it, give
0036   // me an other solution to access the ECALProperties efficiently.
0037   // static inline double radiationLengthIncm() { return 0.89; }
0038 
0039   /// Radiation length in g/cm^2: 7.37  for Standard ECAL
0040   inline double radLenIngcm2() const override { return radLenIngcm2_; }
0041 
0042   /// Moliere Radius in cm : 2.190 for Standard ECAL
0043   inline double moliereRadius() const override { return moliereRadius_; }
0044 
0045   /// Critical energy in GeV (2.66E-3*(x0*Z/A)^1.1): 8.74E-3 for Standard ECAL
0046   inline double criticalEnergy() const override { return criticalEnergy_; }
0047 
0048   ///Interaction length in cm: 18.5 for Standard ECAL
0049   inline double interactionLength() const override { return interactionLength_; }
0050 
0051   ///Sampling fraction Fs of the calorimeter. 0 for homogeneous one
0052   inline double theFs() const { return Fs_; }
0053 
0054   /// ehat = e/mip of the calorimeter. 0 for homogeneous one
0055   inline double ehat() const { return ehat_; }
0056 
0057   /// a rough estimate of ECAL resolution sigma/E = resE/sqrt(E)
0058   inline double resE() const { return resE_; }
0059 
0060   /// the width of the active layer in the case of the homogeneous detector
0061   inline double da() const { return da_; }
0062 
0063   /// the width of the passive layer in the case of the homogeneous detector
0064   inline double dp() const { return dp_; }
0065 
0066   /// a rough estimate of ECAL resolution sigma/E = resE/sqrt(E)
0067   inline bool isHom() const { return bHom_; }
0068 
0069   ///Photostatistics (photons/GeV) in the homegeneous material
0070   virtual double photoStatistics() const = 0;
0071 
0072   ///Light Collection efficiency
0073   virtual double lightCollectionEfficiency() const = 0;
0074 
0075   ///Light Collection uniformity
0076   virtual double lightCollectionUniformity() const = 0;
0077 
0078 protected:
0079   double lightColl_;
0080   double lightCollUnif_;
0081   double photoStatistics_;
0082   double thickness_;
0083   double interactionLength_;
0084 
0085   double Aeff_;
0086   double Zeff_;
0087   double rho_;
0088   double radLenIncm_;
0089   double radLenIngcm2_;
0090   double moliereRadius_;
0091 
0092   double criticalEnergy_;
0093 
0094   double Fs_;
0095   double ehat_;
0096   double resE_;
0097 
0098   double da_;
0099   double dp_;
0100 
0101   bool bHom_;
0102 
0103   //Es=sqrt(4*Pi/alphaEM)*me*c^2=0.0212 GeV used for Moliere Radius calculation
0104   const double scaleEnergy_;
0105 };
0106 
0107 #endif