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
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
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