00001 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00002 #include "SimG4Core/Watcher/interface/SimWatcher.h" 00003 #include "SimG4Core/Notification/interface/Observer.h" 00004 00005 #include <TFile.h> 00006 #include <TTree.h> 00007 #include <TH1F.h> 00008 #include <TH2F.h> 00009 #include <TProfile.h> 00010 00011 #include <string> 00012 00013 // 00014 // class decleration 00015 // 00016 00017 class BeginOfEvent; 00018 class EndOfEvent; 00019 class G4Step; 00020 00021 00022 class GflashG4Watcher : public SimWatcher, 00023 public Observer<const BeginOfEvent*>, 00024 public Observer<const EndOfEvent*>, 00025 public Observer<const G4Step*> { 00026 00027 public: 00028 GflashG4Watcher(const edm::ParameterSet& p); 00029 ~GflashG4Watcher(); 00030 00031 private: 00032 00033 G4bool inc_flag; 00034 G4double inc_energy; 00035 G4double out_energy; 00036 G4ThreeVector inc_vertex; 00037 G4ThreeVector inc_direction; 00038 G4ThreeVector inc_position; 00039 00040 void update(const BeginOfEvent* ); 00041 void update(const EndOfEvent* ); 00042 void update(const G4Step* ); 00043 00044 // histograms for GflashG4Watcher 00045 00046 std::string histFileName_; 00047 double recoEnergyScaleEB_; 00048 double recoEnergyScaleEE_; 00049 00050 TFile* histFile_; 00051 00052 TH1F* em_incE; 00053 TH1F* em_vtx_rho; 00054 TH1F* em_vtx_z; 00055 00056 TH1F* eb_ssp_rho; 00057 TH1F* eb_hit_long; 00058 TH1F* eb_hit_lat; 00059 TH2F* eb_hit_rz; 00060 TH1F* eb_hit_long_sd; 00061 TH1F* eb_hit_lat_sd; 00062 TH2F* eb_hit_rz_sd; 00063 00064 TH1F* ee_ssp_z; 00065 TH1F* ee_hit_long; 00066 TH1F* ee_hit_lat; 00067 TH2F* ee_hit_rz; 00068 TH1F* ee_hit_long_sd; 00069 TH1F* ee_hit_lat_sd; 00070 TH2F* ee_hit_rz_sd; 00071 00072 }; 00073