ATLAS Offline Software
CaloClusterVecMon.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: CaloClusterVecMon.cxx
7 //
8 // AUTHORS: R. Kehoe 06/15/2006
9 // S.Chekanov (ANL, TileCal part, 08/04/2008
10 // S.Chekanov (ANL, ratio for clusters reflecting calibration, 09/03/2008
11 // S.Chekanov. Removed extra token
12 // S.Chekanov 10/21/2008 Corrected Phi distributions
13 // L. Sawyer 12/2013 Modified booking for new managed histograms
14 // MANAGERS: H. Hadavand
15 // R. Dhullipudi (01/07/2008)
16 // D. Hu (Jun 2011 - May 2012)
17 // L. Sawyer (2013 - )
18 //
19 //********************************************************************
20 
21 
22 #include "CaloClusterVecMon.h"
23 
26 
28 
29 #include "AthenaKernel/Units.h"
30 #include "CaloGeoHelpers/CaloSampling.h"
31 #include <cmath>
32 
33 
34 using xAOD::CaloCluster;
35 using Athena::Units::GeV;
36 
37 /* Obsolete with C++11
38 // sorting alg for clusters
39 namespace GetSort{
40  class ClusSort{
41  public:
42  bool operator()(CaloCluster* o1, CaloCluster* o2) {
43  return o1->e() > o2->e();
44  }
45  };
46 }
47 
48 */
49 
50 CaloClusterVecMon::CaloClusterVecMon(const std::string& type, const std::string& name, const IInterface* parent) :
52  m_caloMgr(nullptr),
53  m_caloCellHelper(nullptr),
54  m_cluscount(0),
55  m_cluscount_top(0),
56  m_cluscount_bot(0),
57  m_maxclusindex_top(0),
58  m_maxclusindex_bot(0),
59  m_maxclusene_top(0),
60  m_maxclusene_bot(0),
61  m_EMenergy(0),
62  m_EMenergy_abs(0),
63  m_EMet(0),
64  m_EMeta(0),
65  m_EMphi(0)
66 {
67  declareInterface<IMonitorToolBase>(this);
68 
69  declareProperty("TimeGran",m_timeGran="lowStat");
70 
71  declareProperty("lowEthresh", m_Ethresh[LOW_E]=0.0);
72  declareProperty("lowmedEthresh", m_Ethresh[LOWMED_E]=5.0);
73  declareProperty("medEthresh", m_Ethresh[MED_E]=10.0);
74  declareProperty("medhiEthresh", m_Ethresh[MEDHIGH_E]=15.0);
75  declareProperty("hiEthresh", m_Ethresh[HIGH_E]=20.0);
76 
77  declareProperty("etaMin1", m_etaMin[REGION1]=0.0);
78  declareProperty("etaMin2", m_etaMin[REGION2]=1.4);
79  declareProperty("etaMin3", m_etaMin[REGION3]=2.0);
80  declareProperty("timeWindowWidth",m_tWidth=0.5);
81 
82  declareProperty("energyThreshold",m_Threshold=300.); //Threshold in MeV
83  // histogram bins
84  declareProperty("binsClustersE", m_binRangeE);
85  declareProperty("binsClustersEta", m_binRangeEta);
86  declareProperty("binsClustersPhi", m_binRangePhi);
87  declareProperty("binsClustersEtaPhi", m_binRangeEtaPhi);
88 
89  initHists();
90 }
91 
92 
94 
96  // cell hists
97  m_eventsCounter = 0; // km add
98  m_nCells=nullptr;
102  m_nCellInCluster_etaphi=nullptr;
103  m_clusterTimeVsEnergy=nullptr;
104  m_clusterTime=nullptr;
105  m_cellTime=nullptr;
106  m_cellvsclust_time=nullptr;
107 
108  // mult-threshold cluster hists
109  for (int iE=0; iE<MAX_E; iE++){
110  m_clus_etaphi_Et_thresh[iE]=nullptr;
111  m_etaphi_thresh_avgEt[iE]=nullptr;
112 // m_EMclus_etaphi_Et_thresh[iE]=0;
113 // m_EMclus_etaVsPhi[iE]=0;
114  m_clus_eta[iE]=nullptr;
115  m_clus_eta_Et[iE]=nullptr; // km add
116  for(int j_plot=0; j_plot<3; j_plot++){
117  m_clus_phi[iE][j_plot]=nullptr;
118  m_clus_phi_Et[iE][j_plot]=nullptr;} // km add
119  m_etaVsPhi[iE]=nullptr;
120  m_etaphi_thresh_avgenergy[iE]=nullptr;
121  m_etaphi_thresh_Totalenergy[iE]=nullptr;
122  }
123 
124  // negative energy cluster hists
125  m_etaVsPhiNegEn=nullptr;
127 
128  // no threshold cluster hists
129  m_averageEnergy_phi=nullptr;
130  m_averageEnergy_eta=nullptr;
131 
135  m_clusterEtVsEta_barrel=nullptr; // for non-cosmics
136  m_clusterEtVsEta_endcap=nullptr; // for non-cosmics
137  m_clusterEtVsEta_hecfcal=nullptr; // for non-cosmics
138 
139  // energy > 500GeV cluster hists
140  m_averageEtOver500_etaphi=nullptr; // for non-cosmics
141 
142  // cluster stat hists
143  m_nClusters=nullptr;
144  m_nClustersBottomVsTop=nullptr;
146  m_dEtaVsdPhi_maxEclustersTopVsBottom=nullptr; // for cosmics
147 
148  // tile hists
149  m_clustersCellsRatioEta=nullptr;
150  m_clustersCellsRatioPhi=nullptr;
151  m_clustersCellsRatioE=nullptr;
152 
153  m_clustersE=nullptr;
154  m_clustersEta=nullptr;
155  m_clustersPhi=nullptr;
156  m_clustersEtaPhi=nullptr;
157 
158  m_clustersCellsEta=nullptr;
159  m_clustersCellsPhi=nullptr;
160  m_clustersCellsE=nullptr;
161 }
162 
165  StatusCode sc = StatusCode::SUCCESS;
166  sc = retrieveTools();
167 
168  //Initialize read handle key
170 
172  if(sc.isFailure()){
173  ATH_MSG_ERROR("Could not initialize ManagedMonitorToolBase");
174  return sc;
175  }
176 
179 
180  return sc;
181 }
182 
184 
186  StatusCode sc = StatusCode::SUCCESS;
187 
188  sc = detStore()->retrieve(m_caloMgr);
189  if (sc.isFailure()) {
190  ATH_MSG_ERROR( "Unable to retrieve CaloIdManager from DetectorStore" );
191  return sc;
192  }
193  else{
194  ATH_MSG_INFO("CaloMgr is retrieved");
195  }
196 
198  if (!m_caloCellHelper) {
199  ATH_MSG_ERROR( "Could not access CaloCell_ID helper" );
200  return StatusCode::FAILURE;
201  }
202 
203  return sc;
204 }
205 
208 // Book old-style (unmanaged) histograms. Not used.
209 
210  return StatusCode::SUCCESS;
211 }
212 
215 // Book managed histograms.
216 
217  ATH_MSG_DEBUG( "in bookHistograms()" );
218 
219  Interval_t theinterval = run;
220 // No longer needed with managed histograms - LS 12/2013
221 // bool testTimeGran = checkTimeGran( isNewEventsBlock, isNewLumiBlock, isNewRun, theinterval);
222 
223 // if (testTimeGran){
224  bookCellHists(theinterval);
225  bookClusterHists(theinterval);
226  bookClusterStatHists(theinterval);
227  if( m_clusterContainerName.key() == "CaloCalTopoClusters" ) {
229  bookTileHists(theinterval);
230  }
231 
232 // }
233  return StatusCode::SUCCESS;
234 }
235 
237 bool CaloClusterVecMon::checkTimeGran(bool isNewEventsBlock, bool isNewLumiBlock, bool isNewRun, Interval_t& theinterval){
238  bool isNewTimeGran=isNewRun;
239  theinterval=run;
240  // but if the choice is different
241  if (m_timeGran.compare("run") !=0) {
242  if (m_timeGran.compare("eventsblock") ==0) {
243  isNewTimeGran=isNewEventsBlock;
244  theinterval= eventsBlock;
245  }
246  else if (m_timeGran.compare("lumiblock") ==0) {
247  isNewTimeGran=isNewLumiBlock;
248  theinterval=lumiBlock;
249  }
250  //... check if it is low statistics interval
251  else if (m_timeGran.compare("lowStat") ==0){
252  isNewTimeGran=newLowStatIntervalFlag();
253  theinterval=lowStat;
254  }
255  //... or medium statistics
256  else if (m_timeGran.compare("medStat") ==0) {
257  isNewTimeGran=newMedStatIntervalFlag();
258  theinterval=medStat;
259  }
260  else if (m_timeGran.compare("higStat") ==0){
261  isNewTimeGran=newHigStatIntervalFlag();
262  theinterval=higStat;
263  }
264  else if (m_timeGran.compare("fill") ==0){
265  isNewTimeGran=newLowStatIntervalFlag();
266  theinterval=fill;
267  }
268  else if (m_timeGran.compare("all") ==0){
269  isNewTimeGran=newLowStatIntervalFlag();
270  theinterval=all;
271  }
272  // if it is not global, but it is something else stick to medium stat
273  else {
274  isNewTimeGran=newLowStatIntervalFlag();
275  theinterval=medStat;
276  }
277  }
278 
279  return isNewTimeGran;
280 }
281 
284  std::string TheTrigger;
285  if (m_triggerChainProp.empty()) TheTrigger="NoTrigSel";
286  else TheTrigger = m_triggerChainProp;
287 
288  MonGroup cluster_expert ( this, "/CaloMonitoring/ClusterMon/"+m_clusterContainerName.key()+TheTrigger+"/General", theinterval);
289  MonGroup cluster_energytime_expert ( this, "/CaloMonitoring/ClusterMon/"+m_clusterContainerName.key()+TheTrigger+"/Time_Energy", theinterval);
290  MonGroup cluster_leadcell_expert ( this, "/CaloMonitoring/ClusterMon/"+m_clusterContainerName.key()+TheTrigger+"/LeadCell", theinterval);
291 
292  if ( m_clusterContainerName.key() == "LArMuClusterCandidates" ) {
293  m_nCells = new TH1I("NCells","NCellsinCluster",20,0.,20.);
294  }else {
295  m_nCells = new TH1I("NCells","NCellsinCluster",200,0.,200.);
296  }
297  cluster_expert.regHist( m_nCells).ignore();
298  m_nCells->GetXaxis()->SetTitle("Number of Cells in Cluster");
299 
300  m_maxEcellToEclusterRatio = new TH1F("ratioE_leadcell_clus","Ratio(E_lead_cell/E_cluster)",500,-2.1,2.1);
301  cluster_leadcell_expert.regHist( m_maxEcellToEclusterRatio ).ignore();
302  m_maxEcellToEclusterRatio->GetXaxis()->SetTitle("Ratio(E_lead_cell/E_cluster)");
303 
304  m_dominantCellOccupancy_etaphi = new TH2F("etaphi_hotrat","Occupancy of Clusters with E_cell/E_cluster > 0.9 &E_cluster>0 GeV",98,-4.9,4.9,64,-3.15,3.15);
305  cluster_leadcell_expert.regHist( m_dominantCellOccupancy_etaphi ).ignore();
306  m_dominantCellOccupancy_etaphi->GetXaxis()->SetTitle("#eta");
307  m_dominantCellOccupancy_etaphi->GetYaxis()->SetTitle("#phi");
308  m_dominantCellOccupancy_etaphi->GetZaxis()->SetLabelSize(0.02);
309 
310  m_dominantCellAverageEnergy_etaphi = new TProfile2D("etaphi_avgenergy_hotrat","Average energy of cells with E_cell/E_cluster > 0.9 & E_Cluster > 0 GeV",98,-4.9,4.9,64,-3.15,3.15);
311  cluster_leadcell_expert.regHist( m_dominantCellAverageEnergy_etaphi ).ignore();
312  m_dominantCellAverageEnergy_etaphi->GetXaxis()->SetTitle("#eta");
313  m_dominantCellAverageEnergy_etaphi->GetYaxis()->SetTitle("#phi");
314  m_dominantCellAverageEnergy_etaphi->GetZaxis()->SetLabelSize(0.02);
315 
316  m_nCellInCluster_etaphi = new TProfile2D("etaphi_ncellinclus","Average number of cells in Clusters",98,-4.9,4.9,64,-3.15,3.15);
317  cluster_expert.regHist( m_nCellInCluster_etaphi ).ignore();
318  m_nCellInCluster_etaphi->GetXaxis()->SetTitle("#eta");
319  m_nCellInCluster_etaphi->GetYaxis()->SetTitle("#phi");
320 
322  m_clusterTime = new TH1F("m_clus_time","Time of Cluster",32,-m_tWidth/2.0,m_tWidth/2.0);
323  cluster_energytime_expert.regHist( m_clusterTime).ignore();
324  m_clusterTime->GetXaxis()->SetTitle("Time (ns)");
325 
326  m_clusterTimeVsEnergy = new TH2F("m_clus_timevsenergy","Time of Cluster vs Energy",32,-m_tWidth/2.0,m_tWidth/2.0,500,-500,500);
327  cluster_energytime_expert.regHist( m_clusterTimeVsEnergy).ignore();
328  m_clusterTimeVsEnergy->GetXaxis()->SetTitle("Time (ns)");
329  m_clusterTimeVsEnergy->GetYaxis()->SetTitle("Energy (MeV)");
330 
331  m_cellTime = new TH1F("m_cell_time","Time of leading cell in Cluster",32,-m_tWidth/2.0,m_tWidth/2.0);
332  cluster_expert.regHist( m_cellTime).ignore();
333  m_cellTime->GetXaxis()->SetTitle("Time (ns)");
334 
335  m_cellvsclust_time = new TH2F("m_cellvsclust_time","Time of leading cell in Cluster vs Cluster time",32,-m_tWidth/2.0,m_tWidth/2.0, 32,-m_tWidth/2.0,m_tWidth/2.0);
336  cluster_expert.regHist( m_cellvsclust_time).ignore();
337  m_cellvsclust_time->GetXaxis()->SetTitle("Cell time (ns)");
338  m_cellvsclust_time->GetYaxis()->SetTitle("Cluster time (ns)");
339 
340  } else {
341  m_clusterTime = new TH1F("m_clus_time","Time of Cluster",32,-15,15);
342  cluster_energytime_expert.regHist( m_clusterTime).ignore();
343  m_clusterTime->GetXaxis()->SetTitle("Time (ns)");
344 
345  m_clusterTimeVsEnergy = new TH2F("m_clus_timevsenergy","Time of Cluster vs Energy",32,-15,15,500,-100,500);
346  cluster_energytime_expert.regHist( m_clusterTimeVsEnergy).ignore();
347  m_clusterTimeVsEnergy->GetXaxis()->SetTitle("Time (ns)");
348  m_clusterTimeVsEnergy->GetYaxis()->SetTitle("Energy (GeV)");
349 
350  m_cellTime = new TH1F("m_cell_time","Time of leading cell in Cluster",32,-15,15);
351  cluster_expert.regHist( m_cellTime).ignore();
352  m_cellTime->GetXaxis()->SetTitle("Time (ns)");
353 
354  m_cellvsclust_time = new TH2F("m_cellvsclust_time","Time of leading cell in Cluster vs Cluster time",32,-15,15,32,-15,15);
355  cluster_expert.regHist( m_cellvsclust_time).ignore();
356  m_cellvsclust_time->GetXaxis()->SetTitle("Cell time (ns)");
357  m_cellvsclust_time->GetYaxis()->SetTitle("Cluster time (ns)");
358  }
359 }
360 
363  std::string TheTrigger;
364  if (m_triggerChainProp.empty()) TheTrigger="NoTrigSel";
365  else TheTrigger = m_triggerChainProp;
366 
367  MonGroup cluster_1drates_expert ( this, "/CaloMonitoring/ClusterMon/"+m_clusterContainerName.key()+TheTrigger+"/1d_Rates", theinterval);
368  MonGroup cluster_2drates_expert ( this, "/CaloMonitoring/ClusterMon/"+m_clusterContainerName.key()+TheTrigger+"/2d_Rates", theinterval);
369  MonGroup cluster_2drates_shift ( this, "/CaloMonitoring/ClusterMon/"+m_clusterContainerName.key()+TheTrigger+"/2d_Rates", theinterval);
370  MonGroup cluster_2davge_expert ( this, "/CaloMonitoring/ClusterMon/"+m_clusterContainerName.key()+TheTrigger+"/2d_AvEnergy", theinterval);
371  MonGroup cluster_2davge_shift ( this, "/CaloMonitoring/ClusterMon/"+m_clusterContainerName.key()+TheTrigger+"/2d_AvEnergy", theinterval);
372  MonGroup cluster_1davge_expert ( this, "/CaloMonitoring/ClusterMon/"+m_clusterContainerName.key()+TheTrigger+"/1d_AvEnergy", theinterval);
373  MonGroup cluster_2davgEt_expert ( this, "/CaloMonitoring/ClusterMon/"+m_clusterContainerName.key()+TheTrigger+"/TransEnergy", theinterval);
374  MonGroup cluster_2dTotale_expert ( this, "/CaloMonitoring/ClusterMon/"+m_clusterContainerName.key()+TheTrigger+"/TotalEnergy", theinterval);
375  MonGroup cluster_energytime_expert ( this, "/CaloMonitoring/ClusterMon/"+m_clusterContainerName.key()+TheTrigger+"/Time_Energy", theinterval);
376  MonGroup cluster_SummaryGroup_expert ( this, "/CaloMonitoring/ClusterMon/"+m_clusterContainerName.key()+TheTrigger+"/Summary", theinterval);
377 
378  bookBaseHists(&cluster_SummaryGroup_expert).ignore(); //from base class
379 
380  for (int i=0; i<MAX_E; i++) { //loop over thresholds
381  char bname[256];
382  char btitle[256];
383 
384  sprintf(btitle, "Occupancy of clusters with Et_clus>%4.1f GeV", m_Ethresh[i]);
385  sprintf(bname, "m_clus_etaphi_Et_thresh%d", i);
386  m_clus_etaphi_Et_thresh[i] = new TH2F(bname,btitle,98,-4.9,4.9,64,-3.15,3.15);
387  cluster_2drates_expert.regHist(m_clus_etaphi_Et_thresh[i]).ignore();
388  m_clus_etaphi_Et_thresh[i]->GetXaxis()->SetTitle("#eta");
389  m_clus_etaphi_Et_thresh[i]->GetYaxis()->SetTitle("#phi");
390 
391  sprintf(btitle, "Avg Et of clusters with Et_clus>%4.1f GeV", m_Ethresh[i]);
392  sprintf(bname, "etaphi_thresh_avgEt_%d", i);
393  m_etaphi_thresh_avgEt[i] = new TProfile2D(bname, btitle ,98,-4.9,4.9,64,-3.15,3.15);
394  cluster_2davgEt_expert.regHist( m_etaphi_thresh_avgEt[i] ).ignore();
395  m_etaphi_thresh_avgEt[i]->GetXaxis()->SetTitle("#eta");
396  m_etaphi_thresh_avgEt[i]->GetYaxis()->SetTitle("#phi");
397 
398 // DEPRECATED -- LS 21 March 2016
399 // sprintf(btitle, "Occupancy of EMclusters with Et_clus>%4.1f GeV", m_Ethresh[i]);
400 // sprintf(bname, "m_EMclus_etaphi_Et_thresh%d", i);
401 // m_EMclus_etaphi_Et_thresh[i] = new TH2F(bname,btitle,98,-4.9,4.9,64,-3.15,3.15);
402 // cluster_2drates_expert.regHist(m_EMclus_etaphi_Et_thresh[i]).ignore();
403 // m_EMclus_etaphi_Et_thresh[i]->GetXaxis()->SetTitle("#eta");
404 // m_EMclus_etaphi_Et_thresh[i]->GetYaxis()->SetTitle("#phi");
405 //
406 // sprintf(btitle, "Occupancy of EMclusters with E_clus>%4.1f GeV", m_Ethresh[i]);
407 // sprintf(bname, "m_EMclus_EtavsPhi%d", i);
408 // m_EMclus_etaVsPhi[i] = new TH2F(bname,btitle,98,-4.9,4.9,64,-3.15,3.15);
409 // if(i==0 || i==2) cluster_2drates_shift.regHist(m_EMclus_etaVsPhi[i]).ignore();
410 // else cluster_2drates_expert.regHist(m_EMclus_etaVsPhi[i]).ignore();
411 // m_EMclus_etaVsPhi[i]->GetXaxis()->SetTitle("#eta");
412 // m_EMclus_etaVsPhi[i]->GetYaxis()->SetTitle("#phi");
413 
414 
415  sprintf(btitle, "Occupancy of Clusters with E-Clus>%4.1f GeV", m_Ethresh[i]);
416  sprintf(bname, "m_clus_eta%d", i);
417  m_clus_eta[i] = new TH1F(bname,btitle,64,-5.0,5.0);
418  cluster_1drates_expert.regHist( m_clus_eta[i] ).ignore();
419  m_clus_eta[i]->GetXaxis()->SetTitle("#eta");
420 
421  // km add
422  sprintf(btitle, "Occupancy of Clusters with Et-Clus>%4.1f GeV", m_Ethresh[i]);
423  sprintf(bname, "m_clus_eta_Et%d", i);
424  m_clus_eta_Et[i] = new TH1F(bname,btitle,64,-5.0,5.0);
425  cluster_1drates_expert.regHist( m_clus_eta_Et[i]).ignore();
426  m_clus_eta_Et[i]->GetXaxis()->SetTitle("#eta");
427 
428  for (int j=0; j<3;j++){ //loop over regions
429  switch(j){
430  case 0:
431  sprintf(btitle, "Occupancy of Barrel Clusters Vs Phi E_Clus>%4.1f GeV ", m_Ethresh[i]);
432  sprintf(bname, "m_clus_phi%dBarrel", i);
433  break;
434  case 1:
435  sprintf(btitle, "Occupancy of EndCapA Clusters Vs Phi with E_clus>%4.1f GeV ", m_Ethresh[i]);
436  sprintf(bname, "m_clus_phi%dEndcapA", i);
437  break;
438  case 2:
439  sprintf(btitle, "Occupancy of EndCapC clusters Vs phi with E_clus>%4.1f GeV Endcap C", m_Ethresh[i]);
440  sprintf(bname, "m_clus_phi%dEndcapC", i);
441  break;
442  }
443  m_clus_phi[i][j] = new TH1F(bname,btitle,64,-3.15,3.15);
444  cluster_1drates_expert.regHist( m_clus_phi[i][j] ).ignore();
445  m_clus_phi[i][j]->GetXaxis()->SetTitle("#phi");
446  m_clus_phi[i][j]->GetYaxis()->SetMoreLogLabels();
447  m_clus_phi[i][j]->GetZaxis()->SetMoreLogLabels();
448  }
449 
450  // km add
451 
452  for (int j=0; j<3;j++){ //loop over regions
453  switch(j){
454  case 0:
455  sprintf(btitle, "Occupancy of Barrel Clusters Vs Phi Et_Clus>%4.1f GeV ", m_Ethresh[i]);
456  sprintf(bname, "m_clus_phi_Et%dBarrel", i);
457  break;
458  case 1:
459  sprintf(btitle, "Occupancy of EndCapA Clusters Vs Phi with Et_clus>%4.1f GeV ", m_Ethresh[i]);
460  sprintf(bname, "m_clus_phi_Et%dEndcapA", i);
461  break;
462  case 2:
463  sprintf(btitle, "Occupancy of EndCapC clusters Vs phi with Et_clus>%4.1f GeV Endcap C", m_Ethresh[i]);
464  sprintf(bname, "m_clus_phi_Et%dEndcapC", i);
465  break;
466  }
467  m_clus_phi_Et[i][j] = new TH1F(bname,btitle,64,-3.15,3.15);
468  cluster_1drates_expert.regHist( m_clus_phi_Et[i][j] ).ignore();
469  m_clus_phi_Et[i][j]->GetXaxis()->SetTitle("#phi");
470  m_clus_phi_Et[i][j]->GetYaxis()->SetMoreLogLabels();
471  m_clus_phi_Et[i][j]->GetZaxis()->SetMoreLogLabels();
472  }
473 
474 
475  sprintf(btitle, "Occupancy of clusters with E_clus>%4.1f GeV", m_Ethresh[i]);
476  sprintf(bname, "m_EtavsPhi%d", i);
477  m_etaVsPhi[i] = new TH2F(bname,btitle,98,-4.9,4.9,64,-3.15,3.15);
478  if(i==0 || i==2) cluster_2drates_shift.regHist(m_etaVsPhi[i]).ignore();
479  else cluster_2drates_expert.regHist(m_etaVsPhi[i]).ignore();
480  m_etaVsPhi[i]->GetXaxis()->SetTitle("#eta");
481  m_etaVsPhi[i]->GetYaxis()->SetTitle("#phi");
482  m_etaVsPhi[i]->GetZaxis()->SetMoreLogLabels(); // km add
483 
484  sprintf(btitle, "Avg energy of clusters with E_clus>%4.1f GeV", m_Ethresh[i]);
485  sprintf(bname, "etaphi_thresh_avgenergy_%d", i);
486  m_etaphi_thresh_avgenergy[i] = new TProfile2D(bname, btitle ,98,-4.9,4.9,64,-3.15,3.15);
487  if(i==0 || i==2) cluster_2davge_shift.regHist( m_etaphi_thresh_avgenergy[i] ).ignore();
488  else cluster_2davge_expert.regHist( m_etaphi_thresh_avgenergy[i] ).ignore();
489  m_etaphi_thresh_avgenergy[i]->GetXaxis()->SetTitle("#eta");
490  m_etaphi_thresh_avgenergy[i]->GetYaxis()->SetTitle("#phi");
491  m_etaphi_thresh_avgenergy[i]->GetZaxis()->SetMoreLogLabels();
492 
493  sprintf(btitle, "Total energy of clusters with E_clus>%4.1f GeV", m_Ethresh[i]);
494  sprintf(bname, "etaphi_thresh_Totalenergy_%d", i);
495  m_etaphi_thresh_Totalenergy[i] = new TH2F(bname, btitle ,98,-4.9,4.9,64,-3.15,3.15);
496  cluster_2dTotale_expert.regHist( m_etaphi_thresh_Totalenergy[i] ).ignore();
497  m_etaphi_thresh_Totalenergy[i]->GetXaxis()->SetTitle("#eta");
498  }
499 
500  m_etaVsPhiNegEn = new TH2F("m_EtavsPhiNegEn","Occupancy of cluster with E_Clus < 0.0 GeV",98,-4.9,4.9,64,-3.15,3.15);
501  cluster_2drates_expert.regHist(m_etaVsPhiNegEn).ignore();
502  m_etaVsPhiNegEn ->GetXaxis()->SetTitle("#eta");
503 
504  m_averageNegativeEnergy_etaphi = new TProfile2D("etaphi_avgnegenergy","Average energy of negative energy clusters",98,-4.9,4.9,64,-3.15,3.15);
505  cluster_2davge_expert.regHist( m_averageNegativeEnergy_etaphi ).ignore();
506  m_averageNegativeEnergy_etaphi->GetXaxis()->SetTitle("#eta");
507  m_averageNegativeEnergy_etaphi->GetYaxis()->SetTitle("#phi");
508 
509  m_averageEnergy_phi = new TProfile("phi_avgenergy","Avg energy of clusters Vs #phi",64,-3.15,3.15);
510  cluster_1davge_expert.regHist( m_averageEnergy_phi ).ignore();
511  m_averageEnergy_phi->GetXaxis()->SetTitle("#phi");
512  m_averageEnergy_phi->GetYaxis()->SetTitle("Energy (GeV)");
513 
514  m_averageEnergy_eta = new TProfile("eta_avgenergy","Avg energy of cluster Vs #eta",98,-4.9,4.9);
515  cluster_1davge_expert.regHist( m_averageEnergy_eta ).ignore();
516  m_averageEnergy_eta->GetXaxis()->SetTitle("#eta");
517  m_averageEnergy_eta->GetYaxis()->SetTitle("Energy (GeV)");
518 
520  m_clusterEnergyVsEta_barrel = new TH1F("energy_clus_barrel","Energy of Clusters for 0<|eta|<1.4",500,-500,800);
521  cluster_energytime_expert.regHist( m_clusterEnergyVsEta_barrel ).ignore();
522  m_clusterEnergyVsEta_barrel->GetXaxis()->SetTitle("Energy (MeV)");
523 
524  m_clusterEnergyVsEta_endcap = new TH1F("energy_clus_endcap","Energy of Clusters for 1.4<|eta|<2.0",500,-500,2000);
525  cluster_energytime_expert.regHist( m_clusterEnergyVsEta_endcap ).ignore();
526  m_clusterEnergyVsEta_endcap->GetXaxis()->SetTitle("Energy (MeV)");
527 
528  m_clusterEnergyVsEta_hecfcal = new TH1F("energy_clus_hecfcal","Energy of Clusters for |eta|>2.0",500,-2000,2000);
529  cluster_energytime_expert.regHist( m_clusterEnergyVsEta_hecfcal ).ignore();
530  m_clusterEnergyVsEta_hecfcal->GetXaxis()->SetTitle("Energy (MeV)");
531  } else {
532  m_clusterEnergyVsEta_barrel = new TH1F("energy_clus_barrel","Energy of Clusters for 0<eta<1.4",500,-100,500);
533  cluster_energytime_expert.regHist( m_clusterEnergyVsEta_barrel ).ignore();
534  m_clusterEnergyVsEta_barrel->GetXaxis()->SetTitle("Energy (GeV)");
535 
536  m_clusterEnergyVsEta_endcap = new TH1F("energy_clus_endcap","Energy of Clusters for 1.4<eta<2.0",500,-100,500);
537  cluster_energytime_expert.regHist( m_clusterEnergyVsEta_endcap ).ignore();
538  m_clusterEnergyVsEta_endcap->GetXaxis()->SetTitle("Energy (GeV)");
539 
540  m_clusterEnergyVsEta_hecfcal = new TH1F("energy_clus_hecfcal","Energy of Clusters for |eta|>2.0",500,-100,500);
541  cluster_energytime_expert.regHist( m_clusterEnergyVsEta_hecfcal ).ignore();
542  m_clusterEnergyVsEta_hecfcal->GetXaxis()->SetTitle("Energy (GeV)");
543 
544  m_clusterEtVsEta_barrel = new TH1F("et_clus_barrel","Et of Clusters for 0<|eta|<1.4",500,-100,500);
545  cluster_energytime_expert.regHist( m_clusterEtVsEta_barrel ).ignore();
546  m_clusterEtVsEta_barrel->GetXaxis()->SetTitle("Et (GeV)");
547 
548  m_clusterEtVsEta_endcap = new TH1F("et_clus_endcap","Et of Clusters for 1.4<|eta|<2.0",500,-100,500);
549  cluster_energytime_expert.regHist( m_clusterEtVsEta_endcap ).ignore();
550  m_clusterEtVsEta_endcap->GetXaxis()->SetTitle("Et (GeV)");
551 
552  m_clusterEtVsEta_hecfcal = new TH1F("et_clus_hecfcal","Et of Clusters for |eta|>2.0",500,-100,500);
553  cluster_energytime_expert.regHist( m_clusterEtVsEta_hecfcal ).ignore();
554  m_clusterEtVsEta_hecfcal->GetXaxis()->SetTitle("Energy (GeV)");
555 
556  m_averageEtOver500_etaphi = new TProfile2D("Max500_etaphi_avget","Avg Et of cluster with Et > 500 GeV" ,98,-4.9,4.9,64,-3.15,3.15);
557  cluster_2davge_expert.regHist( m_averageEtOver500_etaphi ).ignore();
558  m_averageEtOver500_etaphi->GetXaxis()->SetTitle("#eta");
559  m_averageEtOver500_etaphi->GetYaxis()->SetTitle("#phi");
560  }
561 }
562 
565  std::string TheTrigger;
566  if (m_triggerChainProp.empty()) TheTrigger="NoTrigSel";
567  else TheTrigger = m_triggerChainProp;
568 
569  MonGroup cluster_2davgEt_expert ( this, "/CaloMonitoring/ClusterMon/"+m_clusterContainerName.key()+TheTrigger+"/TransEnergy", theinterval);
570  MonGroup cluster_expert ( this, "/CaloMonitoring/ClusterMon/"+m_clusterContainerName.key()+TheTrigger+"/General", theinterval);
571  MonGroup cluster_2davge_expert ( this, "/CaloMonitoring/ClusterMon/"+m_clusterContainerName.key()+TheTrigger+"/2d_AvEnergy", theinterval);
572 
574  if ( m_clusterContainerName.key() == "LArMuClusterCandidates" ) {
575  m_nClusters = new TH1I("NClus","NCluster",200,0,200);
576  }else {
577  m_nClusters = new TH1I("NClus","NCluster",50,0,50);
578  }
579  }else {
580  if ( m_clusterContainerName.key() == "EMTopoCluster" ){
581  m_nClusters = new TH1I("NClus","NCluster",300,0,300);
582  }else {
583  m_nClusters = new TH1I("NClus","NCluster",600,0,600);
584  }
585  }
586  cluster_expert.regHist( m_nClusters ).ignore();
587  m_nClusters->GetXaxis()->SetTitle("Number of Clusters");
588 
589  m_nClustersBottomVsTop = new TH2I("NClus_botvstop","Number of Cluster in bottomvstop", 80, 0, 80, 80, 0,80);
590  cluster_expert.regHist( m_nClustersBottomVsTop ).ignore();
591  m_nClustersBottomVsTop ->GetXaxis()->SetTitle("Number of Clusters in bottom");
592  m_nClustersBottomVsTop ->GetYaxis()->SetTitle("Number of Clusters in top");
593 
595  m_averageEnergy_etaphi_maxEclusters = new TProfile2D("MaxEnergy_etaphi_avgenergy","max avg energy cluster from top and bottom",98,-4.9,4.9,64,-3.15,3.15);
596  cluster_2davge_expert.regHist( m_averageEnergy_etaphi_maxEclusters ).ignore();
597  m_averageEnergy_etaphi_maxEclusters->GetXaxis()->SetTitle("#eta");
598  m_averageEnergy_etaphi_maxEclusters->GetYaxis()->SetTitle("#phi");
599 
600  m_dEtaVsdPhi_maxEclustersTopVsBottom = new TH2F("Deltaphi_Deltaeta_top_bot_Maxenergy","#Delta Eta and #Delta phi of max avg energy cluster from top and bottom",98,-4.9,4.9,64,0,6.3);
601  cluster_expert.regHist( m_dEtaVsdPhi_maxEclustersTopVsBottom ).ignore();
602  m_dEtaVsdPhi_maxEclustersTopVsBottom->GetXaxis()->SetTitle("#eta");
603  m_dEtaVsdPhi_maxEclustersTopVsBottom->GetYaxis()->SetTitle("#phi");
604  }
605  else{
606  m_averageEnergy_etaphi_maxEclusters = new TProfile2D("MaxEnergy_etaphi_avgenergy","Avg energy of most energetic cluster",98,-4.9,4.9,64,-3.15,3.15);
607  cluster_2davge_expert.regHist( m_averageEnergy_etaphi_maxEclusters ).ignore();
608  m_averageEnergy_etaphi_maxEclusters->GetXaxis()->SetTitle("#eta");
609  m_averageEnergy_etaphi_maxEclusters->GetYaxis()->SetTitle("#phi");
610  }
611 
612 }
613 
616  m_binRangeE.reserve(3);
617  m_binRangeE[0]=200;
618  m_binRangeE[1]=0;
619  m_binRangeE[2]=150; // changed the energy from 100 to 150
620 
621  m_binRangeEta.reserve(3);
622  m_binRangeEta[0]=16;
623  m_binRangeEta[1]=-1.6;
624  m_binRangeEta[2]=1.6;
625 
626  m_binRangePhi.reserve(3);
627  m_binRangePhi[0]=64;
628  m_binRangePhi[1]=-M_PI;
629  m_binRangePhi[2]=M_PI;
630 
631  m_binRangeEtaPhi.reserve(6);
632  m_binRangeEtaPhi[0]=16;
633  m_binRangeEtaPhi[1]=-1.6;
634  m_binRangeEtaPhi[2]=1.6;
635  m_binRangeEtaPhi[3]=64;
638 }
639 
642  std::string TheTrigger;
643  if (m_triggerChainProp.empty()) TheTrigger="NoTrigSel";
644  else TheTrigger = m_triggerChainProp;
645 
646  MonGroup tile_cluster_shift ( this, "/CaloMonitoring/ClusterMon/"+m_clusterContainerName.key()+TheTrigger+"/General", theinterval); //SHIFT
647 
648  m_clustersCellsRatioEta = new TProfile("TileCalXRatioXEta","Ratio: cluster E/ cluster cells",(int)m_binRangeEta[0],m_binRangeEta[1], m_binRangeEta[2]);
649  m_clustersCellsRatioEta->GetXaxis()->SetTitle("Eta");
650  m_clustersCellsRatioEta->GetYaxis()->SetTitle("Cluster Energy / Sum over cluster cells");
651  tile_cluster_shift.regHist( m_clustersCellsRatioEta ).ignore();
652 
653  m_clustersCellsRatioPhi = new TProfile("ClustersXRatioXPhi","Ratio: cluster E/ cluster cells",(int)m_binRangePhi[0],m_binRangePhi[1], m_binRangePhi[2]);
654  m_clustersCellsRatioPhi->GetXaxis()->SetTitle("Phi [rad]");
655  m_clustersCellsRatioPhi->GetYaxis()->SetTitle("Cluster Energy / Sum over cluster cells");
656  tile_cluster_shift.regHist( m_clustersCellsRatioPhi ).ignore();
657 
658  m_clustersCellsRatioE = new TProfile("TileCalXRatioXE","Ratio: cluster E/ cluster cells",(int)m_binRangeE[0],m_binRangeE[1], m_binRangeE[2]);
659  m_clustersCellsRatioE->GetXaxis()->SetTitle("Energy [GeV]");
660  m_clustersCellsRatioE->GetYaxis()->SetTitle("Cluster Energy / Sum over cluster cells");
661  tile_cluster_shift.regHist( m_clustersCellsRatioE ).ignore();
662 
663  m_clustersE = new TH1F("TileCalXclustersXE","Energy of TileCal clusters",(int)m_binRangeE[0],m_binRangeE[1], m_binRangeE[2]);
664  m_clustersE->GetXaxis()->SetTitle("Energy [GeV]");
665  m_clustersE->GetYaxis()->SetTitle("Events");
666  tile_cluster_shift.regHist( m_clustersE ).ignore();
667 
668  m_clustersEta = new TProfile("TileCalXclustersXEta","Eta of TileCal clusters",(int)m_binRangeEta[0],m_binRangeEta[1], m_binRangeEta[2]);
669  m_clustersEta->GetXaxis()->SetTitle("Eta");
670  m_clustersEta->GetYaxis()->SetTitle("Mean energy [GeV]");
671  tile_cluster_shift.regHist( m_clustersEta ).ignore();
672 
673  m_clustersPhi = new TProfile("TileCalXclustersXPhi","Phi Tile clusters",(int)m_binRangePhi[0],m_binRangePhi[1], m_binRangePhi[2]);
674  m_clustersPhi->GetXaxis()->SetTitle("Phi [rad]");
675  m_clustersPhi->GetYaxis()->SetTitle("Mean energy [GeV]");
676  tile_cluster_shift.regHist( m_clustersPhi ).ignore();
677 
678  m_clustersEtaPhi = new TH2F("TileCalXclustersXEtaVSPhi","Tile clusters",(int)m_binRangeEtaPhi[0],m_binRangeEtaPhi[1], m_binRangeEtaPhi[2], (int)m_binRangeEtaPhi[3],m_binRangeEtaPhi[4], m_binRangeEtaPhi[5]);
679  m_clustersEtaPhi->GetXaxis()->SetTitle("Eta");
680  m_clustersEtaPhi->GetYaxis()->SetTitle("Phi [rad]");
681  tile_cluster_shift.regHist( m_clustersEtaPhi ).ignore();
682 
683  m_clustersCellsE = new TProfile("TileCalXRXE","Tile clusters",(int)m_binRangeE[0],m_binRangeE[1], m_binRangeE[2]);
684  m_clustersCellsE->GetXaxis()->SetTitle("Energy [GeV]");
685  m_clustersCellsE->GetYaxis()->SetTitle("Energy fraction from Tile Cal");
686  tile_cluster_shift.regHist( m_clustersCellsE ).ignore();
687 
688  m_clustersCellsEta = new TProfile("TileCalXRXEta","Tile clusters",(int)m_binRangeEta[0],m_binRangeEta[1], m_binRangeEta[2]);
689  m_clustersCellsEta->GetXaxis()->SetTitle("Eta");
690  m_clustersCellsEta->GetYaxis()->SetTitle("Energy fraction from TileCal");
691  tile_cluster_shift.regHist( m_clustersCellsEta ).ignore();
692 
693  m_clustersCellsPhi = new TProfile("ClustersXRXPhi","Tile clusters",(int)m_binRangePhi[0],m_binRangePhi[1], m_binRangePhi[2]);
694  m_clustersCellsPhi->GetXaxis()->SetTitle("Phi [rad]");
695  m_clustersCellsPhi->GetYaxis()->SetTitle("Energy fraction from TileCal");
696  tile_cluster_shift.regHist( m_clustersCellsPhi ).ignore();
697 
698 }
699 
702 
703  StatusCode sc = StatusCode::SUCCESS;
704 
705  bool ifPass = 1;
706  sc = checkFilters(ifPass);
707  if(sc.isFailure() || !ifPass) return StatusCode::SUCCESS;
708 
710  if (! clusterContHandle.isValid()) { ATH_MSG_WARNING("No CaloCluster container found in TDS"); return StatusCode::FAILURE; }
711  const xAOD::CaloClusterContainer* clusterCont = clusterContHandle.get();
712 
713  initCounter();
714 
716  xAOD::CaloClusterContainer::const_iterator it_e = clusterCont->end();
717 
718  //count events
719  m_eventsCounter++; // km add
720 
721  for ( ; it!=it_e;++it) {
722  const CaloCluster* clus = *it;
723 
724  fillCellHist(clus);
725  //fillClusterEMvar(clus);
726 
727  fillClusterStat(clus);
728  fillClusterHist(clus);
729  } // cluster iter cut
730 
731  fillClusterStatHist(clusterCont);
732 
733  if( m_clusterContainerName.key() == "CaloCalTopoClusters" ) fillTileHist(clusterCont);
734 
735  return sc;
736 }
737 
738 
741 
742  m_cluscount=0;
743  m_cluscount_top=0;
744  m_cluscount_bot=0;
749 }
750 
753  int cellcount=0;
754  //int maxcellindex=0;
755  float maxcellene=0;
756  float maxcelltime=0;
757 
758  const CaloClusterCellLink* cellLinks=clus->getCellLinks();
759  if (!cellLinks) {
760  ATH_MSG_DEBUG( "No cell links for this cluster" );
761  return;
762  }
763 
764  const CaloCellContainer* cellCont=cellLinks->getCellContainer();
765  if (!cellCont) {
766  ATH_MSG_DEBUG( "DataLink to cell container is broken" );
767  return;
768  }
769 
770 
773  for ( ;cellIter !=cellIterEnd;cellIter++) {
774  ++cellcount;
775  const CaloCell* cell= (*cellIter);
776  float EnergyCell=cell->energy();
777  float TimeCell=cell->time();
778  if ( cellcount == 1 || fabs(EnergyCell) > fabs(maxcellene) ) {
779  maxcellene=EnergyCell;
780  //maxcellindex=cellcount;
781  maxcelltime=TimeCell;
782  }
783  }
784  m_nCells->Fill(cellcount);
785 
786  float EnergyClus = clus->e();
787  float EtaClus = clus->eta();
788  float PhiClus = clus->phi();
789  float TimeClus = clus->time();
790  float ratio=0;
791  if(EnergyClus > 0.0) ratio = maxcellene/EnergyClus;
792 
793  if ( fabs(EtaClus) < 5.0) {
794 
795  if(EnergyClus > 0.0) {
797  if( ratio > 0.9 ) {
798  m_dominantCellOccupancy_etaphi->Fill(EtaClus,PhiClus);
799  m_dominantCellAverageEnergy_etaphi->Fill(EtaClus,PhiClus,EnergyClus/GeV);
800  }
801  }
802 
803  m_nCellInCluster_etaphi->Fill(EtaClus,PhiClus,cellcount);
804  m_clusterTimeVsEnergy->Fill(TimeClus,EnergyClus/GeV);
805  m_clusterTime->Fill(TimeClus);
806  m_cellTime->Fill(maxcelltime);
807  m_cellvsclust_time->Fill(maxcelltime,TimeClus);
808  }
809 
810 }
811 
813 // THIS ROUTINE IS DEPRECATED - LS 21 March 2016
814 //void CaloClusterVecMon::fillClusterEMvar(const xAOD::CaloCluster* clus){
815 //
816 // m_EMenergy=0.;
817 // m_EMenergy_abs=0.;
818 // m_EMet=0.;
819 // m_EMeta=0.;
820 // m_EMphi=0.;
821 //
822 // std::cout << m_clusterContainerName << std::endl;
823 // if( m_clusterContainerName == "CaloCalTopoClusters" ) {
824 //
825 // //Loop over samplings
826 // for (unsigned iS=0;iS<CaloSampling::HEC0;++iS) {
827 // const CaloSampling::CaloSample iSamp=(CaloSampling::CaloSample)iS;
828 // if (clus->hasSampling(iSamp)) {
829 // const float sampler_energy = clus->eSample(iSamp);
830 // const float sampler_eta = clus->etaSample(iSamp);//samplers_eta.at(sampler_id);
831 // const float sampler_phi = clus->phiSample(iSamp);//samplers_phi.at(sampler_id);
832 // m_EMenergy+=sampler_energy;
833 // m_EMenergy_abs+=fabs(sampler_energy);
834 // m_EMeta+=sampler_eta*fabs(sampler_energy);
835 // m_EMphi+=sampler_phi*fabs(sampler_energy);
836 // }
837 // }
838 //
839 // if(m_EMenergy_abs>0.01){
840 // m_EMeta=m_EMeta/m_EMenergy_abs;
841 // m_EMphi=m_EMphi/m_EMenergy_abs;
842 // if(fabs(m_EMeta)<20.)m_EMet=m_EMenergy/cosh(m_EMeta);
843 // }
844 // else{
845 // m_EMenergy=0.;
846 // m_EMenergy_abs=0.;
847 // m_EMet=0.;
848 // m_EMeta=0.;
849 // m_EMphi=0.;
850 // }
851 // }
852 // else {
853 //
854 // // Use energy and eta/phi from the EM clusters
855 // m_EMeta = clus->eta();
856 // m_EMphi = clus->phi();
857 // m_EMet = clus->et();
858 // m_EMenergy = clus->e();
859 // m_EMenergy_abs = fabs(m_EMenergy);
860 // }
861 //
862 //}
863 
866  ++m_cluscount;
867  float EnergyClus=clus->e();
868  float PhiClus=clus->phi();
869 
870  if(PhiClus > 0.) {
871  ++m_cluscount_top;
872  if(PhiClus < 5.0){
873  if(m_cluscount_top == 1 || m_maxclusene_top<EnergyClus){
874  m_maxclusene_top=EnergyClus;
876  }
877  }
878  }
879  else {
880  ++m_cluscount_bot;
881  if(PhiClus > (-5.0) ){
882  if(m_cluscount_top == 1 || m_maxclusene_bot<EnergyClus){
883  m_maxclusene_bot=EnergyClus;
885  }
886  }
887  }
888 
889 }
890 
893  float EtaClus = clus->eta();
894  float PhiClus = clus->phi();
895  float EtClus = clus->et();
896  float EClus = clus->e();
897 
898  TH1F* tmp_clusterEtVsEta_sub=nullptr;
899  TH1F* tmp_clusterEnergyVsEta_sub=nullptr;
900  if( (fabs(EtaClus)<m_etaMin[1]) && (fabs(EtaClus)>=m_etaMin[0]) ){
901  tmp_clusterEtVsEta_sub = m_clusterEtVsEta_barrel;
902  tmp_clusterEnergyVsEta_sub = m_clusterEnergyVsEta_barrel;
903  }
904  else if( (fabs(EtaClus)<m_etaMin[2]) && (fabs(EtaClus)>=m_etaMin[1]) ){
905  tmp_clusterEtVsEta_sub = m_clusterEtVsEta_endcap;
906  tmp_clusterEnergyVsEta_sub = m_clusterEnergyVsEta_endcap;
907  }
908  else if( fabs(EtaClus)>=m_etaMin[2] ){
909  tmp_clusterEtVsEta_sub = m_clusterEtVsEta_hecfcal;
910  tmp_clusterEnergyVsEta_sub = m_clusterEnergyVsEta_hecfcal;
911  }
912 
913  if(fabs(EtaClus) < 5.0) {
914 
915  for (int j=0;j<MAX_E;j++) {
916  if(EtClus > m_Ethresh[j]*GeV) {
917  m_clus_etaphi_Et_thresh[j]->Fill(EtaClus, PhiClus);
918  m_etaphi_thresh_avgEt[j]->Fill(EtaClus, PhiClus,EtClus/GeV);
919  }
920 
921 // if(m_EMet>m_Ethresh[j]*GeV) m_EMclus_etaphi_Et_thresh[j]->Fill(m_EMeta,m_EMphi);
922 // if(m_EMenergy>m_Ethresh[j]*GeV) m_EMclus_etaVsPhi[j]->Fill(m_EMeta,m_EMphi);
923 
924  // km add
925  if (EtClus > m_Ethresh[j]*GeV ) {
926  m_clus_eta_Et[j]->Fill(EtaClus);
927  if (fabs(EtaClus)<1.5) {
928  m_clus_phi_Et[j][0]->Fill(PhiClus);
929  }else if (EtaClus > 1.5) {
930  m_clus_phi_Et[j][1]->Fill(PhiClus);
931  }else {
932  m_clus_phi_Et[j][2]->Fill(PhiClus);
933  }
934  }
935 
936  if(EClus/GeV > m_Ethresh[j]) {
937  m_clus_eta[j]->Fill(EtaClus);
938  if (fabs(EtaClus)<1.5) {
939  m_clus_phi[j][0]->Fill(PhiClus);
940  }else if (EtaClus > 1.5) {
941  m_clus_phi[j][1]->Fill(PhiClus);
942  }else {
943  m_clus_phi[j][2]->Fill(PhiClus);
944  }
945  m_etaVsPhi[j]->Fill(EtaClus, PhiClus);
946  m_etaphi_thresh_avgenergy[j]->Fill(EtaClus, PhiClus,EClus/GeV);
947  m_etaphi_thresh_Totalenergy[j]->Fill(EtaClus, PhiClus,EClus/GeV);
948  }
949  }
950 
951  if( EClus < 0.0 ){
952  m_etaVsPhiNegEn->Fill(EtaClus, PhiClus);
953  m_averageNegativeEnergy_etaphi->Fill(EtaClus, PhiClus,EClus/GeV);
954  }
955 
956  m_averageEnergy_eta->Fill(EtaClus,EClus/GeV);
957  m_averageEnergy_phi->Fill(PhiClus,EClus/GeV);
958 
960  if(EtClus>500000.) m_averageEtOver500_etaphi->Fill(EtaClus, PhiClus,EtClus/GeV);
961  if(tmp_clusterEtVsEta_sub) tmp_clusterEtVsEta_sub->Fill(EtClus/GeV);
962  if(tmp_clusterEnergyVsEta_sub) tmp_clusterEnergyVsEta_sub->Fill(EClus/GeV);
963  }
964  else{
965  if(tmp_clusterEnergyVsEta_sub) tmp_clusterEnergyVsEta_sub->Fill(EClus/GeV);
966  }
967 
968  }
969 }
970 
973  m_nClusters->Fill(m_cluscount);
975 
976  float phi_top=0,eta_top=0;
977  float phi_bot=0,eta_bot=0;
978  if (m_maxclusindex_top > 0){
979  phi_top=(*clusterCont)[m_maxclusindex_top-1]->phi();
980  eta_top=(*clusterCont)[m_maxclusindex_top-1]->eta();
981  }
982  if (m_maxclusindex_bot > 0){
983  phi_bot=(*clusterCont)[m_maxclusindex_bot-1]->phi();
984  eta_bot=(*clusterCont)[m_maxclusindex_bot-1]->eta();
985  }
986 
988 
989  if (m_maxclusindex_top > 0){
991  //m_averageEnergy_etaphi_maxEclusters->Fill(eta_top,phi_top,1.);
992  }
993 
994  if (m_maxclusindex_bot > 0){
996  //m_averageEnergy_etaphi_maxEclusters->Fill(eta_bot,phi_bot,1.);
997  }
998 
999  if ((m_maxclusindex_top > 0) && (m_maxclusindex_bot > 0)) {
1000  m_dEtaVsdPhi_maxEclustersTopVsBottom->Fill((eta_top-eta_bot),(phi_top-phi_bot));
1001  }
1002 
1003  } else {
1006  //m_averageEnergy_etaphi_maxEclusters->Fill(eta_top,phi_top,1.);
1007  } else {
1009  //m_averageEnergy_etaphi_maxEclusters->Fill(eta_bot,phi_bot,1.);
1010  }
1011  }
1012 
1013 }
1014 
1017 
1018  //xAOD::CaloClusterContainer clusColl(SG::VIEW_ELEMENTS);
1019  std::vector<const CaloCluster*> clusColl;
1020  for (const auto *clu : *clusterCont) {
1021  if ( fabs( clu->eta() ) < 1.6 ) clusColl.push_back(clu);
1022  }
1023  /*
1024  for(xAOD::CaloClusterContainer::const_iterator clusIter = clusterCont->begin(); clusIter != clusterCont->end(); ++clusIter) {
1025  //CaloCluster* cluster_ptr = const_cast<CaloCluster*>(*clusIter);
1026  const CaloCluster* cluster_ptr = *clusIter;
1027  if ( fabs( cluster_ptr->eta() ) < 1.6 ) clusColl.push_back(cluster_ptr);
1028  }
1029  */
1030  //std::sort(clusColl.begin(),clusColl.end(),GetSort::ClusSort());
1031  std::sort(clusColl.begin(),clusColl.end(),[](const xAOD::CaloCluster* o1, const xAOD::CaloCluster* o2) {return o1->e() > o2->e();}); //C++11
1032 
1033  int i_clus=0;
1034 
1035 
1036 
1037 
1038  //for(xAOD::CaloClusterContainer::const_iterator iCluster = clusColl.begin(); iCluster != clusColl.end(); iCluster++) {
1039  for (const CaloCluster* cluster_ptr : clusColl) {
1040  float energy = cluster_ptr->e()/GeV;
1041  float eta = cluster_ptr->eta();
1042  float phi = cluster_ptr->phi();
1043  float eSum=0.;
1044  float eSumTile=0.;
1045  float ratio=0.0;
1046  float ratioTile=0.0;
1047 
1048  if (energy < m_Threshold/GeV) continue;
1049 
1050  const CaloClusterCellLink* cellLinks=cluster_ptr->getCellLinks();
1051  if (!cellLinks) {
1052  ATH_MSG_DEBUG( "No cell links for this cluster" );
1053  return;
1054  }
1055 
1056  const CaloCellContainer* cellCont=cellLinks->getCellContainer();
1057  if (!cellCont) {
1058  ATH_MSG_DEBUG( "DataLink to cell container is broken" );
1059  return;
1060  }
1061 
1062  for (CaloCluster::const_cell_iterator itrCell = cluster_ptr->cell_begin();itrCell!=cluster_ptr->cell_end(); ++itrCell) {
1063  const CaloCell * theCell=*itrCell;
1064  float cell_e = theCell->energy()/GeV;
1065  eSum+=cell_e;
1066 
1067  const Identifier cellId = theCell->ID();
1068  if (m_caloCellHelper->is_tile(cellId)) eSumTile+=cell_e;
1069  }
1070 
1071  if (eSum>0.) {
1072  ratio= energy / eSum;
1073  ratioTile=eSumTile / eSum;
1074  }
1075 
1079 
1080  m_clustersCellsE->Fill( energy, ratioTile, 1.0 );
1081  m_clustersCellsEta->Fill( eta, ratioTile, 1.0 );
1082  m_clustersCellsPhi->Fill( phi, ratioTile, 1.0 );
1083 
1084  if( ratioTile > 0.5 ) {
1085  m_clustersE->Fill( energy );
1088  m_clustersEtaPhi->Fill( eta, phi );
1089  }
1090  i_clus++;
1091  if (i_clus > 4) break; // take 4 most energetic clusters
1092  }
1093 }
1094 
1097  StatusCode sc = StatusCode::SUCCESS;
1098  return sc;
1099 }
1100 
CaloClusterVecMon::m_binRangeEta
std::vector< float > m_binRangeEta
Definition: CaloClusterVecMon.h:107
ManagedMonitorToolBase::Interval_t
Interval_t
An enumeration describing how detailed a particular monitoring object is.
Definition: ManagedMonitorToolBase.h:114
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
CaloClusterVecMon::m_maxclusindex_top
int m_maxclusindex_top
Definition: CaloClusterVecMon.h:120
CaloClusterVecMon::m_etaVsPhiNegEn
TH2F * m_etaVsPhiNegEn
Definition: CaloClusterVecMon.h:157
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
CaloClusterVecMon::~CaloClusterVecMon
virtual ~CaloClusterVecMon()
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
CaloClusterVecMon::m_cluscount
int m_cluscount
Definition: CaloClusterVecMon.h:117
CaloClusterVecMon::m_nClusters
TH1I * m_nClusters
Definition: CaloClusterVecMon.h:176
CaloClusterVecMon::bookClusterStatHists
void bookClusterStatHists(const Interval_t theinterval)
Definition: CaloClusterVecMon.cxx:564
CaloClusterVecMon::m_etaphi_thresh_avgEt
TProfile2D * m_etaphi_thresh_avgEt[MAX_E]
Definition: CaloClusterVecMon.h:145
ManagedMonitorToolBase::higStat
@ higStat
Definition: ManagedMonitorToolBase.h:115
CaloClusterVecMon::m_maxclusindex_bot
int m_maxclusindex_bot
Definition: CaloClusterVecMon.h:121
CaloClusterVecMon::REGION3
@ REGION3
Definition: CaloClusterVecMon.h:88
ManagedMonitorToolBase::lumiBlock
@ lumiBlock
Definition: ManagedMonitorToolBase.h:114
CaloClusterVecMon::m_etaphi_thresh_avgenergy
TProfile2D * m_etaphi_thresh_avgenergy[MAX_E]
Definition: CaloClusterVecMon.h:153
TH1I
Definition: rootspy.cxx:332
CaloClusterVecMon::LOW_E
@ LOW_E
Definition: CaloClusterVecMon.h:77
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
CaloClusterVecMon::m_tWidth
float m_tWidth
Definition: CaloClusterVecMon.h:101
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
CaloClusterVecMon::m_averageEnergy_etaphi_maxEclusters
TProfile2D * m_averageEnergy_etaphi_maxEclusters
Definition: CaloClusterVecMon.h:178
AthenaMonManager::cosmics
@ cosmics
Definition: AthenaMonManager.h:58
CaloClusterVecMon::m_clustersCellsE
TProfile * m_clustersCellsE
Definition: CaloClusterVecMon.h:191
CaloClusterVecMon::m_maxEcellToEclusterRatio
TH1F * m_maxEcellToEclusterRatio
Definition: CaloClusterVecMon.h:134
skel.it
it
Definition: skel.GENtoEVGEN.py:423
TProfile2D
Definition: rootspy.cxx:531
CaloClusterVecMon::m_clustersCellsRatioPhi
TProfile * m_clustersCellsRatioPhi
Definition: CaloClusterVecMon.h:183
CaloClusterVecMon::m_clusterTimeVsEnergy
TH2F * m_clusterTimeVsEnergy
Definition: CaloClusterVecMon.h:138
M_PI
#define M_PI
Definition: ActiveFraction.h:11
DataVector::get
const T * get(size_type n) const
Access an element, as an rvalue.
CaloClusterVecMon::initialize
virtual StatusCode initialize()
Definition: CaloClusterVecMon.cxx:164
CaloClusterVecMon::fillClusterStatHist
void fillClusterStatHist(const xAOD::CaloClusterContainer *clusterCont)
Definition: CaloClusterVecMon.cxx:972
ManagedMonitorToolBase::m_dataType
AthenaMonManager::DataType_t m_dataType
Definition: ManagedMonitorToolBase.h:901
CaloClusterVecMon::m_dominantCellOccupancy_etaphi
TH2F * m_dominantCellOccupancy_etaphi
Definition: CaloClusterVecMon.h:135
ManagedMonitorToolBase::fill
@ fill
Definition: ManagedMonitorToolBase.h:116
CaloCompositeCellBase::cell_end
cell_iterator cell_end() const
Retrieve a STL-type end() iterator for the cell store.
CaloClusterVecMon::m_etaphi_thresh_Totalenergy
TH2F * m_etaphi_thresh_Totalenergy[MAX_E]
Definition: CaloClusterVecMon.h:154
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
CaloCell_Base_ID::is_tile
bool is_tile(const Identifier id) const
test if the id belongs to the Tiles
CaloClusterVecMon::m_maxclusene_top
float m_maxclusene_top
Definition: CaloClusterVecMon.h:122
CaloClusterVecMon::HIGH_E
@ HIGH_E
Definition: CaloClusterVecMon.h:81
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
CaloClusterVecMon::m_clusterEnergyVsEta_hecfcal
TH1F * m_clusterEnergyVsEta_hecfcal
Definition: CaloClusterVecMon.h:166
CaloClusterVecMon::procHistograms
virtual StatusCode procHistograms()
An inheriting class should either override this function or finalHists().
Definition: CaloClusterVecMon.cxx:1096
xAOD::CaloCluster
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
Definition: Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloCluster.h:19
CaloClusterVecMon::REGION2
@ REGION2
Definition: CaloClusterVecMon.h:87
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
CaloClusterVecMon::m_clustersCellsEta
TProfile * m_clustersCellsEta
Definition: CaloClusterVecMon.h:192
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
CaloCell::energy
double energy() const
get energy (data member)
Definition: CaloCell.h:311
CaloClusterVecMon::bookClusterHists
void bookClusterHists(const Interval_t theinterval)
Definition: CaloClusterVecMon.cxx:362
CaloClusterVecMon::fillHistograms
virtual StatusCode fillHistograms()
An inheriting class should either override this function or fillHists().
Definition: CaloClusterVecMon.cxx:701
CaloClusterVecMon::m_clusterContainerName
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_clusterContainerName
Definition: CaloClusterVecMon.h:93
CaloClusterVecMon::m_Ethresh
float m_Ethresh[MAX_E]
Definition: CaloClusterVecMon.h:99
CaloClusterVecMon::m_clustersEtaPhi
TH2F * m_clustersEtaPhi
Definition: CaloClusterVecMon.h:189
CaloClusterVecMon::fillClusterStat
void fillClusterStat(const xAOD::CaloCluster *clus)
Definition: CaloClusterVecMon.cxx:865
CaloMonToolBase::checkFilters
StatusCode checkFilters(bool &ifPass)
Definition: CaloMonToolBase.cxx:95
CaloClusterVecMon::m_binRangePhi
std::vector< float > m_binRangePhi
Definition: CaloClusterVecMon.h:108
CaloClusterVecMon::m_cluscount_bot
int m_cluscount_bot
Definition: CaloClusterVecMon.h:119
ManagedMonitorToolBase::MonGroup
A container of information describing a monitoring object.
Definition: ManagedMonitorToolBase.h:138
CaloClusterVecMon::m_clus_phi_Et
TH1F * m_clus_phi_Et[MAX_E][3]
Definition: CaloClusterVecMon.h:151
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
CaloClusterVecMon::m_clusterTime
TH1F * m_clusterTime
Definition: CaloClusterVecMon.h:139
CaloClusterVecMon::checkTimeGran
bool checkTimeGran(bool isNewEventsBlock, bool isNewLumiBlock, bool isNewRun, Interval_t &theinterval)
Definition: CaloClusterVecMon.cxx:237
CaloClusterVecMon::m_clustersCellsRatioE
TProfile * m_clustersCellsRatioE
Definition: CaloClusterVecMon.h:184
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
CaloClusterVecMon::fillTileHistRange
void fillTileHistRange()
Definition: CaloClusterVecMon.cxx:615
CaloClusterVecMon::retrieveTools
StatusCode retrieveTools()
Definition: CaloClusterVecMon.cxx:185
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
ManagedMonitorToolBase::initialize
virtual StatusCode initialize()
Definition: ManagedMonitorToolBase.cxx:669
CaloClusterVecMon::m_cellvsclust_time
TH2F * m_cellvsclust_time
Definition: CaloClusterVecMon.h:141
CaloClusterVecMon::m_nCells
TH1I * m_nCells
Definition: CaloClusterVecMon.h:133
CaloClusterVecMon::m_clus_etaphi_Et_thresh
TH2F * m_clus_etaphi_Et_thresh[MAX_E]
Definition: CaloClusterVecMon.h:144
lumiFormat.i
int i
Definition: lumiFormat.py:92
python.TrigEgammaMonitorHelper.TProfile
def TProfile(*args, **kwargs)
Definition: TrigEgammaMonitorHelper.py:81
CaloClusterVecMon::m_clusterEtVsEta_hecfcal
TH1F * m_clusterEtVsEta_hecfcal
Definition: CaloClusterVecMon.h:169
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
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
TH2I
Definition: rootspy.cxx:410
CaloClusterVecMon::fillClusterHist
void fillClusterHist(const xAOD::CaloCluster *clus)
Definition: CaloClusterVecMon.cxx:892
CaloClusterVecMon::m_cellTime
TH1F * m_cellTime
Definition: CaloClusterVecMon.h:140
ManagedMonitorToolBase::newHigStatIntervalFlag
bool newHigStatIntervalFlag() const
Definition: ManagedMonitorToolBase.h:851
CaloClusterVecMon::fillTileHist
void fillTileHist(const xAOD::CaloClusterContainer *clusterCont)
Definition: CaloClusterVecMon.cxx:1016
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
CaloClusterVecMon::initCounter
void initCounter()
Definition: CaloClusterVecMon.cxx:740
DQAtlasReadyFilterTool.h
CaloClusterVecMon::MEDHIGH_E
@ MEDHIGH_E
Definition: CaloClusterVecMon.h:80
CaloClusterVecMon::m_clustersPhi
TProfile * m_clustersPhi
Definition: CaloClusterVecMon.h:188
test_pyathena.parent
parent
Definition: test_pyathena.py:15
BeamBackgroundData.h
ManagedMonitorToolBase::m_triggerChainProp
std::string m_triggerChainProp
Definition: ManagedMonitorToolBase.h:917
TProfile2D::Fill
int Fill(double, double, double)
Definition: rootspy.cxx:541
CaloCluster
Principal data class for CaloCell clusters.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:79
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CaloClusterVecMon::m_binRangeE
std::vector< float > m_binRangeE
Definition: CaloClusterVecMon.h:106
CaloClusterVecMon::m_nCellInCluster_etaphi
TProfile2D * m_nCellInCluster_etaphi
Definition: CaloClusterVecMon.h:137
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
ManagedMonitorToolBase::medStat
@ medStat
Definition: ManagedMonitorToolBase.h:115
CaloClusterVecMon::m_cluscount_top
int m_cluscount_top
Definition: CaloClusterVecMon.h:118
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
CaloClusterVecMon::CaloClusterVecMon
CaloClusterVecMon(const std::string &type, const std::string &name, const IInterface *parent)
Definition: CaloClusterVecMon.cxx:50
CaloClusterVecMon::m_maxclusene_bot
float m_maxclusene_bot
Definition: CaloClusterVecMon.h:123
CaloClusterVecMon::bookCellHists
void bookCellHists(const Interval_t theinterval)
Definition: CaloClusterVecMon.cxx:283
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
CaloClusterVecMon::m_clusterEnergyVsEta_endcap
TH1F * m_clusterEnergyVsEta_endcap
Definition: CaloClusterVecMon.h:165
CaloClusterVecMon::m_clus_eta_Et
TH1F * m_clus_eta_Et[MAX_E]
Definition: CaloClusterVecMon.h:150
CaloMonToolBase
Definition: CaloMonToolBase.h:17
CaloClusterVecMon::m_nClustersBottomVsTop
TH2I * m_nClustersBottomVsTop
Definition: CaloClusterVecMon.h:177
CaloClusterVecMon::m_etaVsPhi
TH2F * m_etaVsPhi[MAX_E]
Definition: CaloClusterVecMon.h:152
CaloClusterVecMon::m_averageEnergy_phi
TProfile * m_averageEnergy_phi
Definition: CaloClusterVecMon.h:161
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
CaloIdManager::getCaloCell_ID
const CaloCell_ID * getCaloCell_ID(void) const
Access to IdHelper.
Definition: CaloIdManager.cxx:63
CaloClusterVecMon::m_clustersE
TH1F * m_clustersE
Definition: CaloClusterVecMon.h:186
CaloMonToolBase::initialize
StatusCode initialize()
Definition: CaloMonToolBase.cxx:28
CaloClusterVecMon::m_averageEtOver500_etaphi
TProfile2D * m_averageEtOver500_etaphi
Definition: CaloClusterVecMon.h:172
CaloClusterVecMon::LOWMED_E
@ LOWMED_E
Definition: CaloClusterVecMon.h:78
CaloCompositeCellBase::cell_begin
cell_iterator cell_begin() const
Retrieve a STL-type begin() iterator for the cell store.
CaloClusterVecMon::m_etaMin
float m_etaMin[MAX_REGION]
Definition: CaloClusterVecMon.h:100
CaloClusterVecMon::m_clus_phi
TH1F * m_clus_phi[MAX_E][3]
Definition: CaloClusterVecMon.h:149
CaloCell::ID
Identifier ID() const
get ID (from cached data member) non-virtual and inline for fast access
Definition: CaloCell.h:279
Units.h
Wrapper to avoid constant divisions when using units.
CaloClusterVecMon::m_clustersCellsRatioEta
TProfile * m_clustersCellsRatioEta
Definition: CaloClusterVecMon.h:182
ManagedMonitorToolBase::lowStat
@ lowStat
Definition: ManagedMonitorToolBase.h:115
CaloClusterVecMon::initHists
void initHists()
Definition: CaloClusterVecMon.cxx:95
CaloCellContainer
Container class for CaloCell.
Definition: CaloCellContainer.h:55
CaloClusterVecMon::m_binRangeEtaPhi
std::vector< float > m_binRangeEtaPhi
Definition: CaloClusterVecMon.h:109
python.changerun.o2
o2
Definition: changerun.py:45
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
CaloClusterVecMon::bookTileHists
void bookTileHists(const Interval_t theinterval)
Definition: CaloClusterVecMon.cxx:641
CaloClusterVecMon::m_eventsCounter
int m_eventsCounter
Definition: CaloClusterVecMon.h:116
ManagedMonitorToolBase::run
@ run
Definition: ManagedMonitorToolBase.h:116
TProfile::Fill
int Fill(double, double)
Definition: rootspy.cxx:523
python.compareTCTs.ratio
ratio
Definition: compareTCTs.py:295
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
TH1F
Definition: rootspy.cxx:320
CaloClusterVecMon::m_dEtaVsdPhi_maxEclustersTopVsBottom
TH2F * m_dEtaVsdPhi_maxEclustersTopVsBottom
Definition: CaloClusterVecMon.h:179
CaloCluster::eta
virtual double eta() const
Retrieve eta independent of signal state.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:755
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
CaloClusterVecMon::MAX_E
@ MAX_E
Definition: CaloClusterVecMon.h:82
ManagedMonitorToolBase::eventsBlock
@ eventsBlock
Definition: ManagedMonitorToolBase.h:114
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
CaloClusterVecMon::m_clustersEta
TProfile * m_clustersEta
Definition: CaloClusterVecMon.h:187
ManagedMonitorToolBase::all
@ all
Definition: ManagedMonitorToolBase.h:116
CaloClusterVecMon::m_caloMgr
const CaloIdManager * m_caloMgr
Definition: CaloClusterVecMon.h:112
CaloCluster::e
virtual double e() const
Retrieve energy independent of signal state.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:753
CaloClusterVecMon::m_clustersCellsPhi
TProfile * m_clustersCellsPhi
Definition: CaloClusterVecMon.h:193
CaloClusterVecMon::bookHistograms
virtual StatusCode bookHistograms()
An inheriting class should either override this function or bookHists().
Definition: CaloClusterVecMon.cxx:214
P4EEtaPhiMBase::et
virtual double et() const
transverse energy defined to be e*sin(theta)
Definition: P4EEtaPhiMBase.cxx:106
CaloClusterVecMon::m_clusterEtVsEta_barrel
TH1F * m_clusterEtVsEta_barrel
Definition: CaloClusterVecMon.h:167
python.TrigEgammaMonitorHelper.TH1F
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:24
python.changerun.o1
o1
Definition: changerun.py:44
CaloClusterVecMon::m_caloCellHelper
const CaloCell_ID * m_caloCellHelper
Definition: CaloClusterVecMon.h:113
DQBadLBFilterTool.h
CaloClusterVecMon::REGION1
@ REGION1
Definition: CaloClusterVecMon.h:86
CaloClusterVecMon::m_averageEnergy_eta
TProfile * m_averageEnergy_eta
Definition: CaloClusterVecMon.h:162
CaloClusterVecMon::m_timeGran
std::string m_timeGran
Definition: CaloClusterVecMon.h:96
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
CaloMonToolBase::bookBaseHists
virtual StatusCode bookBaseHists(MonGroup *group)
Definition: CaloMonToolBase.cxx:66
CaloClusterVecMon::MED_E
@ MED_E
Definition: CaloClusterVecMon.h:79
CaloClusterVecMon.h
CaloClusterVecMon::m_dominantCellAverageEnergy_etaphi
TProfile2D * m_dominantCellAverageEnergy_etaphi
Definition: CaloClusterVecMon.h:136
CaloClusterVecMon::m_averageNegativeEnergy_etaphi
TProfile2D * m_averageNegativeEnergy_etaphi
Definition: CaloClusterVecMon.h:158
CaloClusterVecMon::fillCellHist
void fillCellHist(const xAOD::CaloCluster *clus)
Definition: CaloClusterVecMon.cxx:752
CaloClusterVecMon::bookHistogramsRecurrent
virtual StatusCode bookHistogramsRecurrent()
An inheriting class should either override this function, bookHists() or bookHistograms().
Definition: CaloClusterVecMon.cxx:207
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
CaloClusterVecMon::m_Threshold
float m_Threshold
Definition: CaloClusterVecMon.h:104
CaloClusterVecMon::m_clus_eta
TH1F * m_clus_eta[MAX_E]
Definition: CaloClusterVecMon.h:148
CaloClusterVecMon::m_clusterEnergyVsEta_barrel
TH1F * m_clusterEnergyVsEta_barrel
Definition: CaloClusterVecMon.h:164
ManagedMonitorToolBase::newMedStatIntervalFlag
bool newMedStatIntervalFlag() const
Definition: ManagedMonitorToolBase.h:850
CaloCluster::phi
virtual double phi() const
Retrieve phi independent of signal state.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:759
CaloClusterVecMon::m_clusterEtVsEta_endcap
TH1F * m_clusterEtVsEta_endcap
Definition: CaloClusterVecMon.h:168