ATLAS Offline Software
ClusterMomentPlots.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 namespace PFO {
8 
9  ClusterMomentPlots::ClusterMomentPlots(PlotBase* pParent, std::string sDir, SG::ReadHandleKey<xAOD::CaloClusterContainer>& sClusterContainerName) : PlotBase(pParent, sDir), m_sClusterContainerName(sClusterContainerName){
10  m_LATERAL = nullptr;
11  m_LONGITUDINAL = nullptr;
12  m_SECOND_R = nullptr;
13  m_CENTER_LAMBDA = nullptr;
14  m_FIRST_ENG_DENS = nullptr;
15  m_ENG_FRAC_MAX = nullptr;
16  m_ISOLATION = nullptr;
17  m_ENG_BAD_CELLS = nullptr;
18  m_N_BAD_CELLS = nullptr;
19  m_BADLARQ_FRAC = nullptr;
20  m_ENG_POS = nullptr;
21  m_SIGNIFICANCE = nullptr;
22  m_AVG_LAR_Q = nullptr;
23  m_AVG_TILE_Q = nullptr;
24  m_CELL_SIG_SAMPLING = nullptr;
25  m_ENG_BAD_HV_CELLS = nullptr;
26  m_N_BAD_HV_CELLS = nullptr;
27  m_EM_PROBABILITY = nullptr;
28 
29 }
30 
32 
33  m_LATERAL = Book1D("PFO_LATERAL",m_sClusterContainerName.key() + "_LATERAL",60,-1.0,2.0);
34  m_LONGITUDINAL = Book1D("PFO_LONGITUDINAL",m_sClusterContainerName.key() + "_LONGITUDINAL",60,-1.0,2.0);
35  m_SECOND_R = Book1D("PFO_SECOND_R",m_sClusterContainerName.key() + "_SECOND_R",60,-1.0,50.0);
36  m_CENTER_LAMBDA = Book1D("PFO_CENTER_LAMBDA",m_sClusterContainerName.key() + "_CENTER_LAMBDA",60,-1.0,3000.0);
37  m_FIRST_ENG_DENS = Book1D("PFO_FIRST_ENG_DENS",m_sClusterContainerName.key() + "_FIRST_ENG_DENS",60,-1.0,2.0);
38  m_ENG_FRAC_MAX = Book1D("PFO_ENG_FRAC_MAX",m_sClusterContainerName.key() + "_ENG_FRAC_MAX",60,-1.0,2.0);
39  m_ISOLATION = Book1D("PFO_ISOLATION",m_sClusterContainerName.key() + "_ISOLATION",60,-1.0,2.0);
40  m_ENG_BAD_CELLS = Book1D("PFO_ENG_BAD_CELLS",m_sClusterContainerName.key() + "_ENG_BAD_CELLS",120,-1.0,100.0);
41  m_N_BAD_CELLS = Book1D("PFO_N_BAD_CELLS",m_sClusterContainerName.key() + "_N_BAD_CELLS",120,-1.0,20.0);
42  m_BADLARQ_FRAC = Book1D("PFO_BADLARQ_FRAC",m_sClusterContainerName.key() + "_BADLARQ_FRAC",140,-3.0,5.0);
43  m_ENG_POS = Book1D("PFO_ENG_POS",m_sClusterContainerName.key() + "_ENG_POS",60,-100.0,10000.0);
44  m_SIGNIFICANCE = Book1D("PFO_SIGNIFICANCE",m_sClusterContainerName.key() + "_SIGNIFICANCE",300,-20.0,20.0);
45  m_AVG_LAR_Q = Book1D("PFO_AVG_LAR_Q",m_sClusterContainerName.key() + "_AVG_LAR_Q",240,-1.0,200.0);
46  m_AVG_TILE_Q = Book1D("PFO_AVG_TILE_Q",m_sClusterContainerName.key() + "_AVG_TILE_Q",240,-1.0,200.0);
47  m_CELL_SIG_SAMPLING = Book1D("PFO_CELL_SIG_SAMPLING",m_sClusterContainerName.key() + "_CELL_SIG_SAMPLING",31,-1.0,30);
48  m_ENG_BAD_HV_CELLS = Book1D("PFO_ENG_BAD_HV_CELLS",m_sClusterContainerName.key() + "_ENG_BAD_HV_CELLS",500,-5000.0,20000.0);
49  m_N_BAD_HV_CELLS = Book1D("PFO_N_BAD_HV_CELLS",m_sClusterContainerName.key() + "_N_BAD_HV_CELLS",50,-1.0,100.0);
50  m_EM_PROBABILITY = Book1D("PFO_EM_PROBABILITY",m_sClusterContainerName.key() + "_EM_PROBABILITY",50,-0.05,1.05);
51 
52  }
53 
54  void ClusterMomentPlots::fill(const xAOD::CaloCluster& cluster, const xAOD::EventInfo& eventInfo){
55 
56  double moment_LATERAL = 0.0;
57  bool gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::LATERAL,moment_LATERAL);
58  if (true == gotMoment) m_LATERAL->Fill(moment_LATERAL,eventInfo.beamSpotWeight());
59  else m_LATERAL->Fill(-1.0,eventInfo.beamSpotWeight());
60 
61  double moment_LONGITUDINAL = 0.0;
62  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::LONGITUDINAL,moment_LONGITUDINAL);
63  if (true == gotMoment) m_LONGITUDINAL->Fill(moment_LONGITUDINAL,eventInfo.beamSpotWeight());
64  else m_LONGITUDINAL->Fill(-1.0,eventInfo.beamSpotWeight());
65 
66  double moment_SECOND_R = 0.0;
67  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::SECOND_R,moment_SECOND_R);
68  if (true == gotMoment) m_SECOND_R->Fill(moment_SECOND_R,eventInfo.beamSpotWeight());
69  else m_SECOND_R->Fill(-1.0,eventInfo.beamSpotWeight());
70 
71  double moment_CENTER_LAMBDA = 0.0;
72  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::CENTER_LAMBDA,moment_CENTER_LAMBDA);
73  if (true == gotMoment) m_CENTER_LAMBDA->Fill(moment_CENTER_LAMBDA,eventInfo.beamSpotWeight());
74  else m_CENTER_LAMBDA->Fill(-1.0,eventInfo.beamSpotWeight());
75 
76  double moment_FIRST_ENG_DENS = 0.0;
77  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::FIRST_ENG_DENS,moment_FIRST_ENG_DENS);
78  if (true == gotMoment) m_FIRST_ENG_DENS->Fill(moment_FIRST_ENG_DENS,eventInfo.beamSpotWeight());
79  else m_FIRST_ENG_DENS->Fill(-1.0,eventInfo.beamSpotWeight());
80 
81  double moment_ENG_FRAC_MAX = 0.0;
82  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::ENG_FRAC_MAX,moment_ENG_FRAC_MAX);
83  if (true == gotMoment) m_ENG_FRAC_MAX->Fill(moment_ENG_FRAC_MAX,eventInfo.beamSpotWeight());
84  else m_ENG_FRAC_MAX->Fill(-1.0,eventInfo.beamSpotWeight());
85 
86  double moment_ISOLATION = 0.0;
87  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::ISOLATION,moment_ISOLATION);
88  if (true == gotMoment) m_ISOLATION->Fill(moment_ISOLATION,eventInfo.beamSpotWeight());
89  else m_ISOLATION->Fill(-1.0,eventInfo.beamSpotWeight());
90 
91  double moment_ENG_BAD_CELLS = 0.0;
92  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::ENG_BAD_CELLS,moment_ENG_BAD_CELLS);
93  if (true == gotMoment) m_ENG_BAD_CELLS->Fill(moment_ENG_BAD_CELLS,eventInfo.beamSpotWeight());
94  else m_ENG_BAD_CELLS->Fill(-1.0,eventInfo.beamSpotWeight());
95 
96  double moment_N_BAD_CELLS = 0.0;
97  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::N_BAD_CELLS,moment_N_BAD_CELLS);
98  if (true == gotMoment) m_N_BAD_CELLS->Fill(moment_N_BAD_CELLS,eventInfo.beamSpotWeight());
99  else m_N_BAD_CELLS->Fill(-1.0,eventInfo.beamSpotWeight());
100 
101  double moment_BADLARQ_FRAC = 0.0;
102  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::BADLARQ_FRAC,moment_BADLARQ_FRAC);
103  if (true == gotMoment) m_BADLARQ_FRAC->Fill(moment_BADLARQ_FRAC,eventInfo.beamSpotWeight());
104  else m_BADLARQ_FRAC->Fill(-1.0,eventInfo.beamSpotWeight());
105 
106  double moment_ENG_POS = 0.0;
107  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::ENG_POS,moment_ENG_POS);
108  if (true == gotMoment) m_ENG_POS->Fill(moment_ENG_POS,eventInfo.beamSpotWeight());
109  else m_ENG_POS->Fill(-1.0,eventInfo.beamSpotWeight());
110 
111  double moment_SIGNIFICANCE = 0.0;
112  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::SIGNIFICANCE,moment_SIGNIFICANCE);
113  if (true == gotMoment) m_SIGNIFICANCE->Fill(moment_SIGNIFICANCE,eventInfo.beamSpotWeight());
114  else m_SIGNIFICANCE->Fill(-1.0,eventInfo.beamSpotWeight());
115 
116  double moment_AVG_LAR_Q = 0.0;
117  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::AVG_LAR_Q,moment_AVG_LAR_Q);
118  if (true == gotMoment) m_AVG_LAR_Q->Fill(moment_AVG_LAR_Q,eventInfo.beamSpotWeight());
119  else m_AVG_LAR_Q->Fill(-1.0,eventInfo.beamSpotWeight());
120 
121  double moment_AVG_TILE_Q = 0.0;
122  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::AVG_TILE_Q,moment_AVG_TILE_Q);
123  if (true == gotMoment) m_AVG_TILE_Q->Fill(moment_AVG_TILE_Q,eventInfo.beamSpotWeight());
124  else m_AVG_TILE_Q->Fill(-1.0,eventInfo.beamSpotWeight());
125 
126  double moment_CELL_SIG_SAMPLING = 0;
127  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::CELL_SIG_SAMPLING,moment_CELL_SIG_SAMPLING);
128  if (true == gotMoment) m_CELL_SIG_SAMPLING->Fill(moment_CELL_SIG_SAMPLING,eventInfo.beamSpotWeight());
129  else m_CELL_SIG_SAMPLING->Fill(-1.0,eventInfo.beamSpotWeight());
130 
131  double moment_ENG_BAD_HV_CELLS = 0.0;
132  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::ENG_BAD_HV_CELLS,moment_ENG_BAD_HV_CELLS);
133  if (true == gotMoment) m_ENG_BAD_HV_CELLS->Fill(moment_ENG_BAD_HV_CELLS,eventInfo.beamSpotWeight());
134  else m_ENG_BAD_HV_CELLS->Fill(-1.0,eventInfo.beamSpotWeight());
135 
136  double moment_N_BAD_HV_CELLS = 0.0;
137  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::N_BAD_HV_CELLS,moment_N_BAD_HV_CELLS);
138  if (true == gotMoment) m_N_BAD_HV_CELLS->Fill(moment_N_BAD_HV_CELLS,eventInfo.beamSpotWeight());
139  else m_N_BAD_HV_CELLS->Fill(-1.0,eventInfo.beamSpotWeight());
140 
141  double moment_EM_PROBABILITY = 0.0;
142  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::EM_PROBABILITY,moment_EM_PROBABILITY);
143  if (true == gotMoment) m_EM_PROBABILITY->Fill(moment_EM_PROBABILITY,eventInfo.beamSpotWeight());
144  else m_EM_PROBABILITY->Fill(-1.0,eventInfo.beamSpotWeight());
145 
146  }
147 
148 }
xAOD::CaloCluster_v1::SECOND_R
@ SECOND_R
Second Moment in .
Definition: CaloCluster_v1.h:123
ClusterMomentPlots.h
PFO::ClusterMomentPlots::ClusterMomentPlots
ClusterMomentPlots(PlotBase *pParent, std::string sDir, SG::ReadHandleKey< xAOD::CaloClusterContainer > &sClusterContainerName)
Definition: ClusterMomentPlots.cxx:9
PlotBase
Definition: PlotBase.h:34
xAOD::CaloCluster_v1::EM_PROBABILITY
@ EM_PROBABILITY
Classification probability to be em-like.
Definition: CaloCluster_v1.h:173
PFO::ClusterMomentPlots::m_LATERAL
TH1 * m_LATERAL
Definition: ClusterMomentPlots.h:25
PFO::ClusterMomentPlots::m_N_BAD_CELLS
TH1 * m_N_BAD_CELLS
Definition: ClusterMomentPlots.h:33
xAOD::CaloCluster_v1::ENG_BAD_HV_CELLS
@ ENG_BAD_HV_CELLS
Total em-scale energy of cells with bad HV in this cluster.
Definition: CaloCluster_v1.h:167
python.copyTCTOutput.sDir
sDir
Definition: copyTCTOutput.py:60
xAOD::CaloCluster_v1::AVG_LAR_Q
@ AVG_LAR_Q
Sum(E_cell_LAr^2 Q_cell_LAr)/Sum(E_cell_LAr^2)
Definition: CaloCluster_v1.h:163
PFO::ClusterMomentPlots::m_CENTER_LAMBDA
TH1 * m_CENTER_LAMBDA
Definition: ClusterMomentPlots.h:28
PFO::ClusterMomentPlots::m_CELL_SIG_SAMPLING
TH1 * m_CELL_SIG_SAMPLING
Definition: ClusterMomentPlots.h:39
xAOD::CaloCluster_v1::CENTER_LAMBDA
@ CENTER_LAMBDA
Shower depth at Cluster Centroid.
Definition: CaloCluster_v1.h:136
PFO::ClusterMomentPlots::m_ENG_POS
TH1 * m_ENG_POS
Definition: ClusterMomentPlots.h:35
PFO::ClusterMomentPlots::m_BADLARQ_FRAC
TH1 * m_BADLARQ_FRAC
Definition: ClusterMomentPlots.h:34
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
SG::ReadHandleKey< xAOD::CaloClusterContainer >
xAOD::CaloCluster_v1::ENG_FRAC_MAX
@ ENG_FRAC_MAX
Energy fraction of hottest cell.
Definition: CaloCluster_v1.h:140
PFO::ClusterMomentPlots::fill
void fill(const xAOD::CaloCluster &cluster, const xAOD::EventInfo &eventInfo)
Definition: ClusterMomentPlots.cxx:54
PFO::ClusterMomentPlots::m_ENG_FRAC_MAX
TH1 * m_ENG_FRAC_MAX
Definition: ClusterMomentPlots.h:30
PFO::ClusterMomentPlots::m_AVG_TILE_Q
TH1 * m_AVG_TILE_Q
Definition: ClusterMomentPlots.h:38
PlotBase::Book1D
TH1D * Book1D(const std::string &name, const std::string &labels, int nBins, float start, float end, bool prependDir=true)
Book a TH1D histogram.
Definition: PlotBase.cxx:94
PFO::ClusterMomentPlots::m_SECOND_R
TH1 * m_SECOND_R
Definition: ClusterMomentPlots.h:27
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
PFO::ClusterMomentPlots::m_EM_PROBABILITY
TH1 * m_EM_PROBABILITY
Definition: ClusterMomentPlots.h:42
PFO::ClusterMomentPlots::initializePlots
void initializePlots()
Definition: ClusterMomentPlots.cxx:31
PFO::ClusterMomentPlots::m_ENG_BAD_HV_CELLS
TH1 * m_ENG_BAD_HV_CELLS
Definition: ClusterMomentPlots.h:40
PFO::ClusterMomentPlots::m_LONGITUDINAL
TH1 * m_LONGITUDINAL
Definition: ClusterMomentPlots.h:26
xAOD::CaloCluster_v1::CELL_SIG_SAMPLING
@ CELL_SIG_SAMPLING
CaloSample of the cell with the largest |E|/sig.
Definition: CaloCluster_v1.h:161
PFO::ClusterMomentPlots::m_ENG_BAD_CELLS
TH1 * m_ENG_BAD_CELLS
Definition: ClusterMomentPlots.h:32
xAOD::CaloCluster_v1::ISOLATION
@ ISOLATION
Energy weighted fraction of non-clustered perimeter cells.
Definition: CaloCluster_v1.h:146
xAOD::CaloCluster_v1::retrieveMoment
bool retrieveMoment(MomentType type, double &value) const
Retrieve individual moment.
Definition: CaloCluster_v1.cxx:738
PFO::ClusterMomentPlots::m_AVG_LAR_Q
TH1 * m_AVG_LAR_Q
Definition: ClusterMomentPlots.h:37
PFO::ClusterMomentPlots::m_N_BAD_HV_CELLS
TH1 * m_N_BAD_HV_CELLS
Definition: ClusterMomentPlots.h:41
xAOD::CaloCluster_v1::FIRST_ENG_DENS
@ FIRST_ENG_DENS
First Moment in E/V.
Definition: CaloCluster_v1.h:143
xAOD::CaloCluster_v1::ENG_BAD_CELLS
@ ENG_BAD_CELLS
Total em-scale energy of bad cells in this cluster.
Definition: CaloCluster_v1.h:148
PFO
Definition: ClusterMomentPlots.h:13
xAOD::CaloCluster_v1::AVG_TILE_Q
@ AVG_TILE_Q
Sum(E_cell_Tile^2 Q_cell_Tile)/Sum(E_cell_Tile^2)
Definition: CaloCluster_v1.h:165
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
xAOD::CaloCluster_v1::SIGNIFICANCE
@ SIGNIFICANCE
Cluster significance.
Definition: CaloCluster_v1.h:157
xAOD::CaloCluster_v1::N_BAD_HV_CELLS
@ N_BAD_HV_CELLS
number of cells with bad HV
Definition: CaloCluster_v1.h:168
PFO::ClusterMomentPlots::m_SIGNIFICANCE
TH1 * m_SIGNIFICANCE
Definition: ClusterMomentPlots.h:36
PFO::ClusterMomentPlots::m_ISOLATION
TH1 * m_ISOLATION
Definition: ClusterMomentPlots.h:31
PFO::ClusterMomentPlots::m_FIRST_ENG_DENS
TH1 * m_FIRST_ENG_DENS
Definition: ClusterMomentPlots.h:29
xAOD::CaloCluster_v1::LATERAL
@ LATERAL
Normalized lateral moment.
Definition: CaloCluster_v1.h:137
xAOD::CaloCluster_v1::LONGITUDINAL
@ LONGITUDINAL
Normalized longitudinal moment.
Definition: CaloCluster_v1.h:138
xAOD::CaloCluster_v1::N_BAD_CELLS
@ N_BAD_CELLS
number of bad cells
Definition: CaloCluster_v1.h:149
xAOD::EventInfo_v1::beamSpotWeight
float beamSpotWeight() const
Weight for beam spot size reweighting.
Definition: EventInfo_v1.cxx:970
xAOD::CaloCluster_v1::ENG_POS
@ ENG_POS
Total positive Energy of this cluster.
Definition: CaloCluster_v1.h:156
PFO::ClusterMomentPlots::m_sClusterContainerName
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_sClusterContainerName
Definition: ClusterMomentPlots.h:45
xAOD::CaloCluster_v1::BADLARQ_FRAC
@ BADLARQ_FRAC
Energy fraction of LAr cells with quality larger than a given cut.
Definition: CaloCluster_v1.h:155