CMS 3D CMS Logo

GflashHadronShowerProfile.h

Go to the documentation of this file.
00001 #ifndef GflashHadronShowerProfile_H
00002 #define GflashHadronShowerProfile_H 
00003 
00004 #include "SimG4Core/GFlash/interface/GflashNameSpace.h"
00005 #include "SimG4Core/GFlash/interface/GflashTrajectory.h"
00006 #include "CLHEP/Random/RandGaussQ.h"
00007 #include "CLHEP/Random/RandGamma.h"
00008 
00009 #include "G4VFastSimulationModel.hh"
00010 #include "G4Step.hh"
00011 #include "G4TouchableHandle.hh"
00012 
00013 #include <vector>
00014 
00015 class GflashEnergySpot;
00016 class GflashHistogram;
00017 
00018 class GflashHadronShowerProfile 
00019 {
00020 public:
00021   //-------------------------
00022   // Constructor, destructor
00023   //-------------------------
00024   GflashHadronShowerProfile (G4Region* envelope);
00025   ~GflashHadronShowerProfile ();
00026 
00027   Gflash::CalorimeterNumber getCalorimeterNumber(const G4ThreeVector position);
00028   void clearSpotList() { aEnergySpotList.clear(); }
00029   void hadronicParameterization(const G4FastTrack& fastTrack);
00030   std::vector<GflashEnergySpot>& getEnergySpotList() {return aEnergySpotList;}; 
00031 
00032 private:
00033   void loadParameters(const G4FastTrack& fastTrack);
00034   G4double longitudinalProfile(G4double showerDepth, G4double pathLength, G4double transDepth);
00035   void samplingFluctuation(G4double &de, G4double einc);
00036   inline Gflash::CalorimeterNumber getCalorimeterNumber() {return jCalorimeter;}
00037   G4bool insideSampling(const G4ThreeVector pos);
00038   void doCholeskyReduction(G4double **cc, G4double **vv, const G4int ndim);
00039   void fillFluctuationVector();
00040 
00041 private:  
00042 
00043   G4int showerType ; 
00044   Gflash::CalorimeterNumber jCalorimeter ;
00045   std::vector<GflashEnergySpot> aEnergySpotList;
00046 
00047   G4double energyToDeposit; 
00048   //lateral and longitudinal parameters
00049   G4double correlationVector[Gflash::NRegion*Gflash::NxN*(Gflash::NxN+1)/2]; //21*3 = 63
00050   G4double longPar[Gflash::NRegion][Gflash::NxN];  
00051   //  G4double longPar2[6];  
00052   //  G4double longPar3[6];  
00053   G4double lateralPar[4]; 
00054 
00055   //  G4double longSigma1[6];  
00056   G4double longSigma[Gflash::NRegion][Gflash::NxN];  
00057 
00058   //  GflashMediaMap* theMediaMap;
00059   GflashHistogram* theHisto;
00060   GflashTrajectory* theHelix;
00061 
00062   CLHEP::RandGaussQ* theRandGauss;
00063   CLHEP::RandGamma*  theRandGamma;
00064 };
00065 
00066 #endif
00067 
00068 
00069 
00070 

Generated on Tue Jun 9 17:47:04 2009 for CMSSW by  doxygen 1.5.4