CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 // $Id: HcalTB04Histo.cc,v 1.6 2013/05/28 17:42:14 gartung Exp $
12 //
13 
14 // system include files
15 #include <iostream>
16 #include <cmath>
17 
18 // user include files
23 
24 //
25 // constructors and destructor
27  iniE(0), iEta(0), iPhi(0), edepS(0), edecS(0), edhcS(0), edepQ(0),
28  edecQ(0), edhcQ(0), edehS(0), edehQ(0), latse(0), latqe(0), latsf(0),
29  latqf(0), lngs(0), lngq(0) {
30 
31  verbose = ps.getUntrackedParameter<bool>("Verbose", false);
32  double em1 = ps.getUntrackedParameter<double>("ETtotMax", 400.);
33  double em2 = ps.getUntrackedParameter<double>("EHCalMax", 4.0);
34 
35  // Book histograms
37 
38  if ( !tfile.isAvailable() )
39  throw cms::Exception("BadConfig") << "TFileService unavailable: "
40  << "please add it to config file";
41  iniE = tfile->make<TH1D>("iniE", "Incident Energy (GeV)", 4000, 0., em1);
42  iEta = tfile->make<TH1D>("iEta", "Eta at incidence ", 300, 0., 3.);
43  iPhi = tfile->make<TH1D>("iPhi", "Phi at incidence ", 300, -1., 1.);
44  edepS= tfile->make<TH1D>("edepS", "Energy deposit == Total (Simhit)",4000, 0., em1);
45  edecS= tfile->make<TH1D>("edecS", "Energy deposit == ECal (Simhit)",4000, 0., em1);
46  edhcS= tfile->make<TH1D>("edhcS", "Energy deposit == HCal (Simhit)",4000, 0., em2);
47  edepQ= tfile->make<TH1D>("edepQ", "Energy deposit == Total (QIE)", 4000, 0., em1);
48  edecQ= tfile->make<TH1D>("edecQ", "Energy deposit == ECal (QIE)", 4000, 0., em1);
49  edhcQ= tfile->make<TH1D>("edhcQ", "Energy deposit == HCal (QIE)", 4000, 0., em2);
50  edehS= tfile->make<TH2D>("edehS", "Hcal vs Ecal (Simhit)", 100,0.,em1, 100, 0.,em2);
51  edehQ= tfile->make<TH2D>("edehQ", "Hcal vs Ecal (QIE)", 100,0.,em1, 100, 0.,em2);
52  latse= tfile->make<TProfile>("latse","Lat Prof (Eta Sim)",10,0.,10.);
53  latqe= tfile->make<TProfile>("latqe","Lat Prof (Eta QIE)",10,0.,10.);
54  latsf= tfile->make<TProfile>("latsf","Lat Prof (Phi Sim)",10,0.,10.);
55  latqf= tfile->make<TProfile>("latqf","Lat Prof (Phi QIE)",10,0.,10.);
56  lngs = tfile->make<TProfile>("lngs", "Long. Prof (Sim)", 20,0.,20.);
57  lngq = tfile->make<TProfile>("lngq", "Long. Prof (QIE)", 20,0.,20.);
58 }
59 
61 
62 //
63 // member functions
64 //
65 
66 void HcalTB04Histo::fillPrimary(double energy, double eta, double phi) {
67 
68  LogDebug("HcalTBSim") << "HcalTB04Histo::fillPrimary: Energy "
69  << energy << " Eta " << eta << " Phi " << phi;
70  iniE->Fill(energy);
71  iEta->Fill(eta);
72  iPhi->Fill(phi);
73 }
74 
75 void HcalTB04Histo::fillEdep(double etots, double eecals, double ehcals,
76  double etotq, double eecalq, double ehcalq) {
77 
78  LogDebug("HcalTBSim") << "HcalTB04Histo:::fillEdep: Simulated Total "
79  << etots << " ECal " << eecals << " HCal " << ehcals
80  << " Digitised Total " << etotq << " ECal " << eecalq
81  << " HCal " << ehcalq;
82  edepS->Fill(etots);
83  edecS->Fill(eecals);
84  edhcS->Fill(ehcals);
85  edepQ->Fill(etotq);
86  edecQ->Fill(eecalq);
87  edhcQ->Fill(ehcalq);
88  edehS->Fill(eecals, ehcals);
89  edehQ->Fill(eecalq, ehcalq);
90 }
91 
92 void HcalTB04Histo::fillTrnsProf(const std::vector<double>& es1,
93  const std::vector<double>& eq1,
94  const std::vector<double>& es2,
95  const std::vector<double>& eq2) {
96 
97  unsigned int n1 = std::min(es1.size(),eq1.size());
98  unsigned int n2 = std::min(es2.size(),eq2.size());
99  unsigned int n = std::min(n1,n2);
100  for (unsigned int i = 0; i < n; i++)
101  LogDebug("HcalTBSim") << "HcalTB04Histo::fillTrnsProf [" << i
102  << "] SimEta " << es1[i] << " DigEta " << eq1[i]
103  << " SimPhi " << es2[i] << " DigPhi " << eq2[i];
104  for (unsigned int i=0; i<(es1.size()); i++) {
105  double tow = i+0.5;
106  latse->Fill(tow, es1[i]);
107  }
108  for (unsigned int i=0; i<(eq1.size()); i++) {
109  double tow = i+0.5;
110  latqe->Fill(tow, eq1[i]);
111  }
112  for (unsigned int i=0; i<(es2.size()); i++) {
113  double tow = i+0.5;
114  latsf->Fill(tow, es2[i]);
115  }
116  for (unsigned int i=0; i<(eq2.size()); i++) {
117  double tow = i+0.5;
118  latqf->Fill(tow, eq2[i]);
119  }
120 }
121 
122 void HcalTB04Histo::fillLongProf(const std::vector<double>& es,
123  const std::vector<double>& eq) {
124 
125  unsigned int n = std::min(es.size(),eq.size());
126  for (unsigned int i = 0; i < n; i++)
127  LogDebug("HcalTBSim") << "HcalTB04Histo::fillLongProf [" << i
128  << "] Sim " << es[i] << " Dig " << eq[i];
129  for (unsigned int i=0; i<(es.size()); i++) {
130  double lay = i+0.5;
131  lngs->Fill(lay, es[i]);
132  }
133  for (unsigned int i=0; i<(eq.size()); i++) {
134  double lay = i+0.5;
135  lngq->Fill(lay, eq[i]);
136  }
137 }
#define LogDebug(id)
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
void fillPrimary(double energy, double eta, double phi)
TProfile * lngq
Definition: HcalTB04Histo.h:57
void fillTrnsProf(const std::vector< double > &es1, const std::vector< double > &eq1, const std::vector< double > &es2, const std::vector< double > &eq2)
#define min(a, b)
Definition: mlp_lapack.h:161
T eta() const
TProfile * lngs
Definition: HcalTB04Histo.h:57
TProfile * latse
Definition: HcalTB04Histo.h:57
TProfile * latqf
Definition: HcalTB04Histo.h:57
bool isAvailable() const
Definition: Service.h:47
HcalTB04Histo(const edm::ParameterSet &ps)
virtual ~HcalTB04Histo()
TProfile * latsf
Definition: HcalTB04Histo.h:57
TProfile * latqe
Definition: HcalTB04Histo.h:57
T * make() const
make new ROOT object
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)
Definition: DDAxes.h:10