ATLAS Offline Software
Loading...
Searching...
No Matches
CaloCluster_v1.h
Go to the documentation of this file.
1// -*- c++ -*-
2/*
3 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
4*/
5#ifndef XAODCALOEVENT_VERSIONS_CALOCLUSTER_V1_H
6#define XAODCALOEVENT_VERSIONS_CALOCLUSTER_V1_H
7
8// System include(s):
9extern "C" {
10# include <stdint.h>
11}
12#include <bitset>
13#include <memory>
14#include <vector>
15#include <limits>
16#include <bit>
17
18#include <cmath>
19
20// xAOD include(s):
21#include "xAODBase/IParticle.h"
22
23//Definition of CaloSamples (enum)
24#include "CaloGeoHelpers/CaloSampling.h"
25
28#include "AthLinks/ElementLink.h"
29
30
31#if !(defined(SIMULATIONBASE) || defined(XAOD_ANALYSIS))
34#else
35class CaloClusterCellLink {};
36typedef unsigned CaloRecoStatus;
37#endif // not (defined(SIMULATIONBASE) || defined(XAOD_ANALYSIS))
38
39// ROOT include(s):
40#include "Math/Vector4D.h"
41
42//Already include the DataVector specialization for this type
44
45// implementation of some accessor functions
47
49
50namespace xAOD {
51 class CaloCluster_v1;
53
62 class CaloCluster_v1 : public IParticle {
63 friend class ::CaloClusterChangeSignalState;
64
65 public:
66
67 typedef float flt_t;
68
70
83 typedef std::vector<uint16_t> ncells_store_t;
84
87
90 // electrons
94 // photons
98 // early converted photons
102 // soft electrons
104 // topological clusters
107 // transient cluster for AODCellContainer
109 //New (2016) egamma cluster
111 //New (2020) cluster representation of towers
116 };
117
124 FIRST_PHI = 101,
125 FIRST_ETA = 102,
126 SECOND_R = 201,
134 CENTER_X = 401,
135 CENTER_Y = 402,
136 CENTER_Z = 403,
140 LATERAL = 601,
159 ENG_POS = 822,
173 PTD = 830,
175 MASS = 831,
179 DM_WEIGHT = 903,
186
189
196
257
258
307
308 };
309
318
320
323
326
328 virtual ~CaloCluster_v1();
329
332
335
337 virtual double pt() const;
339 virtual double eta() const;
341 virtual double phi() const;
343 virtual double m() const;
345 virtual double e() const;
347 virtual double rapidity() const;
348
351
353 typedef ROOT::Math::LorentzVector<ROOT::Math::PtEtaPhiM4D<double> > GenVecFourMom_t;
354
357
359 GenVecFourMom_t genvecP4(const State s) const;
360
362 virtual FourMom_t p4() const;
363
364 FourMom_t p4(const State s) const;
365
367 virtual Type::ObjectType type() const;
369
373 double et() const;
374
376
377 public:
378
382 float eSample(const CaloSample sampling) const;
384 float etaSample(const CaloSample sampling) const;
386 float phiSample(const CaloSample sampling) const;
387
389 float energy_max(const CaloSample sampling) const;
392 float etamax(const CaloSample sampling) const;
395 float phimax(const CaloSample sampling) const;
396
398 float etasize(const CaloSample sampling) const;
400 float phisize(const CaloSample sampling) const;
401
413 int numberCellsInSampling(const CaloSample samp,bool isInnerWheel=false) const;
414
416 void setNumberCellsInSampling(CaloSampling::CaloSample samp, int ncells,bool isInnerWheel=false);
417
425 int numberCells() const;
426
433 template<class CDATA>
434 bool getNumberCellsInSampling(CDATA& cdata) const {
435 ncells_store_t clist;
436 if ( !retrieveMoment(NCELL_SAMPLING,clist) ) { return false; }
437 cdata.clear(); cdata.reserve(clist.size());
438 for ( auto cn : clist ) { cdata.push_back(extractLowerCount<typename CDATA::value_type>(cn)); }
439 return true;
440 }
441
442
448 float energyBE(const unsigned layer) const;
449
455 float etaBE(const unsigned layer) const;
461 float phiBE(const unsigned layer) const;
462
463
465 bool setEnergy(const CaloSample sampling, const float e);
467 bool setEta(const CaloSample sampling, const float eta);
469 bool setPhi(const CaloSample sampling, const float phi );
470
472 bool setEmax(const CaloSample sampling, const float eMax );
474 bool setEtamax(const CaloSample sampling, const float etaMax );
476 bool setPhimax(const CaloSample sampling, const float phiMax );
478 bool setEtasize(const CaloSample sampling, const float etaSize );
480 bool setPhisize(const CaloSample sampling, const float phiSize );
481
482
483
484
485
487
491 void insertMoment( MomentType type, double value );
492
494 bool retrieveMoment( MomentType type, double& value ) const;
495
497 double getMomentValue( MomentType type) const;
498
504
510
512
513
514
520 flt_t eta0() const;
521
525 flt_t phi0() const;
526
530 flt_t time() const;
540 flt_t secondTime() const;
541
543 unsigned samplingPattern() const;
545 void setSamplingPattern(const unsigned sp, const bool clearSamplingVars=false);
546
548 void clearSamplingData();
549
550 unsigned nSamples() const;
551
553 bool hasSampling(const CaloSample s) const;
554
555
557 ClusterSize clusterSize() const;
559 void setClusterSize(const ClusterSize);
560
562 bool inBarrel() const;
564 bool inEndcap() const;
565
567
571 void setE(flt_t);
573 void setEta(flt_t);
575 void setPhi(flt_t);
577 void setM(flt_t);
578
580
584 flt_t rawE() const;
586 void setRawE(flt_t);
588 flt_t rawEta() const;
590 void setRawEta(flt_t);
592 flt_t rawPhi() const;
594 void setRawPhi(flt_t);
596 flt_t rawM() const;
598 void setRawM(flt_t);
599
601 flt_t altE() const;
603 void setAltE(flt_t);
605 flt_t altEta() const;
607 void setAltEta(flt_t);
609 flt_t altPhi() const;
611 void setAltPhi(flt_t);
613 flt_t altM() const;
615 void setAltM(flt_t);
616
618 flt_t calE() const;
620 void setCalE(flt_t);
622 flt_t calEta() const;
624 void setCalEta(flt_t);
626 flt_t calPhi() const;
628 void setCalPhi(flt_t);
630 flt_t calM() const;
632 void setCalM(flt_t);
633#if !(defined(SIMULATIONBASE) || defined(XAOD_ANALYSIS))
634 private:
635#endif //not defined(SIMULATIONBASE) || defined(XAOD_ANALYSIS)
637 bool setSignalState(const State s) ;
638 public:
641
643 double pt(const State s) const;
644
646 double e(const State s) const;
647
649 double eta(const State s) const;
650
652 double phi(const State s) const;
653
655 double m(const State s) const;
656
657
659
660
662 unsigned int getClusterEtaSize() const;
663
665 unsigned int getClusterPhiSize() const;
666
669
671 const CaloCluster_v1* getSisterCluster() const;
672
675
678
679 //For debugging only...
680 //std::vector<std::pair<std::string,float> > getAllMoments();
681
682 private:
685
690 std::unique_ptr<CaloClusterCellLink> m_cellLinks;
691
694
696 double m_secondTime = { -1. };
697
700 template<class UNSIGNED> UNSIGNED extractLowerCount(ncells_store_t::value_type cdata) const { return static_cast<UNSIGNED>(cdata & 0x00ff); }
701 template<class UNSIGNED> UNSIGNED extractUpperCount(ncells_store_t::value_type cdata) const { return static_cast<UNSIGNED>( (cdata & 0xff00)>>8 ); }
702 template<class UNSIGNED> ncells_store_t::value_type setLowerCount(ncells_store_t::value_type cdata,UNSIGNED clower)
703 { return static_cast<ncells_store_t::value_type>((cdata & 0xff00)|(clower & 0x00ff)); }
704 template<class UNSIGNED> ncells_store_t::value_type setUpperCount(ncells_store_t::value_type cdata,UNSIGNED cupper)
705 { return static_cast<ncells_store_t::value_type>((cdata & 0x00ff)|((cupper & 0x00ff)<<8)); }
706 template<class UNSIGNED> UNSIGNED lowerCellCountBound() const { return static_cast<UNSIGNED>(std::numeric_limits<ncells_t>::lowest()); }
707 template<class UNSIGNED> UNSIGNED upperCellCountBound() const { return static_cast<UNSIGNED>(std::numeric_limits<ncells_t>::max()); }
708 template<class UNSIGNED,class CCTYPE> CCTYPE adjustToRange(UNSIGNED count) const
709 { return static_cast<CCTYPE>(std::min(std::max(count,lowerCellCountBound< UNSIGNED >()),upperCellCountBound< UNSIGNED >())); }
710
711
712 unsigned sampVarIdx(const CaloSample) const;
713
714 float getSamplVarFromAcc(const Accessor<std::vector<float > >& acc,
715 const CaloSample sampling, const float errorvalue=CaloClusterDetails::defaultErrorValue) const;
716
717 bool setSamplVarFromAcc(const Accessor<std::vector<float> >& acc,
718 const CaloSample sampling, const float value);
719
720 public:
721#if !(defined(SIMULATIONBASE) || defined(XAOD_ANALYSIS))
722
729 m_cellLinks.reset(CCCL);
730 }
731
733 void addCellLink(std::unique_ptr<CaloClusterCellLink> CCCL) {
734 m_cellLinks=std::move(CCCL);
735 }
736
741 //bool createCellElemLink(const std::string& CCCL_key, const size_t index);
742
749 IProxyDict* sg = nullptr);
750
751
758 const EventContext& ctx);
759
760
764 const CaloClusterCellLink* getCellLinks() const;
765
770 return m_cellLinks.get();
771 }
772
778 bool addCell(const unsigned index, const double weight) {
779 if (!m_cellLinks) {
780 return false;
781 }
782 return m_cellLinks->addCell(index, weight);
783 }
784
791 bool removeCell(const CaloCell* ptr);
792
793
797 size_t size() const;
798
801 // Fixme: Check ret-val of getCellLinks (might be NULL);
803 {
804 const CaloClusterCellLink* links = getCellLinks();
805 if (!links) {
807 }
808 return links->begin();
809 }
811 const CaloClusterCellLink* links=getCellLinks();
812 if (!links) {
814 }
815 return getCellLinks()->end();
816 }
817
821
824 //Fixme: Check ret-val of getCellLinks (might be NULL);
827
831 const_iterator begin() const { return cell_cbegin(); }
832 const_iterator end() const { return cell_cend(); }
833 const_iterator cbegin() const { return cell_cbegin(); }
834 const_iterator cend() const { return cell_cend(); }
835 iterator begin() { return cell_begin(); }
836 iterator end() { return cell_end(); }
837
842 void reweightCell(cell_iterator it, const double weight) {it.reweight(weight);}
843
848
852 const CaloRecoStatus& recoStatus() const {return m_recoStatus;}
854
855#endif // not defined(SIMULATIONBASE) || defined(XAOD_ANALYSIS)
856
858 void toPersistent();
859
860 }; // class CaloCluster_v1
861
862
863 inline double CaloCluster_v1::et() const {
864 if (this->m() == 0) {
865 return this->pt();
866 }
867
868 return this->p4().Et();
869 }
870
871 inline unsigned CaloCluster_v1::samplingPattern() const {
872 return m_samplingPattern;
873 }
874
878
879
880 inline unsigned CaloCluster_v1::nSamples() const {
881 const uint32_t pattern=samplingPattern();
882 return std::popcount(pattern);
883 }
884
885
889
890
891 inline bool CaloCluster_v1::inBarrel() const {
893 }
894
895
896 inline bool CaloCluster_v1::inEndcap() const {
898 }
899
900
902 double value=-999;
903 (void)this->retrieveMoment(type,value);
904 return value;
905 }
906
907} // namespace xAOD
908
909// Finish declaration of IParticle as a base class of CaloCluster_v1:
911
912
913#endif // XAODCALOEVENT_VERSIONS_CALOCLUSTER_V1_H
Scalar eta() const
pseudorapidity method
CaloCell_ID::CaloSample CaloSample
Helper functions for CaloCluster accessors.
MomentType
Enums to identify different moments.
#define DATAVECTOR_BASE_FIN(T, B)
Used to finish up a forward declaration.
Definition DataVector.h:796
static Double_t sp
Data object for each calorimeter readout cell.
Definition CaloCell.h:57
Helper to temporarily change the signal state of a cluster.
reconstruction status indicator
static constexpr unsigned int barrelPattern()
Get the bit-pattern for barrel samplings.
static constexpr unsigned int endcapPattern()
Get the bit-pattern for endcap samplings.
Derived DataVector<T>.
Definition DataVector.h:818
Description of a calorimeter cluster.
float phiBE(const unsigned layer) const
Get the phi in one layer of the EM Calo.
void setRawEta(flt_t)
Set for signal state UNCALIBRATED.
ClusterSize clusterSize() const
Get cluster size.
void setAltPhi(flt_t)
Set for signal state ALTCALIBRATED.
const CaloCluster_v1 * getSisterCluster() const
Get a pointer to a 'sister' cluster (eg the non-calibrated counterpart).
bool retrieveMoment(MomentType type, double &value) const
Retrieve individual moment.
const_cell_iterator cell_cend() const
flt_t rawE() const
CaloRecoStatus m_recoStatus
Reco status (transient only).
void setRawPhi(flt_t)
Set for signal state UNCALIBRATED.
void setSecondTime(flt_t stime)
Set second moment of cell timing distribution.
double getMomentValue(MomentType type) const
Retrieve individual moment - no check for existance! Returns -999 on error.
State signalState() const
Get the current signal state.
bool setPhi(const CaloSample sampling, const float phi)
Set in a given sampling. Returns false if the sample isn't part of the cluster.
ncells_store_t::value_type setUpperCount(ncells_store_t::value_type cdata, UNSIGNED cupper)
State
enum of possible signal states.
const CaloClusterCellLink * getCellLinks() const
Get a pointer to the CaloClusterCellLink object (const version).
const_iterator end() const
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > GenVecFourMom_t
Base 4 Momentum type for calo.
unsigned m_samplingPattern
bit-pattern describing the calo samplings contributing to this cluster
unsigned sampVarIdx(const CaloSample) const
const_cell_iterator const_iterator
STL-compatible iterators.
const CaloRecoStatus & recoStatus() const
Accesssor to CaloRecoStatus (const).
virtual double pt() const
The transverse momentum ( ) of the particle (negative for negative-energy clusters).
bool setSisterClusterLink(const ElementLink< CaloClusterContainer_v1 > &sister)
Set a link to a 'sister' cluster (eg the non-calibrated counterpart).
flt_t calPhi() const
Get in signal state CALIBRATED.
float phiSample(const CaloSample sampling) const
Retrieve barycenter in a given sample.
const_iterator begin() const
double m_secondTime
Second cell time moment (transient only).
float etasize(const CaloSample sampling) const
Returns cluster size in for a given sampling.
UNSIGNED upperCellCountBound() const
upper boundary for cell count
const_cell_iterator cell_cbegin() const
flt_t rawM() const
Get mass in signal state UNCALIBRATED.
void setAltM(flt_t)
Set mass for singal state ALTCALIBRATED.
bool setEtasize(const CaloSample sampling, const float etaSize)
Set the cluster size in for a given sampling.
std::unique_ptr< CaloClusterCellLink > m_cellLinks
Unique ptr to cell links.
void reweightCell(cell_iterator it, const double weight)
Method to reweight a cell in the cluster (Beware: Kinematics not updated!).
float energy_max(const CaloSample sampling) const
Retrieve maximum cell energy in given sampling.
int numberCellsInSampling(const CaloSample samp, bool isInnerWheel=false) const
Returns number of cells in given sampling.
void addCellLink(CaloClusterCellLink *CCCL)
const_iterator cend() const
CaloCluster_v1()
Default constructor.
virtual Type::ObjectType type() const
The type of the object as a simple enumeration.
UNSIGNED lowerCellCountBound() const
lower value boundary for cell count
virtual double m() const
The invariant mass of the particle.
cell_iterator cell_begin()
flt_t time() const
Access cluster time.
void setRawE(flt_t)
Set Energy for signal state UNCALIBRATED.
void setCalPhi(flt_t)
Set for signal state CALIBRATED.
void setRawM(flt_t)
Set mass for singal state UNCALIBRATED.
uint8_t ncells_t
Type for number-of-cells-in-sampling counter.
virtual double eta() const
The pseudorapidity ( ) of the particle.
flt_t altPhi() const
Get in signal state ALTCALIBRATED.
flt_t rawPhi() const
Get in signal state UNCALIBRATED.
bool setPhisize(const CaloSample sampling, const float phiSize)
Set the cluster size in for a given sampling.
int numberCells() const
Return total number of cells in cluster.
void setAltEta(flt_t)
Set for signal state ALTCALIBRATED.
size_t size() const
size method (forwarded from CaloClusterCellLink obj)
void setTime(flt_t)
Set cluster time.
CaloClusterCellLink::iterator cell_iterator
Iterator of the underlying CaloClusterCellLink (non-const version).
bool setSamplVarFromAcc(const Accessor< std::vector< float > > &acc, const CaloSample sampling, const float value)
flt_t rawEta() const
Get in signal state UNCALIBRATED.
unsigned int getClusterEtaSize() const
Get eta size from cluster size.
UNSIGNED extractUpperCount(ncells_store_t::value_type cdata) const
extract upper cell count from data
virtual double e() const
The total energy of the particle.
void insertMoment(MomentType type, double value)
virtual ~CaloCluster_v1()
Destructor.
CaloClusterCellLink::const_iterator const_cell_iterator
Iterator of the underlying CaloClusterCellLink (explicitly const version).
flt_t altE() const
Get Energy in signal state ALTCALIBRATED.
void setCalEta(flt_t)
Set for signal state CALIBRATED.
cell_iterator cell_end()
void setClusterSize(const ClusterSize)
Get cluster size.
CCTYPE adjustToRange(UNSIGNED count) const
< reduce value range to min and max counts
bool setPhimax(const CaloSample sampling, const float phiMax)
Set the phi of the cell with the highest energy in a particular sampling.
const_cell_iterator cell_end() const
bool setEta(const CaloSample sampling, const float eta)
Set in a given sampling. Returns false if the sample isn't part of the cluster.
bool inBarrel() const
Returns true if at least one clustered cell in the barrel.
bool setEmax(const CaloSample sampling, const float eMax)
Set the Energy of the cell with the highest energy in a particular sampling.
bool getNumberCellsInSampling(CDATA &cdata) const
Get number of cells for all sampling layer.
std::vector< uint16_t > ncells_store_t
Store type for number-of-cells-in-sampling counter.
float eSample(const CaloSample sampling) const
bool inEndcap() const
Returns true if at least one clustered cell in the endcap.
flt_t calEta() const
Get in signal state CALIBRATED.
ClusterSize
Enumeration to identify different cluster sizes.
flt_t secondTime() const
Access second moment of cell timing distribution.
float energyBE(const unsigned layer) const
Get the energy in one layer of the EM Calo.
bool setEnergy(const CaloSample sampling, const float e)
Set energy for a given sampling. Returns false if the sample isn't part of the cluster.
virtual double phi() const
The azimuthal angle ( ) of the particle.
void setSamplingPattern(const unsigned sp, const bool clearSamplingVars=false)
Set sampling pattern (one bit per sampling.
void toPersistent()
Function preparing the object to be persistified.
CaloCluster_v1 & operator=(const xAOD::CaloCluster_v1 &other)
Assignment operator.
float etamax(const CaloSample sampling) const
Retrieve of cell with maximum energy in given sampling.
CaloClusterCellLink * getOwnCellLinks()
Get a pointer to the owned CaloClusterCellLink object (non-const version).
void setPhi0(flt_t)
Set raw of cluster seed.
void setAltE(flt_t)
Set Energy for signal state ALTCALIBRATED.
float getSamplVarFromAcc(const Accessor< std::vector< float > > &acc, const CaloSample sampling, const float errorvalue=CaloClusterDetails::defaultErrorValue) const
GenVecFourMom_t genvecP4() const
The full 4-momentum of the particle : GenVector type.
MomentType
Enums to identify different moments.
@ ENG_CALIB_OUT_M
Attached Calibration Hit energy outside clusters but inside the calorimeter with medium matching (Ang...
@ PTD
relative spread of pT of constiuent cells = sqrt(n)*RMS/Mean
@ CENTER_LAMBDA_DigiHSTruth
Shower depth at Cluster Centroid.
@ SECOND_ENG_DENS
Second Moment in E/V.
@ DELTA_PHI
Angular shower axis deviation ( ) from IP-to-Center.
@ ETA2CALOFRAME
Eta of sampling 2 in the calo frame (for egamma).
@ DELTA_ALPHA
Angular shower axis deviation ( ) from IP-to-Center.
@ LATERAL_DigiHSTruth
Normalized lateral moment.
@ OOC_WEIGHT
Out-of-cluster weight (E_ooc/E_w).
@ AVG_TILE_Q
Sum(E_cell_Tile^2 Q_cell_Tile)/Sum(E_cell_Tile^2).
@ DELTA_THETA
Angular shower axis deviation ( ) from IP-to-Center.
@ SECOND_LAMBDA_DigiHSTruth
Second Moment in .
@ SECOND_LAMBDA
Second Moment in .
@ ETACALOFRAME
Eta in the calo frame (for egamma).
@ PHI_DigiHSTruth
phi moment I would like to have
@ TIME_DigiHSTruth
First Moment in .
@ FIRST_PHI
First Moment in .
@ ENG_CALIB_OUT_L
Attached Calibration Hit energy outside clusters but inside the calorimeter with loose matching (Angl...
@ CELL_SIGNIFICANCE
Cell significance = E/sig of the cell with the largest |E|/sig.
@ CELL_SIG_SAMPLING
CaloSample of the cell with the largest |E|/sig.
@ EM_PROBABILITY
Classification probability to be em-like.
@ PHI2CALOFRAME
Phi of sampling 2 in the calo frame (for egamma).
@ VERTEX_FRACTION
Vertex fraction of this cluster wrt.
@ ENG_CALIB_DEAD_T
Attached Calibration Hit energy in dead material with tight matching (Angle < 0.3).
@ NCELL_SAMPLING
Number of cells in sampling layer.
@ ENERGY_CALIB_DigiHSTruth
First Moment in .
@ NVERTEX_FRACTION
slightly updated vertex fraction more pile up independent (similar to nJVF)
@ SECOND_TIME
Second moment of cell time distribution in cluster.
@ N_BAD_CELLS_CORR
Number of bad cells with energy density average correction applied.
@ TIME_CALIB_DigiHSTruth
First Moment in .
@ DM_WEIGHT
Dead-material weight (E_dm/E_ooc).
@ LATERAL
Normalized lateral moment.
@ FIRST_ENG_DENS_DigiHSTruth
First Moment in E/V.
@ 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).
@ ENG_CALIB_DEAD_UNCLASS
Attached Calibration Hit energy in dead material in unclassified areas of the detector.
@ PHI_CALIB_DigiHSTruth
First Moment in .
@ PHI1CALOFRAME
Phi of sampling 1 in the calo frame (for egamma).
@ ENG_FRAC_EM
Energy fraction in EM calorimeters.
@ SECOND_R
Second Moment in .
@ ENG_CALIB_DEAD_HEC0
Attached Calibration Hit energy in dead material between EME3 and HEC0.
@ FIRST_ETA
First Moment in .
@ PHICALOFRAME
Phi in the calo frame (for egamma).
@ ENG_BAD_HV_CELLS
Total em-scale energy of cells with bad HV in this cluster.
@ FIRST_ENG_DENS
First Moment in E/V.
@ HAD_WEIGHT
Hadronic weight (E_w/E_em).
@ ENG_CALIB_DEAD_TILEG3
Attached Calibration Hit energy in dead material before scintillator.
@ N_BAD_HV_CELLS
number of cells with bad HV
@ ENG_FRAC_CORE
Energy fraction of the sum of the hottest cells in each sampling.
@ CENTER_Z_DigiHSTruth
Cluster Centroid ( ).
@ SECOND_ENG_DENS_DigiHSTruth
Second Moment in E/V.
@ CENTER_LAMBDA
Shower depth at Cluster Centroid.
@ SECOND_R_DigiHSTruth
Second Moment in .
@ SIGNIFICANCE
Cluster significance.
@ CENTER_MAG
Cluster Centroid ( ).
@ MASS
cell based mass i.e. the mass of the 4-vector sum of all massless positive energetic cells
@ ETA_CALIB_DigiHSTruth
First Moment in .
@ ENG_CALIB_DEAD_M
Attached Calibration Hit energy in dead material with medium matching (Angle < 0.5).
@ ENG_CALIB_FRAC_REST
Calibration Hit energy inside the cluster caused by other particles.
@ ENG_CALIB_DEAD_L
Attached Calibration Hit energy in dead material with loose matching (Angle < 1.0).
@ CENTER_Y_DigiHSTruth
Cluster Centroid ( ).
@ EM_PROBABILITY_DigiHSTruth
Classification probability to be em-like.
@ ENG_FRAC_EM_DigiHSTruth
Energy fraction in EM calorimeters.
@ OOC_WEIGHT_DigiHSTruth
Out-of-cluster weight (E_ooc/E_w).
@ ENG_CALIB_DEAD_EME0
Attached Calibration Hit energy in dead material before EME0, between EME0 and EME1.
@ ENG_CALIB_DEAD_TILE0
Attached Calibration Hit energy in dead material between EMB3 and TILE0.
@ CENTER_Z
Cluster Centroid ( ).
@ BAD_CELLS_CORR_E
Energy of bad cells with energy density average correction applied.
@ ETA1CALOFRAME
Eta of sampling 1 in the calo frame (for egamma).
@ ENG_FRAC_MAX_DigiHSTruth
Energy fraction of hottest cell.
@ ETA_DigiHSTruth
Eta moment that I am trying to include.
@ ENG_CALIB_FRAC_EM
Calibration Hit energy inside the cluster caused by e/gamma/pi0.
@ ENG_BAD_CELLS
Total em-scale energy of bad cells in this cluster.
@ ENG_CALIB_DEAD_FCAL
Attached Calibration Hit energy in dead material before FCAL, between FCAL and HEC.
@ CENTER_X_DigiHSTruth
Cluster Centroid ( ).
@ ENG_CALIB_TOT
Calibration Hit energy inside the cluster.
@ ENERGY_DigiHSTruth
First Moment in .
@ ENG_CALIB_OUT_T
Attached Calibration Hit energy outside clusters but inside the calorimeter with tight matching (Angl...
@ ENG_CALIB_DEAD_LEAKAGE
Attached Calibration Hit energy in dead material behind calorimeters.
@ ENG_CALIB_FRAC_HAD
Calibration Hit energy inside the cluster caused by charged pi+ and pi-.
@ ENG_CALIB_EMB0
Calibration Hit energy inside the cluster barrel presampler.
@ SIGNIFICANCE_DigiHSTruth
Cluster significance.
@ FIRST_ETA_DigiHSTruth
First Moment in .
@ N_BAD_CELLS_DigiHSTruth
number of bad cells
@ ENG_CALIB_EME0
Calibration Hit energy inside the cluster endcap presampler.
@ ENG_POS
Total positive Energy of this cluster.
@ BADLARQ_FRAC
Energy fraction of LAr cells with quality larger than a given cut.
@ FIRST_PHI_DigiHSTruth
First Moment in .
@ LONGITUDINAL_DigiHSTruth
Normalized longitudinal moment.
@ CENTER_X
Cluster Centroid ( ).
@ ENG_CALIB_DEAD_EMB0
Attached Calibration Hit energy in dead material before EMB0, between EMB0 and EMB1.
@ ISOLATION
Energy weighted fraction of non-clustered perimeter cells.
@ ENG_CALIB_DEAD_TOT
Attached Calibration Hit energy in dead material.
@ ENG_POS_DigiHSTruth
Total positive Energy of this cluster.
@ N_BAD_HV_CELLS_DigiHSTruth
number of cells with bad HV
@ HAD_WEIGHT_DigiHSTruth
Hadronic weight (E_w/E_em).
@ DM_WEIGHT_DigiHSTruth
Dead-material weight (E_dm/E_ooc).
@ CENTER_Y
Cluster Centroid ( ).
@ ENG_CALIB_TILEG3
Calibration Hit energy inside the cluster scintillator.
@ TILE_CONFIDENCE_LEVEL
Confidence Level of a tile calorimeter cluster to be noise.
const_cell_iterator cell_begin() const
Iterator of the underlying CaloClusterCellLink (const version).
float etaSample(const CaloSample sampling) const
Retrieve barycenter in a given sample.
virtual double rapidity() const
The true rapidity (y) of the particle.
void setNumberCellsInSampling(CaloSampling::CaloSample samp, int ncells, bool isInnerWheel=false)
Set the number of cells in a sampling layer.
float phimax(const CaloSample sampling) const
Retrieve of cell with maximum energy in given sampling.
const ElementLink< xAOD::CaloClusterContainer_v1 > & getSisterClusterLink() const
Get a link to a 'sister' cluster (eg the non-calibrated counterpart).
flt_t eta0() const
Returns raw of cluster seed.
ncells_store_t::value_type setLowerCount(ncells_store_t::value_type cdata, UNSIGNED clower)
flt_t calE() const
Geet Energy in signal state CALIBRATED.
UNSIGNED extractLowerCount(ncells_store_t::value_type cdata) const
extract lower cell count from data
bool setEtamax(const CaloSample sampling, const float etaMax)
Set the eta of the cell with the highest energy in a particular sampling.
void clearSamplingData()
Clear the sampling data.
void setCalE(flt_t)
Set Energy for signal state CALIBRATED.
bool removeCell(const CaloCell *ptr)
Method to remove a cell to the cluster (slow!) (Beware: Kinematics not updated!).
State m_signalState
Current signal state.
const_iterator cbegin() const
void setCalM(flt_t)
Set mass for singal state CALIBRATED.
virtual FourMom_t p4() const
The full 4-momentum of the particle.
flt_t altEta() const
Get in signal state ALTCALIBRATED.
IParticle::FourMom_t FourMom_t
Definition of the 4-momentum type.
bool setLink(CaloClusterCellLinkContainer *CCCL, IProxyDict *sg=nullptr)
Set up an ElementLink to a CaloClusterCellLink object.
CaloSampling::CaloSample CaloSample
CaloRecoStatus & recoStatus()
Accesssor to CaloRecoStatus (non-const).
flt_t altM() const
Get mass in signal state ALTCALIBRATED.
unsigned nSamples() const
bool hasSampling(const CaloSample s) const
Checks if certain smapling contributes to cluster.
float etaBE(const unsigned layer) const
Get the eta in one layer of the EM Calo.
float phisize(const CaloSample sampling) const
Returns cluster size in for a given sampling.
void addCellLink(std::unique_ptr< CaloClusterCellLink > CCCL)
Set up an ElementLink to a CaloClusterCellLink object.
bool addCell(const unsigned index, const double weight)
Method to add a cell to the cluster (Beware: Kinematics not updated!).
void setBadChannelList(const CaloClusterBadChannelList &bcl)
const CaloClusterBadChannelList & badChannelList() const
flt_t calM() const
Get mass in signal state CALIBRATED.
unsigned int getClusterPhiSize() const
Get phi size from cluster size.
unsigned samplingPattern() const
Access to sampling pattern (one bit per sampling) (Method may be removed later).
void setM(flt_t)
Set Mass for the current signal state.
flt_t phi0() const
Returns raw of cluster seed.
Class providing the definition of the 4-vector interface.
IParticle()=default
TLorentzVector FourMom_t
Definition of the 4-momentum type.
std::string stime()
return the current data and time
int count(std::string s, const std::string &regx)
count how many occurances of a regx are in a string
Definition hcg.cxx:148
Definition index.py:1
bool hasSampling(const CaloSample s, const std::uint32_t samplingPattern)
Checks if certain smapling contributes to cluster.
unsigned sampVarIdx(const CaloSample s, const std::uint32_t samplingPattern)
constexpr float defaultErrorValue
the default error code to return in case of error
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
std::vector< CaloClusterBadChannelData > CaloClusterBadChannelList
DataVector< CaloCluster_v1 > CaloClusterContainer_v1
Define the cluster container as a simple DataVector.
static AUXSTORE_PRIMITIVE_SETTER_AND_GETTER(EmTauRoI_v1, uint32_t, roiWord, setRoIWord) uint32_t EmTauRoI_v1 const SG::AuxElement::Accessor< std::vector< float > > values("thrValues")
This is a convenience function for accessing the threshold pattern part of the RoI.
setEventNumber uint32_t
static const SG::AuxElement::Accessor< ElementLink< IParticleContainer > > acc("originalObjectLink")
Object used for setting/getting the dynamic decoration in question.