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.
6 
8  theCaloTowerCollectionLabel(conf.getUntrackedParameter<edm::InputTag>("CaloTowerCollectionLabel"))
9 {
10  // DQM ROOT output
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  etaMin[0] = 0.;
18  etaMax[0] = 1.4;
19  etaMin[1] = 1.4;
20  etaMax[1] = 2.9;
21  etaMin[2] = 2.9;
22  etaMax[2] = 5.2;
23 
24  isub = 0;
25  if(hcalselector_ == "HB") isub = 1;
26  if(hcalselector_ == "HE") isub = 2;
27  if(hcalselector_ == "HF") isub = 3;
28 
29  if ( outputFile_.size() != 0 ) {
30  edm::LogInfo("OutputInfo") << " Hcal RecHit Task histograms will be saved to '" << outputFile_.c_str() << "'";
31  } else {
32  edm::LogInfo("OutputInfo") << " Hcal RecHit Task histograms will NOT be saved";
33  }
34 
35  dbe_ = 0;
36  // get hold of back-end interface
38 
39  // const char * sub = hcalselector_.c_str();
40 
41  Char_t histo[100];
42 
43  if ( dbe_ ) {
44  dbe_->setCurrentFolder("CaloTowersD/CaloTowersTask");
45  }
46 
47  //These two histos are not drawn by our macros, but they are used
48  //in the EndJob for norms and such so I am leaving them alone for now
49  //-------------------------------------------------------------------------------------------
50  sprintf (histo, "Ntowers_per_event_vs_ieta" );
51  Ntowers_vs_ieta = dbe_->book1D(histo, histo, 82, -41., 41.);
52 
53  sprintf (histo, "CaloTowersTask_map_Nentries" );
54  mapEnergy_N = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
55  //-------------------------------------------------------------------------------------------
56 
57  //These the single pion scan histos
58  //-------------------------------------------------------------------------------------------
59  //The first three are not used
60  if (useAllHistos_){
61  sprintf (histo, "emean_vs_ieta_E" );
62  emean_vs_ieta_E = dbe_->bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000., "s");
63  sprintf (histo, "emean_vs_ieta_H" );
64  emean_vs_ieta_H = dbe_->bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000., "s");
65  sprintf (histo, "emean_vs_ieta_EH" );
66  emean_vs_ieta_EH = dbe_->bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000., "s");
67  }
68  //These are drawn
69  sprintf (histo, "emean_vs_ieta_E1" );
70  emean_vs_ieta_E1 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000., "s");
71  sprintf (histo, "emean_vs_ieta_H1" );
72  emean_vs_ieta_H1 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000., "s");
73  sprintf (histo, "emean_vs_ieta_EH1" );
74  emean_vs_ieta_EH1 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000., "s");
75  //-------------------------------------------------------------------------------------------
76 
77  //Map energy histos are not drawn
78  if (useAllHistos_){
79  sprintf (histo, "CaloTowersTask_map_energy_E" );
80  mapEnergy_E = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
81  sprintf (histo, "CaloTowersTask_map_energy_H");
82  mapEnergy_H = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
83  sprintf (histo, "CaloTowersTask_map_energy_EH" );
84  mapEnergy_EH = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
85  }
86 
87  //All ECAL cell histos are used
88  // XXX: ECAL 0-25 [0-26, 26 bins] HCAL 0-4 [0-5, 5 bins]
89  sprintf (histo, "number_of_bad_cells_Ecal_EB");
90  numBadCellsEcal_EB = dbe_->book1D(histo, histo, 26, 0, 26);
91  sprintf (histo, "number_of_bad_cells_Ecal_EE");
92  numBadCellsEcal_EE = dbe_->book1D(histo, histo, 26, 0, 26);
93  sprintf (histo, "number_of_recovered_cells_Ecal_EB");
94  numRcvCellsEcal_EB = dbe_->book1D(histo, histo, 26, 0, 26);
95  sprintf (histo, "number_of_recovered_cells_Ecal_EE");
96  numRcvCellsEcal_EE = dbe_->book1D(histo, histo, 26, 0, 26);
97  sprintf (histo, "number_of_problematic_cells_Ecal_EB");
98  numPrbCellsEcal_EB = dbe_->book1D(histo, histo, 26, 0, 26);
99  sprintf (histo, "number_of_problematic_cells_Ecal_EE");
100  numPrbCellsEcal_EE = dbe_->book1D(histo, histo, 26, 0, 26);
101 
102  //Occupancy vs. ieta is drawn, occupancy map is needed to draw it
103  sprintf (histo, "CaloTowersTask_map_occupancy" );
104  occupancy_map = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
105 
106  sprintf (histo, "CaloTowersTask_occupancy_vs_ieta" );
107  occupancy_vs_ieta = dbe_->book1D(histo, histo, 82, -41, 41);
108 
109  if( isub == 1 || isub == 0) {
110  //All cell histos are used
111  sprintf (histo, "number_of_bad_cells_Hcal_HB");
112  numBadCellsHcal_HB = dbe_->book1D(histo, histo, 5, 0, 5);
113  sprintf (histo, "number_of_recovered_cells_Hcal_HB");
114  numRcvCellsHcal_HB = dbe_->book1D(histo, histo, 5, 0, 5);
115  sprintf (histo, "number_of_problematic_cells_Hcal_HB");
116  numPrbCellsHcal_HB = dbe_->book1D(histo, histo, 5, 0, 5);
117 
118  //These are the five oldest CaloTower histos used: NTowers, E in HCAL/ECAL, MET and SET
119  //-------------------------------------------------------------------------------------------
120  sprintf (histo, "CaloTowersTask_energy_HCAL_HB" ) ;
121  meEnergyHcal_HB = dbe_->book1D(histo, histo, 4100, -200, 8000);
122 
123  sprintf (histo, "CaloTowersTask_energy_ECAL_HB" ) ;
124  meEnergyEcal_HB = dbe_->book1D(histo, histo, 3100, -200, 6000);
125 
126  sprintf (histo, "CaloTowersTask_number_of_fired_towers_HB" ) ;
127  meNumFiredTowers_HB = dbe_->book1D(histo, histo, 1000, 0, 2000);
128 
129  sprintf (histo, "CaloTowersTask_MET_HB" ) ;
130  MET_HB = dbe_->book1D(histo, histo, 3000, 0. , 3000. ) ;
131 
132  sprintf (histo, "CaloTowersTask_SET_HB" ) ;
133  SET_HB = dbe_->book1D(histo, histo, 8000, 0. , 8000. ) ;
134  //-------------------------------------------------------------------------------------------
135 
136  //Timing histos and profiles -- all six are necessary
137  //-------------------------------------------------------------------------------------------
138  sprintf (histo, "CaloTowersTask_EM_Timing_HB" ) ;
139  emTiming_HB = dbe_->book1D(histo, histo, 110, -120., 100. ) ;
140 
141  sprintf (histo, "CaloTowersTask_HAD_Timing_HB" ) ;
142  hadTiming_HB = dbe_->book1D(histo, histo, 70, -48., 92. ) ;
143 
144  //Energy-Timing histos are divided into low, medium and high to reduce memory usage
145  //EM
146  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_Low_HB" ) ;
147  emEnergyTiming_Low_HB = dbe_->book2D(histo, histo, 40, 0. , 40., 110, -120., 100. ) ;
148 
149  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_HB" ) ;
150  emEnergyTiming_HB = dbe_->book2D(histo, histo, 200, 0. , 400., 110, -120., 100. ) ;
151 
152  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_High_HB" ) ;
153  emEnergyTiming_High_HB = dbe_->book2D(histo, histo, 200, 0. , 3000., 110, -120., 100. ) ;
154 
155  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_profile_Low_HB" ) ;
156  emEnergyTiming_profile_Low_HB = dbe_->bookProfile(histo, histo, 40, 0. , 40., 110, -120., 100. ) ;
157 
158  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_profile_HB" ) ;
159  emEnergyTiming_profile_HB = dbe_->bookProfile(histo, histo, 200, 0. , 400., 110, -120., 100. ) ;
160 
161  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_profile_High_HB" ) ;
162  emEnergyTiming_profile_High_HB = dbe_->bookProfile(histo, histo, 200, 0. , 3000., 110, -120., 100. ) ;
163 
164  //HAD
165  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_Low_HB" ) ;
166  hadEnergyTiming_Low_HB = dbe_->book2D(histo, histo, 40, 0. , 40., 70, -48., 92. ) ;
167 
168  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_HB" ) ;
169  hadEnergyTiming_HB = dbe_->book2D(histo, histo, 100, 0. , 200., 70, -48., 92. ) ;
170 
171  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_High_HB" ) ;
172  hadEnergyTiming_High_HB = dbe_->book2D(histo, histo, 300, 0. , 3000., 70, -48., 92. ) ;
173 
174  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_Low_HB" ) ;
175  hadEnergyTiming_profile_Low_HB = dbe_->bookProfile(histo, histo, 40, 0. , 40., 70, -48., 92. ) ;
176 
177  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_HB" ) ;
178  hadEnergyTiming_profile_HB = dbe_->bookProfile(histo, histo, 100, 0. , 200., 70, -48., 92. ) ;
179 
180  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_High_HB" ) ;
181  hadEnergyTiming_profile_High_HB = dbe_->bookProfile(histo, histo, 300, 0. , 3000., 70, -48., 92. ) ;
182  //-------------------------------------------------------------------------------------------
183 
184  //Everything else is not drawn
185  if (useAllHistos_){
186  sprintf (histo, "CaloTowersTask_sum_of_energy_HCAL_vs_ECAL_HB") ;
187  meEnergyHcalvsEcal_HB = dbe_->book2D(histo, histo, 500, 0., 500., 500, 0., 500.);
188 
189  sprintf (histo, "CaloTowersTask_energy_OUTER_HB" ) ;
190  meEnergyHO_HB = dbe_->book1D(histo, histo, 1640, -200, 8000);
191 
192  sprintf (histo, "CaloTowersTask_energy_of_ECAL_component_of_tower_HB" ) ;
193  meEnergyEcalTower_HB = dbe_->book1D(histo, histo, 440, -200, 2000);
194 
195  sprintf (histo, "CaloTowersTask_energy_of_HCAL_component_of_tower_HB" ) ;
196  meEnergyHcalTower_HB = dbe_->book1D(histo, histo, 440 , -200 , 2000);
197 
198  sprintf (histo, "CaloTowersTask_energy_HcalPlusEcalPlusHO_HB" ) ;
199  meTotEnergy_HB = dbe_->book1D(histo, histo,400, 0., 2000.) ;
200 
201  sprintf (histo, "CaloTowersTask_map_energy_HB" );
202  mapEnergy_HB = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
203  sprintf (histo, "CaloTowersTask_map_energy_HCAL_HB");
204  mapEnergyHcal_HB = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
205  sprintf (histo, "CaloTowersTask_map_energy_ECAL_HB" );
206  mapEnergyEcal_HB = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
207 
208  sprintf (histo, "CaloTowersTask_phi_MET_HB" ) ;
209  phiMET_HB = dbe_->book1D(histo, histo, 72, -3.1415926535898, 3.1415926535898 ) ;
210  }
211  }
212 
213  if( isub == 2 || isub == 0) {
214  //All cell histos are used
215  sprintf (histo, "number_of_bad_cells_Hcal_HE");
216  numBadCellsHcal_HE = dbe_->book1D(histo, histo, 5, 0, 5);
217  sprintf (histo, "number_of_recovered_cells_Hcal_HE");
218  numRcvCellsHcal_HE = dbe_->book1D(histo, histo, 5, 0, 5);
219  sprintf (histo, "number_of_problematic_cells_Hcal_HE");
220  numPrbCellsHcal_HE = dbe_->book1D(histo, histo, 5, 0, 5);
221 
222  //These are the five oldest CaloTower histos used: NTowers, E in HCAL/ECAL, MET and SET
223  //-------------------------------------------------------------------------------------------
224  sprintf (histo, "CaloTowersTask_energy_HCAL_HE" ) ;
225  meEnergyHcal_HE = dbe_->book1D(histo, histo, 440, -200, 2000);
226 
227  sprintf (histo, "CaloTowersTask_energy_ECAL_HE" ) ;
228  meEnergyEcal_HE = dbe_->book1D(histo, histo, 440, -200, 2000);
229 
230  sprintf (histo, "CaloTowersTask_number_of_fired_towers_HE" ) ;
231  meNumFiredTowers_HE = dbe_->book1D(histo, histo, 1000, 0, 2000);
232 
233  sprintf (histo, "CaloTowersTask_MET_HE" ) ;
234  MET_HE = dbe_->book1D(histo, histo, 1000, 0. , 1000. ) ;
235 
236  sprintf (histo, "CaloTowersTask_SET_HE" ) ;
237  SET_HE = dbe_->book1D(histo, histo, 2000, 0. , 2000. ) ;
238  //-------------------------------------------------------------------------------------------
239 
240  //Timing histos and profiles -- all six are necessary
241  //-------------------------------------------------------------------------------------------
242  sprintf (histo, "CaloTowersTask_EM_Timing_HE" ) ;
243  emTiming_HE = dbe_->book1D(histo, histo, 110, -120., 100. ) ;
244 
245  sprintf (histo, "CaloTowersTask_HAD_Timing_HE" ) ;
246  hadTiming_HE = dbe_->book1D(histo, histo, 70, -48., 92. ) ;
247 
248  //Energy-Timing histos are divided into low and normal to reduce memory usage
249  //EM
250  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_Low_HE" ) ;
251  emEnergyTiming_Low_HE = dbe_->book2D(histo, histo, 160, 0. , 160., 110, -120., 100. ) ;
252 
253  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_HE" ) ;
254  emEnergyTiming_HE = dbe_->book2D(histo, histo, 200, 0. , 800., 110, -120., 100. ) ;
255 
256  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_profile_Low_HE" ) ;
257  emEnergyTiming_profile_Low_HE = dbe_->bookProfile(histo, histo, 160, 0. , 160., 110, -120., 100. ) ;
258 
259  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_profile_HE" ) ;
260  emEnergyTiming_profile_HE = dbe_->bookProfile(histo, histo, 200, 0. , 800., 110, -120., 100. ) ;
261 
262  //HAD
263  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_Low_HE" ) ;
264  hadEnergyTiming_Low_HE = dbe_->book2D(histo, histo, 160, 0. , 160., 70, -48., 92. ) ;
265 
266  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_HE" ) ;
267  hadEnergyTiming_HE = dbe_->book2D(histo, histo, 200, 0. , 800., 70, -48., 92. ) ;
268 
269  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_Low_HE" ) ;
270  hadEnergyTiming_profile_Low_HE = dbe_->bookProfile(histo, histo, 160, 0. , 160., 70, -48., 92. ) ;
271 
272  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_HE" ) ;
273  hadEnergyTiming_profile_HE = dbe_->bookProfile(histo, histo, 200, 0. , 800., 70, -48., 92. ) ;
274  //-------------------------------------------------------------------------------------------
275 
276  //Everything else is not drawn
277  if (useAllHistos_){
278  sprintf (histo, "CaloTowersTask_sum_of_energy_HCAL_vs_ECAL_HE") ;
279  meEnergyHcalvsEcal_HE = dbe_->book2D(histo, histo, 500, 0., 500., 500, 0., 500.);
280 
281  sprintf (histo, "CaloTowersTask_energy_OUTER_HE" ) ;
282  meEnergyHO_HE = dbe_->book1D(histo, histo, 440, -200, 2000);
283 
284  sprintf (histo, "CaloTowersTask_energy_of_ECAL_component_of_tower_HE" ) ;
285  meEnergyEcalTower_HE = dbe_->book1D(histo, histo, 1100, -200, 2000);
286 
287  sprintf (histo, "CaloTowersTask_energy_of_HCAL_component_of_tower_HE" ) ;
288  meEnergyHcalTower_HE = dbe_->book1D(histo, histo, 1100 , -200 , 2000);
289 
290  sprintf (histo, "CaloTowersTask_energy_HcalPlusEcalPlusHO_HE" ) ;
291  meTotEnergy_HE = dbe_->book1D(histo, histo,400, 0., 2000.) ;
292 
293  sprintf (histo, "CaloTowersTask_map_energy_HE" );
294  mapEnergy_HE = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
295  sprintf (histo, "CaloTowersTask_map_energy_HCAL_HE");
296  mapEnergyHcal_HE = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
297  sprintf (histo, "CaloTowersTask_map_energy_ECAL_HE" );
298  mapEnergyEcal_HE = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
299 
300  sprintf (histo, "CaloTowersTask_phi_MET_HE" ) ;
301  phiMET_HE = dbe_->book1D(histo, histo, 72, -3.1415926535898, 3.1415926535898 ) ;
302  }
303  }
304 
305 
306  if( isub == 3 || isub == 0) {
307  //All cell histos are used
308  sprintf (histo, "number_of_bad_cells_Hcal_HF");
309  numBadCellsHcal_HF = dbe_->book1D(histo, histo, 5, 0, 5);
310  sprintf (histo, "number_of_recovered_cells_Hcal_HF");
311  numRcvCellsHcal_HF = dbe_->book1D(histo, histo, 5, 0, 5);
312  sprintf (histo, "number_of_problematic_cells_Hcal_HF");
313  numPrbCellsHcal_HF = dbe_->book1D(histo, histo, 5, 0, 5);
314 
315  //These are the five oldest CaloTower histos used: NTowers, E in HCAL/ECAL, MET and SET
316  //-------------------------------------------------------------------------------------------
317  sprintf (histo, "CaloTowersTask_energy_HCAL_HF" ) ;
318  meEnergyHcal_HF = dbe_->book1D(histo, histo, 440, -200, 2000);
319 
320  sprintf (histo, "CaloTowersTask_energy_ECAL_HF" ) ;
321  meEnergyEcal_HF = dbe_->book1D(histo, histo, 440, -200, 2000);
322 
323  sprintf (histo, "CaloTowersTask_number_of_fired_towers_HF" ) ;
324  meNumFiredTowers_HF = dbe_->book1D(histo, histo, 1000, 0, 2000);
325 
326  sprintf (histo, "CaloTowersTask_MET_HF" ) ;
327  MET_HF = dbe_->book1D(histo, histo, 500, 0. , 500. ) ;
328 
329  sprintf (histo, "CaloTowersTask_SET_HF" ) ;
330  SET_HF = dbe_->book1D(histo, histo, 200, 0. , 200. ) ;
331  //-------------------------------------------------------------------------------------------
332 
333  //Timing histos and profiles -- all six are necessary
334  //-------------------------------------------------------------------------------------------
335  sprintf (histo, "CaloTowersTask_EM_Timing_HF" ) ;
336  emTiming_HF = dbe_->book1D(histo, histo, 110, -120., 100. ) ;
337 
338  sprintf (histo, "CaloTowersTask_HAD_Timing_HF" ) ;
339  hadTiming_HF = dbe_->book1D(histo, histo, 70, -48., 92. ) ;
340 
341  //EM
342  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_HF" ) ;
343  emEnergyTiming_HF = dbe_->book2D(histo, histo, 150, 0. , 300., 110, -120., 100. ) ;
344 
345  sprintf (histo, "CaloTowersTask_EM_Energy_Timing_profile_HF" ) ;
346  emEnergyTiming_profile_HF = dbe_->bookProfile(histo, histo, 150, 0. , 300., 110, -120., 100. ) ;
347 
348  //HAD (requires two different sets of histograms to lower RAM usage)
349  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_Low_HF" ) ;
350  hadEnergyTiming_Low_HF = dbe_->book2D(histo, histo, 40, 0. , 40., 70, -48., 92. ) ;
351 
352  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_HF" ) ;
353  hadEnergyTiming_HF = dbe_->book2D(histo, histo, 200, 0. , 600., 70, -48., 92. ) ;
354 
355  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_Low_HF" ) ;
356  hadEnergyTiming_profile_Low_HF = dbe_->bookProfile(histo, histo, 40, 0. , 40., 70, -48., 92. ) ;
357 
358  sprintf (histo, "CaloTowersTask_HAD_Energy_Timing_profile_HF" ) ;
359  hadEnergyTiming_profile_HF = dbe_->bookProfile(histo, histo, 200, 0. , 600., 70, -48., 92. ) ;
360  //-------------------------------------------------------------------------------------------
361 
362  //Everything else is not drawn
363  if (useAllHistos_){
364  sprintf (histo, "CaloTowersTask_sum_of_energy_HCAL_vs_ECAL_HF") ;
365  meEnergyHcalvsEcal_HF = dbe_->book2D(histo, histo, 500, 0., 500., 500, 0., 500.);
366 
367  sprintf (histo, "CaloTowersTask_energy_OUTER_HF" ) ;
368  meEnergyHO_HF = dbe_->book1D(histo, histo, 440, -200, 2000);
369 
370  sprintf (histo, "CaloTowersTask_energy_of_ECAL_component_of_tower_HF" ) ;
371  meEnergyEcalTower_HF = dbe_->book1D(histo, histo, 440, -200, 2000);
372 
373  sprintf (histo, "CaloTowersTask_energy_of_HCAL_component_of_tower_HF" ) ;
374  meEnergyHcalTower_HF = dbe_->book1D(histo, histo, 440 , -200 , 2000);
375 
376  sprintf (histo, "CaloTowersTask_energy_HcalPlusEcalPlusHO_HF" ) ;
377  meTotEnergy_HF = dbe_->book1D(histo, histo, 400, 0., 2000.) ;
378 
379  sprintf (histo, "CaloTowersTask_map_energy_HF" );
380  mapEnergy_HF = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
381  sprintf (histo, "CaloTowersTask_map_energy_HCAL_HF");
382  mapEnergyHcal_HF = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
383  sprintf (histo, "CaloTowersTask_map_energy_ECAL_HF" );
384  mapEnergyEcal_HF = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.);
385 
386  sprintf (histo, "CaloTowersTask_phi_MET_HF" ) ;
387  phiMET_HF = dbe_->book1D(histo, histo, 72, -3.1415926535898, 3.1415926535898 ) ;
388  }
389  }
390 
391 }
392 
393 
395 
397 
399 
400 }
401 
403  if ( outputFile_.size() != 0 && dbe_ ) dbe_->save(outputFile_);
404 }
405 
407 
409 
410  nevent++;
411 
413  event.getByLabel(theCaloTowerCollectionLabel,towers);
415 
416  double met;
417  double phimet;
418 
419  // ieta scan
420  //double partR = 0.3;
421  //double Rmin = 9999.;
422  //double Econe = 0.;
423  //double Hcone = 0.;
424  //double Ee1 = 0.;
425  //double Eh1 = 0.;
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  if(isub == 0 || isub == 1) {
673  met = sqrt(metx_HB*metx_HB + mety_HB*mety_HB);
674  Vector metv(metx_HB,mety_HB,metz_HB);
675  phimet = metv.phi();
676 
677  //Five oldest drawn histos first; the rest are not used
678  meEnergyHcal_HB-> Fill(sumEnergyHcal_HB);
679  meEnergyEcal_HB-> Fill(sumEnergyEcal_HB);
680  meNumFiredTowers_HB-> Fill(numFiredTowers_HB);
681  MET_HB -> Fill (met);
682  SET_HB -> Fill (sEt_HB);
683 
684  if (useAllHistos_){
685  meEnergyHcalvsEcal_HB->Fill(sumEnergyEcal_HB, sumEnergyHcal_HB);
686  meEnergyHO_HB-> Fill(sumEnergyHO_HB);
687  meTotEnergy_HB-> Fill(sumEnergyHcal_HB+sumEnergyEcal_HB
688  +sumEnergyHO_HB);
689  phiMET_HB -> Fill (phimet);
690  }
691  }
692 
693 
694  if(isub == 0 || isub == 2) {
695  met = sqrt(metx_HE*metx_HE + mety_HE*mety_HE);
696  Vector metv(metx_HE,mety_HE,metz_HE);
697  phimet = metv.phi();
698 
699  //Five oldest drawn histos first; the rest are not used
700  meEnergyHcal_HE-> Fill(sumEnergyHcal_HE);
701  meEnergyEcal_HE-> Fill(sumEnergyEcal_HE);
702  meNumFiredTowers_HE-> Fill(numFiredTowers_HE);
703  MET_HE -> Fill (met);
704  SET_HE -> Fill (sEt_HE);
705 
706  if (useAllHistos_){
707  meEnergyHcalvsEcal_HE->Fill(sumEnergyEcal_HE, sumEnergyHcal_HE);
708  meEnergyHO_HE-> Fill(sumEnergyHO_HE);
709  meTotEnergy_HE-> Fill(sumEnergyHcal_HE+sumEnergyEcal_HE
710  +sumEnergyHO_HE);
711  phiMET_HE -> Fill (phimet);
712  }
713  }
714 
715  if(isub == 0 || isub == 3) {
716  met = sqrt(metx_HF*metx_HF + mety_HF*mety_HF);
717  Vector metv(metx_HF,mety_HF,metz_HF);
718  phimet = metv.phi();
719 
720  //Five oldest drawn histos first; the rest are not used
721  meEnergyHcal_HF-> Fill(sumEnergyHcal_HF);
722  meEnergyEcal_HF-> Fill(sumEnergyEcal_HF);
723  meNumFiredTowers_HF-> Fill(numFiredTowers_HF);
724  MET_HF -> Fill (met);
725  SET_HF -> Fill (sEt_HF);
726 
727  if (useAllHistos_){
728  meEnergyHcalvsEcal_HF->Fill(sumEnergyEcal_HF, sumEnergyHcal_HF);
729  meEnergyHO_HF-> Fill(sumEnergyHO_HF);
730  meTotEnergy_HF-> Fill(sumEnergyHcal_HF+sumEnergyEcal_HF
731  +sumEnergyHO_HF);
732  phiMET_HF -> Fill (phimet);
733  }
734  }
735 
736 }
737 
738 double CaloTowersAnalyzer::dR(double eta1, double phi1, double eta2, double phi2) {
739  double PI = 3.1415926535898;
740  double deltaphi= phi1 - phi2;
741  if( phi2 > phi1 ) { deltaphi= phi2 - phi1;}
742  if(deltaphi > PI) { deltaphi = 2.*PI - deltaphi;}
743  double deltaeta = eta2 - eta1;
744  double tmp = sqrt(deltaeta* deltaeta + deltaphi*deltaphi);
745  return tmp;
746 }
747 
749 
MonitorElement * emean_vs_ieta_EH1
MonitorElement * mapEnergyEcal_HF
edm::InputTag theCaloTowerCollectionLabel
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:32
MonitorElement * hadEnergyTiming_Low_HE
MonitorElement * meEnergyHcalTower_HE
MonitorElement * numRcvCellsHcal_HF
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:717
#define PI
MonitorElement * MET_HE
MonitorElement * phiMET_HF
MonitorElement * emEnergyTiming_profile_Low_HB
MonitorElement * phiMET_HE
MonitorElement * meEnergyEcalTower_HF
MonitorElement * hadEnergyTiming_profile_Low_HE
CaloTowersAnalyzer(edm::ParameterSet const &conf)
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
MonitorElement * emEnergyTiming_Low_HB
MonitorElement * emTiming_HE
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE")
Definition: DQMStore.cc:2113
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:33
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:46
MonitorElement * numRcvCellsHcal_HB
MonitorElement * meNumFiredTowers_HB
MonitorElement * MET_HB
MonitorElement * numPrbCellsHcal_HB
MonitorElement * mapEnergyHcal_HF
MonitorElement * meEnergyHcal_HE
MonitorElement * hadTiming_HB
MonitorElement * numBadCellsEcal_EE
MonitorElement * numPrbCellsEcal_EE
MonitorElement * mapEnergy_HE
MonitorElement * mapEnergy_HF
MonitorElement * mapEnergy_HB
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
Definition: DQMStore.cc:1031
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:39
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:20
MonitorElement * hadEnergyTiming_profile_HF
MonitorElement * numBadCellsHcal_HB
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
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:845
Detector det() const
get the detector field from this detid
Definition: DetId.h:37
MonitorElement * mapEnergyHcal_HB
MonitorElement * emEnergyTiming_profile_HB
MonitorElement * meEnergyHcalvsEcal_HF
MonitorElement * emean_vs_ieta_E1
MonitorElement * meNumFiredTowers_HE
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:429
MonitorElement * emEnergyTiming_HF
MonitorElement * hadEnergyTiming_profile_Low_HF
MonitorElement * mapEnergy_H
MonitorElement * meEnergyEcal_HF