ATLAS Offline Software
PFMatchPositions.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 /*
6  * PFMatchPositions.h
7  *
8  * Created on: 25.03.2014
9  * Author: tlodd
10  */
11 
12 #ifndef PFMATCHPOSITION_H_
13 #define PFMATCHPOSITION_H_
14 
15 #include <vector>
16 
17 #include "eflowRec/eflowUtil.h"
19 
20 namespace PFMatch {
21 /* Position classes */
22 
23 class EtaPhi: public eflowEtaPhiPosition {
24 public:
25  EtaPhi(const eflowEtaPhiPosition& etaphi): eflowEtaPhiPosition(etaphi) { }
26  EtaPhi() { }
27  virtual ~EtaPhi() { }
28 };
29 
31 public:
33  virtual ~AllLayersEtaPhi() {
34  unsigned int nLay = m_etaphiInLayer.size();
35  for(unsigned int iLay = 0; iLay < nLay; ++iLay) { delete m_etaphiInLayer[iLay]; }
36  }
37 
38  std::vector<EtaPhi*> m_etaphiInLayer;
39 };
40 
41 class EtaPhiWithVariance: public EtaPhi {
42 public:
43  EtaPhiWithVariance(eflowEtaPhiPosition etaphi, double etaVar, double phiVar):
44  EtaPhi(etaphi), m_etaVariance(etaVar), m_phiVariance(phiVar) { }
46  virtual ~EtaPhiWithVariance() { }
47 
48  double m_etaVariance;
49  double m_phiVariance;
50 };
51 
52 
53 /* Cluster position provider classes */
54 
56 public:
59 
60  EtaPhi getPosition(ICluster* cluster) const;
61 };
62 
63 class ClusterGeometricalCenterProvider: public ClusterPositionProvider<EtaPhiWithVariance> {
64 public:
67 
68 private:
69  EtaPhiWithVariance getPosition(ICluster* cluster) const;
70 
71  static const double m_etaPhiLowerLimit;
72 };
73 
74 /* Track position provider classes */
75 
77 public:
78  TrackEtaPhiInFixedLayersProvider(LayerType barrelLayer, LayerType endcapLayer, LayerType fcalLayer):
79  m_barrelLayer(barrelLayer), m_endcapLayer(endcapLayer), m_fcalLayer(fcalLayer) { }
81 
83 
84 private:
88 };
89 
90 
91 /* The position provider factories */
92 
94 public:
95  static std::unique_ptr<IPositionProvider> Get(const std::string& positionType) {
96  if (positionType == "EM1EtaPhi") {
97  return std::make_unique<TrackEtaPhiInFixedLayersProvider>(TrackLayer::EMB1, TrackLayer::EME1, TrackLayer::FCAL0);
98  } else if (positionType == "EM2EtaPhi") {
99  return std::make_unique<TrackEtaPhiInFixedLayersProvider>(TrackLayer::EMB2, TrackLayer::EME2, TrackLayer::FCAL0);
100  } else {
101  std::cerr << "TrackPositionFactory\tERROR\tInvalid track position type: \"" << positionType << "\"" << std::endl;
102  assert(false);
103  return 0;
104  }
105  }
106 };
107 
109 public:
110  static std::unique_ptr<IPositionProvider> Get(const std::string& positionType) {
111  if (positionType == "PlainEtaPhi") {
112  return std::make_unique<ClusterPlainEtaPhiProvider>();
113  } else if (positionType == "GeomCenterEtaPhi") {
114  return std::make_unique<ClusterGeometricalCenterProvider>();
115  } else {
116  std::cerr << "ClusterPositionFactory\tERROR\tInvalid cluster position type: \"" << positionType << "\"" << std::endl;
117  assert(false);
118  return 0;
119  }
120  }
121 };
122 
123 }
124 
125 #endif /* PFMATCHPOSITION_H_ */
PFMatch::ClusterPlainEtaPhiProvider::getPosition
EtaPhi getPosition(ICluster *cluster) const
Definition: PFMatchPositions.cxx:36
PFMatch::TrackEtaPhiInFixedLayersProvider::m_fcalLayer
LayerType m_fcalLayer
Definition: PFMatchPositions.h:87
PFMatchInterfaces.h
eflowUtil.h
PFMatch::TrackEtaPhiInFixedLayersProvider::~TrackEtaPhiInFixedLayersProvider
virtual ~TrackEtaPhiInFixedLayersProvider()
Definition: PFMatchPositions.h:80
constants.EMB1
int EMB1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:53
PFMatch::ClusterPositionFactory
Definition: PFMatchPositions.h:108
PFMatch::ClusterPositionProvider
Definition: PFMatchInterfaces.h:96
PFMatch::AllLayersEtaPhi::m_etaphiInLayer
std::vector< EtaPhi * > m_etaphiInLayer
Definition: PFMatchPositions.h:38
PFMatch::ClusterPlainEtaPhiProvider::~ClusterPlainEtaPhiProvider
virtual ~ClusterPlainEtaPhiProvider()
Definition: PFMatchPositions.h:58
PFMatch::ClusterGeometricalCenterProvider::ClusterGeometricalCenterProvider
ClusterGeometricalCenterProvider()
Definition: PFMatchPositions.h:65
PFMatch::EtaPhi
Definition: PFMatchPositions.h:23
PFMatch::TrackPositionProvider
Definition: PFMatchInterfaces.h:99
eflowEtaPhiPosition
Definition: eflowUtil.h:85
PFMatch::AllLayersEtaPhi::AllLayersEtaPhi
AllLayersEtaPhi()
Definition: PFMatchPositions.h:32
PFMatch::ClusterPlainEtaPhiProvider::ClusterPlainEtaPhiProvider
ClusterPlainEtaPhiProvider()
Definition: PFMatchPositions.h:57
PFMatch::ClusterGeometricalCenterProvider::m_etaPhiLowerLimit
static const double m_etaPhiLowerLimit
Definition: PFMatchPositions.h:71
PFMatch::TrackPositionFactory::Get
static std::unique_ptr< IPositionProvider > Get(const std::string &positionType)
Definition: PFMatchPositions.h:95
PFMatch::EtaPhiWithVariance::~EtaPhiWithVariance
virtual ~EtaPhiWithVariance()
Definition: PFMatchPositions.h:46
PFMatch::EtaPhi::EtaPhi
EtaPhi()
Definition: PFMatchPositions.h:26
PFMatch::TrackEtaPhiInFixedLayersProvider::TrackEtaPhiInFixedLayersProvider
TrackEtaPhiInFixedLayersProvider(LayerType barrelLayer, LayerType endcapLayer, LayerType fcalLayer)
Definition: PFMatchPositions.h:78
PFMatch::ICluster
Definition: PFMatchInterfaces.h:37
PFMatch::ClusterGeometricalCenterProvider
Definition: PFMatchPositions.h:63
PFMatch::EtaPhiWithVariance
Definition: PFMatchPositions.h:41
PFMatch::TrackEtaPhiInFixedLayersProvider::getPosition
EtaPhi getPosition(ITrack *track) const
Definition: PFMatchPositions.cxx:22
PFMatch::ITrack
Definition: PFMatchInterfaces.h:28
constants.EMB2
int EMB2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:54
constants.EME1
int EME1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:55
PFMatch::TrackPositionFactory
Definition: PFMatchPositions.h:93
PFMatch::TrackEtaPhiInFixedLayersProvider::m_barrelLayer
LayerType m_barrelLayer
Definition: PFMatchPositions.h:85
PFMatch::ClusterGeometricalCenterProvider::getPosition
EtaPhiWithVariance getPosition(ICluster *cluster) const
Definition: PFMatchPositions.cxx:43
PFMatch::ClusterPositionFactory::Get
static std::unique_ptr< IPositionProvider > Get(const std::string &positionType)
Definition: PFMatchPositions.h:110
PFMatch
Definition: PFMatchDistance.h:17
PFMatch::ClusterPlainEtaPhiProvider
Definition: PFMatchPositions.h:55
PFMatch::EtaPhiWithVariance::m_phiVariance
double m_phiVariance
Definition: PFMatchPositions.h:49
PFMatch::AllLayersEtaPhi::~AllLayersEtaPhi
virtual ~AllLayersEtaPhi()
Definition: PFMatchPositions.h:33
PFMatch::TrackEtaPhiInFixedLayersProvider::m_endcapLayer
LayerType m_endcapLayer
Definition: PFMatchPositions.h:86
eflowCalo::LAYER
LAYER
Definition: eflowCaloRegions.h:36
PFMatch::EtaPhiWithVariance::EtaPhiWithVariance
EtaPhiWithVariance(eflowEtaPhiPosition etaphi, double etaVar, double phiVar)
Definition: PFMatchPositions.h:43
PFMatch::TrackEtaPhiInFixedLayersProvider
Definition: PFMatchPositions.h:76
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
PFMatch::AllLayersEtaPhi
Definition: PFMatchPositions.h:30
PFMatch::ClusterGeometricalCenterProvider::~ClusterGeometricalCenterProvider
virtual ~ClusterGeometricalCenterProvider()
Definition: PFMatchPositions.h:66
PFMatch::EtaPhi::~EtaPhi
virtual ~EtaPhi()
Definition: PFMatchPositions.h:27
PFMatch::EtaPhiWithVariance::m_etaVariance
double m_etaVariance
Definition: PFMatchPositions.h:48
CaloCell_ID_FCS::FCAL0
@ FCAL0
Definition: FastCaloSim_CaloCell_ID.h:40
PFMatch::EtaPhi::EtaPhi
EtaPhi(const eflowEtaPhiPosition &etaphi)
Definition: PFMatchPositions.h:25
PFMatch::EtaPhiWithVariance::EtaPhiWithVariance
EtaPhiWithVariance()
Definition: PFMatchPositions.h:45
constants.EME2
int EME2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:56