CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ESOccupancyTask.cc
Go to the documentation of this file.
1 #include <memory>
2 #include <fstream>
3 #include <iostream>
4 
18 
19 #include "TStyle.h"
20 #include "TH2F.h"
21 
22 using namespace cms;
23 using namespace edm;
24 using namespace std;
25 
27 
28  rechitlabel_ = ps.getParameter<InputTag>("RecHitLabel");
29  digilabel_ = ps.getParameter<InputTag>("DigiLabel");
30  prefixME_ = ps.getUntrackedParameter<string>("prefixME", "EcalPreshower");
31 
32  dqmStore_ = Service<DQMStore>().operator->();
33  eCount_ = 0;
34 
35  //Histogram init
36  for (int i = 0; i < 2; ++i)
37  for (int j = 0; j < 2; ++j) {
38  hRecOCC_[i][j] = 0;
39  hRecNHit_[i][j] = 0;
40  hEng_[i][j] = 0;
41  hEvEng_[i][j] = 0;
42  hEnDensity_[i][i] = 0;
43  hDigiNHit_[i][j] = 0;
44 
45  hSelEng_[i][j] = 0;
46  hSelOCC_[i][j] = 0;
47  hSelEnDensity_[i][j] = 0;
48  }
49 
50  for (int i = 0; i<2; ++i)
51  hE1E2_[i]=0;
52 
53  dqmStore_->setCurrentFolder(prefixME_ + "/ESOccupancyTask");
54 
55  //Booking Histograms
56  //Notice: Change ESRenderPlugin under DQM/RenderPlugins/src if you change this histogram name.
57  char histo[200];
58  for (int i=0 ; i<2; ++i)
59  for (int j=0 ; j<2; ++j) {
60  int iz = (i==0)? 1:-1;
61  sprintf(histo, "ES RecHit 2D Occupancy Z %d P %d", iz, j+1);
62  hRecOCC_[i][j] = dqmStore_->book2D(histo, histo, 40, 0.5, 40.5, 40, 0.5, 40.5);
63  hRecOCC_[i][j]->setAxisTitle("Si X", 1);
64  hRecOCC_[i][j]->setAxisTitle("Si Y", 2);
65 
66  //Bin 40,40 is used to save eumber of event for scaling.
67  sprintf(histo, "ES Energy Density Z %d P %d", iz, j+1);
68  hEnDensity_[i][j] = dqmStore_->book2D(histo, histo, 40, 0.5, 40.5, 40, 0.5, 40.5);
69  hEnDensity_[i][j]->setAxisTitle("Si X", 1);
70  hEnDensity_[i][j]->setAxisTitle("Si Y", 2);
71 
72  sprintf(histo, "ES Num of RecHits Z %d P %d", iz, j+1);
73  hRecNHit_[i][j] = dqmStore_->book1DD(histo, histo, 60, 0, 1920);
74  hRecNHit_[i][j]->setAxisTitle("# of RecHits", 1);
75  hRecNHit_[i][j]->setAxisTitle("Num of Events", 2);
76 
77  sprintf(histo, "ES Num of Good RecHits Z %d P %d", iz, j+1);
78  hDigiNHit_[i][j] = dqmStore_->book1DD(histo, histo, 60, 0, 1920);
79  hDigiNHit_[i][j]->setAxisTitle("# of good RecHits", 1);
80  hDigiNHit_[i][j]->setAxisTitle("Num of Events", 2);
81 
82  sprintf(histo, "ES RecHit Energy Z %d P %d", iz, j+1);
83  hEng_[i][j] = dqmStore_->book1DD(histo, histo, 50, 0, 0.001);
84  hEng_[i][j]->setAxisTitle("RecHit Energy", 1);
85  hEng_[i][j]->setAxisTitle("Num of ReHits", 2);
86 
87  sprintf(histo, "ES Event Energy Z %d P %d", iz, j+1);
88  hEvEng_[i][j] = dqmStore_->book1DD(histo, histo, 50, 0, 0.1);
89  hEvEng_[i][j]->setAxisTitle("Event Energy", 1);
90  hEvEng_[i][j]->setAxisTitle("Num of Events", 2);
91 
92  // histograms with selected hits
93  sprintf(histo, "ES RecHit Energy with selected hits Z %d P %d", iz, j+1);
94  hSelEng_[i][j] = dqmStore_->book1DD(histo, histo, 50, 0, 0.001);
95  hSelEng_[i][j]->setAxisTitle("RecHit Energy", 1);
96  hSelEng_[i][j]->setAxisTitle("Num of ReHits", 2);
97 
98  sprintf(histo, "ES Occupancy with selected hits Z %d P %d", iz, j+1);
99  hSelOCC_[i][j] = dqmStore_->book2D(histo, histo, 40, 0.5, 40.5, 40, 0.5, 40.5);
100  hSelOCC_[i][j]->setAxisTitle("Si X", 1);
101  hSelOCC_[i][j]->setAxisTitle("Si Y", 2);
102 
103  sprintf(histo, "ES Energy Density with selected hits Z %d P %d", iz, j+1);
104  hSelEnDensity_[i][j] = dqmStore_->book2D(histo, histo, 40, 0.5, 40.5, 40, 0.5, 40.5);
105  hSelEnDensity_[i][j]->setAxisTitle("Si X", 1);
106  hSelEnDensity_[i][j]->setAxisTitle("Si Y", 2);
107  }
108 
109  hE1E2_[0] = dqmStore_->book2D("ES+ EP1 vs EP2", "ES+ EP1 vs EP2", 50, 0, 0.1, 50, 0, 0.1);
110  hE1E2_[1] = dqmStore_->book2D("ES- EP1 vs EP2", "ES- EP1 vs EP2", 50, 0, 0.1, 50, 0, 0.1);
111 
112 }
113 
115 }
116 
118 }
119 
121 }
122 
124 
125  runNum_ = e.id().run();
126  eCount_++;
127 
128  // RecHits
129  int zside, plane, ix, iy, strip;
130  int sum_RecHits[2][2], sum_DigiHits[2][2], sum_SelHits[2][2];
131  float sum_Energy[2][2];
132 
133  for (int i = 0; i < 2; ++i)
134  for (int j = 0; j < 2; ++j) {
135  sum_RecHits[i][j] = 0;
136  sum_DigiHits[i][j] = 0;
137  sum_Energy[i][j] = 0;
138  sum_SelHits[i][j] = 0;
139  }
140 
142  if ( e.getByLabel(rechitlabel_, ESRecHit) ) {
143 
144  for (ESRecHitCollection::const_iterator hitItr = ESRecHit->begin(); hitItr != ESRecHit->end(); ++hitItr) {
145 
146  ESDetId id = ESDetId(hitItr->id());
147 
148  zside = id.zside();
149  plane = id.plane();
150  ix = id.six();
151  iy = id.siy();
152  strip = id.strip();
153 
154  int i = (zside==1)? 0:1;
155  int j = plane-1;
156 
157  sum_RecHits[i][j]++;
158  sum_Energy[i][j] += hitItr->energy();
159  hRecOCC_[i][j]->Fill(ix, iy);
160  if (hitItr->energy() != 0) {
161  hEng_[i][j]->Fill(hitItr->energy());
162  hEnDensity_[i][j]->Fill(ix, iy, hitItr->energy());
163 
164  if (hitItr->recoFlag()==14 || hitItr->recoFlag()==1 || (hitItr->recoFlag()<=10 && hitItr->recoFlag()>=5)) continue;
165  hSelEng_[i][j]->Fill(hitItr->energy());
166  hSelEnDensity_[i][j]->Fill(ix, iy, hitItr->energy());
167  hSelOCC_[i][j]->Fill(ix, iy);
168  }
169 
170  }
171  } else {
172  LogWarning("ESOccupancyTask") << rechitlabel_ << " not available";
173  }
174 
175  //Fill histograms after a event
176  for (int i = 0; i < 2; ++i)
177  for (int j = 0; j < 2; ++j) {
178 
179  hRecNHit_[i][j]->Fill(sum_RecHits[i][j]);
180  hDigiNHit_[i][j]->Fill(sum_DigiHits[i][j]);
181  hEvEng_[i][j]->Fill(sum_Energy[i][j]);
182 
183  //Save eCount_ for Scaling
184  hRecOCC_[i][j]->setBinContent(40,40,eCount_);
185  hEnDensity_[i][j]->setBinContent(40,40,eCount_);
186 
187  hSelOCC_[i][j]->setBinContent(40,40,eCount_);
188  hSelEnDensity_[i][j]->setBinContent(40,40,eCount_);
189  }
190 
191  hE1E2_[0]->Fill(sum_Energy[0][0], sum_Energy[0][1]);
192  hE1E2_[1]->Fill(sum_Energy[1][0], sum_Energy[1][1]);
193 
194 }
195 
196 //define this as a plug-in
RunNumber_t run() const
Definition: EventID.h:42
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
virtual ~ESOccupancyTask()
void strip(std::string &input, const std::string &blanks=" \n\t")
Definition: stringTools.cc:16
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
std::vector< T >::const_iterator const_iterator
tuple histo
Definition: trackerHits.py:12
int j
Definition: DBlmapReader.cc:9
virtual void endJob(void)
int zside() const
Definition: ESDetId.h:33
virtual void beginJob(void)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:359
ESOccupancyTask(const edm::ParameterSet &ps)
virtual void analyze(const edm::Event &, const edm::EventSetup &)
edm::EventID id() const
Definition: EventBase.h:56