00001 #ifndef Validation_Geometry_MaterialBudgetHcal_h 00002 #define Validation_Geometry_MaterialBudgetHcal_h 00003 00004 #include "Validation/Geometry/interface/MaterialBudgetHcalHistos.h" 00005 #include "Validation/Geometry/interface/MaterialBudgetCastorHistos.h" 00006 00007 #include "SimG4Core/Watcher/interface/SimWatcher.h" 00008 #include "SimG4Core/Notification/interface/Observer.h" 00009 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00010 00011 #include <CLHEP/Vector/LorentzVector.h> 00012 00013 class BeginOfJob; 00014 class BeginOfTrack; 00015 class G4Step; 00016 class EndOfTrack; 00017 00018 class MaterialBudgetHcal : public SimWatcher, 00019 public Observer<const BeginOfJob*>, 00020 public Observer<const BeginOfTrack*>, 00021 public Observer<const G4Step*>, 00022 public Observer<const EndOfTrack*> { 00023 00024 public: 00025 00026 MaterialBudgetHcal(const edm::ParameterSet&); 00027 virtual ~MaterialBudgetHcal(); 00028 00029 private: 00030 00031 MaterialBudgetHcal(const MaterialBudgetHcal&); // stop default 00032 const MaterialBudgetHcal& operator=(const MaterialBudgetHcal&); // stop default 00033 00034 void update(const BeginOfJob*); 00035 void update(const BeginOfTrack*); 00036 void update(const G4Step*); 00037 void update(const EndOfTrack*); 00038 00039 bool stopAfter(const G4Step*); 00040 00041 MaterialBudgetHcalHistos* theHistoHcal; 00042 MaterialBudgetCastorHistos* theHistoCastor; 00043 double rMax, zMax; 00044 }; 00045 00046 #endif