00001 #ifndef HCALProperties_H 00002 #define HCALProperties_H 00003 00004 #include "FastSimulation/CalorimeterProperties/interface/CalorimeterProperties.h" 00005 00016 namespace edm { 00017 class ParameterSet; 00018 } 00019 00020 class HCALProperties : public CalorimeterProperties 00021 { 00022 00023 public: 00024 00025 HCALProperties(const edm::ParameterSet& fastDet); 00026 00027 virtual ~HCALProperties() { 00028 } 00029 00031 inline double theAeff() const { return 63.546; } 00032 00034 inline double theZeff() const { return 29.; } 00035 00037 inline double rho() const { return 8.960; } 00038 00040 inline double radLenIncm() const { return radiationLengthIncm(); } 00041 00043 // This is needed in Calorimetry/CrystalSegment. 00044 // Patrick, if you don't like it, give me another solution 00045 // to access the ECALProperties efficiently. 00046 static inline double radiationLengthIncm() { return 1.43; } 00047 00049 inline double radLenIngcm2() const { return 12.86; } 00050 00052 inline double moliereRadius() const { return 1.712; } 00053 //inline double moliereRadius() const { return 2.4; } 00054 00056 inline double criticalEnergy() const { return 18.63E-3; } 00057 00059 inline double interactionLength() const { return 15.05; } 00060 00063 inline double hOverPi() const {return hOPi;} 00064 00066 inline double spotFraction() const {return spotFrac;} 00067 00068 double getHcalDepth(double) const; 00069 00070 int eta2ieta(double eta) const; 00071 00072 private: 00073 double hOPi; 00074 double spotFrac; 00075 00076 00077 double etatow[42]; // HCAL towers eta edges 00078 double hcalDepthLam[41]; // HCAL depth for each tower ieta 00079 }; 00080 00081 #endif