Go to the documentation of this file.00001 #ifndef Validation_Geometry_MaterialBudgetForward_h
00002 #define Validation_Geometry_MaterialBudgetForward_h
00003
00004 #include "SimG4Core/Watcher/interface/SimWatcher.h"
00005 #include "SimG4Core/Notification/interface/Observer.h"
00006 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00007
00008 #include <CLHEP/Vector/LorentzVector.h>
00009
00010 class BeginOfRun;
00011 class BeginOfTrack;
00012 class G4Step;
00013 class EndOfTrack;
00014 #include "G4LogicalVolume.hh"
00015
00016 #include <TH1F.h>
00017 #include <TH2F.h>
00018 #include <TProfile.h>
00019 #include <TProfile2D.h>
00020
00021 #include <string>
00022 #include <vector>
00023
00024 class MaterialBudgetForward : public SimWatcher,
00025 public Observer<const BeginOfRun*>,
00026 public Observer<const BeginOfTrack*>,
00027 public Observer<const G4Step*>,
00028 public Observer<const EndOfTrack*> {
00029
00030 public:
00031
00032 MaterialBudgetForward(const edm::ParameterSet&);
00033 virtual ~MaterialBudgetForward();
00034
00035 private:
00036
00037 MaterialBudgetForward(const MaterialBudgetForward&);
00038 const MaterialBudgetForward& operator=(const MaterialBudgetForward&);
00039
00040 void update(const BeginOfRun*);
00041 void update(const BeginOfTrack*);
00042 void update(const G4Step*);
00043 void update(const EndOfTrack*);
00044
00045 void book(const edm::ParameterSet&);
00046 bool stopAfter(const G4Step*);
00047
00048 std::vector<std::string> detTypes, detNames;
00049 std::vector<int> constituents, detLevels,regionTypes,stackOrder;
00050 std::vector<double> etaRegions, boundaries;
00051 std::vector<G4LogicalVolume*> logVolumes;
00052 static const int maxSet = 25;
00053 TH1F *me400[maxSet];
00054 TH2F *me800[maxSet];
00055 TProfile *me100[maxSet], *me200[maxSet], *me300[maxSet];
00056 TProfile2D *me500[maxSet], *me600[maxSet], *me700[maxSet];
00057 std::vector<double> stepLen, radLen, intLen;
00058 double eta, phi, stepT;
00059 };
00060
00061 #endif