CMS 3D CMS Logo

HcalTB04Histo.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: HcalTestBeam
4 // Class : HcalTB04Histo
5 //
6 // Implementation:
7 // <Notes on implementation>
8 //
9 // Original Author:
10 // Created: Tue May 16 10:14:34 CEST 2006
11 //
12 
13 // system include files
14 #include <iostream>
15 #include <cmath>
16 
17 // user include files
22 
23 //#define EDM_ML_DEBUG
24 
25 //
26 // constructors and destructor
28  : iniE(nullptr),
29  iEta(nullptr),
30  iPhi(nullptr),
31  edepS(nullptr),
32  edecS(nullptr),
33  edhcS(nullptr),
34  edepQ(nullptr),
35  edecQ(nullptr),
36  edhcQ(nullptr),
37  edehS(nullptr),
38  edehQ(nullptr),
39  latse(nullptr),
40  latqe(nullptr),
41  latsf(nullptr),
42  latqf(nullptr),
43  lngs(nullptr),
44  lngq(nullptr) {
45  verbose = ps.getUntrackedParameter<bool>("Verbose", false);
46  double em1 = ps.getUntrackedParameter<double>("ETtotMax", 400.);
47  double em2 = ps.getUntrackedParameter<double>("EHCalMax", 4.0);
48 
49  // Book histograms
51 
52  if (!tfile.isAvailable())
53  throw cms::Exception("BadConfig") << "TFileService unavailable: "
54  << "please add it to config file";
55  iniE = tfile->make<TH1D>("iniE", "Incident Energy (GeV)", 4000, 0., em1);
56  iEta = tfile->make<TH1D>("iEta", "Eta at incidence ", 300, 0., 3.);
57  iPhi = tfile->make<TH1D>("iPhi", "Phi at incidence ", 300, -1., 1.);
58  edepS = tfile->make<TH1D>("edepS", "Energy deposit == Total (Simhit)", 4000, 0., em1);
59  edecS = tfile->make<TH1D>("edecS", "Energy deposit == ECal (Simhit)", 4000, 0., em1);
60  edhcS = tfile->make<TH1D>("edhcS", "Energy deposit == HCal (Simhit)", 4000, 0., em2);
61  edepQ = tfile->make<TH1D>("edepQ", "Energy deposit == Total (QIE)", 4000, 0., em1);
62  edecQ = tfile->make<TH1D>("edecQ", "Energy deposit == ECal (QIE)", 4000, 0., em1);
63  edhcQ = tfile->make<TH1D>("edhcQ", "Energy deposit == HCal (QIE)", 4000, 0., em2);
64  edehS = tfile->make<TH2D>("edehS", "Hcal vs Ecal (Simhit)", 100, 0., em1, 100, 0., em2);
65  edehQ = tfile->make<TH2D>("edehQ", "Hcal vs Ecal (QIE)", 100, 0., em1, 100, 0., em2);
66  latse = tfile->make<TProfile>("latse", "Lat Prof (Eta Sim)", 10, 0., 10.);
67  latqe = tfile->make<TProfile>("latqe", "Lat Prof (Eta QIE)", 10, 0., 10.);
68  latsf = tfile->make<TProfile>("latsf", "Lat Prof (Phi Sim)", 10, 0., 10.);
69  latqf = tfile->make<TProfile>("latqf", "Lat Prof (Phi QIE)", 10, 0., 10.);
70  lngs = tfile->make<TProfile>("lngs", "Long. Prof (Sim)", 20, 0., 20.);
71  lngq = tfile->make<TProfile>("lngq", "Long. Prof (QIE)", 20, 0., 20.);
72 }
73 
75 
76 //
77 // member functions
78 //
79 
80 void HcalTB04Histo::fillPrimary(double energy, double eta, double phi) {
81 #ifdef EDM_ML_DEBUG
82  edm::LogVerbatim("HcalTBSim") << "HcalTB04Histo::fillPrimary: Energy " << energy << " Eta " << eta << " Phi " << phi;
83 #endif
84  iniE->Fill(energy);
85  iEta->Fill(eta);
86  iPhi->Fill(phi);
87 }
88 
89 void HcalTB04Histo::fillEdep(double etots, double eecals, double ehcals, double etotq, double eecalq, double ehcalq) {
90 #ifdef EDM_ML_DEBUG
91  edm::LogVerbatim("HcalTBSim") << "HcalTB04Histo:::fillEdep: Simulated Total " << etots << " ECal " << eecals
92  << " HCal " << ehcals << " Digitised Total " << etotq << " ECal " << eecalq << " HCal "
93  << ehcalq;
94 #endif
95  edepS->Fill(etots);
96  edecS->Fill(eecals);
97  edhcS->Fill(ehcals);
98  edepQ->Fill(etotq);
99  edecQ->Fill(eecalq);
100  edhcQ->Fill(ehcalq);
101  edehS->Fill(eecals, ehcals);
102  edehQ->Fill(eecalq, ehcalq);
103 }
104 
105 void HcalTB04Histo::fillTrnsProf(const std::vector<double>& es1,
106  const std::vector<double>& eq1,
107  const std::vector<double>& es2,
108  const std::vector<double>& eq2) {
109 #ifdef EDM_ML_DEBUG
110  unsigned int n1 = std::min(es1.size(), eq1.size());
111  unsigned int n2 = std::min(es2.size(), eq2.size());
112  unsigned int n = std::min(n1, n2);
113  for (unsigned int i = 0; i < n; i++)
114  edm::LogVerbatim("HcalTBSim") << "HcalTB04Histo::fillTrnsProf [" << i << "] SimEta " << es1[i] << " DigEta "
115  << eq1[i] << " SimPhi " << es2[i] << " DigPhi " << eq2[i];
116 #endif
117  for (unsigned int i = 0; i < (es1.size()); i++) {
118  double tow = i + 0.5;
119  latse->Fill(tow, es1[i]);
120  }
121  for (unsigned int i = 0; i < (eq1.size()); i++) {
122  double tow = i + 0.5;
123  latqe->Fill(tow, eq1[i]);
124  }
125  for (unsigned int i = 0; i < (es2.size()); i++) {
126  double tow = i + 0.5;
127  latsf->Fill(tow, es2[i]);
128  }
129  for (unsigned int i = 0; i < (eq2.size()); i++) {
130  double tow = i + 0.5;
131  latqf->Fill(tow, eq2[i]);
132  }
133 }
134 
135 void HcalTB04Histo::fillLongProf(const std::vector<double>& es, const std::vector<double>& eq) {
136 #ifdef EDM_ML_DEBUG
137  unsigned int n = std::min(es.size(), eq.size());
138  for (unsigned int i = 0; i < n; i++)
139  edm::LogVerbatim("HcalTBSim") << "HcalTB04Histo::fillLongProf [" << i << "] Sim " << es[i] << " Dig " << eq[i];
140 #endif
141  for (unsigned int i = 0; i < (es.size()); i++) {
142  double lay = i + 0.5;
143  lngs->Fill(lay, es[i]);
144  }
145  for (unsigned int i = 0; i < (eq.size()); i++) {
146  double lay = i + 0.5;
147  lngq->Fill(lay, eq[i]);
148  }
149 }
Log< level::Info, true > LogVerbatim
void fillPrimary(double energy, double eta, double phi)
TProfile * lngq
Definition: HcalTB04Histo.h:54
void fillTrnsProf(const std::vector< double > &es1, const std::vector< double > &eq1, const std::vector< double > &es2, const std::vector< double > &eq2)
TProfile * lngs
Definition: HcalTB04Histo.h:54
T getUntrackedParameter(std::string const &, T const &) const
TProfile * latse
Definition: HcalTB04Histo.h:54
TProfile * latqf
Definition: HcalTB04Histo.h:54
Definition: tfile.py:1
HcalTB04Histo(const edm::ParameterSet &ps)
virtual ~HcalTB04Histo()
TProfile * latsf
Definition: HcalTB04Histo.h:54
TProfile * latqe
Definition: HcalTB04Histo.h:54
void fillEdep(double etots, double eecals, double ehcals, double etotq, double eecalq, double ehcalq)
void fillLongProf(const std::vector< double > &es, const std::vector< double > &eq)