Go to the documentation of this file.00001 #ifndef SimG4CMS_HFGflash_h
00002 #define SimG4CMS_HFGflash_h
00003
00004 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00005 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00006
00007 #include "SimGeneral/GFlash/interface/GflashEMShowerProfile.h"
00008 #include "SimGeneral/GFlash/interface/GflashTrajectory.h"
00009 #include "SimGeneral/GFlash/interface/GflashNameSpace.h"
00010
00011 #include "G4VFastSimulationModel.hh"
00012 #include "G4ParticleTable.hh"
00013 #include "G4ThreeVector.hh"
00014 #include "G4FastTrack.hh"
00015 #include "G4TouchableHandle.hh"
00016 #include "G4Navigator.hh"
00017
00018 #include <string>
00019 #include <vector>
00020
00021 #include <TFile.h>
00022 #include <TTree.h>
00023 #include <TH1F.h>
00024 #include <TH2F.h>
00025 #include <TProfile.h>
00026
00027 class G4Step;
00028
00029 class HFGflash {
00030
00031 public:
00032
00033 HFGflash(edm::ParameterSet const & p);
00034 virtual ~HFGflash();
00035
00036 struct Hit {
00037 Hit() {}
00038 G4ThreeVector position;
00039 int depth;
00040 double time;
00041 double edep;
00042 double pez;
00043 };
00044
00045 std::vector<Hit> gfParameterization(G4Step * aStep, bool & ok, bool onlyLong=false);
00046
00047 private:
00048
00049 GflashTrajectory* theHelix;
00050 G4Step *theGflashStep;
00051 G4Navigator *theGflashNavigator;
00052 G4TouchableHandle theGflashTouchableHandle;
00053
00054 Gflash::CalorimeterNumber jCalorimeter;
00055
00056 bool theWatcherOn;
00057 bool theFillHisto;
00058 G4double theBField;
00059
00060 G4int showerType ;
00061 G4double energyToDeposit;
00062 G4double energyScale[Gflash::kNumberCalorimeter];
00063 G4double longHcal[Gflash::NPar];
00064 G4double longEcal[Gflash::NPar];
00065 G4double lateralPar[4];
00066
00067 TH1F *em_incE, *em_ssp_rho, *em_ssp_z, *em_long, *em_lateral;
00068 TH1F *em_long_sd, *em_lateral_sd, *em_nSpots_sd, *em_ze_ratio;
00069 TH2F *em_2d, *em_2d_sd, *em_ze, *em_ratio, *em_ratio_selected;
00070 };
00071
00072 #endif // HFGflash_h