Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:32:13

0001 #ifndef Validation_Geometry_MaterialBudgetHcalHistos_h
0002 #define Validation_Geometry_MaterialBudgetHcalHistos_h 1
0003 
0004 #include "DetectorDescription/Core/interface/DDFilteredView.h"
0005 #include "DetectorDescription/Core/interface/DDFilteredView.h"
0006 #include "DetectorDescription/Core/interface/DDsvalues.h"
0007 #include "DetectorDescription/DDCMS/interface/DDCompactView.h"
0008 #include "DetectorDescription/DDCMS/interface/DDFilteredView.h"
0009 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0010 
0011 #include "G4Step.hh"
0012 #include "G4Track.hh"
0013 
0014 #include <TH1F.h>
0015 #include <TH2F.h>
0016 #include <TProfile.h>
0017 #include <TProfile2D.h>
0018 
0019 #include <string>
0020 #include <vector>
0021 
0022 class MaterialBudgetHcalHistos {
0023 public:
0024   MaterialBudgetHcalHistos(const edm::ParameterSet &p);
0025   virtual ~MaterialBudgetHcalHistos() { hend(); }
0026 
0027   void fillBeginJob(const DDCompactView &);
0028   void fillBeginJob(const cms::DDCompactView &);
0029   void fillStartTrack(const G4Track *);
0030   void fillPerStep(const G4Step *);
0031   void fillEndTrack();
0032 
0033 private:
0034   void book();
0035   void fillHisto(int ii);
0036   void fillLayer();
0037   void hend();
0038   std::vector<std::string> getNames(DDFilteredView &fv);
0039   std::vector<std::string> getNames(cms::DDFilteredView &fv);
0040   std::vector<double> getDDDArray(const std::string &str, const DDsvalues_type &sv);
0041   bool isSensitive(const std::string &);
0042   bool isItHF(const G4VTouchable *);
0043   bool isItEC(const std::string &);
0044 
0045 private:
0046   static const int maxSet_ = 25, maxSet2_ = 9;
0047   std::vector<std::string> sensitives_, hfNames_, sensitiveEC_;
0048   std::vector<int> hfLevels_;
0049   bool fillHistos_, printSum_, fromdd4hep_;
0050   int binEta_, binPhi_;
0051   double maxEta_, etaLow_, etaHigh_, etaLowMin_, etaLowMax_, etaMidMin_;
0052   double etaMidMax_, etaHighMin_, etaHighMax_, etaMinP_, etaMaxP_;
0053   std::vector<std::string> matList_;
0054   std::vector<double> stepLength_, radLength_, intLength_;
0055   TH1F *me400[maxSet_], *me800[maxSet_], *me1300[maxSet2_];
0056   TH2F *me1200[maxSet_], *me1400[maxSet2_];
0057   TProfile *me100[maxSet_], *me200[maxSet_], *me300[maxSet_];
0058   TProfile *me500[maxSet_], *me600[maxSet_], *me700[maxSet_];
0059   TProfile *me1500[maxSet2_];
0060   TProfile *me1600[maxSet_], *me1700[maxSet_], *me1800[maxSet_];
0061   TProfile *me1900[maxSet_], *me2000[maxSet_], *me2100[maxSet_];
0062   TProfile *me2200[maxSet_], *me2300[maxSet_], *me2400[maxSet_];
0063   TProfile2D *me900[maxSet_], *me1000[maxSet_], *me1100[maxSet_];
0064   int id_, layer_, steps_;
0065   double radLen_, intLen_, stepLen_;
0066   double eta_, phi_;
0067   int nlayHB_, nlayHE_, nlayHO_, nlayHF_;
0068 };
0069 
0070 #endif