CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch12/src/SimGeneral/GFlash/interface/GflashHadronShowerProfile.h

Go to the documentation of this file.
00001 #ifndef GflashHadronShowerProfile_H
00002 #define GflashHadronShowerProfile_H 
00003 
00004 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00005 
00006 #include "SimGeneral/GFlash/interface/GflashNameSpace.h"
00007 #include "SimGeneral/GFlash/interface/GflashHistogram.h"
00008 #include "SimGeneral/GFlash/interface/GflashTrajectory.h"
00009 #include "SimGeneral/GFlash/interface/GflashShowino.h"
00010 
00011 #include <vector>
00012 
00013 class GflashHit;
00014 
00015 class GflashHadronShowerProfile 
00016 {
00017 public:
00018   //-------------------------
00019   // Constructor, destructor
00020   //-------------------------
00021   GflashHadronShowerProfile (edm::ParameterSet parSet);
00022   virtual ~GflashHadronShowerProfile ();
00023 
00024   void initialize(int showerType, double energy, double globalTime, double charge,
00025                   Gflash3Vector &position,Gflash3Vector &momentum);
00026 
00027   virtual void loadParameters();
00028   void hadronicParameterization();
00029   GflashShowino* getGflashShowino() { return theShowino; }
00030   std::vector<GflashHit>& getGflashHitList() {return theGflashHitList;}; 
00031 
00032 protected:
00033   double longitudinalProfile();
00034   double hoProfile(double pathLength, double refDepth);
00035   void doCholeskyReduction(double **cc, double **vv, const int ndim);
00036   void getFluctuationVector(double *lowTriangle, double *correlationVector);
00037   void setEnergyScale(double einc, Gflash3Vector ssp);
00038 
00039   int getNumberOfSpots(Gflash::CalorimeterNumber kCalor);
00040   double medianLateralArm(double depth, Gflash::CalorimeterNumber kCalor);
00041   Gflash3Vector locateHitPosition(GflashTrajectoryPoint& point, double lateralArm);
00042 
00043   double fTanh(double einc, const double *par);
00044   double fLnE1(double einc, const double *par);
00045   double depthScale(double ssp, double ssp0, double length);
00046   double gammaProfile(double alpha, double beta, double depth, double lengthUnit);
00047   double twoGammaProfile(double *par, double depth, Gflash::CalorimeterNumber kIndex);
00048 
00049   //  SimActivityRegistry::G4StepSignal gflash_g4StepSignal;
00050 
00051 protected:
00052   edm::ParameterSet theParSet;
00053   double theBField;
00054   bool theGflashHcalOuter;
00055 
00056   GflashShowino *theShowino; 
00057   GflashHistogram* theHisto;
00058 
00059   double energyScale[Gflash::kNumberCalorimeter]; 
00060   double averageSpotEnergy[Gflash::kNumberCalorimeter]; 
00061   double longEcal[Gflash::NPar];  
00062   double longHcal[Gflash::NPar];  
00063   double lateralPar[Gflash::kNumberCalorimeter][Gflash::Nrpar]; 
00064 
00065   std::vector<GflashHit> theGflashHitList;
00066 };
00067 
00068 #endif
00069 
00070 
00071