ATLAS Offline Software
CaloTowerVecMon.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // ********************************************************************
6 // NAME: CaloTowerVecMon.cxx
7 //
8 // AUTHOR: Lee Sawyer
9 // CREATED: 1 Feb 2009
10 // MODIFIED:
11 // L. Sawyer 12/2013 Modified booking for new managed histograms
12 // Manager Anirvan Sircar June 1st 2010
13 // D. Hu (Jun 2011 - May 2012)
14 // L. Sawyer (Dec 2013 - )
15 // ********************************************************************
16 #include "CaloTowerVecMon.h"
17 
20 
22 #include "CaloEvent/CaloCell.h"
23 #include "AthenaKernel/Units.h"
24 
25 using Athena::Units::GeV;
26 
28  const std::string& name,
29  const IInterface* parent) :
31  m_trigDec("Trig::TrigDecisionTool/TrigDecisionTool"),
32  m_Trigger1(nullptr),
33  m_Trigger2(nullptr),
34  m_Trigger3(nullptr),
35  m_isTrigDefined1(false),
36  m_isTrigDefined2(false),
37  m_isTrigDefined3(false),
38  m_isTrigEvent1(false),
39  m_isTrigEvent2(false),
40  m_isTrigEvent3(false),
41  m_Fcaltower_sumEt(0),
42  m_energy_most(0),
43  m_eta_most(0),
44  m_phi_most (0),
45  m_ncells_most(0),
46  m_twr_etaphi_Et_thresh(),
47  m_twr_e_phi_thresh(),
48  m_twr_e_eta_thresh(),
49  m_twr_e_phiall_thresh(),
50  m_twr_e_etaphi_thresh(),
51  m_twr_e_trans_phi_thresh(),
52  m_twr_e_trans_eta_thresh(),
53  m_twr_e_trans_phiall_thresh(),
54  m_twr_e_trans_etaphi_thresh(),
55  m_twr_e_total_phi_thresh(),
56  m_twr_e_total_eta_thresh(),
57  m_twr_e_total_phiall_thresh(),
58  m_twr_e_total_etaphi_thresh(),
59  m_twr_nCells_phi_thresh(),
60  m_twr_nCells_eta_thresh(),
61  m_twr_nCells_phiall_thresh(),
62  m_twr_nCells_etaphi_thresh(),
63  m_twr_phi_thresh(),
64  m_twr_eta_thresh(),
65  m_twr_phiall_thresh(),
66  m_twr_etaphi_thresh()
67 {
68  declareInterface<IMonitorToolBase>(this);
69 
70  declareProperty("CaloTowerContainer", m_towerContainerName="CombinedTower");
71 
72  declareProperty("TimeGran",m_timeGran="run");
73 
74  // tools
75  declareProperty("useBadLBTool", m_useBadLBTool=false);
76  declareProperty("BadLBTool", m_BadLBTool);
77  declareProperty("useReadyFilterTool",m_useReadyFilterTool=true);
78  declareProperty("ReadyFilterTool",m_ReadyFilterTool);
79  declareProperty("useLArNoisyAlg",m_useLArNoisyAlg=false);
80 
81  // Trigger Awareness:
83  declareProperty("TriggerNames1",m_TriggerNames1);
84  declareProperty("TriggerNames2",m_TriggerNames2);
85  declareProperty("TriggerNames3",m_TriggerNames3);
86 
87  // energy threshold
88  declareProperty("NoOfThreshTests", m_threshtests=MAX_E);
89 
90  declareProperty("noEThresh", m_Ethresh[NO_E]=-999999.0);
91  declareProperty("lowEThresh", m_Ethresh[LOW_E]=0.0);
92  declareProperty("lowmedEThresh", m_Ethresh[LOWMED_E]=5.0);
93  declareProperty("medEThresh", m_Ethresh[MED_E]=10);
94  declareProperty("medhiEThresh", m_Ethresh[MEDHIGH_E]=15);
95  declareProperty("hiEThresh", m_Ethresh[HIGH_E]=20);
96 
97  declareProperty("fill_TransverseE", m_filltranse=true);
98  declareProperty("fill_TotalE", m_filltotal=true);
99 
100  initHists();
101 }
102 
104  // twr pre hists
105  m_n_calos=nullptr;
106  m_n_twrs=nullptr;
107 
108  // cell hists
109  m_ratioE_leadcell_tower=nullptr;
110  m_etaphi_hotrat_tower=nullptr;
112 
113  //No threshold energy hists
114  m_twr_e=nullptr;
115  m_postwr_e_thresh=nullptr;
116  m_negtwr_e_thresh=nullptr;
117  m_twr_et_FcalA0=nullptr;
118  m_twr_et_FcalA1=nullptr;
119  m_twr_et_FcalA2=nullptr;
120  m_twr_et_FcalC0=nullptr;
121  m_twr_et_FcalC1=nullptr;
122  m_twr_et_FcalC2=nullptr;
123 
124  // multi-threshold hists
125 
126  for (int i=0; i<m_threshtests; i++) { //loop over thresholds
127  m_twr_etaphi_Et_thresh[i]=nullptr;
128 
129  for (int j=0; j<3;j++){
130  m_twr_e_phi_thresh[i][j]=nullptr;
131  m_twr_e_trans_phi_thresh[i][j]=nullptr;
132  m_twr_e_total_phi_thresh[i][j]=nullptr;
133  m_twr_nCells_phi_thresh[i][j]=nullptr;
134  m_twr_phi_thresh[i][j]=nullptr;
135  }
136 
137  m_twr_e_eta_thresh[i]=nullptr;
138  m_twr_e_phiall_thresh[i]=nullptr;
139  m_twr_e_etaphi_thresh[i]=nullptr;
140 
141  m_twr_e_trans_eta_thresh[i]=nullptr;
144 
145  m_twr_e_total_eta_thresh[i]=nullptr;
148 
149  m_twr_nCells_eta_thresh[i]=nullptr;
150  m_twr_nCells_phiall_thresh[i]=nullptr;
151  m_twr_nCells_etaphi_thresh[i]=nullptr;
152 
153  m_twr_eta_thresh[i]=nullptr;
154  m_twr_phiall_thresh[i]=nullptr;
155  m_twr_etaphi_thresh[i]=nullptr;
156  }
157  // twr stat hists
158  m_twr_et_Fcal0=nullptr;
159  m_twr_et_Fcal1=nullptr;
160  m_twr_et_Fcal2=nullptr;
161 
162  m_twrMost_e=nullptr;
163  m_twrMost_etaphi=nullptr;
164  m_twrMost_nCells=nullptr;
165 
166 }
167 
170 
173  StatusCode sc = StatusCode::SUCCESS;
174  sc = retrieveTools();
175 
177  if(sc.isFailure()){
178  ATH_MSG_ERROR("Could not initialize ManagedMonitorToolBase");
179  return sc;
180  }
181 
182  return sc;
183 }
184 
186  StatusCode sc = StatusCode::SUCCESS;
187 
188  // retrieve BadLBFilter tool
189  if(m_useBadLBTool){
190  sc = m_BadLBTool.retrieve();
191  if(sc.isFailure()){
192  ATH_MSG_ERROR("Unable to retrieve the DQBadLBFilterTool");
193  m_useBadLBTool = false;
194  return sc;
195  }
196  ATH_MSG_INFO("DQBadLBFilterTool retrieved");
197  }
198 
199  // retrieve AtlasReadyFilter tool
201  sc = m_ReadyFilterTool.retrieve();
202  if(sc.isFailure()) {
203  ATH_MSG_ERROR("Could Not Retrieve AtlasReadyFilterTool " << m_ReadyFilterTool);
204  m_useReadyFilterTool = false;
205  return sc;
206  }
207  ATH_MSG_INFO("AtlasReadyFilterTool retrieved");
208  }
209 
210  if( m_useTriggerCaloMon) {
211  if( (!m_TriggerNames1.empty()) || (!m_TriggerNames2.empty()) || (!m_TriggerNames3.empty()) ) {
212  sc = m_trigDec.retrieve();
213  if( !sc.isSuccess() ) {
214  ATH_MSG_ERROR("Unable to retrieve the TrigDecisionTool");
215  m_useTriggerCaloMon = false;
216  return sc;
217  }
218  ATH_MSG_INFO("TrigDecisionTool retrieved");
219  if( !m_TriggerNames1.empty() ){
220  m_Trigger1 = m_trigDec->getChainGroup(m_TriggerNames1.c_str());
221  m_isTrigDefined1 = true;
222  }
223  else {
224  m_isTrigDefined1 = false;
225  }
226  if( !m_TriggerNames2.empty() ){
227  m_Trigger2 = m_trigDec->getChainGroup(m_TriggerNames2.c_str());
228  m_isTrigDefined2 = true;
229  }
230  else {
231  m_isTrigDefined2 = false;
232  }
233  if( !m_TriggerNames3.empty() ){
234  m_Trigger3 = m_trigDec->getChainGroup(m_TriggerNames3.c_str());
235  m_isTrigDefined3 = true;
236  }
237  else {
238  m_isTrigDefined3 = false;
239  }
240  }
241  else {
242  m_useTriggerCaloMon = false;
243  }
244  }
245 
246  return sc;
247 }
248 
251 // Book old-style (unmanaged) histograms. Not used.
252 
253  return StatusCode::SUCCESS;
254 }
255 
258 // Book managed histograms.
259 
260  ATH_MSG_DEBUG(" CaloTowerVecMon:in bookHistograms() ");
261 
262  Interval_t theinterval = run;
263 // No longer needed for managed histograms - LS 12/2013
264 // bool testTimeGran = checkTimeGran( isNewEventsBlock, isNewLumiBlock, isNewRun, theinterval);
265 
266 // if( testTimeGran ) {
267  bookTwrPreHists(theinterval);
268  bookCellHists(theinterval);
269  bookNothrEnHists(theinterval);
270  bookMuthrHists(theinterval);
271  bookTwrStatHists(theinterval);
272 // }
273 
274  return StatusCode::SUCCESS;
275 }
276 
277 StatusCode CaloTowerVecMon::checkTimeGran(bool isNewEventsBlock, bool isNewLumiBlock, bool isNewRun, Interval_t& theinterval){
278  bool isNewTimeGran=isNewRun;
279  theinterval=run;
280  // but if the choice is different
281  if (m_timeGran.compare("run") !=0) {
282  if (m_timeGran.compare("eventsblock") ==0) {
283  isNewTimeGran=isNewEventsBlock;
284  theinterval= eventsBlock;
285  }
286  else if (m_timeGran.compare("lumiblock") ==0) {
287  isNewTimeGran=isNewLumiBlock;
288  theinterval=lumiBlock;
289  }
290  //... check if it is low statistics interval
291  else if (m_timeGran.compare("lowStat") ==0){
292  isNewTimeGran=newLowStatIntervalFlag();
293  theinterval=lowStat;
294  }
295  //... or medium statistics
296  else if (m_timeGran.compare("medStat") ==0) {
297  isNewTimeGran=newMedStatIntervalFlag();
298  theinterval=medStat;
299  }
300  else if (m_timeGran.compare("higStat") ==0){
301  isNewTimeGran=newHigStatIntervalFlag();
302  theinterval=higStat;
303  }
304  else if (m_timeGran.compare("fill") ==0){
305  isNewTimeGran=newLowStatIntervalFlag();
306  theinterval=fill;
307  }
308  else if (m_timeGran.compare("all") ==0){
309  isNewTimeGran=newLowStatIntervalFlag();
310  theinterval=all;
311  }
312  // if it is not global, but it is something else stick to medium stat
313  else {
314  isNewTimeGran=newLowStatIntervalFlag();
315  theinterval=medStat;
316  }
317  }
318 
319  return StatusCode(isNewTimeGran);
320 }
321 
323  std::string TheTrigger;
324  if (m_triggerChainProp.empty()) TheTrigger="";
325  else TheTrigger = m_triggerChainProp;
326 
327  std::string TheTowerDir("/CaloMonitoring/");
328 
329  MonGroup calo_towers_mongroupExpert ( this, TheTowerDir+m_towerContainerName+TheTrigger+"/General", theinterval );
330  m_n_calos = new TH1F("NCalos","Number of Calorimeters in Tower", 10, 0., 10.);
331  calo_towers_mongroupExpert.regHist( m_n_calos ).ignore();
332 
333  m_n_twrs = new TH1F("NTwr","Number of Towers",150,0.,7500.);
334  m_n_twrs->GetXaxis()->SetTitle("Number");
335  m_n_twrs->GetYaxis()->SetTitle("Events");
336  calo_towers_mongroupExpert.regHist( m_n_twrs ).ignore();
337 }
338 
340  std::string TheTrigger;
341  if (m_triggerChainProp.empty()) TheTrigger="";
342  else TheTrigger = m_triggerChainProp;
343 
344  std::string TheTowerDir("/CaloMonitoring/");
345 
346  MonGroup towers_leadcell_mongroupExpert ( this, TheTowerDir+m_towerContainerName+TheTrigger+"/LeadCell", theinterval);
347 
348  m_ratioE_leadcell_tower= new TH1F("ratioE_leadcell_tower","Ratio(E_lead_cell/E_tower)",10000,-100.0,100.0);
349  towers_leadcell_mongroupExpert.regHist( m_ratioE_leadcell_tower ).ignore();
350  m_ratioE_leadcell_tower->GetXaxis()->SetTitle("Ratio(E_lead_cell/E_tower)");
351 
352  m_etaphi_hotrat_tower = new TH2F("etaphi_hotrat","Hit map of towers with E_Cell/E_tower > 0.9 and E_Tower>0.0 GeV",98,-4.9,4.9,64,-3.15,3.15);
353  towers_leadcell_mongroupExpert.regHist( m_etaphi_hotrat_tower).ignore();
354  m_etaphi_hotrat_tower->GetXaxis()->SetTitle("#eta");
355  m_etaphi_hotrat_tower->GetYaxis()->SetTitle("#phi");
356  m_etaphi_hotrat_tower->GetZaxis()->SetMoreLogLabels();
357 
358  m_etaphi_avgenergy_hotrat_tower = new TProfile2D("etaphi_avgenergy_hotrat","Average energy of Towers with E_Cell/E_tower>0.9 and E_Tower>0.0 GeV",98,-4.9,4.9,64,-3.15,3.15);
359  towers_leadcell_mongroupExpert.regHist( m_etaphi_avgenergy_hotrat_tower ).ignore();
360  m_etaphi_avgenergy_hotrat_tower->GetXaxis()->SetTitle("#eta");
361  m_etaphi_avgenergy_hotrat_tower->GetYaxis()->SetTitle("#phi");
362 }
363 
365  std::string TheTrigger;
366  if (m_triggerChainProp.empty()) TheTrigger="";
367  else TheTrigger = m_triggerChainProp;
368 
369  std::string TheTowerDir("/CaloMonitoring/");
370 
371  MonGroup calo_towers_mongroupExpert ( this, TheTowerDir+m_towerContainerName+TheTrigger+"/General", theinterval );
372  MonGroup towers_EtFcal_mongroupShift ( this, TheTowerDir+m_towerContainerName+TheTrigger+"/Et_Fcal", theinterval);
373 
374 
375  m_twr_e = new TH1F("EnergyOfTwr","Tower Energy Distribution", 100,-500.0,500.0);
376  m_twr_e->GetXaxis()->SetTitle("Energy");
377  m_twr_e->GetYaxis()->SetTitle("Events");
378  calo_towers_mongroupExpert.regHist( m_twr_e ).ignore();
379 
380  m_postwr_e_thresh = new TH1F("EnergyOfPosTwr","Tower Energy distribution with E_Twr>0.0GeV", 100,0.,500.0);
381  m_postwr_e_thresh->GetXaxis()->SetTitle("Energy");
382  m_postwr_e_thresh->GetYaxis()->SetTitle("Events");
383  calo_towers_mongroupExpert.regHist( m_postwr_e_thresh ).ignore();
384 
385  m_negtwr_e_thresh = new TH1F("EnergyOfNegTwr","Tower Energy distribution with E_Twr<0.0GeV", 100,-500.0,0.);
386  m_negtwr_e_thresh->GetXaxis()->SetTitle("Energy");
387  m_negtwr_e_thresh->GetYaxis()->SetTitle("Events");
388  calo_towers_mongroupExpert.regHist( m_negtwr_e_thresh ).ignore();
389 
390  std::string title_FcalA0 = "Tower in FcalA Et Distribution without trigger cut";
391  m_twr_et_FcalA0 = new TH1F("EtOfTwrInFcalA0",title_FcalA0.c_str(), 60,-10.0,50.0);
392  m_twr_et_FcalA0->GetXaxis()->SetTitle("Et(GeV)");
393  m_twr_et_FcalA0->GetYaxis()->SetTitle("Events");
394  towers_EtFcal_mongroupShift.regHist( m_twr_et_FcalA0 ).ignore();
395 
396  std::string title_FcalA1 = "Tower in FcalA Et Distribution passing"+ m_TriggerNames1+" or "+m_TriggerNames2;
397  m_twr_et_FcalA1 = new TH1F("EtOfTwrInFcalA1",title_FcalA1.c_str(), 60,-10.0,50.0);
398  m_twr_et_FcalA1->GetXaxis()->SetTitle("Et(GeV)");
399  m_twr_et_FcalA1->GetYaxis()->SetTitle("Events");
400  towers_EtFcal_mongroupShift.regHist( m_twr_et_FcalA1 ).ignore();
401 
402  std::string title_FcalA2 = "Tower in FcalA Et Distribution passing"+ m_TriggerNames3;
403  m_twr_et_FcalA2 = new TH1F("EtOfTwrInFcalA2",title_FcalA2.c_str(), 60,-10.0,50.0);
404  m_twr_et_FcalA2->GetXaxis()->SetTitle("Et(GeV)");
405  m_twr_et_FcalA2->GetYaxis()->SetTitle("Events");
406  towers_EtFcal_mongroupShift.regHist( m_twr_et_FcalA2 ).ignore();
407 
408  std::string title_FcalC0 = "Tower in FcalC Et Distribution without trigger cut";
409  m_twr_et_FcalC0 = new TH1F("EtOfTwrInFcalC0",title_FcalC0.c_str(), 60,-10.0,50.0);
410  m_twr_et_FcalC0->GetXaxis()->SetTitle("Et(GeV)");
411  m_twr_et_FcalC0->GetYaxis()->SetTitle("Events");
412  towers_EtFcal_mongroupShift.regHist( m_twr_et_FcalC0 ).ignore();
413 
414  std::string title_FcalC1 = "Tower in FcalC Et Distribution passing"+ m_TriggerNames1+" or "+m_TriggerNames2;
415  m_twr_et_FcalC1 = new TH1F("EtOfTwrInFcalC1",title_FcalC1.c_str(), 60,-10.0,50.0);
416  m_twr_et_FcalC1->GetXaxis()->SetTitle("Et(GeV)");
417  m_twr_et_FcalC1->GetYaxis()->SetTitle("Events");
418  towers_EtFcal_mongroupShift.regHist( m_twr_et_FcalC1 ).ignore();
419 
420  std::string title_FcalC2 = "Tower in FcalC Et Distribution passing"+ m_TriggerNames3;
421  m_twr_et_FcalC2 = new TH1F("EtOfTwrInFcalC2",title_FcalC2.c_str(), 60,-10.0,50.0);
422  m_twr_et_FcalC2->GetXaxis()->SetTitle("Et(GeV)");
423  m_twr_et_FcalC2->GetYaxis()->SetTitle("Events");
424  towers_EtFcal_mongroupShift.regHist( m_twr_et_FcalC2 ).ignore();
425 }
426 
428  std::string TheTrigger;
429  if (m_triggerChainProp.empty()) TheTrigger="";
430  else TheTrigger = m_triggerChainProp;
431 
432  std::string TheTowerDir("/CaloMonitoring/");
433 
434  MonGroup towers_1davge_mongroupExpert ( this, TheTowerDir+m_towerContainerName+TheTrigger+"/1d_AvEnergy", theinterval); //EXPERT
435  MonGroup towers_2davge_mongroupExpert ( this, TheTowerDir+m_towerContainerName+TheTrigger+"/2d_AvEnergy", theinterval); //EXPERT
436  MonGroup towers_2davge_mongroupShift ( this, TheTowerDir+m_towerContainerName+TheTrigger+"/2d_AvEnergy", theinterval); //SHIFT
437  MonGroup towers_1drates_mongroupExpert ( this, TheTowerDir+m_towerContainerName+TheTrigger+"/1d_Rates", theinterval); //EXPERT
438  MonGroup towers_2drates_mongroupExpert ( this, TheTowerDir+m_towerContainerName+TheTrigger+"/2d_Rates", theinterval); //SHIFT
439  MonGroup towers_2drates_mongroupShift ( this, TheTowerDir+m_towerContainerName+TheTrigger+"/2d_Rates", theinterval); //SHIF
440  MonGroup towers_total_mongroupExpert ( this, TheTowerDir+m_towerContainerName+TheTrigger+"/TotalEnergy", theinterval); //EXPERT
441  MonGroup towers_transe_mongroupExpert ( this, TheTowerDir+m_towerContainerName+TheTrigger+"/TransEnergy", theinterval); //EXPERT
442  MonGroup towers_ncells_mongroupExpert ( this, TheTowerDir+m_towerContainerName+TheTrigger+"/NCells", theinterval); //EXPERT
443 
444  for (int i=0; i<m_threshtests; i++) { //loop over thresholds
445  char bname[256];
446  char btitle[256];
447 
448  sprintf(bname, "TwrOccupancyVsEtaPhithresh_Et_%d",i);
449  sprintf(btitle, "Tower Occupancy Vs #eta - #phi with Et_Twr> %4.1f GeV", m_Ethresh[i]);
450  m_twr_etaphi_Et_thresh[i] = new TH2F(bname,btitle,98,-4.9,4.9, 64,-3.15,3.15);
451  m_twr_etaphi_Et_thresh[i]->GetXaxis()->SetTitle("#eta");
452  m_twr_etaphi_Et_thresh[i]->GetYaxis()->SetTitle("#phi");
453  towers_2drates_mongroupExpert.regHist(m_twr_etaphi_Et_thresh[i] ).ignore();
454 
455  std::string Region;
456  for (int j=0; j<3;j++){
457  switch(j){
458  case 0:
459  Region="Barrel";
460  break;
461  case 1:
462  Region="EndcapA";
463  break;
464  case 2:
465  Region="EndcapC";
466  break;
467  }
468 
469  sprintf(bname, "AvgEnergyOfTwrVsPhithresh_%s_%d", Region.c_str(),i);
470  sprintf(btitle, "AvgEnergy of Tower %s Vs #phi with E_Twr> %4.1f GeV", Region.c_str(),m_Ethresh[i]);
471  m_twr_e_phi_thresh[i][j] = new TProfile(bname, btitle, 64,-3.15,3.15);
472  m_twr_e_phi_thresh[i][j]->GetXaxis()->SetTitle("#phi");
473  m_twr_e_phi_thresh[i][j]->GetYaxis()->SetTitle("Average Energy");
474  m_twr_e_phi_thresh[i][j]->GetYaxis()->SetMoreLogLabels();
475  towers_1davge_mongroupExpert.regHist( m_twr_e_phi_thresh[i][j] ).ignore();
476 
477  if (m_filltranse) {
478  sprintf(bname, "TransEnergyOfTwrVsPhithresh_%s_%d", Region.c_str(),i);
479  sprintf(btitle, "TransEnergy of Tower %s Vs #phi with E_Twr> %4.1f GeV", Region.c_str(),m_Ethresh[i]);
480  m_twr_e_trans_phi_thresh[i][j] = new TProfile(bname, btitle, 64,-3.15,3.15);
481  m_twr_e_trans_phi_thresh[i][j]->GetXaxis()->SetTitle("#phi");
482  m_twr_e_trans_phi_thresh[i][j]->GetYaxis()->SetTitle("Average Energy");
483  m_twr_e_trans_phi_thresh[i][j]->GetYaxis()->SetMoreLogLabels();
484  towers_transe_mongroupExpert.regHist( m_twr_e_trans_phi_thresh[i][j] ).ignore();
485  }
486 
487  if (m_filltotal) {
488  sprintf(bname, "TotalEnergyOfTwrVsPhithresh_%s_%d", Region.c_str(),i);
489  sprintf(btitle, "TotalEnergy of Tower %s Vs #phi with E_Twr> %4.1f GeV", Region.c_str(),m_Ethresh[i]);
490  m_twr_e_total_phi_thresh[i][j] = new TH1F(bname, btitle,64,-3.15,3.15);
491  m_twr_e_total_phi_thresh[i][j]->GetXaxis()->SetTitle("#phi");
492  m_twr_e_total_phi_thresh[i][j]->GetYaxis()->SetTitle("Average Energy");
493  m_twr_e_total_phi_thresh[i][j]->GetYaxis()->SetMoreLogLabels();
494  towers_total_mongroupExpert.regHist( m_twr_e_total_phi_thresh[i][j] ).ignore();
495  }
496 
497  sprintf(bname, "TowersAvgnCellsVsPhithresh_%s_%d", Region.c_str(),i);
498  sprintf(btitle, "AvgNumber of cells in each %s Tower Vs #phi with E_Twr>%4.1f GeV ", Region.c_str(),m_Ethresh[i]);
499  m_twr_nCells_phi_thresh[i][j] = new TProfile(bname,btitle, 64,-3.15,3.15);
500  m_twr_nCells_phi_thresh[i][j]->GetXaxis()->SetTitle("#Phi");
501  m_twr_nCells_phi_thresh[i][j]->GetYaxis()->SetTitle("AvgNumber of cells ");
502  m_twr_nCells_phi_thresh[i][j]->GetYaxis()->SetMoreLogLabels();
503  towers_ncells_mongroupExpert.regHist( m_twr_nCells_phi_thresh[i][j] ).ignore();
504 
505  sprintf(bname, "TwrOccupancyVsPhithresh_%s_%d", Region.c_str(),i);
506  sprintf(btitle, "Tower %s Occupancy Vs #phi with E_Twr> %4.1f GeV ",Region.c_str(),m_Ethresh[i]);
507  m_twr_phi_thresh[i][j] = new TH1F(bname,btitle, 64,-3.15,3.15);
508  m_twr_phi_thresh[i][j]->GetXaxis()->SetTitle("#phi");
509  m_twr_phi_thresh[i][j]->GetYaxis()->SetTitle("Events");
510  m_twr_phi_thresh[i][j]->GetYaxis()->SetMoreLogLabels();
511  towers_1drates_mongroupExpert.regHist(m_twr_phi_thresh[i][j] ).ignore();
512  } //end region loop
513 
514  sprintf(bname, "AvgEnergyOfTwrVsEtathresh_%d",i);
515  sprintf(btitle, "AvgEnergy of Tower Vs #eta for E_Twr> %4.1f GeV", m_Ethresh[i]);
516  m_twr_e_eta_thresh[i] = new TProfile(bname, btitle, 98,-4.9,4.9);
517  m_twr_e_eta_thresh[i]->GetXaxis()->SetTitle("#eta");
518  m_twr_e_eta_thresh[i]->GetYaxis()->SetTitle("Average Energy");
519  m_twr_e_eta_thresh[i]->GetYaxis()->SetMoreLogLabels();
520  towers_1davge_mongroupExpert.regHist( m_twr_e_eta_thresh[i] ).ignore();
521 
522  sprintf(bname, "AvgEnergyOfTwrVsFullPhithresh_%d",i);
523  sprintf(btitle, "AvgEnergy of Tower Vs #phi E_Twr > %4.1f GeV", m_Ethresh[i]);
524  m_twr_e_phiall_thresh[i] = new TProfile(bname, btitle, 64,-3.15,3.15);
525  m_twr_e_phiall_thresh[i]->GetXaxis()->SetTitle("#phi");
526  m_twr_e_phiall_thresh[i]->GetYaxis()->SetTitle("Average Energy");
527  m_twr_e_phiall_thresh[i]->GetYaxis()->SetMoreLogLabels();
528  towers_1davge_mongroupExpert.regHist( m_twr_e_phiall_thresh[i] ).ignore();
529 
530  sprintf(bname, "AvgEnergyOfTwrVsEtaPhithresh_%d",i);
531  sprintf(btitle, "AvgEnergy of Tower Vs #eta-#phi for E_Twr> %4.1f GeV", m_Ethresh[i]);
532  m_twr_e_etaphi_thresh[i] = new TProfile2D(bname, btitle,98,-4.9,4.9,64,-3.15,3.15);
533  m_twr_e_etaphi_thresh[i]->GetXaxis()->SetTitle("#eta");
534  m_twr_e_etaphi_thresh[i]->GetYaxis()->SetTitle("#phi");
535  if(i==0 || i==2) towers_2davge_mongroupShift.regHist( m_twr_e_etaphi_thresh[i] ).ignore();
536  else towers_2davge_mongroupExpert.regHist( m_twr_e_etaphi_thresh[i] ).ignore();
537 
538  if(m_filltranse) {
539  sprintf(bname, "TransEnergyOfTwrVsEtathresh_%d",i);
540  sprintf(btitle, "TransEnergy of Tower Vs #eta for E_Twr> %4.1f GeV", m_Ethresh[i]);
541  m_twr_e_trans_eta_thresh[i] = new TProfile(bname, btitle, 98,-4.9,4.9);
542  m_twr_e_trans_eta_thresh[i]->GetXaxis()->SetTitle("#eta");
543  m_twr_e_trans_eta_thresh[i]->GetYaxis()->SetTitle("Average Energy");
544  towers_transe_mongroupExpert.regHist( m_twr_e_trans_eta_thresh[i] ).ignore();
545 
546  sprintf(bname, "TransEnergyOfTwrVsFullPhithresh_%d",i);
547  sprintf(btitle, "TransEnergy of Tower Vs #phi E_Twr > %4.1f GeV", m_Ethresh[i]);
548  m_twr_e_trans_phiall_thresh[i] = new TProfile(bname, btitle, 64,-3.15,3.15);
549  m_twr_e_trans_phiall_thresh[i]->GetXaxis()->SetTitle("#phi");
550  m_twr_e_trans_phiall_thresh[i]->GetYaxis()->SetTitle("Average Energy");
551  m_twr_e_trans_phiall_thresh[i]->GetYaxis()->SetMoreLogLabels();
552  towers_transe_mongroupExpert.regHist( m_twr_e_trans_phiall_thresh[i] ).ignore();
553 
554  sprintf(bname, "TransEnergyOfTwrVsEtaPhithresh_%d",i);
555  sprintf(btitle, "TransEnergy of Tower Vs #eta-#phi for E_Twr> %4.1f GeV", m_Ethresh[i]);
556  m_twr_e_trans_etaphi_thresh[i] = new TProfile2D(bname, btitle,98,-4.9,4.9,64,-3.15,3.15);
557  m_twr_e_trans_etaphi_thresh[i]->GetXaxis()->SetTitle("#eta");
558  m_twr_e_trans_etaphi_thresh[i]->GetYaxis()->SetTitle("#phi");
559  towers_transe_mongroupExpert.regHist( m_twr_e_trans_etaphi_thresh[i] ).ignore();
560  }
561 
562  if (m_filltotal) {
563  sprintf(bname, "TotalEnergyOfTwrVsEtathresh_%d",i);
564  sprintf(btitle, "TotalEnergy of Tower Vs #eta for E_Twr> %4.1f GeV", m_Ethresh[i]);
565  m_twr_e_total_eta_thresh[i] = new TH1F(bname, btitle, 98,-4.9,4.9);
566  m_twr_e_total_eta_thresh[i]->GetXaxis()->SetTitle("#eta");
567  m_twr_e_total_eta_thresh[i]->GetYaxis()->SetTitle("Total Energy");
568  towers_total_mongroupExpert.regHist( m_twr_e_total_eta_thresh[i] ).ignore();
569 
570  sprintf(bname, "TotalEnergyOfTwrVsFullPhithresh_%d",i);
571  sprintf(btitle, "TotalEnergy of Tower Vs #phi E_Twr > %4.1f GeV", m_Ethresh[i]);
572  m_twr_e_total_phiall_thresh[i] = new TH1F(bname,btitle, 64,-3.15,3.15);
573  m_twr_e_total_phiall_thresh[i]->GetXaxis()->SetTitle("#phi");
574  m_twr_e_total_phiall_thresh[i]->GetYaxis()->SetTitle("Total Energy");
575  m_twr_e_total_phiall_thresh[i]->GetYaxis()->SetMoreLogLabels();
576  towers_total_mongroupExpert.regHist( m_twr_e_total_phiall_thresh[i] ).ignore();
577 
578  sprintf(bname, "TotalEnergyOfTwrVsEtaPhithresh_%d",i);
579  sprintf(btitle, "TotalEnergy of Tower Vs #eta-#phi for E_Twr> %4.1f GeV", m_Ethresh[i]);
580  m_twr_e_total_etaphi_thresh[i] = new TH2F(bname, btitle,98,-4.9,4.9,64,-3.15,3.15);
581  m_twr_e_total_etaphi_thresh[i]->GetXaxis()->SetTitle("#eta");
582  m_twr_e_total_etaphi_thresh[i]->GetYaxis()->SetTitle("#phi");
583  towers_total_mongroupExpert.regHist( m_twr_e_total_etaphi_thresh[i] ).ignore();
584  }
585 
586  sprintf(bname, "TowersAvgnCellsVsEtathresh_%d",i);
587  sprintf(btitle, "AvgNumber of cells in each Tower with E_Twr>%4.1f GeV Vs #eta ", m_Ethresh[i]);
588  m_twr_nCells_eta_thresh[i] = new TProfile(bname, btitle, 98,-4.9,4.9);
589  m_twr_nCells_eta_thresh[i]->GetXaxis()->SetTitle("#eta");
590  m_twr_nCells_eta_thresh[i]->GetYaxis()->SetTitle("AvgNumber of cells ");
591  m_twr_nCells_eta_thresh[i]->GetYaxis()->SetMoreLogLabels();
592  towers_ncells_mongroupExpert.regHist( m_twr_nCells_eta_thresh[i] ).ignore();
593 
594  sprintf(bname, "TowersAvgnCellsVsFullPhithresh_%d",i);
595  sprintf(btitle, "AvgNumber of cells in each Tower with E_Twr>%4.1f GeV vs #phi ", m_Ethresh[i]);
596  m_twr_nCells_phiall_thresh[i] = new TProfile(bname,btitle, 64,-3.15,3.15);
597  m_twr_nCells_phiall_thresh[i]->GetXaxis()->SetTitle("#phi");
598  m_twr_nCells_phiall_thresh[i]->GetYaxis()->SetTitle("AvgNumber of cells ");
599  m_twr_nCells_phiall_thresh[i]->GetYaxis()->SetMoreLogLabels();
600  towers_ncells_mongroupExpert.regHist( m_twr_nCells_phiall_thresh[i] ).ignore();
601 
602  sprintf(bname, "TowersAvgnCellsVsEtaPhithresh_%d",i);
603  sprintf(btitle, "AvgNumber of cells in each Tower with E_Twr>%4.1f GeV Vs #eta-#Phi ", m_Ethresh[i]);
604  m_twr_nCells_etaphi_thresh[i] = new TProfile2D(bname,btitle, 98,-4.9,4.9,64,-3.15,3.15);
605  m_twr_nCells_etaphi_thresh[i]->GetXaxis()->SetTitle("#eta");
606  m_twr_nCells_etaphi_thresh[i]->GetYaxis()->SetTitle("#phi");
607  m_twr_nCells_etaphi_thresh[i]->GetYaxis()->SetMoreLogLabels();
608  m_twr_nCells_etaphi_thresh[i]->GetZaxis()->SetMoreLogLabels();
609  towers_ncells_mongroupExpert.regHist( m_twr_nCells_etaphi_thresh[i] ).ignore();
610 
611  sprintf(bname, "TwrOccupancyVsEtathresh_%d",i);
612  sprintf(btitle, "Tower Occupancy Vs Eta with E_Twr> %4.1f GeV", m_Ethresh[i]);
613  m_twr_eta_thresh[i] = new TH1F(bname,btitle, 98,-4.9,4.9);
614  m_twr_eta_thresh[i]->GetXaxis()->SetTitle("Eta");
615  m_twr_eta_thresh[i]->GetYaxis()->SetTitle("Events");
616  m_twr_eta_thresh[i]->GetYaxis()->SetMoreLogLabels();
617  towers_1drates_mongroupExpert.regHist(m_twr_eta_thresh[i] ).ignore();
618 
619  sprintf(bname, "TwrOccupancyVsFullPhithresh_%d",i);
620  sprintf(btitle, "Tower Occupancy Vs #phi with E_Twr> %4.1f GeV", m_Ethresh[i]);
621  m_twr_phiall_thresh[i] = new TH1F(bname,btitle, 64,-3.15,3.15);
622  m_twr_phiall_thresh[i]->GetXaxis()->SetTitle("#phi");
623  m_twr_phiall_thresh[i]->GetYaxis()->SetTitle("Events");
624  m_twr_phiall_thresh[i]->GetYaxis()->SetMoreLogLabels();
625  towers_1drates_mongroupExpert.regHist(m_twr_phiall_thresh[i] ).ignore();
626 
627  sprintf(bname, "TwrOccupancyVsEtaPhithresh_%d",i);
628  sprintf(btitle, "Tower Occupancy Vs #eta - #phi with E_Twr> %4.1f GeV", m_Ethresh[i]);
629  m_twr_etaphi_thresh[i] = new TH2F(bname,btitle,98,-4.9,4.9, 64,-3.15,3.15);
630  m_twr_etaphi_thresh[i]->GetXaxis()->SetTitle("#eta");
631  m_twr_etaphi_thresh[i]->GetYaxis()->SetTitle("#phi");
632  m_twr_etaphi_thresh[i]->GetZaxis()->SetLabelSize(0.8);
633  m_twr_etaphi_thresh[i]->GetZaxis()->SetMoreLogLabels();
634  if(i==0 || i==2) towers_2drates_mongroupShift.regHist(m_twr_etaphi_thresh[i] ).ignore();
635  else towers_2drates_mongroupExpert.regHist(m_twr_etaphi_thresh[i] ).ignore();
636  }// end thresholds loop
637 }
638 
640  std::string TheTrigger;
641  if (m_triggerChainProp.empty()) TheTrigger="";
642  else TheTrigger = m_triggerChainProp;
643 
644  std::string TheTowerDir("/CaloMonitoring/");
645 
646  MonGroup towers_EtFcal_mongroupShift ( this, TheTowerDir+m_towerContainerName+TheTrigger+"/Et_Fcal", theinterval);
647  MonGroup calo_towers_mongroupExpert ( this, TheTowerDir+m_towerContainerName+TheTrigger+"/General", theinterval );
648  MonGroup towers_2davge_mongroupExpert ( this, TheTowerDir+m_towerContainerName+TheTrigger+"/2d_AvEnergy", theinterval); //EXPERT
649 
650  std::string title_Fcal0 = "sum of Towers in Fcal Et Distribution without trigger cut";
651  m_twr_et_Fcal0 = new TH1F("EtOfTwrInFcal0",title_Fcal0.c_str(), 204,-200.0,10000.0);
652  m_twr_et_Fcal0->GetXaxis()->SetTitle("Et(GeV)");
653  m_twr_et_Fcal0->GetYaxis()->SetTitle("Events");
654  towers_EtFcal_mongroupShift.regHist( m_twr_et_Fcal0 ).ignore();
655 
656  std::string title_Fcal1 = "sum of Towers in Fcal Et Distribution passing"+ m_TriggerNames1+" or "+m_TriggerNames2;
657  m_twr_et_Fcal1 = new TH1F("EtOfTwrInFcal1",title_Fcal1.c_str(), 204,-200.0,10000.0);
658  m_twr_et_Fcal1->GetXaxis()->SetTitle("Et(GeV)");
659  m_twr_et_Fcal1->GetYaxis()->SetTitle("Events");
660  towers_EtFcal_mongroupShift.regHist( m_twr_et_Fcal1 ).ignore();
661 
662  std::string title_Fcal2 = "sum of Tower in Fcal Et Distribution passing"+ m_TriggerNames3;
663  m_twr_et_Fcal2 = new TH1F("EtOfTwrInFcal2",title_Fcal2.c_str(), 204,-200.0,10000.0);
664  m_twr_et_Fcal2->GetXaxis()->SetTitle("Et(GeV)");
665  m_twr_et_Fcal2->GetYaxis()->SetTitle("Events");
666  towers_EtFcal_mongroupShift.regHist( m_twr_et_Fcal2 ).ignore();
667 
668  m_twrMost_e = new TH1F("TowerMostEnergy","Energy in Most Energetic Tower",100,0., 50000.);
669  m_twrMost_e->GetXaxis()->SetTitle("Most Energetic Tower Energy");
670  m_twrMost_e->GetYaxis()->SetTitle("Events");
671  calo_towers_mongroupExpert.regHist( m_twrMost_e ).ignore();
672 
673  m_twrMost_nCells = new TH1F("TowerMostnCells","Number of cells in Most Energetic Tower", 50, 0., 500.);
674  m_twrMost_nCells->GetXaxis()->SetTitle("Number of cells in Most Energetic Tower");
675  m_twrMost_nCells->GetXaxis()->SetTitle("Events");
676  calo_towers_mongroupExpert.regHist( m_twrMost_nCells ).ignore();
677 
678  m_twrMost_etaphi = new TH2F("TowerMostEnergyEtaPhi","EtaPhi of Most Energetic Tower", 98, -4.9, 4.9, 64, -3.15, 3.15);
679  m_twrMost_etaphi->GetXaxis()->SetTitle("#eta");
680  m_twrMost_etaphi->GetYaxis()->SetTitle("#phi");
681  towers_2davge_mongroupExpert.regHist( m_twrMost_etaphi ).ignore();
682 }
683 
686 
687  StatusCode sc = StatusCode::SUCCESS;
688 
689  bool ifPass = 1;
690  sc = checkFilters(ifPass);
691  if(sc.isFailure() || !ifPass) return StatusCode::SUCCESS;
692 
693  fillTrigPara();
694 
695  initTwrStat();
696 
697  const CaloTowerContainer* towerCont = nullptr;
698  sc=evtStore()->retrieve( towerCont, m_towerContainerName);
699  if( sc.isFailure() || !towerCont ) {
700  ATH_MSG_WARNING( " No AOD CaloTower container found in TDS " );
701  return sc;
702  }
703 
704  fillTwrPreHists(towerCont);
705 
707  CaloTowerContainer::const_iterator it_e = towerCont->end();
708  for ( ; it!=it_e;++it) {
709  const CaloTower* twr = *it;
710 
711  fillCellHists(twr);
712 
713  fillNothrEnHists(twr);
714  fillMuthrHists(twr);
715 
716  fillTwrStat(twr);
717  }
718 
720 
721  return sc;
722 }
723 
725  StatusCode sc = StatusCode::SUCCESS;
726 
727  if(m_useLArNoisyAlg) {
728  const xAOD::EventInfo* thisEventInfo = nullptr;
729  sc = evtStore()->retrieve(thisEventInfo);
730  if (sc!=StatusCode::SUCCESS){
731  m_useLArNoisyAlg = false;
732  ATH_MSG_WARNING("No EventInfo object found! Can't read run number!");
733  }
734  else{
735  if (thisEventInfo->errorState(xAOD::EventInfo::LAr) == xAOD::EventInfo::Error) ifPass = 0;
736  }
737  }
738 
740  if(!m_ReadyFilterTool->accept()) ifPass = 0;
741  }
742 
743  if(m_useBadLBTool){
744  if(!m_BadLBTool->accept()) ifPass = 0;
745  }
746 
747  if(sc!=StatusCode::SUCCESS){
748  ATH_MSG_WARNING("failure in checkFilters");
749  }
750 
751  return StatusCode::SUCCESS;
752 }
753 
755  m_isTrigEvent1 = false;
756  m_isTrigEvent2 = false;
757  m_isTrigEvent3 = false;
758 
760 
761  if( m_isTrigDefined1 ) {
763  }
764  if( m_isTrigDefined2 ) {
766  }
767  if( m_isTrigDefined3 ) {
769  }
770  }
771  else{
772  m_isTrigEvent1 = true;
773  m_isTrigEvent2 = true;
774  m_isTrigEvent3 = true;
775  }
776 
777 }
778 
780  float ncalos = towerCont->getNumberOfCalos();
781  m_n_calos->Fill(ncalos);
782  float ntwrs = towerCont->size();
783  m_n_twrs->Fill(ntwrs);
784 
785 }
786 
788  float etaTwr = twr->eta();
789  float phiTwr = twr->phi();
790  float eTwr = twr->energy()/GeV;
791  CaloTower::cell_iterator cellIter = twr->cell_begin();
792  CaloTower::cell_iterator cellIterEnd = twr->cell_end();
793  int cellcount=0;
794  float maxCellEnergy=0.;
795 
796  for ( ;cellIter !=cellIterEnd;cellIter++) {
797  ++cellcount;
798  const CaloCell* cell= (*cellIter);
799  float EnergyCell=cell->energy()/GeV;
800  if (cellcount == 1 || fabs(EnergyCell) > fabs(maxCellEnergy)) {
801  maxCellEnergy= EnergyCell;
802  }
803  }
804 
805  float ratio=0;
806  if(eTwr > 0.) ratio = maxCellEnergy/eTwr;
807 
808  if(fabs(etaTwr) < 5.0) {
809  if(eTwr > 0.0) {
811  if( ratio > 0.9 ) {
812  m_etaphi_hotrat_tower->Fill(etaTwr,phiTwr);
813  m_etaphi_avgenergy_hotrat_tower->Fill(etaTwr,phiTwr,eTwr);
814  }
815  }
816  }
817 
818 }
819 
821  float eTwr = twr->energy()/GeV;
822  float etaTwr = twr->eta();
823  float etTwr = twr->et()/GeV;
824 
825  m_twr_e->Fill(eTwr,1.);
826  if (eTwr > 0.) m_postwr_e_thresh->Fill(eTwr,1.);
827  else m_negtwr_e_thresh->Fill(eTwr,1.);
828 
829  if(etaTwr>3.1 && etaTwr<5.0){
830  m_twr_et_FcalA0->Fill(etTwr,1.);
831  if(m_isTrigEvent1 || m_isTrigEvent2) m_twr_et_FcalA1->Fill(etTwr,1.);
832  if(m_isTrigEvent3) m_twr_et_FcalA2->Fill(etTwr,1.);
833  }
834 
835  if(etaTwr<(-3.1) && etaTwr>(-5.0)){
836  m_twr_et_FcalC0->Fill(etTwr,1.);
837  if(m_isTrigEvent1 || m_isTrigEvent2) m_twr_et_FcalC1->Fill(etTwr,1.);
838  if(m_isTrigEvent3) m_twr_et_FcalC2->Fill(etTwr,1.);
839  }
840 }
841 
843  float eTwr = twr->energy()/GeV;
844  float etTwr = twr->et()/GeV;
845  float etaTwr = twr->eta();
846  float phiTwr = twr->phi();
847  int ncellsTwr = twr->getNumberOfCells();
848  unsigned int reg_i=0;
849  if (fabs(etaTwr)<1.5) reg_i=0;
850  else if (etaTwr > 1.5) reg_i=1;
851  else reg_i=2;
852 
853  for (int j=0;j<m_threshtests;j++) {
854  if( etTwr > m_Ethresh[j]) m_twr_etaphi_Et_thresh[j]->Fill(etaTwr,phiTwr,etTwr);
855 
856  if(eTwr > m_Ethresh[j]) {
857  m_twr_e_phi_thresh[j][reg_i]->Fill(phiTwr,eTwr);
858  m_twr_e_eta_thresh[j]->Fill(etaTwr,eTwr );
859  m_twr_e_phiall_thresh[j]->Fill(phiTwr,eTwr);
860  m_twr_e_etaphi_thresh[j]->Fill(etaTwr,phiTwr,eTwr);
861 
862  if (m_filltranse) {
863  m_twr_e_trans_phi_thresh[j][reg_i]->Fill(phiTwr,etTwr);
864  m_twr_e_trans_eta_thresh[j]->Fill(etaTwr,etTwr );
865  m_twr_e_trans_phiall_thresh[j]->Fill(phiTwr,etTwr );
866  m_twr_e_trans_etaphi_thresh[j]->Fill(etaTwr,phiTwr,etTwr);
867  }
868 
869  if (m_filltotal) {
870  m_twr_e_total_phi_thresh[j][reg_i]->Fill(phiTwr,eTwr);
871  m_twr_e_total_eta_thresh[j]->Fill(etaTwr,eTwr );
872  m_twr_e_total_phiall_thresh[j]->Fill(phiTwr,eTwr );
873  m_twr_e_total_etaphi_thresh[j]->Fill(etaTwr,phiTwr,eTwr);
874  }
875 
876  m_twr_nCells_phi_thresh[j][reg_i]->Fill(phiTwr,ncellsTwr);
877  m_twr_nCells_eta_thresh[j]->Fill(etaTwr,ncellsTwr );
878  m_twr_nCells_phiall_thresh[j]->Fill(phiTwr,ncellsTwr );
879  m_twr_nCells_etaphi_thresh[j]->Fill(etaTwr,phiTwr,ncellsTwr);
880 
881  m_twr_phi_thresh[j][reg_i]->Fill(phiTwr,1.0);
882  m_twr_eta_thresh[j]->Fill(etaTwr,1.0);
883  m_twr_phiall_thresh[j]->Fill(phiTwr,1.0);
884  m_twr_etaphi_thresh[j]->Fill(etaTwr,phiTwr,1.0);
885 
886  } // end of (eTwr > m_Ethresh[j])
887  } // end of j loop
888 }
889 
891  m_Fcaltower_sumEt = 0;
892  m_energy_most = 0.;
893  m_eta_most = 0.;
894  m_phi_most = 0.;
895  m_ncells_most = 0 ;
896 }
897 
899  float etaTwr = twr->eta();
900  float phiTwr = twr->phi();
901  float eTwr = twr->energy()/GeV;
902  float etTwr = eTwr/cosh(etaTwr);
903  int ncellsTwr = twr->getNumberOfCells();
904 
905  if(fabs(etaTwr)>3.1 && fabs(etaTwr)<5.0){
907  }
908 
909  if ( eTwr > m_energy_most ) {
910  m_energy_most = eTwr;
911  m_eta_most = etaTwr;
912  m_phi_most = phiTwr;
913  m_ncells_most = ncellsTwr;
914  }
915 }
916 
921 
922  m_twrMost_e->Fill(m_energy_most,1.);
925 }
926 
928  ATH_MSG_DEBUG( "CaloTowerVecMon default procHistograms() is starting" );
929  return StatusCode::SUCCESS;
930 }
CaloEnergyCluster::cell_begin
cell_iterator cell_begin() const
Retrieve a STL-type begin() iterator for the cell store.
Definition: CaloEnergyCluster.cxx:270
CaloTowerVecMon::m_twr_e_total_phiall_thresh
TH1F * m_twr_e_total_phiall_thresh[MAX_E]
Definition: CaloTowerVecMon.h:170
CaloTowerVecMon::m_etaphi_hotrat_tower
TH2F * m_etaphi_hotrat_tower
Definition: CaloTowerVecMon.h:141
CaloTowerVecMon::m_twr_et_FcalA1
TH1F * m_twr_et_FcalA1
Definition: CaloTowerVecMon.h:149
CaloTowerVecMon::fillTwrStatHists
void fillTwrStatHists()
Definition: CaloTowerVecMon.cxx:917
ManagedMonitorToolBase::Interval_t
Interval_t
An enumeration describing how detailed a particular monitoring object is.
Definition: ManagedMonitorToolBase.h:114
CaloTowerVecMon::m_energy_most
float m_energy_most
Definition: CaloTowerVecMon.h:130
CaloTowerVecMon::fillNothrEnHists
void fillNothrEnHists(const CaloTower *twr)
Definition: CaloTowerVecMon.cxx:820
CaloTowerVecMon::m_twr_nCells_phiall_thresh
TProfile * m_twr_nCells_phiall_thresh[MAX_E]
Definition: CaloTowerVecMon.h:175
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
CaloTowerVecMon::m_isTrigDefined1
bool m_isTrigDefined1
Definition: CaloTowerVecMon.h:115
CaloTowerVecMon::m_threshtests
int m_threshtests
Definition: CaloTowerVecMon.h:123
CaloEnergyCluster::cell_end
cell_iterator cell_end() const
Retrieve a STL-type end() iterator for the cell store.
Definition: CaloEnergyCluster.cxx:275
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
CaloTowerVecMon::m_postwr_e_thresh
TH1F * m_postwr_e_thresh
Definition: CaloTowerVecMon.h:146
CaloTowerVecMon::m_twr_e_trans_phi_thresh
TProfile * m_twr_e_trans_phi_thresh[MAX_E][3]
Definition: CaloTowerVecMon.h:163
CaloTowerVecMon::MAX_E
@ MAX_E
Definition: CaloTowerVecMon.h:92
CaloTowerVecMon::fillHistograms
virtual StatusCode fillHistograms()
An inheriting class should either override this function or fillHists().
Definition: CaloTowerVecMon.cxx:685
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
CaloTowerVecMon::MEDHIGH_E
@ MEDHIGH_E
Definition: CaloTowerVecMon.h:90
ManagedMonitorToolBase::higStat
@ higStat
Definition: ManagedMonitorToolBase.h:115
ManagedMonitorToolBase::lumiBlock
@ lumiBlock
Definition: ManagedMonitorToolBase.h:114
CaloTowerVecMon::m_Trigger1
const Trig::ChainGroup * m_Trigger1
Definition: CaloTowerVecMon.h:112
ManagedMonitorToolBase
Provides functionality for users to implement and save histograms, ntuples, and summary data,...
Definition: ManagedMonitorToolBase.h:74
CaloTowerVecMon::m_TriggerNames2
std::string m_TriggerNames2
Definition: CaloTowerVecMon.h:110
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
CaloTowerVecMon::m_twr_et_FcalC0
TH1F * m_twr_et_FcalC0
Definition: CaloTowerVecMon.h:151
CaloTowerVecMon::m_twr_e_total_etaphi_thresh
TH2F * m_twr_e_total_etaphi_thresh[MAX_E]
Definition: CaloTowerVecMon.h:171
CaloTowerVecMon::initTwrStat
void initTwrStat()
Definition: CaloTowerVecMon.cxx:890
CaloTowerContainer::end
iterator end()
Definition: Calorimeter/CaloEvent/CaloEvent/CaloTowerContainer.h:685
CaloTowerVecMon::m_twr_et_Fcal0
TH1F * m_twr_et_Fcal0
Definition: CaloTowerVecMon.h:184
CaloTowerVecMon::m_twr_et_Fcal1
TH1F * m_twr_et_Fcal1
Definition: CaloTowerVecMon.h:185
CaloTowerVecMon::bookMuthrHists
void bookMuthrHists(const Interval_t theinterval)
Definition: CaloTowerVecMon.cxx:427
CaloTowerVecMon::m_filltotal
bool m_filltotal
Definition: CaloTowerVecMon.h:126
skel.it
it
Definition: skel.GENtoEVGEN.py:423
TProfile2D
Definition: rootspy.cxx:531
CaloTowerVecMon::m_twrMost_etaphi
TH2F * m_twrMost_etaphi
Definition: CaloTowerVecMon.h:189
CaloCell.h
CaloTowerVecMon::MED_E
@ MED_E
Definition: CaloTowerVecMon.h:89
CaloTowerVecMon::m_TriggerNames3
std::string m_TriggerNames3
Definition: CaloTowerVecMon.h:111
CaloTowerVecMon::m_BadLBTool
ToolHandle< IDQFilterTool > m_BadLBTool
Definition: CaloTowerVecMon.h:101
CaloTowerVecMon::m_ratioE_leadcell_tower
TH1F * m_ratioE_leadcell_tower
Definition: CaloTowerVecMon.h:140
CaloTowerVecMon::fillTwrPreHists
void fillTwrPreHists(const CaloTowerContainer *towerCont)
Definition: CaloTowerVecMon.cxx:779
ManagedMonitorToolBase::fill
@ fill
Definition: ManagedMonitorToolBase.h:116
CaloTowerVecMon::m_phi_most
float m_phi_most
Definition: CaloTowerVecMon.h:132
CaloTowerVecMon::m_useReadyFilterTool
bool m_useReadyFilterTool
Definition: CaloTowerVecMon.h:102
python.TrigEgammaMonitorHelper.TH2F
def TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:45
CaloTowerVecMon::bookTwrStatHists
void bookTwrStatHists(const Interval_t theinterval)
Definition: CaloTowerVecMon.cxx:639
xAOD::EventInfo_v1::LAr
@ LAr
The LAr calorimeter.
Definition: EventInfo_v1.h:335
CaloTowerVecMon::m_twr_eta_thresh
TH1F * m_twr_eta_thresh[MAX_E]
Definition: CaloTowerVecMon.h:179
CaloTowerVecMon::m_twr_e_phiall_thresh
TProfile * m_twr_e_phiall_thresh[MAX_E]
Definition: CaloTowerVecMon.h:160
CaloTowerVecMon::m_useLArNoisyAlg
bool m_useLArNoisyAlg
Definition: CaloTowerVecMon.h:104
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
CaloTowerVecMon::m_timeGran
std::string m_timeGran
Definition: CaloTowerVecMon.h:97
CaloTowerVecMon::fillTwrStat
void fillTwrStat(const CaloTower *twr)
Definition: CaloTowerVecMon.cxx:898
CaloTowerVecMon::m_twr_etaphi_thresh
TH2F * m_twr_etaphi_thresh[MAX_E]
Definition: CaloTowerVecMon.h:181
CaloTowerVecMon::m_twrMost_nCells
TH1F * m_twrMost_nCells
Definition: CaloTowerVecMon.h:190
xAOD::EventInfo_v1::Error
@ Error
The sub-detector issued an error.
Definition: EventInfo_v1.h:349
CaloTowerVecMon::m_twr_nCells_etaphi_thresh
TProfile2D * m_twr_nCells_etaphi_thresh[MAX_E]
Definition: CaloTowerVecMon.h:176
CaloTowerVecMon::m_twr_e_eta_thresh
TProfile * m_twr_e_eta_thresh[MAX_E]
Definition: CaloTowerVecMon.h:159
CaloTowerVecMon::fillCellHists
void fillCellHists(const CaloTower *twr)
Definition: CaloTowerVecMon.cxx:787
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
CaloTowerVecMon::m_negtwr_e_thresh
TH1F * m_negtwr_e_thresh
Definition: CaloTowerVecMon.h:147
ManagedMonitorToolBase::MonGroup
A container of information describing a monitoring object.
Definition: ManagedMonitorToolBase.h:138
CaloTowerVecMon::m_twr_et_FcalC2
TH1F * m_twr_et_FcalC2
Definition: CaloTowerVecMon.h:153
CaloTowerVecMon::m_twr_e_trans_etaphi_thresh
TProfile2D * m_twr_e_trans_etaphi_thresh[MAX_E]
Definition: CaloTowerVecMon.h:166
CaloTowerContainer
Storable container class for CaloTower.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloTowerContainer.h:77
CaloTowerVecMon::bookCellHists
void bookCellHists(const Interval_t theinterval)
Definition: CaloTowerVecMon.cxx:339
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ManagedMonitorToolBase::initialize
virtual StatusCode initialize()
Definition: ManagedMonitorToolBase.cxx:669
CaloTower::phi
virtual double phi() const override final
get phi data member
Definition: Calorimeter/CaloEvent/CaloEvent/CaloTower.h:144
CaloTower::cell_iterator
CaloEnergyCluster::cell_iterator cell_iterator
Iterator on CaloCell s.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloTower.h:94
CaloTowerVecMon::m_n_calos
TH1F * m_n_calos
Definition: CaloTowerVecMon.h:136
lumiFormat.i
int i
Definition: lumiFormat.py:92
python.TrigEgammaMonitorHelper.TProfile
def TProfile(*args, **kwargs)
Definition: TrigEgammaMonitorHelper.py:81
CaloTowerVecMon::m_isTrigEvent2
bool m_isTrigEvent2
Definition: CaloTowerVecMon.h:119
CaloTowerVecMon::m_twr_phiall_thresh
TH1F * m_twr_phiall_thresh[MAX_E]
Definition: CaloTowerVecMon.h:180
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
CaloTowerVecMon::bookHistograms
virtual StatusCode bookHistograms()
An inheriting class should either override this function or bookHists().
Definition: CaloTowerVecMon.cxx:257
CaloTowerVecMon::m_ReadyFilterTool
ToolHandle< IDQFilterTool > m_ReadyFilterTool
Definition: CaloTowerVecMon.h:103
CaloTowerVecMon::m_towerContainerName
std::string m_towerContainerName
Definition: CaloTowerVecMon.h:95
ManagedMonitorToolBase::newHigStatIntervalFlag
bool newHigStatIntervalFlag() const
Definition: ManagedMonitorToolBase.h:851
ManagedMonitorToolBase::newLowStatIntervalFlag
bool newLowStatIntervalFlag() const
Flag functions allowing clients to determine when to book new and process old histograms; values are ...
Definition: ManagedMonitorToolBase.h:849
DQAtlasReadyFilterTool.h
CaloTowerVecMon::m_twr_nCells_eta_thresh
TProfile * m_twr_nCells_eta_thresh[MAX_E]
Definition: CaloTowerVecMon.h:174
CaloTowerVecMon::m_isTrigEvent3
bool m_isTrigEvent3
Definition: CaloTowerVecMon.h:120
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ManagedMonitorToolBase::m_triggerChainProp
std::string m_triggerChainProp
Definition: ManagedMonitorToolBase.h:917
TProfile2D::Fill
int Fill(double, double, double)
Definition: rootspy.cxx:541
Region
Region
Definition: TrigL2HitResidual.h:14
CaloTowerVecMon::m_n_twrs
TH1F * m_n_twrs
Definition: CaloTowerVecMon.h:137
CaloTowerVecMon::NO_E
@ NO_E
Definition: CaloTowerVecMon.h:86
ManagedMonitorToolBase::medStat
@ medStat
Definition: ManagedMonitorToolBase.h:115
CaloTowerVecMon::fillMuthrHists
void fillMuthrHists(const CaloTower *twr)
Definition: CaloTowerVecMon.cxx:842
CaloTowerVecMon::m_twr_e_trans_phiall_thresh
TProfile * m_twr_e_trans_phiall_thresh[MAX_E]
Definition: CaloTowerVecMon.h:165
CaloTowerVecMon::retrieveTools
StatusCode retrieveTools()
Definition: CaloTowerVecMon.cxx:185
CaloTowerVecMon::m_twr_e_total_eta_thresh
TH1F * m_twr_e_total_eta_thresh[MAX_E]
Definition: CaloTowerVecMon.h:169
ManagedMonitorToolBase::MonGroup::regHist
StatusCode regHist(TH1 *h)
Registers a TH1 (including TH2, TH3, and TProfile) to be included in the output stream using logical ...
Definition: ManagedMonitorToolBase.cxx:195
CaloTowerVecMon::initialize
virtual StatusCode initialize()
Definition: CaloTowerVecMon.cxx:172
CaloTower
Data class for calorimeter cell towers.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloTower.h:55
CaloTowerVecMon::m_Ethresh
float m_Ethresh[MAX_E]
Definition: CaloTowerVecMon.h:124
CaloTowerVecMon::m_twr_etaphi_Et_thresh
TH2F * m_twr_etaphi_Et_thresh[MAX_E]
Definition: CaloTowerVecMon.h:156
CaloTowerVecMon::m_TriggerNames1
std::string m_TriggerNames1
Definition: CaloTowerVecMon.h:109
CaloTowerVecMon::procHistograms
virtual StatusCode procHistograms()
An inheriting class should either override this function or finalHists().
Definition: CaloTowerVecMon.cxx:927
CaloTower::energy
virtual double energy() const override final
get energy data member
Definition: Calorimeter/CaloEvent/CaloEvent/CaloTower.h:138
Trig::ChainGroup::isPassed
bool isPassed(unsigned int condition=TrigDefs::Physics) const
tells if chain group passed
Definition: Trigger/TrigAnalysis/TrigDecisionTool/Root/ChainGroup.cxx:208
CaloTowerVecMon::bookNothrEnHists
void bookNothrEnHists(const Interval_t theinterval)
Definition: CaloTowerVecMon.cxx:364
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
CaloTowerVecMon::m_twr_e
TH1F * m_twr_e
Definition: CaloTowerVecMon.h:145
CaloTowerVecMon::m_twr_et_FcalA2
TH1F * m_twr_et_FcalA2
Definition: CaloTowerVecMon.h:150
CaloTowerContainer::getNumberOfCalos
size_t getNumberOfCalos() const
Returns the number of included calorimeters.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloTowerContainer.h:560
CaloTowerVecMon::m_twr_et_FcalA0
TH1F * m_twr_et_FcalA0
Definition: CaloTowerVecMon.h:148
Units.h
Wrapper to avoid constant divisions when using units.
CaloTowerVecMon::~CaloTowerVecMon
virtual ~CaloTowerVecMon()
CaloTowerVecMon::m_twr_e_trans_eta_thresh
TProfile * m_twr_e_trans_eta_thresh[MAX_E]
Definition: CaloTowerVecMon.h:164
ManagedMonitorToolBase::lowStat
@ lowStat
Definition: ManagedMonitorToolBase.h:115
CaloTowerVecMon::CaloTowerVecMon
CaloTowerVecMon(const std::string &type, const std::string &name, const IInterface *parent)
Definition: CaloTowerVecMon.cxx:27
CaloTowerVecMon::LOW_E
@ LOW_E
Definition: CaloTowerVecMon.h:87
CaloTowerVecMon::HIGH_E
@ HIGH_E
Definition: CaloTowerVecMon.h:91
CaloTowerVecMon::m_etaphi_avgenergy_hotrat_tower
TProfile2D * m_etaphi_avgenergy_hotrat_tower
Definition: CaloTowerVecMon.h:142
EventInfo.h
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
CaloTowerVecMon::m_twr_phi_thresh
TH1F * m_twr_phi_thresh[MAX_E][3]
Definition: CaloTowerVecMon.h:178
ManagedMonitorToolBase::run
@ run
Definition: ManagedMonitorToolBase.h:116
CaloTowerVecMon::m_isTrigEvent1
bool m_isTrigEvent1
Definition: CaloTowerVecMon.h:118
CaloTowerVecMon::m_useBadLBTool
bool m_useBadLBTool
Definition: CaloTowerVecMon.h:100
TProfile::Fill
int Fill(double, double)
Definition: rootspy.cxx:523
CaloTowerVecMon::checkFilters
StatusCode checkFilters(bool &ifPass)
Definition: CaloTowerVecMon.cxx:724
python.compareTCTs.ratio
ratio
Definition: compareTCTs.py:295
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
ManagedMonitorToolBase::eventsBlock
@ eventsBlock
Definition: ManagedMonitorToolBase.h:114
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
CaloTowerVecMon::m_twr_et_FcalC1
TH1F * m_twr_et_FcalC1
Definition: CaloTowerVecMon.h:152
CaloTowerVecMon::m_twrMost_e
TH1F * m_twrMost_e
Definition: CaloTowerVecMon.h:188
CaloEnergyCluster::getNumberOfCells
unsigned int getNumberOfCells() const
Return the number of cells in the store.
Definition: CaloEnergyCluster.cxx:265
ManagedMonitorToolBase::all
@ all
Definition: ManagedMonitorToolBase.h:116
CaloTowerVecMon::m_twr_nCells_phi_thresh
TProfile * m_twr_nCells_phi_thresh[MAX_E][3]
Definition: CaloTowerVecMon.h:173
CaloTowerVecMon::bookTwrPreHists
void bookTwrPreHists(const Interval_t theinterval)
Definition: CaloTowerVecMon.cxx:322
xAOD::EventInfo_v1::errorState
EventFlagErrorState errorState(EventFlagSubDet subDet) const
Get the error state for a particular sub-detector.
Definition: EventInfo_v1.cxx:817
CaloTowerVecMon::m_Trigger2
const Trig::ChainGroup * m_Trigger2
Definition: CaloTowerVecMon.h:113
CaloTowerVecMon::fillTrigPara
void fillTrigPara()
Definition: CaloTowerVecMon.cxx:754
CaloTowerVecMon::m_isTrigDefined3
bool m_isTrigDefined3
Definition: CaloTowerVecMon.h:117
P4EEtaPhiMBase::et
virtual double et() const
transverse energy defined to be e*sin(theta)
Definition: P4EEtaPhiMBase.cxx:106
CaloTowerVecMon::LOWMED_E
@ LOWMED_E
Definition: CaloTowerVecMon.h:88
python.TrigEgammaMonitorHelper.TH1F
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:24
CaloTowerVecMon::initHists
void initHists()
Definition: CaloTowerVecMon.cxx:103
CaloTowerVecMon::m_isTrigDefined2
bool m_isTrigDefined2
Definition: CaloTowerVecMon.h:116
CaloTowerVecMon::m_eta_most
float m_eta_most
Definition: CaloTowerVecMon.h:131
CaloTowerVecMon::m_useTriggerCaloMon
bool m_useTriggerCaloMon
Definition: CaloTowerVecMon.h:107
CaloTowerVecMon::m_twr_e_phi_thresh
TProfile * m_twr_e_phi_thresh[MAX_E][3]
Definition: CaloTowerVecMon.h:158
CaloTowerVecMon::m_Trigger3
const Trig::ChainGroup * m_Trigger3
Definition: CaloTowerVecMon.h:114
CaloTowerVecMon::m_twr_et_Fcal2
TH1F * m_twr_et_Fcal2
Definition: CaloTowerVecMon.h:186
DQBadLBFilterTool.h
CaloTowerVecMon::checkTimeGran
StatusCode checkTimeGran(bool isNewEventsBlock, bool isNewLumiBlock, bool isNewRun, Interval_t &theinterval)
Definition: CaloTowerVecMon.cxx:277
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
CaloTowerVecMon::m_twr_e_etaphi_thresh
TProfile2D * m_twr_e_etaphi_thresh[MAX_E]
Definition: CaloTowerVecMon.h:161
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
CaloTowerVecMon::m_trigDec
ToolHandle< Trig::TrigDecisionTool > m_trigDec
Definition: CaloTowerVecMon.h:108
CaloTowerVecMon::m_Fcaltower_sumEt
float m_Fcaltower_sumEt
Definition: CaloTowerVecMon.h:129
CaloTowerContainer::begin
iterator begin()
Definition: Calorimeter/CaloEvent/CaloEvent/CaloTowerContainer.h:680
CaloTowerVecMon::m_twr_e_total_phi_thresh
TH1F * m_twr_e_total_phi_thresh[MAX_E][3]
Definition: CaloTowerVecMon.h:168
CaloTowerVecMon::m_filltranse
bool m_filltranse
Definition: CaloTowerVecMon.h:125
CaloTower::eta
virtual double eta() const override final
get eta data member
Definition: Calorimeter/CaloEvent/CaloEvent/CaloTower.h:141
CaloTowerVecMon::bookHistogramsRecurrent
virtual StatusCode bookHistogramsRecurrent()
An inheriting class should either override this function, bookHists() or bookHistograms().
Definition: CaloTowerVecMon.cxx:250
ManagedMonitorToolBase::newMedStatIntervalFlag
bool newMedStatIntervalFlag() const
Definition: ManagedMonitorToolBase.h:850
CaloTowerVecMon.h
CaloTowerVecMon::m_ncells_most
int m_ncells_most
Definition: CaloTowerVecMon.h:133