CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 
396 
398 
399 }
400 
402 }
403 
405 
407 
408  nevent++;
409 
411  event.getByToken(tok_towers_,towers);
413 
414  double met;
415  double phimet;
416 
417  // ieta scan
418  //double partR = 0.3;
419  //double Rmin = 9999.;
420  //double Econe = 0.;
421  //double Hcone = 0.;
422  //double Ee1 = 0.;
423  //double Eh1 = 0.;
424  double ieta_MC = 9999;
425  double iphi_MC = 9999;
426 
427  // HB
428  double sumEnergyHcal_HB = 0.;
429  double sumEnergyEcal_HB = 0.;
430  double sumEnergyHO_HB = 0.;
431  Int_t numFiredTowers_HB = 0;
432  double metx_HB = 0.;
433  double mety_HB = 0.;
434  double metz_HB = 0.;
435  double sEt_HB = 0.;
436  // HE
437  double sumEnergyHcal_HE = 0.;
438  double sumEnergyEcal_HE = 0.;
439  double sumEnergyHO_HE = 0.;
440  Int_t numFiredTowers_HE = 0;
441  double metx_HE = 0.;
442  double mety_HE = 0.;
443  double metz_HE = 0.;
444  double sEt_HE = 0.;
445  // HF
446  double sumEnergyHcal_HF = 0.;
447  double sumEnergyEcal_HF = 0.;
448  double sumEnergyHO_HF = 0.;
449  Int_t numFiredTowers_HF = 0;
450  double metx_HF = 0.;
451  double mety_HF = 0.;
452  double metz_HF = 0.;
453  double sEt_HF = 0.;
454 
455  for ( cal = towers->begin(); cal != towers->end(); ++cal ) {
456 
457  double eE = cal->emEnergy();
458  double eH = cal->hadEnergy();
459  double eHO = cal->outerEnergy();
460  double etaT = cal->eta();
461  // double phiT = cal->phi();
462  double en = cal->energy();
463  double etT = cal->et();
464  double had_tm = cal->hcalTime();
465  double em_tm = cal->ecalTime();
466 
467  int numBadEcalCells = cal->numBadEcalCells();
468  int numRcvEcalCells = cal->numRecoveredEcalCells();
469  int numPrbEcalCells = cal->numProblematicEcalCells();
470 
471  int numBadHcalCells = cal->numBadHcalCells();
472  int numRcvHcalCells = cal->numRecoveredHcalCells();
473  int numPrbHcalCells = cal->numProblematicHcalCells();
474 
475  math::RhoEtaPhiVector mom(cal->et(), cal->eta(), cal->phi());
476  // Vector mom = cal->momentum();
477 
478  // cell properties
479  CaloTowerDetId idT = cal->id();
480  int ieta = idT.ieta();
481  if(ieta > 0) ieta -= 1;
482  int iphi = idT.iphi();
483 
484  // ecal: 0 EcalBarrel 1 EcalEndcap
485  // hcal: 0 hcalBarrel 1 HcalEndcap 2 HcalForward
486  std::vector<int> inEcals(2), inHcals(3);
487  unsigned int constitSize = cal->constituentsSize();
488  for(unsigned int ic=0; ic<constitSize; ic++){
489  DetId detId = cal->constituent(ic);
490  if(detId.det() == DetId::Ecal){
491  if( detId.subdetId()==EcalBarrel ) inEcals[0] =1;
492  else if( detId.subdetId()==EcalEndcap ) inEcals[1] =1;
493  }
494  if(detId.det() == DetId::Hcal){
495  if( HcalDetId(detId).subdet()==HcalBarrel ) inHcals[0] =1;
496  else if( HcalDetId(detId).subdet()==HcalEndcap ) inHcals[1] =1;
497  else if( HcalDetId(detId).subdet()==HcalForward ) inHcals[2] =1;
498  }
499  }
500  //All cell histos are used
501  if( inEcals[0] ) {
502  numBadCellsEcal_EB->Fill(numBadEcalCells);
503  numRcvCellsEcal_EB->Fill(numRcvEcalCells);
504  numPrbCellsEcal_EB->Fill(numPrbEcalCells);
505  }
506  if( inEcals[1] ) {
507  numBadCellsEcal_EE->Fill(numBadEcalCells);
508  numRcvCellsEcal_EE->Fill(numRcvEcalCells);
509  numPrbCellsEcal_EE->Fill(numPrbEcalCells);
510  }
511 
512  //Ntowers is used in EndJob, occupancy_map is used for occupancy vs ieta
513  Ntowers_vs_ieta -> Fill(double(ieta),1.);
514  occupancy_map -> Fill(double(ieta),double(iphi));
515 
516 
517  if((isub == 0 || isub == 1)
518  && (fabs(etaT) < etaMax[0] && fabs(etaT) >= etaMin[0] )) {
519 
520  //All cell histos are used
521  numBadCellsHcal_HB->Fill(numBadHcalCells);
522  numRcvCellsHcal_HB->Fill(numRcvHcalCells);
523  numPrbCellsHcal_HB->Fill(numPrbHcalCells);
524 
525  //Map energy histos are not used
526  if (useAllHistos_){
527  mapEnergy_HB -> Fill(double(ieta), double(iphi), en);
528  mapEnergyHcal_HB -> Fill(double(ieta), double(iphi), eH);
529  mapEnergyEcal_HB -> Fill(double(ieta), double(iphi), eE);
530  }
531  // std::cout << " e_ecal = " << eE << std::endl;
532 
533  // simple sums
534  sumEnergyHcal_HB += eH;
535  sumEnergyEcal_HB += eE;
536  sumEnergyHO_HB += eHO;
537 
538  numFiredTowers_HB++;
539 
540  //Not used
541  if (useAllHistos_){
544  }
545 
546  // MET, SET & phimet
547  // double etT = cal->et();
548  metx_HB += mom.x();
549  mety_HB += mom.y(); //etT * sin(phiT);
550  sEt_HB += etT;
551 
552  //Timing (all histos are used)
553  emTiming_HB->Fill(em_tm);
554  hadTiming_HB->Fill(had_tm);
555 
556  emEnergyTiming_Low_HB->Fill(eE, em_tm);
557  emEnergyTiming_HB->Fill(eE, em_tm);
558  emEnergyTiming_High_HB->Fill(eE, em_tm);
560  emEnergyTiming_profile_HB->Fill(eE, em_tm);
562 
563  hadEnergyTiming_Low_HB->Fill(eH, had_tm);
564  hadEnergyTiming_HB->Fill(eH, had_tm);
565  hadEnergyTiming_High_HB->Fill(eH, had_tm);
566  hadEnergyTiming_profile_Low_HB->Fill(eH, had_tm);
567  hadEnergyTiming_profile_HB->Fill(eH, had_tm);
569  }
570 
571  if((isub == 0 || isub == 2)
572  && (fabs(etaT) < etaMax[1] && fabs(etaT) >= etaMin[1] )) {
573 
574  //All cell histos are used
575  numBadCellsHcal_HE->Fill(numBadHcalCells);
576  numRcvCellsHcal_HE->Fill(numRcvHcalCells);
577  numPrbCellsHcal_HE->Fill(numPrbHcalCells);
578 
579  //Map energy histos are not used
580  if (useAllHistos_){
581  mapEnergy_HE -> Fill(double(ieta), double(iphi), en);
582  mapEnergyHcal_HE -> Fill(double(ieta), double(iphi), eH);
583  mapEnergyEcal_HE -> Fill(double(ieta), double(iphi), eE);
584  }
585  // std::cout << " e_ecal = " << eE << std::endl;
586 
587  // simple sums
588  sumEnergyHcal_HE += eH;
589  sumEnergyEcal_HE += eE;
590  sumEnergyHO_HE += eHO;
591 
592  numFiredTowers_HE++;
593 
594  //Not used
595  if (useAllHistos_){
598  }
599  // MET, SET & phimet
600  // double etT = cal->et();
601  metx_HE += mom.x();
602  mety_HE += mom.y(); //etT * sin(phiT);
603  sEt_HE += etT;
604 
605  //Timing (all histos are used)
606  emTiming_HE->Fill(em_tm);
607  hadTiming_HE->Fill(had_tm);
608 
609  emEnergyTiming_Low_HE->Fill(eE, em_tm);
610  emEnergyTiming_HE->Fill(eE, em_tm);
612  emEnergyTiming_profile_HE->Fill(eE, em_tm);
613 
614  hadEnergyTiming_Low_HE->Fill(eH, had_tm);
615  hadEnergyTiming_HE->Fill(eH, had_tm);
616  hadEnergyTiming_profile_Low_HE->Fill(eH, had_tm);
617  hadEnergyTiming_profile_HE->Fill(eH, had_tm);
618  }
619 
620  if((isub == 0 || isub == 3)
621  && (fabs(etaT) < etaMax[2] && fabs(etaT) >= etaMin[2] )) {
622 
623  //All cell histos are used
624  numBadCellsHcal_HF->Fill(numBadHcalCells);
625  numRcvCellsHcal_HF->Fill(numRcvHcalCells);
626  numPrbCellsHcal_HF->Fill(numPrbHcalCells);
627 
628  //Map energy histos are not used
629  if (useAllHistos_){
630  mapEnergy_HF -> Fill(double(ieta), double(iphi), en);
631  mapEnergyHcal_HF -> Fill(double(ieta), double(iphi), eH);
632  mapEnergyEcal_HF -> Fill(double(ieta), double(iphi), eE);
633  }
634  // std::cout << " e_ecal = " << eE << std::endl;
635 
636  // simple sums
637  sumEnergyHcal_HF += eH;
638  sumEnergyEcal_HF += eE;
639  sumEnergyHO_HF += eHO;
640 
641  numFiredTowers_HF++;
642 
643  //Not used
644  if (useAllHistos_){
647  }
648  // MET, SET & phimet
649  // double etT = cal->et();
650  metx_HF += mom.x();
651  mety_HF += mom.y(); //etT * sin(phiT);
652  sEt_HF += etT;
653 
654  //Timing (all histos are used)
655  emTiming_HF->Fill(em_tm);
656  hadTiming_HF->Fill(had_tm);
657  emEnergyTiming_HF->Fill(eE, em_tm);
658  emEnergyTiming_profile_HF->Fill(eE, em_tm);
659 
660  hadEnergyTiming_Low_HF->Fill(eH, had_tm);
661  hadEnergyTiming_HF->Fill(eH, had_tm);
662  hadEnergyTiming_profile_Low_HF->Fill(eH, had_tm);
663  hadEnergyTiming_profile_HF->Fill(eH, had_tm);
664  }
665 
666 
667 
668  } // end of Towers cycle
669 
670  //These are the six single pion histos; only the second set is used
671 
672  mapEnergy_N -> Fill(double(ieta_MC), double(iphi_MC), 1.);
673 
674  if(isub == 0 || isub == 1) {
675  met = sqrt(metx_HB*metx_HB + mety_HB*mety_HB);
676  Vector metv(metx_HB,mety_HB,metz_HB);
677  phimet = metv.phi();
678 
679  //Five oldest drawn histos first; the rest are not used
680  meEnergyHcal_HB-> Fill(sumEnergyHcal_HB);
681  meEnergyEcal_HB-> Fill(sumEnergyEcal_HB);
682  meNumFiredTowers_HB-> Fill(numFiredTowers_HB);
683  MET_HB -> Fill (met);
684  SET_HB -> Fill (sEt_HB);
685 
686  if (useAllHistos_){
687  meEnergyHcalvsEcal_HB->Fill(sumEnergyEcal_HB, sumEnergyHcal_HB);
688  meEnergyHO_HB-> Fill(sumEnergyHO_HB);
689  meTotEnergy_HB-> Fill(sumEnergyHcal_HB+sumEnergyEcal_HB
690  +sumEnergyHO_HB);
691  phiMET_HB -> Fill (phimet);
692  }
693  }
694 
695 
696  if(isub == 0 || isub == 2) {
697  met = sqrt(metx_HE*metx_HE + mety_HE*mety_HE);
698  Vector metv(metx_HE,mety_HE,metz_HE);
699  phimet = metv.phi();
700 
701  //Five oldest drawn histos first; the rest are not used
702  meEnergyHcal_HE-> Fill(sumEnergyHcal_HE);
703  meEnergyEcal_HE-> Fill(sumEnergyEcal_HE);
704  meNumFiredTowers_HE-> Fill(numFiredTowers_HE);
705  MET_HE -> Fill (met);
706  SET_HE -> Fill (sEt_HE);
707 
708  if (useAllHistos_){
709  meEnergyHcalvsEcal_HE->Fill(sumEnergyEcal_HE, sumEnergyHcal_HE);
710  meEnergyHO_HE-> Fill(sumEnergyHO_HE);
711  meTotEnergy_HE-> Fill(sumEnergyHcal_HE+sumEnergyEcal_HE
712  +sumEnergyHO_HE);
713  phiMET_HE -> Fill (phimet);
714  }
715  }
716 
717  if(isub == 0 || isub == 3) {
718  met = sqrt(metx_HF*metx_HF + mety_HF*mety_HF);
719  Vector metv(metx_HF,mety_HF,metz_HF);
720  phimet = metv.phi();
721 
722  //Five oldest drawn histos first; the rest are not used
723  meEnergyHcal_HF-> Fill(sumEnergyHcal_HF);
724  meEnergyEcal_HF-> Fill(sumEnergyEcal_HF);
725  meNumFiredTowers_HF-> Fill(numFiredTowers_HF);
726  MET_HF -> Fill (met);
727  SET_HF -> Fill (sEt_HF);
728 
729  if (useAllHistos_){
730  meEnergyHcalvsEcal_HF->Fill(sumEnergyEcal_HF, sumEnergyHcal_HF);
731  meEnergyHO_HF-> Fill(sumEnergyHO_HF);
732  meTotEnergy_HF-> Fill(sumEnergyHcal_HF+sumEnergyEcal_HF
733  +sumEnergyHO_HF);
734  phiMET_HF -> Fill (phimet);
735  }
736  }
737 
738 }
739 
740 double CaloTowersAnalyzer::dR(double eta1, double phi1, double eta2, double phi2) {
741  double PI = 3.1415926535898;
742  double deltaphi= phi1 - phi2;
743  if( phi2 > phi1 ) { deltaphi= phi2 - phi1;}
744  if(deltaphi > PI) { deltaphi = 2.*PI - deltaphi;}
745  double deltaeta = eta2 - eta1;
746  double tmp = sqrt(deltaeta* deltaeta + deltaphi*deltaphi);
747  return tmp;
748 }
749 
751 
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:45
MonitorElement * hadEnergyTiming_Low_HE
MonitorElement * meEnergyHcalTower_HE
MonitorElement * numRcvCellsHcal_HF
#define PI
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
virtual void analyze(edm::Event const &e, edm::EventSetup const &c)
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:48
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
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
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
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
MonitorElement * emEnergyTiming_profile_HF
MonitorElement * hadEnergyTiming_HE
tuple conf
Definition: dbtoconf.py:185
MonitorElement * numPrbCellsHcal_HE
MonitorElement * emEnergyTiming_profile_High_HB
MonitorElement * meTotEnergy_HB
MonitorElement * meTotEnergy_HF
MonitorElement * hadEnergyTiming_High_HB
MonitorElement * mapEnergyHcal_HE
MonitorElement * hadEnergyTiming_HB
MonitorElement * numPrbCellsHcal_HF
Definition: DetId.h:18
MonitorElement * hadEnergyTiming_profile_HF
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
MonitorElement * numBadCellsHcal_HB
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
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
MonitorElement * emEnergyTiming_HF
Definition: Run.h:43
MonitorElement * hadEnergyTiming_profile_Low_HF
MonitorElement * mapEnergy_H
MonitorElement * meEnergyEcal_HF