Function executing the algorithm.
56 {
57
58
59 SG::ReadHandle<xAOD::CaloClusterContainer> clustercontainer{
m_containerName};
61
65 ATH_MSG_INFO(
"Found corresponding cell-link container with size " << cclptr->
size());
66 }
67 else
68 ATH_MSG_INFO(
"Did not find corresponding cell-link container");
69
71 for (const auto itr: *clustercontainer) {
73 (*m_out) << "Kinematics :" << std::endl;
74 (*m_out) <<
"E=" << cluster.
e() <<
", eta=" << cluster.
eta() <<
", phi=" << cluster.
phi() <<
", m=" << cluster.
m() <<
", pt=" << cluster.
pt() << std::endl;
75 (*m_out) <<
"Eta0=" << cluster.
eta0() <<
", Phi0=" << cluster.
phi0() << std::endl;
76
77 (*m_out) << "TLorentzVector :" << std::endl;
79 (*m_out) << " p4.E=" << p4.E() << ", x=" << p4.X() << ", y=" << p4.Y() << ", z=" << p4.Z() << ", m=" << p4.M() << ", pt=" << p4.Pt() << std::endl;
80
81 (*m_out) << "Sampling variables :" << std::endl;
82 for (unsigned iSamp=0;iSamp<CaloSampling::Unknown;++iSamp) {
85 (*m_out) <<
" Sampling #" <<
s <<
": E=" << cluster.
eSample(s) <<
", eta=" << cluster.
etaSample(s) <<
", phi=" << cluster.
phiSample(s) << std::endl;
86 }
87 }
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105 constexpr auto allMoments=std::to_array<const char*>({"FIRST_PHI","FIRST_ETA","SECOND_R","SECOND_LAMBDA","DELTA_PHI","DELTA_THETA","DELTA_ALPHA","CENTER_X","CENTER_Y","CENTER_Z","CENTER_MAG","CENTER_LAMBDA","LATERAL","LONGITUDINAL","ENG_FRAC_EM","ENG_FRAC_MAX","ENG_FRAC_CORE","FIRST_ENG_DENS","SECOND_ENG_DENS","ISOLATION","ENG_BAD_CELLS","N_BAD_CELLS","N_BAD_CELLS_CORR","BAD_CELLS_CORR_E","BADLARQ_FRAC","ENG_POS","SIGNIFICANCE","CELL_SIGNIFICANCE","CELL_SIG_SAMPLING","AVG_LAR_Q","AVG_TILE_Q","EM_PROBABILITY","HAD_WEIGHT","OOC_WEIGHT","DM_WEIGHT","TILE_CONFIDENCE_LEVEL","VERTEX_FRACTION","NVERTEX_FRACTION","ENG_CALIB_TOT","ENG_CALIB_OUT_L","ENG_CALIB_OUT_M","ENG_CALIB_OUT_T","ENG_CALIB_DEAD_L","ENG_CALIB_DEAD_M","ENG_CALIB_DEAD_T","ENG_CALIB_EMB0","ENG_CALIB_EME0","ENG_CALIB_TILEG3","ENG_CALIB_DEAD_TOT","ENG_CALIB_DEAD_EMB0","ENG_CALIB_DEAD_TILE0","ENG_CALIB_DEAD_TILEG3","ENG_CALIB_DEAD_EME0","ENG_CALIB_DEAD_HEC0","ENG_CALIB_DEAD_FCAL","ENG_CALIB_DEAD_LEAKAGE","ENG_CALIB_DEAD_UNCLASS","ENG_CALIB_FRAC_EM","ENG_CALIB_FRAC_HAD","ENG_CALIB_FRAC_REST", "ENERGY_Truth"});
106 (*m_out) << "Cluster Moments" << std::endl;
107 for (const auto& momName : allMoments) {
108 SG::AuxElement::Accessor<float>
a(momName);
109 if (
a.isAvailable(cluster)) {
110 float v =
a(cluster);
111 (*m_out) <<
" " << momName <<
": " <<
v << std::endl;
112 }
113 }
114
116 if (
a.isAvailable(cluster)) {
117 (*m_out) << "Bad Channel data: " << std::endl;
119 (*m_out) << " eta=" << bc.eta() << ", phi=" << bc.phi() << ", layer=" << bc.layer() << ", word=" << bc.badChannel() << std::endl;
120 }
121 }
122
123 (*m_out) << "Cell-links:" << std::endl;
124 const CaloClusterCellLink* cellLinks=cluster.
getCellLinks();
125 if (cellLinks) {
126
127 CaloClusterCellLink::const_iterator lnk_it=cellLinks->
begin();
128 CaloClusterCellLink::const_iterator lnk_it_e=cellLinks->
end();
129 for (;lnk_it!=lnk_it_e;++lnk_it) {
130 const CaloCell*
cell=*lnk_it;
131 (*m_out) <<
" ID=" << std::hex <<
cell->ID() << std::dec <<
", E=" <<
cell->e() <<
", weight=" << lnk_it.
weight() << std::endl;
132 }
133 }
134 else
135 (*
m_out) <<
" No Cell Links found" << std::endl;
136
137 }
138
139 return StatusCode::SUCCESS;
140}
Athena::TPCnvVers::Old Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current CaloClusterCellLinkContainer
#define CHECK(...)
Evaluate an expression and check for errors.
ServiceHandle< StoreGateSvc > & evtStore()
weight_t weight() const
Accessor for weight associated to this cell.
const_iterator end() const
const end method
const_iterator begin() const
const begin method
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_containerName
The key for the output xAOD::CaloClusterContainer.
size_type size() const noexcept
Returns the number of elements in the collection.
SG::Accessor< T, ALLOC > Accessor
const CaloClusterCellLink * getCellLinks() const
Get a pointer to the CaloClusterCellLink object (const version)
virtual double pt() const
The transverse momentum ( ) of the particle (negative for negative-energy clusters)
float phiSample(const CaloSample sampling) const
Retrieve barycenter in a given sample.
virtual double m() const
The invariant mass of the particle.
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual double e() const
The total energy of the particle.
float eSample(const CaloSample sampling) const
virtual double phi() const
The azimuthal angle ( ) of the particle.
float etaSample(const CaloSample sampling) const
Retrieve barycenter in a given sample.
flt_t eta0() const
Returns raw of cluster seed.
virtual FourMom_t p4() const
The full 4-momentum of the particle.
IParticle::FourMom_t FourMom_t
Definition of the 4-momentum type.
CaloSampling::CaloSample CaloSample
bool hasSampling(const CaloSample s) const
Checks if certain smapling contributes to cluster.
const CaloClusterBadChannelList & badChannelList() const
flt_t phi0() const
Returns raw of cluster seed.
bool contains(const std::string &s, const std::string ®x)
does a string contain the substring
retrieve(aClass, aKey=None)
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.