ATLAS Offline Software
CaloClusterVecMon.h
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.h
7 //
8 // AUTHORS: R. Kehoe 06/15/2006
9 // S.Chekanov (TileCal), 08/04/2008
10 // MANAGER: H. Hadavand
11 // R. Dhullipudi (01/07/2008)
12 // D. Hu (Jun 2011 - May 2012)
13 // Jun Guo, L. Sawyer (2013 - )
14 // ********************************************************************
15 
16 #ifndef CALOClusterVecMon_H
17 #define CALOClusterVecMon_H
18 
19 #include "CaloMonToolBase.h"
20 
21 #include "GaudiKernel/ToolHandle.h"
22 
23 #include "Identifier/Identifier.h"
24 
27 #include "CaloIdentifier/TileID.h"
28 
29 #include "TH1D.h"
30 #include "TH2F.h"
31 #include "TProfile.h"
32 #include "TProfile2D.h"
33 #include "TCanvas.h"
34 #include <stdint.h>
35 #include <string>
36 #include <vector>
37 #include <algorithm>
38 #include <cmath>
39 #include <math.h>
40 #include <functional>
41 #include <set>
42 
44  public:
45 
46  CaloClusterVecMon(const std::string & type, const std::string& name, const IInterface* parent);
47  virtual ~CaloClusterVecMon();
48 
49  virtual StatusCode initialize();
51  virtual StatusCode bookHistograms();
52  virtual StatusCode fillHistograms();
53  virtual StatusCode procHistograms();
54 
55  private:
56 
57  void initHists();
58 
60 
61  bool checkTimeGran(bool isNewEventsBlock, bool isNewLumiBlock, bool isNewRun, Interval_t& theinterval);
62  void bookCellHists(const Interval_t theinterval);
63  void bookClusterHists(const Interval_t theinterval);
64  void bookClusterStatHists(const Interval_t theinterval);
65  void fillTileHistRange();
66  void bookTileHists(const Interval_t theinterval);
67 
68  void initCounter();
69  void fillCellHist(const xAOD::CaloCluster* clus);
71  void fillClusterStat(const xAOD::CaloCluster* clus);
72  void fillClusterHist(const xAOD::CaloCluster* clus);
73  void fillClusterStatHist(const xAOD::CaloClusterContainer* clusterCont);
74  void fillTileHist(const xAOD::CaloClusterContainer* clusterCont);
75 
76  enum EthreshLvl { // energy threshold levels for histos
77  LOW_E = 0,
78  LOWMED_E = 1,
79  MED_E = 2,
80  MEDHIGH_E = 3,
81  HIGH_E = 4,
82  MAX_E = 5
83  };
84 
85  enum DetRegion {
86  REGION1 = 0, // LAr or Tile
87  REGION2 = 1,
88  REGION3 = 2,
89  MAX_REGION = 3
90  };
91 
92  // CaloClusterContainer name
93  SG::ReadHandleKey<xAOD::CaloClusterContainer> m_clusterContainerName{ this, "CaloClusterContainer", "CaloCalTopoClusters" };
94 
95  // Time granularity
96  std::string m_timeGran;
97 
98  //energy threshold, eta min and time width for plots
99  float m_Ethresh[MAX_E];
101  float m_tWidth;
102 
103  // energy threshold for tile plots
104  float m_Threshold;
105 
106  std::vector<float> m_binRangeE;
107  std::vector<float> m_binRangeEta;
108  std::vector<float> m_binRangePhi;
109  std::vector<float> m_binRangeEtaPhi;
110 
111  // Services
114 
115  // cluster stat variables
116  int m_eventsCounter = 0; // add
124 
125  // cluster EM variables
126  double m_EMenergy;
128  double m_EMet;
129  double m_EMeta;
130  double m_EMphi;
131 
132  // cell hists
133  TH1I* m_nCells = nullptr;
139  TH1F* m_clusterTime = nullptr;
140  TH1F* m_cellTime = nullptr;
142 
143  // mult-threshold cluster hists
146 // TH2F* m_EMclus_etaphi_Et_thresh[MAX_E];
147 // TH2F* m_EMclus_etaVsPhi[MAX_E];
150  TH1F* m_clus_eta_Et[MAX_E]; // km add
151  TH1F* m_clus_phi_Et[MAX_E][3]; // km add
155 
156  // negative energy cluster hists
157  TH2F* m_etaVsPhiNegEn = nullptr;
159 
160  // no threshold cluster hists
163 
167  TH1F* m_clusterEtVsEta_barrel = nullptr; // only for non-cosmics
168  TH1F* m_clusterEtVsEta_endcap = nullptr; // only for non-cosmics
169  TH1F* m_clusterEtVsEta_hecfcal = nullptr; // only for non-cosmics
170 
171  // energy > 500GeV cluster hists
172  TProfile2D* m_averageEtOver500_etaphi = nullptr; // only for non-cosmics
173 
174  // cluster stat hists
175 
176  TH1I* m_nClusters = nullptr;
179  TH2F* m_dEtaVsdPhi_maxEclustersTopVsBottom = nullptr; // only for cosmics
180 
181  // tile hists
185 
186  TH1F* m_clustersE = nullptr;
189  TH2F* m_clustersEtaPhi = nullptr;
190 
194 
195 };
196 
197 #endif // CaloClusterVecMon_H
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
CaloClusterVecMon::m_maxclusindex_top
int m_maxclusindex_top
Definition: CaloClusterVecMon.h:120
CaloClusterVecMon::m_etaVsPhiNegEn
TH2F * m_etaVsPhiNegEn
Definition: CaloClusterVecMon.h:157
CaloClusterVecMon::~CaloClusterVecMon
virtual ~CaloClusterVecMon()
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
CaloClusterVecMon::m_maxclusindex_bot
int m_maxclusindex_bot
Definition: CaloClusterVecMon.h:121
CaloClusterVecMon::REGION3
@ REGION3
Definition: CaloClusterVecMon.h:88
CaloClusterVecMon::m_etaphi_thresh_avgenergy
TProfile2D * m_etaphi_thresh_avgenergy[MAX_E]
Definition: CaloClusterVecMon.h:153
TH1I
Definition: rootspy.cxx:332
TH2F
Definition: rootspy.cxx:420
CaloClusterVecMon::LOW_E
@ LOW_E
Definition: CaloClusterVecMon.h:77
CaloClusterVecMon::m_tWidth
float m_tWidth
Definition: CaloClusterVecMon.h:101
CaloClusterVecMon::m_averageEnergy_etaphi_maxEclusters
TProfile2D * m_averageEnergy_etaphi_maxEclusters
Definition: CaloClusterVecMon.h:178
CaloClusterVecMon::m_clustersCellsE
TProfile * m_clustersCellsE
Definition: CaloClusterVecMon.h:191
CaloClusterVecMon::m_maxEcellToEclusterRatio
TH1F * m_maxEcellToEclusterRatio
Definition: CaloClusterVecMon.h:134
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
CaloClusterVecMon::initialize
virtual StatusCode initialize()
Definition: CaloClusterVecMon.cxx:164
CaloClusterVecMon::fillClusterStatHist
void fillClusterStatHist(const xAOD::CaloClusterContainer *clusterCont)
Definition: CaloClusterVecMon.cxx:972
CaloClusterVecMon::m_dominantCellOccupancy_etaphi
TH2F * m_dominantCellOccupancy_etaphi
Definition: CaloClusterVecMon.h:135
CaloClusterVecMon::m_etaphi_thresh_Totalenergy
TH2F * m_etaphi_thresh_Totalenergy[MAX_E]
Definition: CaloClusterVecMon.h:154
SG::ReadHandleKey< xAOD::CaloClusterContainer >
CaloClusterVecMon::m_maxclusene_top
float m_maxclusene_top
Definition: CaloClusterVecMon.h:122
CaloClusterVecMon::HIGH_E
@ HIGH_E
Definition: CaloClusterVecMon.h:81
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
CaloClusterVecMon::m_EMenergy
double m_EMenergy
Definition: CaloClusterVecMon.h:126
CaloClusterVecMon
Definition: CaloClusterVecMon.h:43
CaloMonToolBase.h
TileID.h
CaloClusterVecMon::REGION2
@ REGION2
Definition: CaloClusterVecMon.h:87
CaloClusterVecMon::m_clustersCellsEta
TProfile * m_clustersCellsEta
Definition: CaloClusterVecMon.h:192
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
CaloClusterVecMon::m_binRangePhi
std::vector< float > m_binRangePhi
Definition: CaloClusterVecMon.h:108
CaloClusterVecMon::m_cluscount_bot
int m_cluscount_bot
Definition: CaloClusterVecMon.h:119
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
CaloClusterVecMon::fillTileHistRange
void fillTileHistRange()
Definition: CaloClusterVecMon.cxx:615
CaloClusterVecMon::retrieveTools
StatusCode retrieveTools()
Definition: CaloClusterVecMon.cxx:185
CaloIdManager
This class initializes the Calo (LAr and Tile) offline identifiers.
Definition: CaloIdManager.h:45
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
CaloClusterVecMon::m_clusterEtVsEta_hecfcal
TH1F * m_clusterEtVsEta_hecfcal
Definition: CaloClusterVecMon.h:169
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
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
CaloClusterVecMon::fillTileHist
void fillTileHist(const xAOD::CaloClusterContainer *clusterCont)
Definition: CaloClusterVecMon.cxx:1016
CaloClusterVecMon::m_EMeta
double m_EMeta
Definition: CaloClusterVecMon.h:129
CaloClusterVecMon::initCounter
void initCounter()
Definition: CaloClusterVecMon.cxx:740
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
CaloClusterVecMon::DetRegion
DetRegion
Definition: CaloClusterVecMon.h:85
CaloClusterVecMon::m_binRangeE
std::vector< float > m_binRangeE
Definition: CaloClusterVecMon.h:106
CaloCell_ID
Helper class for offline cell identifiers.
Definition: CaloCell_ID.h:34
CaloClusterVecMon::m_nCellInCluster_etaphi
TProfile2D * m_nCellInCluster_etaphi
Definition: CaloClusterVecMon.h:137
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
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::MAX_REGION
@ MAX_REGION
Definition: CaloClusterVecMon.h:89
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
CaloClusterVecMon::m_clustersE
TH1F * m_clustersE
Definition: CaloClusterVecMon.h:186
CaloClusterVecMon::m_averageEtOver500_etaphi
TProfile2D * m_averageEtOver500_etaphi
Definition: CaloClusterVecMon.h:172
CaloClusterVecMon::LOWMED_E
@ LOWMED_E
Definition: CaloClusterVecMon.h:78
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
TProfile
Definition: rootspy.cxx:515
CaloClusterVecMon::m_clustersCellsRatioEta
TProfile * m_clustersCellsRatioEta
Definition: CaloClusterVecMon.h:182
CaloClusterVecMon::initHists
void initHists()
Definition: CaloClusterVecMon.cxx:95
CaloClusterVecMon::m_binRangeEtaPhi
std::vector< float > m_binRangeEtaPhi
Definition: CaloClusterVecMon.h:109
CaloClusterVecMon::bookTileHists
void bookTileHists(const Interval_t theinterval)
Definition: CaloClusterVecMon.cxx:641
CaloClusterVecMon::m_eventsCounter
int m_eventsCounter
Definition: CaloClusterVecMon.h:116
CaloClusterVecMon::m_EMet
double m_EMet
Definition: CaloClusterVecMon.h:128
TH1F
Definition: rootspy.cxx:320
CaloClusterVecMon::m_dEtaVsdPhi_maxEclustersTopVsBottom
TH2F * m_dEtaVsdPhi_maxEclustersTopVsBottom
Definition: CaloClusterVecMon.h:179
CaloClusterVecMon::fillClusterEMvar
void fillClusterEMvar(const xAOD::CaloCluster *clus)
CaloClusterVecMon::MAX_E
@ MAX_E
Definition: CaloClusterVecMon.h:82
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
CaloClusterVecMon::m_clustersEta
TProfile * m_clustersEta
Definition: CaloClusterVecMon.h:187
CaloClusterVecMon::m_caloMgr
const CaloIdManager * m_caloMgr
Definition: CaloClusterVecMon.h:112
CaloClusterContainer.h
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
CaloIdManager.h
CaloClusterVecMon::m_clusterEtVsEta_barrel
TH1F * m_clusterEtVsEta_barrel
Definition: CaloClusterVecMon.h:167
CaloClusterVecMon::EthreshLvl
EthreshLvl
Definition: CaloClusterVecMon.h:76
CaloClusterVecMon::m_caloCellHelper
const CaloCell_ID * m_caloCellHelper
Definition: CaloClusterVecMon.h:113
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
CaloClusterVecMon::MED_E
@ MED_E
Definition: CaloClusterVecMon.h:79
CaloClusterVecMon::m_EMenergy_abs
double m_EMenergy_abs
Definition: CaloClusterVecMon.h:127
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
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
CaloClusterVecMon::m_EMphi
double m_EMphi
Definition: CaloClusterVecMon.h:130
CaloClusterVecMon::m_clusterEtVsEta_endcap
TH1F * m_clusterEtVsEta_endcap
Definition: CaloClusterVecMon.h:168