Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef HDShowerParametrization_H
0002 #define HDShowerParametrization_H
0003 
0004 #include "FastSimulation/CalorimeterProperties/interface/ECALProperties.h"
0005 #include "FastSimulation/CalorimeterProperties/interface/HCALProperties.h"
0006 #include "FastSimulation/ShowerDevelopment/interface/HSParameters.h"
0007 /** 
0008  * Hadronic Shower parametrization utilities according to 
0009  * G. Grindhammer et al. in a way implemeted in CMSJET
0010  *
0011  * \author Salavat Abdullin
0012  * \date: 20.10.2004
0013  */
0014 
0015 class HDShowerParametrization {
0016 public:
0017   HDShowerParametrization(const ECALProperties* ecal, const HCALProperties* hcal, const HSParameters* hadronshower)
0018       : theECAL(ecal), theHCAL(hcal), theHSParameters(hadronshower) {}
0019 
0020   virtual ~HDShowerParametrization() {}
0021 
0022   const ECALProperties* ecalProperties() const { return theECAL; }
0023 
0024   const HCALProperties* hcalProperties() const { return theHCAL; }
0025 
0026   const HSParameters* hsParameters() const { return theHSParameters; }
0027 
0028   // to distinguish between low- and high-energy case
0029   void setCase(int choice) {
0030     if (choice < 1 || choice > 2)
0031       theCase = 2;
0032     else
0033       theCase = choice;
0034   }
0035 
0036   // Minimal energy for the parameters calculation ( e < emin)
0037   double emin() const { return 2.; }
0038   // First  range for the parameters calculation   ( emin < e < mid)
0039   double emid() const { return 10.; }
0040   // Second range for the parameters calculation   ( emid < e < emax)
0041   double emax() const { return 500.; }
0042 
0043   double e1() const { return 0.35; }
0044   double e2() const { return 0.09; }
0045   double alpe1() const {
0046     if (theCase == 1)
0047       return 1.08;
0048     else
0049       return 1.30;
0050   }
0051   double alpe2() const {
0052     if (theCase == 1)
0053       return 0.24;
0054     else
0055       return 0.255;
0056   }
0057   double bete1() const {
0058     if (theCase == 1)
0059       return 0.478;
0060     else
0061       return 0.289;
0062   }
0063   double bete2() const {
0064     if (theCase == 1)
0065       return 0.135;
0066     else
0067       return 0.010;
0068   }
0069   double alph1() const {
0070     if (theCase == 1)
0071       return 1.17;
0072     else
0073       return 0.38;
0074   }
0075   double alph2() const {
0076     if (theCase == 1)
0077       return 0.21;
0078     else
0079       return 0.23;
0080   }
0081   double beth1() const {
0082     if (theCase == 1)
0083       return 2.10;
0084     else
0085       return 0.83;
0086   }
0087   double beth2() const {
0088     if (theCase == 1)
0089       return 0.72;
0090     else
0091       return 0.049;
0092   }
0093   double part1() const {
0094     if (theCase == 1)
0095       return 0.751;
0096     else
0097       return 0.509;
0098   }
0099   double part2() const {
0100     if (theCase == 1)
0101       return 0.177;
0102     else
0103       return 0.021;
0104   }
0105   double r1() const { return 0.0124; }
0106   double r2() const { return 0.359; }
0107   double r3() const { return 0.0511; }
0108 
0109 private:
0110   const ECALProperties* theECAL;
0111   const HCALProperties* theHCAL;
0112   const HSParameters* theHSParameters;
0113 
0114   int theCase;
0115 };
0116 
0117 #endif