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, 440, -200, 2000);
225 
226  sprintf (histo, "CaloTowersTask_energy_ECAL_HE" ) ;
227  meEnergyEcal_HE = ibooker.book1D(histo, histo, 440, -200, 2000);
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, 440, -200, 2000);
318 
319  sprintf (histo, "CaloTowersTask_energy_ECAL_HF" ) ;
320  meEnergyEcal_HF = ibooker.book1D(histo, histo, 440, -200, 2000);
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, 200, 0. , 200. ) ;
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 
425  // HB
426  double sumEnergyHcal_HB = 0.;
427  double sumEnergyEcal_HB = 0.;
428  double sumEnergyHO_HB = 0.;
429  Int_t numFiredTowers_HB = 0;
430  double metx_HB = 0.;
431  double mety_HB = 0.;
432  double metz_HB = 0.;
433  double sEt_HB = 0.;
434  // HE
435  double sumEnergyHcal_HE = 0.;
436  double sumEnergyEcal_HE = 0.;
437  double sumEnergyHO_HE = 0.;
438  Int_t numFiredTowers_HE = 0;
439  double metx_HE = 0.;
440  double mety_HE = 0.;
441  double metz_HE = 0.;
442  double sEt_HE = 0.;
443  // HF
444  double sumEnergyHcal_HF = 0.;
445  double sumEnergyEcal_HF = 0.;
446  double sumEnergyHO_HF = 0.;
447  Int_t numFiredTowers_HF = 0;
448  double metx_HF = 0.;
449  double mety_HF = 0.;
450  double metz_HF = 0.;
451  double sEt_HF = 0.;
452 
453  for ( cal = towers->begin(); cal != towers->end(); ++cal ) {
454 
455  double eE = cal->emEnergy();
456  double eH = cal->hadEnergy();
457  double eHO = cal->outerEnergy();
458  double etaT = cal->eta();
459  // double phiT = cal->phi();
460  double en = cal->energy();
461  double etT = cal->et();
462  double had_tm = cal->hcalTime();
463  double em_tm = cal->ecalTime();
464 
465  int numBadEcalCells = cal->numBadEcalCells();
466  int numRcvEcalCells = cal->numRecoveredEcalCells();
467  int numPrbEcalCells = cal->numProblematicEcalCells();
468 
469  int numBadHcalCells = cal->numBadHcalCells();
470  int numRcvHcalCells = cal->numRecoveredHcalCells();
471  int numPrbHcalCells = cal->numProblematicHcalCells();
472 
473  math::RhoEtaPhiVector mom(cal->et(), cal->eta(), cal->phi());
474  // Vector mom = cal->momentum();
475 
476  // cell properties
477  CaloTowerDetId idT = cal->id();
478  int ieta = idT.ieta();
479  if(ieta > 0) ieta -= 1;
480  int iphi = idT.iphi();
481 
482  // ecal: 0 EcalBarrel 1 EcalEndcap
483  // hcal: 0 hcalBarrel 1 HcalEndcap 2 HcalForward
484  std::vector<int> inEcals(2), inHcals(3);
485  unsigned int constitSize = cal->constituentsSize();
486  for(unsigned int ic=0; ic<constitSize; ic++){
487  DetId detId = cal->constituent(ic);
488  if(detId.det() == DetId::Ecal){
489  if( detId.subdetId()==EcalBarrel ) inEcals[0] =1;
490  else if( detId.subdetId()==EcalEndcap ) inEcals[1] =1;
491  }
492  if(detId.det() == DetId::Hcal){
493  if( HcalDetId(detId).subdet()==HcalBarrel ) inHcals[0] =1;
494  else if( HcalDetId(detId).subdet()==HcalEndcap ) inHcals[1] =1;
495  else if( HcalDetId(detId).subdet()==HcalForward ) inHcals[2] =1;
496  }
497  }
498  //All cell histos are used
499  if( inEcals[0] ) {
500  numBadCellsEcal_EB->Fill(numBadEcalCells);
501  numRcvCellsEcal_EB->Fill(numRcvEcalCells);
502  numPrbCellsEcal_EB->Fill(numPrbEcalCells);
503  }
504  if( inEcals[1] ) {
505  numBadCellsEcal_EE->Fill(numBadEcalCells);
506  numRcvCellsEcal_EE->Fill(numRcvEcalCells);
507  numPrbCellsEcal_EE->Fill(numPrbEcalCells);
508  }
509 
510  //Ntowers is used in EndJob, occupancy_map is used for occupancy vs ieta
511  Ntowers_vs_ieta -> Fill(double(ieta),1.);
512  occupancy_map -> Fill(double(ieta),double(iphi));
513 
514 
515  if((isub == 0 || isub == 1)
516  && (fabs(etaT) < etaMax[0] && fabs(etaT) >= etaMin[0] )) {
517 
518  //All cell histos are used
519  numBadCellsHcal_HB->Fill(numBadHcalCells);
520  numRcvCellsHcal_HB->Fill(numRcvHcalCells);
521  numPrbCellsHcal_HB->Fill(numPrbHcalCells);
522 
523  //Map energy histos are not used
524  if (useAllHistos_){
525  mapEnergy_HB -> Fill(double(ieta), double(iphi), en);
526  mapEnergyHcal_HB -> Fill(double(ieta), double(iphi), eH);
527  mapEnergyEcal_HB -> Fill(double(ieta), double(iphi), eE);
528  }
529  // std::cout << " e_ecal = " << eE << std::endl;
530 
531  // simple sums
532  sumEnergyHcal_HB += eH;
533  sumEnergyEcal_HB += eE;
534  sumEnergyHO_HB += eHO;
535 
536  numFiredTowers_HB++;
537 
538  //Not used
539  if (useAllHistos_){
542  }
543 
544  // MET, SET & phimet
545  // double etT = cal->et();
546  metx_HB += mom.x();
547  mety_HB += mom.y(); //etT * sin(phiT);
548  sEt_HB += etT;
549 
550  //Timing (all histos are used)
551  emTiming_HB->Fill(em_tm);
552  hadTiming_HB->Fill(had_tm);
553 
554  emEnergyTiming_Low_HB->Fill(eE, em_tm);
555  emEnergyTiming_HB->Fill(eE, em_tm);
556  emEnergyTiming_High_HB->Fill(eE, em_tm);
558  emEnergyTiming_profile_HB->Fill(eE, em_tm);
560 
561  hadEnergyTiming_Low_HB->Fill(eH, had_tm);
562  hadEnergyTiming_HB->Fill(eH, had_tm);
563  hadEnergyTiming_High_HB->Fill(eH, had_tm);
564  hadEnergyTiming_profile_Low_HB->Fill(eH, had_tm);
565  hadEnergyTiming_profile_HB->Fill(eH, had_tm);
567  }
568 
569  if((isub == 0 || isub == 2)
570  && (fabs(etaT) < etaMax[1] && fabs(etaT) >= etaMin[1] )) {
571 
572  //All cell histos are used
573  numBadCellsHcal_HE->Fill(numBadHcalCells);
574  numRcvCellsHcal_HE->Fill(numRcvHcalCells);
575  numPrbCellsHcal_HE->Fill(numPrbHcalCells);
576 
577  //Map energy histos are not used
578  if (useAllHistos_){
579  mapEnergy_HE -> Fill(double(ieta), double(iphi), en);
580  mapEnergyHcal_HE -> Fill(double(ieta), double(iphi), eH);
581  mapEnergyEcal_HE -> Fill(double(ieta), double(iphi), eE);
582  }
583  // std::cout << " e_ecal = " << eE << std::endl;
584 
585  // simple sums
586  sumEnergyHcal_HE += eH;
587  sumEnergyEcal_HE += eE;
588  sumEnergyHO_HE += eHO;
589 
590  numFiredTowers_HE++;
591 
592  //Not used
593  if (useAllHistos_){
596  }
597  // MET, SET & phimet
598  // double etT = cal->et();
599  metx_HE += mom.x();
600  mety_HE += mom.y(); //etT * sin(phiT);
601  sEt_HE += etT;
602 
603  //Timing (all histos are used)
604  emTiming_HE->Fill(em_tm);
605  hadTiming_HE->Fill(had_tm);
606 
607  emEnergyTiming_Low_HE->Fill(eE, em_tm);
608  emEnergyTiming_HE->Fill(eE, em_tm);
610  emEnergyTiming_profile_HE->Fill(eE, em_tm);
611 
612  hadEnergyTiming_Low_HE->Fill(eH, had_tm);
613  hadEnergyTiming_HE->Fill(eH, had_tm);
614  hadEnergyTiming_profile_Low_HE->Fill(eH, had_tm);
615  hadEnergyTiming_profile_HE->Fill(eH, had_tm);
616  }
617 
618  if((isub == 0 || isub == 3)
619  && (fabs(etaT) < etaMax[2] && fabs(etaT) >= etaMin[2] )) {
620 
621  //All cell histos are used
622  numBadCellsHcal_HF->Fill(numBadHcalCells);
623  numRcvCellsHcal_HF->Fill(numRcvHcalCells);
624  numPrbCellsHcal_HF->Fill(numPrbHcalCells);
625 
626  //Map energy histos are not used
627  if (useAllHistos_){
628  mapEnergy_HF -> Fill(double(ieta), double(iphi), en);
629  mapEnergyHcal_HF -> Fill(double(ieta), double(iphi), eH);
630  mapEnergyEcal_HF -> Fill(double(ieta), double(iphi), eE);
631  }
632  // std::cout << " e_ecal = " << eE << std::endl;
633 
634  // simple sums
635  sumEnergyHcal_HF += eH;
636  sumEnergyEcal_HF += eE;
637  sumEnergyHO_HF += eHO;
638 
639  numFiredTowers_HF++;
640 
641  //Not used
642  if (useAllHistos_){
645  }
646  // MET, SET & phimet
647  // double etT = cal->et();
648  metx_HF += mom.x();
649  mety_HF += mom.y(); //etT * sin(phiT);
650  sEt_HF += etT;
651 
652  //Timing (all histos are used)
653  emTiming_HF->Fill(em_tm);
654  hadTiming_HF->Fill(had_tm);
655  emEnergyTiming_HF->Fill(eE, em_tm);
656  emEnergyTiming_profile_HF->Fill(eE, em_tm);
657 
658  hadEnergyTiming_Low_HF->Fill(eH, had_tm);
659  hadEnergyTiming_HF->Fill(eH, had_tm);
660  hadEnergyTiming_profile_Low_HF->Fill(eH, had_tm);
661  hadEnergyTiming_profile_HF->Fill(eH, had_tm);
662  }
663 
664 
665 
666  } // end of Towers cycle
667 
668  //These are the six single pion histos; only the second set is used
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
tuple met
____________________________________________________________________________||
Definition: CaloMET_cfi.py:4
MonitorElement * meEnergyHcalTower_HF
MonitorElement * meEnergyHcalvsEcal_HE
HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:30
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:155
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:113
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:131
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:41
MonitorElement * hadEnergyTiming_profile_Low_HF
MonitorElement * mapEnergy_H
MonitorElement * meEnergyEcal_HF