CMS 3D CMS Logo

CaloTowersAnalyzer.cc
Go to the documentation of this file.
5 
7 
8  tok_towers_ = consumes<CaloTowerCollection>(conf.getUntrackedParameter<edm::InputTag>("CaloTowerCollectionLabel"));
9  // DQM ROOT output
10 
11  outputFile_ = conf.getUntrackedParameter<std::string>("outputFile", "myfile.root");
12 
13  hcalselector_ = conf.getUntrackedParameter<std::string>("hcalselector", "all");
14 
15  useAllHistos_ = conf.getUntrackedParameter<bool>("useAllHistos", false);
16 }
17 
18  void CaloTowersAnalyzer::bookHistograms(DQMStore::IBooker & ibooker, edm::Run const & /* iRun*/, edm::EventSetup const & /* iSetup */)
19 {
20 
21  etaMin[0] = 0.;
22  etaMax[0] = 1.4;
23  etaMin[1] = 1.4;
24  etaMax[1] = 2.9;
25  etaMin[2] = 2.9;
26  etaMax[2] = 5.2;
27 
28  isub = 0;
29  if(hcalselector_ == "HB") isub = 1;
30  if(hcalselector_ == "HE") isub = 2;
31  if(hcalselector_ == "HF") isub = 3;
32 
33  if ( outputFile_.size() != 0 ) {
34  edm::LogInfo("OutputInfo") << " Hcal RecHit Task histograms will be saved to '" << outputFile_.c_str() << "'";
35  } else {
36  edm::LogInfo("OutputInfo") << " Hcal RecHit Task histograms will NOT be saved";
37  }
38 
39  Char_t histo[100];
40 
41 
42  ibooker.setCurrentFolder("CaloTowersD/CaloTowersTask") ;
43 
44 
45 
46  //These two histos are not drawn by our macros, but they are used
47  //in the EndJob for norms and such so I am leaving them alone for now
48  //-------------------------------------------------------------------------------------------
49  sprintf (histo, "Ntowers_per_event_vs_ieta" );
50  Ntowers_vs_ieta = ibooker.book1D(histo, histo, 82, -41., 41.);
51 
52  sprintf (histo, "CaloTowersTask_map_Nentries" );
53  mapEnergy_N = ibooker.book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
54  //-------------------------------------------------------------------------------------------
55 
56  //These the single pion scan histos
57  //-------------------------------------------------------------------------------------------
58  //The first three are not used
59  if (useAllHistos_){
60  sprintf (histo, "emean_vs_ieta_E" );
61  emean_vs_ieta_E = ibooker.bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000.);
62  sprintf (histo, "emean_vs_ieta_H" );
63  emean_vs_ieta_H = ibooker.bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000.);
64  sprintf (histo, "emean_vs_ieta_EH" );
65  emean_vs_ieta_EH = ibooker.bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000.);
66  }
67  //These are drawn
68  sprintf (histo, "emean_vs_ieta_E1" );
69  emean_vs_ieta_E1 = ibooker.bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000.);
70  sprintf (histo, "emean_vs_ieta_H1" );
71  emean_vs_ieta_H1 = ibooker.bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000.);
72  sprintf (histo, "emean_vs_ieta_EH1" );
73  emean_vs_ieta_EH1 = ibooker.bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000.);
74  //-------------------------------------------------------------------------------------------
75 
76  //Map energy histos are not drawn
77  if (useAllHistos_){
78  sprintf (histo, "CaloTowersTask_map_energy_E" );
79  mapEnergy_E = ibooker.book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
80  sprintf (histo, "CaloTowersTask_map_energy_H");
81  mapEnergy_H = ibooker.book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
82  sprintf (histo, "CaloTowersTask_map_energy_EH" );
83  mapEnergy_EH = ibooker.book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
84  }
85 
86  //All ECAL cell histos are used
87  // XXX: ECAL 0-25 [0-26, 26 bins] HCAL 0-4 [0-5, 5 bins]
88  sprintf (histo, "number_of_bad_cells_Ecal_EB");
89  numBadCellsEcal_EB = ibooker.book1D(histo, histo, 26, 0, 26);
90  sprintf (histo, "number_of_bad_cells_Ecal_EE");
91  numBadCellsEcal_EE = ibooker.book1D(histo, histo, 26, 0, 26);
92  sprintf (histo, "number_of_recovered_cells_Ecal_EB");
93  numRcvCellsEcal_EB = ibooker.book1D(histo, histo, 26, 0, 26);
94  sprintf (histo, "number_of_recovered_cells_Ecal_EE");
95  numRcvCellsEcal_EE = ibooker.book1D(histo, histo, 26, 0, 26);
96  sprintf (histo, "number_of_problematic_cells_Ecal_EB");
97  numPrbCellsEcal_EB = ibooker.book1D(histo, histo, 26, 0, 26);
98  sprintf (histo, "number_of_problematic_cells_Ecal_EE");
99  numPrbCellsEcal_EE = ibooker.book1D(histo, histo, 26, 0, 26);
100 
101  //Occupancy vs. ieta is drawn, occupancy map is needed to draw it
102  sprintf (histo, "CaloTowersTask_map_occupancy" );
103  occupancy_map = ibooker.book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
104 
105  sprintf (histo, "CaloTowersTask_occupancy_vs_ieta" );
106  occupancy_vs_ieta = ibooker.book1D(histo, histo, 82, -41, 41);
107 
108  if( isub == 1 || isub == 0) {
109  //All cell histos are used
110  sprintf (histo, "number_of_bad_cells_Hcal_HB");
111  numBadCellsHcal_HB = ibooker.book1D(histo, histo, 5, 0, 5);
112  sprintf (histo, "number_of_recovered_cells_Hcal_HB");
113  numRcvCellsHcal_HB = ibooker.book1D(histo, histo, 5, 0, 5);
114  sprintf (histo, "number_of_problematic_cells_Hcal_HB");
115  numPrbCellsHcal_HB = ibooker.book1D(histo, histo, 5, 0, 5);
116 
117  //These are the five oldest CaloTower histos used: NTowers, E in HCAL/ECAL, MET and SET
118  //-------------------------------------------------------------------------------------------
119  sprintf (histo, "CaloTowersTask_energy_HCAL_HB" ) ;
120  meEnergyHcal_HB = ibooker.book1D(histo, histo, 4100, -200, 8000);
121 
122  sprintf (histo, "CaloTowersTask_energy_ECAL_HB" ) ;
123  meEnergyEcal_HB = ibooker.book1D(histo, histo, 3100, -200, 6000);
124 
125  sprintf (histo, "CaloTowersTask_number_of_fired_towers_HB" ) ;
126  meNumFiredTowers_HB = ibooker.book1D(histo, histo, 1000, 0, 2000);
127 
128  sprintf (histo, "CaloTowersTask_MET_HB" ) ;
129  MET_HB = ibooker.book1D(histo, histo, 3000, 0. , 3000. ) ;
130 
131  sprintf (histo, "CaloTowersTask_SET_HB" ) ;
132  SET_HB = ibooker.book1D(histo, histo, 8000, 0. , 8000. ) ;
133  //-------------------------------------------------------------------------------------------
134 
135  //Timing histos and profiles -- all six are necessary
136  //-------------------------------------------------------------------------------------------
137  sprintf (histo, "CaloTowersTask_EM_Timing_HB" ) ;
138  emTiming_HB = ibooker.book1D(histo, histo, 110, -120., 100. ) ;
139 
140  sprintf (histo, "CaloTowersTask_HAD_Timing_HB" ) ;
141  hadTiming_HB = ibooker.book1D(histo, histo, 70, -48., 92. ) ;
142 
143  //Energy-Timing histos are divided into low, medium and high to reduce memory usage
144  //EM
145  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_Low_HB" ) ;
146  emEnergyTiming_Low_HB = ibooker.book2D(histo, histo, 40, 0. , 40., 110, -120., 100. ) ;
147 
148  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_HB" ) ;
149  emEnergyTiming_HB = ibooker.book2D(histo, histo, 200, 0. , 400., 110, -120., 100. ) ;
150 
151  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_High_HB" ) ;
152  emEnergyTiming_High_HB = ibooker.book2D(histo, histo, 200, 0. , 3000., 110, -120., 100. ) ;
153 
154  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_profile_Low_HB" ) ;
155  emEnergyTiming_profile_Low_HB = ibooker.bookProfile(histo, histo, 40, 0. , 40., 110, -120., 100. ) ;
156 
157  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_profile_HB" ) ;
158  emEnergyTiming_profile_HB = ibooker.bookProfile(histo, histo, 200, 0. , 400., 110, -120., 100. ) ;
159 
160  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_profile_High_HB" ) ;
161  emEnergyTiming_profile_High_HB = ibooker.bookProfile(histo, histo, 200, 0. , 3000., 110, -120., 100. ) ;
162 
163  //HAD
164  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_Low_HB" ) ;
165  hadEnergyTiming_Low_HB = ibooker.book2D(histo, histo, 40, 0. , 40., 70, -48., 92. ) ;
166 
167  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_HB" ) ;
168  hadEnergyTiming_HB = ibooker.book2D(histo, histo, 100, 0. , 200., 70, -48., 92. ) ;
169 
170  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_High_HB" ) ;
171  hadEnergyTiming_High_HB = ibooker.book2D(histo, histo, 300, 0. , 3000., 70, -48., 92. ) ;
172 
173  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_Low_HB" ) ;
174  hadEnergyTiming_profile_Low_HB = ibooker.bookProfile(histo, histo, 40, 0. , 40., 70, -48., 92. ) ;
175 
176  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_HB" ) ;
177  hadEnergyTiming_profile_HB = ibooker.bookProfile(histo, histo, 100, 0. , 200., 70, -48., 92. ) ;
178 
179  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_High_HB" ) ;
180  hadEnergyTiming_profile_High_HB = ibooker.bookProfile(histo, histo, 300, 0. , 3000., 70, -48., 92. ) ;
181  //-------------------------------------------------------------------------------------------
182 
183  //Everything else is not drawn
184  if (useAllHistos_){
185  sprintf (histo, "CaloTowersTask_sum_of_energy_HCAL_vs_ECAL_HB") ;
186  meEnergyHcalvsEcal_HB = ibooker.book2D(histo, histo, 500, 0., 500., 500, 0., 500.);
187 
188  sprintf (histo, "CaloTowersTask_energy_OUTER_HB" ) ;
189  meEnergyHO_HB = ibooker.book1D(histo, histo, 1640, -200, 8000);
190 
191  sprintf (histo, "CaloTowersTask_energy_of_ECAL_component_of_tower_HB" ) ;
192  meEnergyEcalTower_HB = ibooker.book1D(histo, histo, 440, -200, 2000);
193 
194  sprintf (histo, "CaloTowersTask_energy_of_HCAL_component_of_tower_HB" ) ;
195  meEnergyHcalTower_HB = ibooker.book1D(histo, histo, 440 , -200 , 2000);
196 
197  sprintf (histo, "CaloTowersTask_energy_HcalPlusEcalPlusHO_HB" ) ;
198  meTotEnergy_HB = ibooker.book1D(histo, histo,400, 0., 2000.) ;
199 
200  sprintf (histo, "CaloTowersTask_map_energy_HB" );
201  mapEnergy_HB = ibooker.book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
202  sprintf (histo, "CaloTowersTask_map_energy_HCAL_HB");
203  mapEnergyHcal_HB = ibooker.book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
204  sprintf (histo, "CaloTowersTask_map_energy_ECAL_HB" );
205  mapEnergyEcal_HB = ibooker.book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
206 
207  sprintf (histo, "CaloTowersTask_phi_MET_HB" ) ;
208  phiMET_HB = ibooker.book1D(histo, histo, 72, -3.1415926535898, 3.1415926535898 ) ;
209  }
210  }
211 
212  if( isub == 2 || isub == 0) {
213  //All cell histos are used
214  sprintf (histo, "number_of_bad_cells_Hcal_HE");
215  numBadCellsHcal_HE = ibooker.book1D(histo, histo, 5, 0, 5);
216  sprintf (histo, "number_of_recovered_cells_Hcal_HE");
217  numRcvCellsHcal_HE = ibooker.book1D(histo, histo, 5, 0, 5);
218  sprintf (histo, "number_of_problematic_cells_Hcal_HE");
219  numPrbCellsHcal_HE = ibooker.book1D(histo, histo, 5, 0, 5);
220 
221  //These are the five oldest CaloTower histos used: NTowers, E in HCAL/ECAL, MET and SET
222  //-------------------------------------------------------------------------------------------
223  sprintf (histo, "CaloTowersTask_energy_HCAL_HE" ) ;
224  meEnergyHcal_HE = ibooker.book1D(histo, histo, 1240, -200, 6000);
225 
226  sprintf (histo, "CaloTowersTask_energy_ECAL_HE" ) ;
227  meEnergyEcal_HE = ibooker.book1D(histo, histo, 1240, -200, 6000);
228 
229  sprintf (histo, "CaloTowersTask_number_of_fired_towers_HE" ) ;
230  meNumFiredTowers_HE = ibooker.book1D(histo, histo, 1000, 0, 2000);
231 
232  sprintf (histo, "CaloTowersTask_MET_HE" ) ;
233  MET_HE = ibooker.book1D(histo, histo, 1000, 0. , 1000. ) ;
234 
235  sprintf (histo, "CaloTowersTask_SET_HE" ) ;
236  SET_HE = ibooker.book1D(histo, histo, 2000, 0. , 2000. ) ;
237  //-------------------------------------------------------------------------------------------
238 
239  //Timing histos and profiles -- all six are necessary
240  //-------------------------------------------------------------------------------------------
241  sprintf (histo, "CaloTowersTask_EM_Timing_HE" ) ;
242  emTiming_HE = ibooker.book1D(histo, histo, 110, -120., 100. ) ;
243 
244  sprintf (histo, "CaloTowersTask_HAD_Timing_HE" ) ;
245  hadTiming_HE = ibooker.book1D(histo, histo, 70, -48., 92. ) ;
246 
247  //Energy-Timing histos are divided into low and normal to reduce memory usage
248  //EM
249  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_Low_HE" ) ;
250  emEnergyTiming_Low_HE = ibooker.book2D(histo, histo, 160, 0. , 160., 110, -120., 100. ) ;
251 
252  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_HE" ) ;
253  emEnergyTiming_HE = ibooker.book2D(histo, histo, 200, 0. , 800., 110, -120., 100. ) ;
254 
255  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_profile_Low_HE" ) ;
256  emEnergyTiming_profile_Low_HE = ibooker.bookProfile(histo, histo, 160, 0. , 160., 110, -120., 100. ) ;
257 
258  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_profile_HE" ) ;
259  emEnergyTiming_profile_HE = ibooker.bookProfile(histo, histo, 200, 0. , 800., 110, -120., 100. ) ;
260 
261  //HAD
262  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_Low_HE" ) ;
263  hadEnergyTiming_Low_HE = ibooker.book2D(histo, histo, 160, 0. , 160., 70, -48., 92. ) ;
264 
265  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_HE" ) ;
266  hadEnergyTiming_HE = ibooker.book2D(histo, histo, 200, 0. , 800., 70, -48., 92. ) ;
267 
268  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_Low_HE" ) ;
269  hadEnergyTiming_profile_Low_HE = ibooker.bookProfile(histo, histo, 160, 0. , 160., 70, -48., 92. ) ;
270 
271  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_HE" ) ;
272  hadEnergyTiming_profile_HE = ibooker.bookProfile(histo, histo, 200, 0. , 800., 70, -48., 92. ) ;
273  //-------------------------------------------------------------------------------------------
274 
275  //Everything else is not drawn
276  if (useAllHistos_){
277  sprintf (histo, "CaloTowersTask_sum_of_energy_HCAL_vs_ECAL_HE") ;
278  meEnergyHcalvsEcal_HE = ibooker.book2D(histo, histo, 500, 0., 500., 500, 0., 500.);
279 
280  sprintf (histo, "CaloTowersTask_energy_OUTER_HE" ) ;
281  meEnergyHO_HE = ibooker.book1D(histo, histo, 440, -200, 2000);
282 
283  sprintf (histo, "CaloTowersTask_energy_of_ECAL_component_of_tower_HE" ) ;
284  meEnergyEcalTower_HE = ibooker.book1D(histo, histo, 1100, -200, 2000);
285 
286  sprintf (histo, "CaloTowersTask_energy_of_HCAL_component_of_tower_HE" ) ;
287  meEnergyHcalTower_HE = ibooker.book1D(histo, histo, 1100 , -200 , 2000);
288 
289  sprintf (histo, "CaloTowersTask_energy_HcalPlusEcalPlusHO_HE" ) ;
290  meTotEnergy_HE = ibooker.book1D(histo, histo,400, 0., 2000.) ;
291 
292  sprintf (histo, "CaloTowersTask_map_energy_HE" );
293  mapEnergy_HE = ibooker.book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
294  sprintf (histo, "CaloTowersTask_map_energy_HCAL_HE");
295  mapEnergyHcal_HE = ibooker.book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
296  sprintf (histo, "CaloTowersTask_map_energy_ECAL_HE" );
297  mapEnergyEcal_HE = ibooker.book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
298 
299  sprintf (histo, "CaloTowersTask_phi_MET_HE" ) ;
300  phiMET_HE = ibooker.book1D(histo, histo, 72, -3.1415926535898, 3.1415926535898 ) ;
301  }
302  }
303 
304 
305  if( isub == 3 || isub == 0) {
306  //All cell histos are used
307  sprintf (histo, "number_of_bad_cells_Hcal_HF");
308  numBadCellsHcal_HF = ibooker.book1D(histo, histo, 5, 0, 5);
309  sprintf (histo, "number_of_recovered_cells_Hcal_HF");
310  numRcvCellsHcal_HF = ibooker.book1D(histo, histo, 5, 0, 5);
311  sprintf (histo, "number_of_problematic_cells_Hcal_HF");
312  numPrbCellsHcal_HF = ibooker.book1D(histo, histo, 5, 0, 5);
313 
314  //These are the five oldest CaloTower histos used: NTowers, E in HCAL/ECAL, MET and SET
315  //-------------------------------------------------------------------------------------------
316  sprintf (histo, "CaloTowersTask_energy_HCAL_HF" ) ;
317  meEnergyHcal_HF = ibooker.book1D(histo, histo, 4040, -200, 20000);
318 
319  sprintf (histo, "CaloTowersTask_energy_ECAL_HF" ) ;
320  meEnergyEcal_HF = ibooker.book1D(histo, histo, 2440, -200, 12000);
321 
322  sprintf (histo, "CaloTowersTask_number_of_fired_towers_HF" ) ;
323  meNumFiredTowers_HF = ibooker.book1D(histo, histo, 1000, 0, 2000);
324 
325  sprintf (histo, "CaloTowersTask_MET_HF" ) ;
326  MET_HF = ibooker.book1D(histo, histo, 500, 0. , 500. ) ;
327 
328  sprintf (histo, "CaloTowersTask_SET_HF" ) ;
329  SET_HF = ibooker.book1D(histo, histo, 2000, 0. , 2000. ) ;
330  //-------------------------------------------------------------------------------------------
331 
332  //Timing histos and profiles -- all six are necessary
333  //-------------------------------------------------------------------------------------------
334  sprintf (histo, "CaloTowersTask_EM_Timing_HF" ) ;
335  emTiming_HF = ibooker.book1D(histo, histo, 110, -120., 100. ) ;
336 
337  sprintf (histo, "CaloTowersTask_HAD_Timing_HF" ) ;
338  hadTiming_HF = ibooker.book1D(histo, histo, 70, -48., 92. ) ;
339 
340  //EM
341  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_HF" ) ;
342  emEnergyTiming_HF = ibooker.book2D(histo, histo, 150, 0. , 300., 110, -120., 100. ) ;
343 
344  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_profile_HF" ) ;
345  emEnergyTiming_profile_HF = ibooker.bookProfile(histo, histo, 150, 0. , 300., 110, -120., 100. ) ;
346 
347  //HAD (requires two different sets of histograms to lower RAM usage)
348  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_Low_HF" ) ;
349  hadEnergyTiming_Low_HF = ibooker.book2D(histo, histo, 40, 0. , 40., 70, -48., 92. ) ;
350 
351  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_HF" ) ;
352  hadEnergyTiming_HF = ibooker.book2D(histo, histo, 200, 0. , 600., 70, -48., 92. ) ;
353 
354  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_Low_HF" ) ;
355  hadEnergyTiming_profile_Low_HF = ibooker.bookProfile(histo, histo, 40, 0. , 40., 70, -48., 92. ) ;
356 
357  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_HF" ) ;
358  hadEnergyTiming_profile_HF = ibooker.bookProfile(histo, histo, 200, 0. , 600., 70, -48., 92. ) ;
359  //-------------------------------------------------------------------------------------------
360 
361  //Everything else is not drawn
362  if (useAllHistos_){
363  sprintf (histo, "CaloTowersTask_sum_of_energy_HCAL_vs_ECAL_HF") ;
364  meEnergyHcalvsEcal_HF = ibooker.book2D(histo, histo, 500, 0., 500., 500, 0., 500.);
365 
366  sprintf (histo, "CaloTowersTask_energy_OUTER_HF" ) ;
367  meEnergyHO_HF = ibooker.book1D(histo, histo, 440, -200, 2000);
368 
369  sprintf (histo, "CaloTowersTask_energy_of_ECAL_component_of_tower_HF" ) ;
370  meEnergyEcalTower_HF = ibooker.book1D(histo, histo, 440, -200, 2000);
371 
372  sprintf (histo, "CaloTowersTask_energy_of_HCAL_component_of_tower_HF" ) ;
373  meEnergyHcalTower_HF = ibooker.book1D(histo, histo, 440 , -200 , 2000);
374 
375  sprintf (histo, "CaloTowersTask_energy_HcalPlusEcalPlusHO_HF" ) ;
376  meTotEnergy_HF = ibooker.book1D(histo, histo, 400, 0., 2000.) ;
377 
378  sprintf (histo, "CaloTowersTask_map_energy_HF" );
379  mapEnergy_HF = ibooker.book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
380  sprintf (histo, "CaloTowersTask_map_energy_HCAL_HF");
381  mapEnergyHcal_HF = ibooker.book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
382  sprintf (histo, "CaloTowersTask_map_energy_ECAL_HF" );
383  mapEnergyEcal_HF = ibooker.book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
384 
385  sprintf (histo, "CaloTowersTask_phi_MET_HF" ) ;
386  phiMET_HF = ibooker.book1D(histo, histo, 72, -3.1415926535898, 3.1415926535898 ) ;
387  }
388  }
389 
390 }
391 
392 
394 
395 }
396 
398 }
399 
401 
403 
404  nevent++;
405 
407  event.getByToken(tok_towers_,towers);
409 
410  double met;
411  double phimet;
412 
413  // ieta scan
414  //double partR = 0.3;
415  //double Rmin = 9999.;
416  //double Econe = 0.;
417  //double Hcone = 0.;
418  //double Ee1 = 0.;
419  //double Eh1 = 0.;
420  double ieta_MC = 9999;
421  double iphi_MC = 9999;
422 
423  // HB
424  double sumEnergyHcal_HB = 0.;
425  double sumEnergyEcal_HB = 0.;
426  double sumEnergyHO_HB = 0.;
427  Int_t numFiredTowers_HB = 0;
428  double metx_HB = 0.;
429  double mety_HB = 0.;
430  double metz_HB = 0.;
431  double sEt_HB = 0.;
432  // HE
433  double sumEnergyHcal_HE = 0.;
434  double sumEnergyEcal_HE = 0.;
435  double sumEnergyHO_HE = 0.;
436  Int_t numFiredTowers_HE = 0;
437  double metx_HE = 0.;
438  double mety_HE = 0.;
439  double metz_HE = 0.;
440  double sEt_HE = 0.;
441  // HF
442  double sumEnergyHcal_HF = 0.;
443  double sumEnergyEcal_HF = 0.;
444  double sumEnergyHO_HF = 0.;
445  Int_t numFiredTowers_HF = 0;
446  double metx_HF = 0.;
447  double mety_HF = 0.;
448  double metz_HF = 0.;
449  double sEt_HF = 0.;
450 
451  for ( cal = towers->begin(); cal != towers->end(); ++cal ) {
452 
453  double eE = cal->emEnergy();
454  double eH = cal->hadEnergy();
455  double eHO = cal->outerEnergy();
456  double etaT = cal->eta();
457  // double phiT = cal->phi();
458  double en = cal->energy();
459  double etT = cal->et();
460  double had_tm = cal->hcalTime();
461  double em_tm = cal->ecalTime();
462 
463  int numBadEcalCells = cal->numBadEcalCells();
464  int numRcvEcalCells = cal->numRecoveredEcalCells();
465  int numPrbEcalCells = cal->numProblematicEcalCells();
466 
467  int numBadHcalCells = cal->numBadHcalCells();
468  int numRcvHcalCells = cal->numRecoveredHcalCells();
469  int numPrbHcalCells = cal->numProblematicHcalCells();
470 
471  math::RhoEtaPhiVector mom(cal->et(), cal->eta(), cal->phi());
472  // Vector mom = cal->momentum();
473 
474  // cell properties
475  CaloTowerDetId idT = cal->id();
476  int ieta = idT.ieta();
477  if(ieta > 0) ieta -= 1;
478  int iphi = idT.iphi();
479 
480  // ecal: 0 EcalBarrel 1 EcalEndcap
481  // hcal: 0 hcalBarrel 1 HcalEndcap 2 HcalForward
482  std::vector<int> inEcals(2), inHcals(3);
483  unsigned int constitSize = cal->constituentsSize();
484  for(unsigned int ic=0; ic<constitSize; ic++){
485  DetId detId = cal->constituent(ic);
486  if(detId.det() == DetId::Ecal){
487  if( detId.subdetId()==EcalBarrel ) inEcals[0] =1;
488  else if( detId.subdetId()==EcalEndcap ) inEcals[1] =1;
489  }
490  if(detId.det() == DetId::Hcal){
491  if( HcalDetId(detId).subdet()==HcalBarrel ) inHcals[0] =1;
492  else if( HcalDetId(detId).subdet()==HcalEndcap ) inHcals[1] =1;
493  else if( HcalDetId(detId).subdet()==HcalForward ) inHcals[2] =1;
494  }
495  }
496  //All cell histos are used
497  if( inEcals[0] ) {
498  numBadCellsEcal_EB->Fill(numBadEcalCells);
499  numRcvCellsEcal_EB->Fill(numRcvEcalCells);
500  numPrbCellsEcal_EB->Fill(numPrbEcalCells);
501  }
502  if( inEcals[1] ) {
503  numBadCellsEcal_EE->Fill(numBadEcalCells);
504  numRcvCellsEcal_EE->Fill(numRcvEcalCells);
505  numPrbCellsEcal_EE->Fill(numPrbEcalCells);
506  }
507 
508  //Ntowers is used in EndJob, occupancy_map is used for occupancy vs ieta
509  Ntowers_vs_ieta -> Fill(double(ieta),1.);
510  occupancy_map -> Fill(double(ieta),double(iphi));
511 
512 
513  if((isub == 0 || isub == 1)
514  && (fabs(etaT) < etaMax[0] && fabs(etaT) >= etaMin[0] )) {
515 
516  //All cell histos are used
517  numBadCellsHcal_HB->Fill(numBadHcalCells);
518  numRcvCellsHcal_HB->Fill(numRcvHcalCells);
519  numPrbCellsHcal_HB->Fill(numPrbHcalCells);
520 
521  //Map energy histos are not used
522  if (useAllHistos_){
523  mapEnergy_HB -> Fill(double(ieta), double(iphi), en);
524  mapEnergyHcal_HB -> Fill(double(ieta), double(iphi), eH);
525  mapEnergyEcal_HB -> Fill(double(ieta), double(iphi), eE);
526  }
527  // std::cout << " e_ecal = " << eE << std::endl;
528 
529  // simple sums
530  sumEnergyHcal_HB += eH;
531  sumEnergyEcal_HB += eE;
532  sumEnergyHO_HB += eHO;
533 
534  numFiredTowers_HB++;
535 
536  //Not used
537  if (useAllHistos_){
540  }
541 
542  // MET, SET & phimet
543  // double etT = cal->et();
544  metx_HB += mom.x();
545  mety_HB += mom.y(); //etT * sin(phiT);
546  sEt_HB += etT;
547 
548  //Timing (all histos are used)
549  emTiming_HB->Fill(em_tm);
550  hadTiming_HB->Fill(had_tm);
551 
552  emEnergyTiming_Low_HB->Fill(eE, em_tm);
553  emEnergyTiming_HB->Fill(eE, em_tm);
554  emEnergyTiming_High_HB->Fill(eE, em_tm);
556  emEnergyTiming_profile_HB->Fill(eE, em_tm);
558 
559  hadEnergyTiming_Low_HB->Fill(eH, had_tm);
560  hadEnergyTiming_HB->Fill(eH, had_tm);
561  hadEnergyTiming_High_HB->Fill(eH, had_tm);
562  hadEnergyTiming_profile_Low_HB->Fill(eH, had_tm);
563  hadEnergyTiming_profile_HB->Fill(eH, had_tm);
565  }
566 
567  if((isub == 0 || isub == 2)
568  && (fabs(etaT) < etaMax[1] && fabs(etaT) >= etaMin[1] )) {
569 
570  //All cell histos are used
571  numBadCellsHcal_HE->Fill(numBadHcalCells);
572  numRcvCellsHcal_HE->Fill(numRcvHcalCells);
573  numPrbCellsHcal_HE->Fill(numPrbHcalCells);
574 
575  //Map energy histos are not used
576  if (useAllHistos_){
577  mapEnergy_HE -> Fill(double(ieta), double(iphi), en);
578  mapEnergyHcal_HE -> Fill(double(ieta), double(iphi), eH);
579  mapEnergyEcal_HE -> Fill(double(ieta), double(iphi), eE);
580  }
581  // std::cout << " e_ecal = " << eE << std::endl;
582 
583  // simple sums
584  sumEnergyHcal_HE += eH;
585  sumEnergyEcal_HE += eE;
586  sumEnergyHO_HE += eHO;
587 
588  numFiredTowers_HE++;
589 
590  //Not used
591  if (useAllHistos_){
594  }
595  // MET, SET & phimet
596  // double etT = cal->et();
597  metx_HE += mom.x();
598  mety_HE += mom.y(); //etT * sin(phiT);
599  sEt_HE += etT;
600 
601  //Timing (all histos are used)
602  emTiming_HE->Fill(em_tm);
603  hadTiming_HE->Fill(had_tm);
604 
605  emEnergyTiming_Low_HE->Fill(eE, em_tm);
606  emEnergyTiming_HE->Fill(eE, em_tm);
608  emEnergyTiming_profile_HE->Fill(eE, em_tm);
609 
610  hadEnergyTiming_Low_HE->Fill(eH, had_tm);
611  hadEnergyTiming_HE->Fill(eH, had_tm);
612  hadEnergyTiming_profile_Low_HE->Fill(eH, had_tm);
613  hadEnergyTiming_profile_HE->Fill(eH, had_tm);
614  }
615 
616  if((isub == 0 || isub == 3)
617  && (fabs(etaT) < etaMax[2] && fabs(etaT) >= etaMin[2] )) {
618 
619  //All cell histos are used
620  numBadCellsHcal_HF->Fill(numBadHcalCells);
621  numRcvCellsHcal_HF->Fill(numRcvHcalCells);
622  numPrbCellsHcal_HF->Fill(numPrbHcalCells);
623 
624  //Map energy histos are not used
625  if (useAllHistos_){
626  mapEnergy_HF -> Fill(double(ieta), double(iphi), en);
627  mapEnergyHcal_HF -> Fill(double(ieta), double(iphi), eH);
628  mapEnergyEcal_HF -> Fill(double(ieta), double(iphi), eE);
629  }
630  // std::cout << " e_ecal = " << eE << std::endl;
631 
632  // simple sums
633  sumEnergyHcal_HF += eH;
634  sumEnergyEcal_HF += eE;
635  sumEnergyHO_HF += eHO;
636 
637  numFiredTowers_HF++;
638 
639  //Not used
640  if (useAllHistos_){
643  }
644  // MET, SET & phimet
645  // double etT = cal->et();
646  metx_HF += mom.x();
647  mety_HF += mom.y(); //etT * sin(phiT);
648  sEt_HF += etT;
649 
650  //Timing (all histos are used)
651  emTiming_HF->Fill(em_tm);
652  hadTiming_HF->Fill(had_tm);
653  emEnergyTiming_HF->Fill(eE, em_tm);
654  emEnergyTiming_profile_HF->Fill(eE, em_tm);
655 
656  hadEnergyTiming_Low_HF->Fill(eH, had_tm);
657  hadEnergyTiming_HF->Fill(eH, had_tm);
658  hadEnergyTiming_profile_Low_HF->Fill(eH, had_tm);
659  hadEnergyTiming_profile_HF->Fill(eH, had_tm);
660  }
661 
662 
663 
664  } // end of Towers cycle
665 
666  //These are the six single pion histos; only the second set is used
667 
668  mapEnergy_N -> Fill(double(ieta_MC), double(iphi_MC), 1.);
669 
670  if(isub == 0 || isub == 1) {
671  met = sqrt(metx_HB*metx_HB + mety_HB*mety_HB);
672  Vector metv(metx_HB,mety_HB,metz_HB);
673  phimet = metv.phi();
674 
675  //Five oldest drawn histos first; the rest are not used
676  meEnergyHcal_HB-> Fill(sumEnergyHcal_HB);
677  meEnergyEcal_HB-> Fill(sumEnergyEcal_HB);
678  meNumFiredTowers_HB-> Fill(numFiredTowers_HB);
679  MET_HB -> Fill (met);
680  SET_HB -> Fill (sEt_HB);
681 
682  if (useAllHistos_){
683  meEnergyHcalvsEcal_HB->Fill(sumEnergyEcal_HB, sumEnergyHcal_HB);
684  meEnergyHO_HB-> Fill(sumEnergyHO_HB);
685  meTotEnergy_HB-> Fill(sumEnergyHcal_HB+sumEnergyEcal_HB
686  +sumEnergyHO_HB);
687  phiMET_HB -> Fill (phimet);
688  }
689  }
690 
691 
692  if(isub == 0 || isub == 2) {
693  met = sqrt(metx_HE*metx_HE + mety_HE*mety_HE);
694  Vector metv(metx_HE,mety_HE,metz_HE);
695  phimet = metv.phi();
696 
697  //Five oldest drawn histos first; the rest are not used
698  meEnergyHcal_HE-> Fill(sumEnergyHcal_HE);
699  meEnergyEcal_HE-> Fill(sumEnergyEcal_HE);
700  meNumFiredTowers_HE-> Fill(numFiredTowers_HE);
701  MET_HE -> Fill (met);
702  SET_HE -> Fill (sEt_HE);
703 
704  if (useAllHistos_){
705  meEnergyHcalvsEcal_HE->Fill(sumEnergyEcal_HE, sumEnergyHcal_HE);
706  meEnergyHO_HE-> Fill(sumEnergyHO_HE);
707  meTotEnergy_HE-> Fill(sumEnergyHcal_HE+sumEnergyEcal_HE
708  +sumEnergyHO_HE);
709  phiMET_HE -> Fill (phimet);
710  }
711  }
712 
713  if(isub == 0 || isub == 3) {
714  met = sqrt(metx_HF*metx_HF + mety_HF*mety_HF);
715  Vector metv(metx_HF,mety_HF,metz_HF);
716  phimet = metv.phi();
717 
718  //Five oldest drawn histos first; the rest are not used
719  meEnergyHcal_HF-> Fill(sumEnergyHcal_HF);
720  meEnergyEcal_HF-> Fill(sumEnergyEcal_HF);
721  meNumFiredTowers_HF-> Fill(numFiredTowers_HF);
722  MET_HF -> Fill (met);
723  SET_HF -> Fill (sEt_HF);
724 
725  if (useAllHistos_){
726  meEnergyHcalvsEcal_HF->Fill(sumEnergyEcal_HF, sumEnergyHcal_HF);
727  meEnergyHO_HF-> Fill(sumEnergyHO_HF);
728  meTotEnergy_HF-> Fill(sumEnergyHcal_HF+sumEnergyEcal_HF
729  +sumEnergyHO_HF);
730  phiMET_HF -> Fill (phimet);
731  }
732  }
733 
734 }
735 
736 double CaloTowersAnalyzer::dR(double eta1, double phi1, double eta2, double phi2) {
737  double PI = 3.1415926535898;
738  double deltaphi= phi1 - phi2;
739  if( phi2 > phi1 ) { deltaphi= phi2 - phi1;}
740  if(deltaphi > PI) { deltaphi = 2.*PI - deltaphi;}
741  double deltaeta = eta2 - eta1;
742  double tmp = sqrt(deltaeta* deltaeta + deltaphi*deltaphi);
743  return tmp;
744 }
745 
747 
MonitorElement * emean_vs_ieta_EH1
MonitorElement * mapEnergyEcal_HF
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * meNumFiredTowers_HF
MonitorElement * hadEnergyTiming_profile_High_HB
MonitorElement * hadEnergyTiming_HF
MonitorElement * meEnergyHcalTower_HF
MonitorElement * meEnergyHcalvsEcal_HE
HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:49
MonitorElement * hadEnergyTiming_Low_HE
MonitorElement * meEnergyHcalTower_HE
MonitorElement * numRcvCellsHcal_HF
MonitorElement * MET_HE
MonitorElement * phiMET_HF
MonitorElement * emEnergyTiming_profile_Low_HB
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:157
MonitorElement * phiMET_HE
MonitorElement * meEnergyEcalTower_HF
MonitorElement * hadEnergyTiming_profile_Low_HE
CaloTowersAnalyzer(edm::ParameterSet const &conf)
virtual void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
MonitorElement * emEnergyTiming_Low_HB
MonitorElement * emTiming_HE
MonitorElement * meEnergyEcalTower_HE
MonitorElement * numRcvCellsEcal_EB
std::vector< CaloTower >::const_iterator const_iterator
MonitorElement * meEnergyHcalTower_HB
MonitorElement * emEnergyTiming_profile_Low_HE
MonitorElement * numRcvCellsEcal_EE
MonitorElement * SET_HF
MonitorElement * meEnergyHcal_HF
MonitorElement * meEnergyHcal_HB
MonitorElement * meEnergyHO_HB
MonitorElement * emTiming_HB
MonitorElement * MET_HF
MonitorElement * occupancy_map
MonitorElement * emEnergyTiming_HE
MonitorElement * hadEnergyTiming_Low_HB
MonitorElement * hadEnergyTiming_profile_Low_HB
MonitorElement * emean_vs_ieta_H
RhoEtaPhiVectorD RhoEtaPhiVector
spatial vector with cylindrical internal representation using pseudorapidity
Definition: Vector3D.h:32
MonitorElement * hadTiming_HE
MonitorElement * SET_HB
void Fill(long long x)
MonitorElement * mapEnergyEcal_HB
MonitorElement * meEnergyHO_HF
MonitorElement * occupancy_vs_ieta
MonitorElement * mapEnergy_EH
MonitorElement * phiMET_HB
MonitorElement * meEnergyEcal_HE
MonitorElement * hadEnergyTiming_profile_HB
MonitorElement * meEnergyEcal_HB
MonitorElement * numBadCellsHcal_HE
MonitorElement * meTotEnergy_HE
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * mapEnergy_E
MonitorElement * hadEnergyTiming_Low_HF
MonitorElement * SET_HE
T sqrt(T t)
Definition: SSEVec.h:18
MonitorElement * numRcvCellsHcal_HB
MonitorElement * meNumFiredTowers_HB
MonitorElement * MET_HB
MonitorElement * numPrbCellsHcal_HB
MonitorElement * mapEnergyHcal_HF
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
MonitorElement * meEnergyHcal_HE
virtual void analyze(edm::Event const &e, edm::EventSetup const &c) override
MonitorElement * hadTiming_HB
edm::EDGetTokenT< CaloTowerCollection > tok_towers_
MonitorElement * numBadCellsEcal_EE
MonitorElement * numPrbCellsEcal_EE
MonitorElement * mapEnergy_HE
MonitorElement * mapEnergy_HF
MonitorElement * mapEnergy_HB
MonitorElement * meEnergyEcalTower_HB
MonitorElement * emean_vs_ieta_H1
MonitorElement * emEnergyTiming_High_HB
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:37
math::RhoEtaPhiVector Vector
MonitorElement * numRcvCellsHcal_HE
#define PI
Definition: QcdUeDQM.h:36
MonitorElement * emEnergyTiming_profile_HF
MonitorElement * hadEnergyTiming_HE
MonitorElement * numPrbCellsHcal_HE
MonitorElement * emEnergyTiming_profile_High_HB
MonitorElement * meTotEnergy_HB
MonitorElement * meTotEnergy_HF
MonitorElement * hadEnergyTiming_High_HB
MonitorElement * mapEnergyHcal_HE
const_iterator end() const
MonitorElement * hadEnergyTiming_HB
MonitorElement * numPrbCellsHcal_HF
Definition: DetId.h:18
MonitorElement * hadEnergyTiming_profile_HF
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:277
MonitorElement * numBadCellsHcal_HB
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
met
===> hadronic RAZOR
MonitorElement * Ntowers_vs_ieta
MonitorElement * emEnergyTiming_HB
MonitorElement * meEnergyHO_HE
MonitorElement * hadEnergyTiming_profile_HE
MonitorElement * emEnergyTiming_Low_HE
MonitorElement * emean_vs_ieta_E
MonitorElement * numPrbCellsEcal_EB
MonitorElement * emean_vs_ieta_EH
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
MonitorElement * numBadCellsHcal_HF
double dR(double eta1, double phi1, double eta2, double phi2)
MonitorElement * hadTiming_HF
MonitorElement * numBadCellsEcal_EB
MonitorElement * mapEnergyEcal_HE
MonitorElement * emTiming_HF
MonitorElement * emEnergyTiming_profile_HE
MonitorElement * mapEnergy_N
int ieta() const
get the tower ieta
MonitorElement * meEnergyHcalvsEcal_HB
Detector det() const
get the detector field from this detid
Definition: DetId.h:35
MonitorElement * mapEnergyHcal_HB
MonitorElement * emEnergyTiming_profile_HB
MonitorElement * meEnergyHcalvsEcal_HF
MonitorElement * emean_vs_ieta_E1
MonitorElement * meNumFiredTowers_HE
const_iterator begin() const
MonitorElement * emEnergyTiming_HF
Definition: event.py:1
Definition: Run.h:42
MonitorElement * hadEnergyTiming_profile_Low_HF
MonitorElement * mapEnergy_H
MonitorElement * meEnergyEcal_HF