CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/Validation/Geometry/interface/MaterialBudgetForward.h

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&);          // stop default
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