ATLAS Offline Software
ClusterMomentPlots.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 namespace PFO {
8 
9  ClusterMomentPlots::ClusterMomentPlots(PlotBase* pParent, const std::string & sDir, SG::ReadHandleKey<xAOD::CaloClusterContainer>& sClusterContainerName) : PlotBase(pParent, sDir), m_sClusterContainerName(sClusterContainerName){
10 
11 
12 }
13 
15 
16  m_LATERAL = Book1D("PFO_LATERAL",m_sClusterContainerName.key() + "_LATERAL",60,-1.0,2.0);
17  m_LONGITUDINAL = Book1D("PFO_LONGITUDINAL",m_sClusterContainerName.key() + "_LONGITUDINAL",60,-1.0,2.0);
18  m_SECOND_R = Book1D("PFO_SECOND_R",m_sClusterContainerName.key() + "_SECOND_R",60,-1.0,50.0);
19  m_CENTER_LAMBDA = Book1D("PFO_CENTER_LAMBDA",m_sClusterContainerName.key() + "_CENTER_LAMBDA",60,-1.0,3000.0);
20  m_FIRST_ENG_DENS = Book1D("PFO_FIRST_ENG_DENS",m_sClusterContainerName.key() + "_FIRST_ENG_DENS",60,-1.0,2.0);
21  m_ENG_FRAC_MAX = Book1D("PFO_ENG_FRAC_MAX",m_sClusterContainerName.key() + "_ENG_FRAC_MAX",60,-1.0,2.0);
22  m_ISOLATION = Book1D("PFO_ISOLATION",m_sClusterContainerName.key() + "_ISOLATION",60,-1.0,2.0);
23  m_ENG_BAD_CELLS = Book1D("PFO_ENG_BAD_CELLS",m_sClusterContainerName.key() + "_ENG_BAD_CELLS",120,-1.0,100.0);
24  m_N_BAD_CELLS = Book1D("PFO_N_BAD_CELLS",m_sClusterContainerName.key() + "_N_BAD_CELLS",120,-1.0,20.0);
25  m_BADLARQ_FRAC = Book1D("PFO_BADLARQ_FRAC",m_sClusterContainerName.key() + "_BADLARQ_FRAC",140,-3.0,5.0);
26  m_ENG_POS = Book1D("PFO_ENG_POS",m_sClusterContainerName.key() + "_ENG_POS",60,-100.0,10000.0);
27  m_SIGNIFICANCE = Book1D("PFO_SIGNIFICANCE",m_sClusterContainerName.key() + "_SIGNIFICANCE",300,-20.0,20.0);
28  m_AVG_LAR_Q = Book1D("PFO_AVG_LAR_Q",m_sClusterContainerName.key() + "_AVG_LAR_Q",240,-1.0,200.0);
29  m_AVG_TILE_Q = Book1D("PFO_AVG_TILE_Q",m_sClusterContainerName.key() + "_AVG_TILE_Q",240,-1.0,200.0);
30  m_CELL_SIG_SAMPLING = Book1D("PFO_CELL_SIG_SAMPLING",m_sClusterContainerName.key() + "_CELL_SIG_SAMPLING",31,-1.0,30);
31  m_ENG_BAD_HV_CELLS = Book1D("PFO_ENG_BAD_HV_CELLS",m_sClusterContainerName.key() + "_ENG_BAD_HV_CELLS",500,-5000.0,20000.0);
32  m_N_BAD_HV_CELLS = Book1D("PFO_N_BAD_HV_CELLS",m_sClusterContainerName.key() + "_N_BAD_HV_CELLS",50,-1.0,100.0);
33  m_EM_PROBABILITY = Book1D("PFO_EM_PROBABILITY",m_sClusterContainerName.key() + "_EM_PROBABILITY",50,-0.05,1.05);
34 
35  }
36 
37  void ClusterMomentPlots::fill(const xAOD::CaloCluster& cluster, const xAOD::EventInfo& eventInfo){
38 
39  double moment_LATERAL = 0.0;
40  bool gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::LATERAL,moment_LATERAL);
41  if (true == gotMoment) m_LATERAL->Fill(moment_LATERAL,eventInfo.beamSpotWeight());
42  else m_LATERAL->Fill(-1.0,eventInfo.beamSpotWeight());
43 
44  double moment_LONGITUDINAL = 0.0;
45  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::LONGITUDINAL,moment_LONGITUDINAL);
46  if (true == gotMoment) m_LONGITUDINAL->Fill(moment_LONGITUDINAL,eventInfo.beamSpotWeight());
47  else m_LONGITUDINAL->Fill(-1.0,eventInfo.beamSpotWeight());
48 
49  double moment_SECOND_R = 0.0;
50  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::SECOND_R,moment_SECOND_R);
51  if (true == gotMoment) m_SECOND_R->Fill(moment_SECOND_R,eventInfo.beamSpotWeight());
52  else m_SECOND_R->Fill(-1.0,eventInfo.beamSpotWeight());
53 
54  double moment_CENTER_LAMBDA = 0.0;
55  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::CENTER_LAMBDA,moment_CENTER_LAMBDA);
56  if (true == gotMoment) m_CENTER_LAMBDA->Fill(moment_CENTER_LAMBDA,eventInfo.beamSpotWeight());
57  else m_CENTER_LAMBDA->Fill(-1.0,eventInfo.beamSpotWeight());
58 
59  double moment_FIRST_ENG_DENS = 0.0;
60  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::FIRST_ENG_DENS,moment_FIRST_ENG_DENS);
61  if (true == gotMoment) m_FIRST_ENG_DENS->Fill(moment_FIRST_ENG_DENS,eventInfo.beamSpotWeight());
62  else m_FIRST_ENG_DENS->Fill(-1.0,eventInfo.beamSpotWeight());
63 
64  double moment_ENG_FRAC_MAX = 0.0;
65  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::ENG_FRAC_MAX,moment_ENG_FRAC_MAX);
66  if (true == gotMoment) m_ENG_FRAC_MAX->Fill(moment_ENG_FRAC_MAX,eventInfo.beamSpotWeight());
67  else m_ENG_FRAC_MAX->Fill(-1.0,eventInfo.beamSpotWeight());
68 
69  double moment_ISOLATION = 0.0;
70  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::ISOLATION,moment_ISOLATION);
71  if (true == gotMoment) m_ISOLATION->Fill(moment_ISOLATION,eventInfo.beamSpotWeight());
72  else m_ISOLATION->Fill(-1.0,eventInfo.beamSpotWeight());
73 
74  double moment_ENG_BAD_CELLS = 0.0;
75  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::ENG_BAD_CELLS,moment_ENG_BAD_CELLS);
76  if (true == gotMoment) m_ENG_BAD_CELLS->Fill(moment_ENG_BAD_CELLS,eventInfo.beamSpotWeight());
77  else m_ENG_BAD_CELLS->Fill(-1.0,eventInfo.beamSpotWeight());
78 
79  double moment_N_BAD_CELLS = 0.0;
80  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::N_BAD_CELLS,moment_N_BAD_CELLS);
81  if (true == gotMoment) m_N_BAD_CELLS->Fill(moment_N_BAD_CELLS,eventInfo.beamSpotWeight());
82  else m_N_BAD_CELLS->Fill(-1.0,eventInfo.beamSpotWeight());
83 
84  double moment_BADLARQ_FRAC = 0.0;
85  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::BADLARQ_FRAC,moment_BADLARQ_FRAC);
86  if (true == gotMoment) m_BADLARQ_FRAC->Fill(moment_BADLARQ_FRAC,eventInfo.beamSpotWeight());
87  else m_BADLARQ_FRAC->Fill(-1.0,eventInfo.beamSpotWeight());
88 
89  double moment_ENG_POS = 0.0;
90  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::ENG_POS,moment_ENG_POS);
91  if (true == gotMoment) m_ENG_POS->Fill(moment_ENG_POS,eventInfo.beamSpotWeight());
92  else m_ENG_POS->Fill(-1.0,eventInfo.beamSpotWeight());
93 
94  double moment_SIGNIFICANCE = 0.0;
95  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::SIGNIFICANCE,moment_SIGNIFICANCE);
96  if (true == gotMoment) m_SIGNIFICANCE->Fill(moment_SIGNIFICANCE,eventInfo.beamSpotWeight());
97  else m_SIGNIFICANCE->Fill(-1.0,eventInfo.beamSpotWeight());
98 
99  double moment_AVG_LAR_Q = 0.0;
100  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::AVG_LAR_Q,moment_AVG_LAR_Q);
101  if (true == gotMoment) m_AVG_LAR_Q->Fill(moment_AVG_LAR_Q,eventInfo.beamSpotWeight());
102  else m_AVG_LAR_Q->Fill(-1.0,eventInfo.beamSpotWeight());
103 
104  double moment_AVG_TILE_Q = 0.0;
105  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::AVG_TILE_Q,moment_AVG_TILE_Q);
106  if (true == gotMoment) m_AVG_TILE_Q->Fill(moment_AVG_TILE_Q,eventInfo.beamSpotWeight());
107  else m_AVG_TILE_Q->Fill(-1.0,eventInfo.beamSpotWeight());
108 
109  double moment_CELL_SIG_SAMPLING = 0;
110  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::CELL_SIG_SAMPLING,moment_CELL_SIG_SAMPLING);
111  if (true == gotMoment) m_CELL_SIG_SAMPLING->Fill(moment_CELL_SIG_SAMPLING,eventInfo.beamSpotWeight());
112  else m_CELL_SIG_SAMPLING->Fill(-1.0,eventInfo.beamSpotWeight());
113 
114  double moment_ENG_BAD_HV_CELLS = 0.0;
115  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::ENG_BAD_HV_CELLS,moment_ENG_BAD_HV_CELLS);
116  if (true == gotMoment) m_ENG_BAD_HV_CELLS->Fill(moment_ENG_BAD_HV_CELLS,eventInfo.beamSpotWeight());
117  else m_ENG_BAD_HV_CELLS->Fill(-1.0,eventInfo.beamSpotWeight());
118 
119  double moment_N_BAD_HV_CELLS = 0.0;
120  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::N_BAD_HV_CELLS,moment_N_BAD_HV_CELLS);
121  if (true == gotMoment) m_N_BAD_HV_CELLS->Fill(moment_N_BAD_HV_CELLS,eventInfo.beamSpotWeight());
122  else m_N_BAD_HV_CELLS->Fill(-1.0,eventInfo.beamSpotWeight());
123 
124  double moment_EM_PROBABILITY = 0.0;
125  gotMoment = cluster.retrieveMoment(xAOD::CaloCluster::EM_PROBABILITY,moment_EM_PROBABILITY);
126  if (true == gotMoment) m_EM_PROBABILITY->Fill(moment_EM_PROBABILITY,eventInfo.beamSpotWeight());
127  else m_EM_PROBABILITY->Fill(-1.0,eventInfo.beamSpotWeight());
128 
129  }
130 
131 }
xAOD::CaloCluster_v1::SECOND_R
@ SECOND_R
Second Moment in .
Definition: CaloCluster_v1.h:123
ClusterMomentPlots.h
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:27
PFO::ClusterMomentPlots::m_N_BAD_CELLS
TH1 * m_N_BAD_CELLS
Definition: ClusterMomentPlots.h:35
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:30
PFO::ClusterMomentPlots::m_CELL_SIG_SAMPLING
TH1 * m_CELL_SIG_SAMPLING
Definition: ClusterMomentPlots.h:41
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:37
PFO::ClusterMomentPlots::m_BADLARQ_FRAC
TH1 * m_BADLARQ_FRAC
Definition: ClusterMomentPlots.h:36
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:37
PFO::ClusterMomentPlots::m_ENG_FRAC_MAX
TH1 * m_ENG_FRAC_MAX
Definition: ClusterMomentPlots.h:32
PFO::ClusterMomentPlots::m_AVG_TILE_Q
TH1 * m_AVG_TILE_Q
Definition: ClusterMomentPlots.h:40
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:29
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:44
PFO::ClusterMomentPlots::initializePlots
void initializePlots()
Definition: ClusterMomentPlots.cxx:14
PFO::ClusterMomentPlots::m_ENG_BAD_HV_CELLS
TH1 * m_ENG_BAD_HV_CELLS
Definition: ClusterMomentPlots.h:42
PFO::ClusterMomentPlots::m_LONGITUDINAL
TH1 * m_LONGITUDINAL
Definition: ClusterMomentPlots.h:28
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:34
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:39
PFO::ClusterMomentPlots::m_N_BAD_HV_CELLS
TH1 * m_N_BAD_HV_CELLS
Definition: ClusterMomentPlots.h:43
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:15
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:38
PFO::ClusterMomentPlots::m_ISOLATION
TH1 * m_ISOLATION
Definition: ClusterMomentPlots.h:33
PFO::ClusterMomentPlots::m_FIRST_ENG_DENS
TH1 * m_FIRST_ENG_DENS
Definition: ClusterMomentPlots.h:31
xAOD::CaloCluster_v1::LATERAL
@ LATERAL
Normalized lateral moment.
Definition: CaloCluster_v1.h:137
PFO::ClusterMomentPlots::ClusterMomentPlots
ClusterMomentPlots(PlotBase *pParent, const std::string &sDir, SG::ReadHandleKey< xAOD::CaloClusterContainer > &sClusterContainerName)
Definition: ClusterMomentPlots.cxx:9
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:47
xAOD::CaloCluster_v1::BADLARQ_FRAC
@ BADLARQ_FRAC
Energy fraction of LAr cells with quality larger than a given cut.
Definition: CaloCluster_v1.h:155