File indexing completed on 2023-03-17 11:27:21
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