ATLAS Offline Software
CaloClusterVariables.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TAURECTOOLS_CALOCLUSTERVARIABLES_H
6 #define TAURECTOOLS_CALOCLUSTERVARIABLES_H
7 
8 #include "xAODTau/TauJet.h"
9 #include "CxxUtils/fpcompare.h"
10 
11 #include "TLorentzVector.h"
12 #include <vector>
13 
14 
17 public:
18 
19  static const double DEFAULT;
20 
22 
24  }
25 
26  bool update(const xAOD::TauJet& pTau);
27 
28  // ID Variables
29  unsigned int numConstituents() const { return (unsigned int) m_numConstit; }
30 
31  double totalMass() const { return m_totMass; }
32  double effectiveMass() const { return m_effMass; }
33 
34  double effectiveNumConstituents() const { return m_effNumConstit; }
36 
37  double averageEffectiveRadius() const { return m_aveEffRadius; }
38  double averageRadius() const { return m_aveRadius; }
39 
40  // Energy Variables
41  double totalEnergy() { return m_totEnergy; }
42  double effectiveEnergy() { return m_effEnergy; }
43 
44 private:
48  double m_aveRadius;
50  double m_totMass;
51  double m_effMass;
52  double m_totEnergy;
53  double m_effEnergy;
54 
55  // Calculate the geometrical center of the tau constituents
56  TLorentzVector calculateTauCentroid(int nConst, const std::vector<TLorentzVector>& clusterP4Vector) const;
57 };
58 
59 //-------------------------------------------------------------------------
61 //-------------------------------------------------------------------------
63  bool operator()(const TLorentzVector& left, const TLorentzVector& right) const {
64  //volatile double leftE = left.e();
65  //volatile double rightE = right.e();
66  return CxxUtils::fpcompare::greater (left.E(),right.E());
67  }
68 };
69 
71  bool operator()(const xAOD::CaloCluster* left, const xAOD::CaloCluster* right) const {
72  //volatile double leftE = left.e();
73  //volatile double rightE = right.e();
74  return CxxUtils::fpcompare::greater (left->e(),right->e());
75  }
76 };
77 
78 #endif // TAURECTOOLS_CALOCLUSTERVARIABLES_H
CaloClusterVariables::effectiveNumConstituents
double effectiveNumConstituents() const
Definition: CaloClusterVariables.h:34
CaloClusterVariables::m_effEnergy
double m_effEnergy
Definition: CaloClusterVariables.h:53
CaloClusterVariables
Provide calculations of cluster based variables using the clusters associated to the jet seed of the ...
Definition: CaloClusterVariables.h:16
CaloClusterVariables::CaloClusterVariables
CaloClusterVariables()
Definition: CaloClusterVariables.cxx:18
CaloClusterVariables::m_aveRadius
double m_aveRadius
Definition: CaloClusterVariables.h:48
CaloClusterVariables::m_totEnergy
double m_totEnergy
Definition: CaloClusterVariables.h:52
CaloClusterVariables::numConstituents
unsigned int numConstituents() const
Definition: CaloClusterVariables.h:29
CaloClusterVariables::DEFAULT
static const double DEFAULT
Definition: CaloClusterVariables.h:19
CaloClusterVariables::averageRadius
double averageRadius() const
Definition: CaloClusterVariables.h:38
CxxUtils::fpcompare::greater
bool greater(double a, double b)
Compare two FP numbers, working around x87 precision issues.
Definition: fpcompare.h:140
DefCaloClusterCompare::operator()
bool operator()(const xAOD::CaloCluster *left, const xAOD::CaloCluster *right) const
Definition: CaloClusterVariables.h:71
DefCaloClusterCompare
Definition: CaloClusterVariables.h:70
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
CaloClusterVariables::calculateTauCentroid
TLorentzVector calculateTauCentroid(int nConst, const std::vector< TLorentzVector > &clusterP4Vector) const
Definition: CaloClusterVariables.cxx:142
CaloClusterVariables::effectiveNumConstituents_int
int effectiveNumConstituents_int() const
Definition: CaloClusterVariables.h:35
CaloClusterVariables::m_totMass
double m_totMass
Definition: CaloClusterVariables.h:50
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
fpcompare.h
Workaround x86 precision issues for FP inequality comparisons.
CaloClusterVariables::effectiveEnergy
double effectiveEnergy()
Definition: CaloClusterVariables.h:42
CaloClusterVariables::averageEffectiveRadius
double averageEffectiveRadius() const
Definition: CaloClusterVariables.h:37
CaloClusterVariables::~CaloClusterVariables
~CaloClusterVariables()
Definition: CaloClusterVariables.h:23
CaloClusterVariables::effectiveMass
double effectiveMass() const
Definition: CaloClusterVariables.h:32
CaloClusterCompare::operator()
bool operator()(const TLorentzVector &left, const TLorentzVector &right) const
Definition: CaloClusterVariables.h:63
CaloClusterVariables::totalMass
double totalMass() const
Definition: CaloClusterVariables.h:31
CaloClusterVariables::m_numConstit
int m_numConstit
Definition: CaloClusterVariables.h:45
TauJet.h
CaloClusterVariables::m_effNumConstit
double m_effNumConstit
Definition: CaloClusterVariables.h:47
CaloClusterVariables::m_effNumConstit_int
int m_effNumConstit_int
Definition: CaloClusterVariables.h:46
CaloClusterCompare
Descending order by energy.
Definition: CaloClusterVariables.h:62
CaloClusterVariables::totalEnergy
double totalEnergy()
Definition: CaloClusterVariables.h:41
CaloClusterVariables::update
bool update(const xAOD::TauJet &pTau)
update the internal variables for the given tau
Definition: CaloClusterVariables.cxx:34
xAOD::CaloCluster_v1::e
virtual double e() const
The total energy of the particle.
Definition: CaloCluster_v1.cxx:265
CaloClusterVariables::m_effMass
double m_effMass
Definition: CaloClusterVariables.h:51
CaloClusterVariables::m_aveEffRadius
double m_aveEffRadius
Definition: CaloClusterVariables.h:49