Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:30:34

0001 #ifndef GflashHadronShowerProfile_H
0002 #define GflashHadronShowerProfile_H
0003 
0004 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0005 
0006 #include "SimGeneral/GFlash/interface/GflashHistogram.h"
0007 #include "SimGeneral/GFlash/interface/GflashNameSpace.h"
0008 #include "SimGeneral/GFlash/interface/GflashShowino.h"
0009 #include "SimGeneral/GFlash/interface/GflashTrajectory.h"
0010 
0011 #include <vector>
0012 
0013 class GflashHit;
0014 
0015 class GflashHadronShowerProfile {
0016 public:
0017   //-------------------------
0018   // Constructor, destructor
0019   //-------------------------
0020   GflashHadronShowerProfile(const edm::ParameterSet &parSet);
0021   virtual ~GflashHadronShowerProfile();
0022 
0023   void initialize(int showerType,
0024                   double energy,
0025                   double globalTime,
0026                   double charge,
0027                   Gflash3Vector &position,
0028                   Gflash3Vector &momentum);
0029 
0030   virtual void loadParameters();
0031   void hadronicParameterization();
0032   GflashShowino *getGflashShowino() { return theShowino; }
0033   std::vector<GflashHit> &getGflashHitList() { return theGflashHitList; };
0034 
0035 protected:
0036   double longitudinalProfile();
0037   double hoProfile(double pathLength, double refDepth);
0038   void doCholeskyReduction(double **cc, double **vv, const int ndim);
0039   void getFluctuationVector(double *lowTriangle, double *correlationVector);
0040   void setEnergyScale(double einc, const Gflash3Vector &ssp);
0041 
0042   int getNumberOfSpots(Gflash::CalorimeterNumber kCalor);
0043   double medianLateralArm(double depth, Gflash::CalorimeterNumber kCalor);
0044   Gflash3Vector locateHitPosition(GflashTrajectoryPoint &point, double lateralArm);
0045 
0046   double fTanh(double einc, const double *par);
0047   double fLnE1(double einc, const double *par);
0048   double depthScale(double ssp, double ssp0, double length);
0049   double gammaProfile(double alpha, double beta, double depth, double lengthUnit);
0050   double twoGammaProfile(double *par, double depth, Gflash::CalorimeterNumber kIndex);
0051 
0052   //  SimActivityRegistry::G4StepSignal gflash_g4StepSignal;
0053 
0054 protected:
0055   edm::ParameterSet theParSet;
0056   double theBField;
0057   bool theGflashHcalOuter;
0058 
0059   GflashShowino *theShowino;
0060   GflashHistogram *theHisto;
0061 
0062   double energyScale[Gflash::kNumberCalorimeter];
0063   double averageSpotEnergy[Gflash::kNumberCalorimeter];
0064   double longEcal[Gflash::NPar];
0065   double longHcal[Gflash::NPar];
0066   double lateralPar[Gflash::kNumberCalorimeter][Gflash::Nrpar];
0067 
0068   std::vector<GflashHit> theGflashHitList;
0069 };
0070 
0071 #endif