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 
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
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
#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
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
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:42
MonitorElement * hadEnergyTiming_profile_Low_HF
MonitorElement * mapEnergy_H
MonitorElement * meEnergyEcal_HF