ATLAS Offline Software
Loading...
Searching...
No Matches
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
7namespace 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}
void fill(const xAOD::CaloCluster &cluster, const xAOD::EventInfo &eventInfo)
ClusterMomentPlots(PlotBase *pParent, const std::string &sDir, SG::ReadHandleKey< xAOD::CaloClusterContainer > &sClusterContainerName)
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_sClusterContainerName
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
PlotBase(PlotBase *parent, const std::string &sDir)
Definition PlotBase.cxx:29
Property holding a SG store/key/clid from which a ReadHandle is made.
bool retrieveMoment(MomentType type, double &value) const
Retrieve individual moment.
@ AVG_TILE_Q
Sum(E_cell_Tile^2 Q_cell_Tile)/Sum(E_cell_Tile^2)
@ CELL_SIG_SAMPLING
CaloSample of the cell with the largest |E|/sig.
@ EM_PROBABILITY
Classification probability to be em-like.
@ LATERAL
Normalized lateral moment.
@ N_BAD_CELLS
number of bad cells
@ LONGITUDINAL
Normalized longitudinal moment.
@ ENG_FRAC_MAX
Energy fraction of hottest cell.
@ AVG_LAR_Q
Sum(E_cell_LAr^2 Q_cell_LAr)/Sum(E_cell_LAr^2)
@ SECOND_R
Second Moment in .
@ ENG_BAD_HV_CELLS
Total em-scale energy of cells with bad HV in this cluster.
@ FIRST_ENG_DENS
First Moment in E/V.
@ N_BAD_HV_CELLS
number of cells with bad HV
@ CENTER_LAMBDA
Shower depth at Cluster Centroid.
@ SIGNIFICANCE
Cluster significance.
@ ENG_BAD_CELLS
Total em-scale energy of bad cells in this cluster.
@ ENG_POS
Total positive Energy of this cluster.
@ BADLARQ_FRAC
Energy fraction of LAr cells with quality larger than a given cut.
@ ISOLATION
Energy weighted fraction of non-clustered perimeter cells.
float beamSpotWeight() const
Weight for beam spot size reweighting.
EventInfo_v1 EventInfo
Definition of the latest event info version.
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.