00001 #ifndef HCALBarrelProperties_H 00002 #define HCALBarrelProperties_H 00003 00004 #include "FastSimulation/CalorimeterProperties/interface/HCALProperties.h" 00005 00015 #include <cmath> 00016 00017 namespace edm { 00018 class ParameterSet; 00019 } 00020 00021 class HCALBarrelProperties : public HCALProperties 00022 { 00023 00024 public: 00025 00026 HCALBarrelProperties(const edm::ParameterSet& fastDet):HCALProperties(fastDet) {; } 00027 00028 virtual ~HCALBarrelProperties() { } 00029 00031 double thickness(double eta) const { 00032 double e = std::exp(-eta); 00033 double e2 = e*e; 00034 // double c = (1.-e2)/(1.+e2); 00035 double s = 2.*e/(1.+e2); 00036 double t = fabs(2.*e/(1.-e2)); 00037 double feta = fabs(eta); 00038 00039 if ( feta < 0.380 ) 00040 { 00041 // This where the HO is supposed to be (1995 version) 00042 return 7.76 * interactionLength() / s ; 00043 } 00044 else if ( feta < 1.310 ) 00045 { 00046 return 6.76 * interactionLength() / s ; 00047 } 00048 else if ( feta < 1.370 ) 00049 { 00050 double e1 = std::exp(-1.310); 00051 double t1 = 2.*e1 /(1.-e1*e1); 00052 // 193.0 cm is the inner radius of HCAL 00053 return ( (6.76 * interactionLength() + 193.0) * t/t1 - 193.0) / s; 00054 } 00055 // else if ( feta < 1.440 ) 00056 else if (feta < 1.450) // F.B 12/01/05 : avoid edge effet 00057 // in ParticlePropagator, the limit is 1.44826 00058 { 00059 double e1 = std::exp(-1.310); 00060 double t1 = 2.*e1 /(1.-e1*e1); 00061 // 193.0 cm is the inner radius of HCAL 00062 return ( (6.76 * interactionLength() + 193.0) * t/t1 - 193.0) / (2.*s); 00063 } 00064 else 00065 { 00066 return 0.; 00067 } 00068 00069 } 00070 00071 }; 00072 00073 #endif