ATLAS Offline Software
D3PDMaker/TileD3PDMaker/src/ITrackTools.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 /*
6  * File: ITrackTools.h
7  * Author: Marco van Woerden <mvanwoer@cern.ch>, Archil Durglishvili <archil.durglishvili@cern.ch>
8  * Description: Track tools interface.
9  *
10  * Created in February 2013
11  * updated in November 2014
12  */
13 
14 #ifndef ITrackTools_H
15 #define ITrackTools_H
16 //C++
17 #include <vector>
18 #include <string>
19 #include <algorithm>
20 #include <math.h>
21 #include <map>
22 
27 
28 //Base algorithm
31 #include "GaudiKernel/AlgTool.h"
32 #include "GaudiKernel/ISvcLocator.h"
33 #include "GaudiKernel/IToolSvc.h"
34 #include "GaudiKernel/ServiceHandle.h"
35 #include "GaudiKernel/StatusCode.h"
36 #include "GaudiKernel/ToolHandle.h"
37 #include "GaudiKernel/MsgStream.h"
39 
43 
45 #include "CaloEvent/CaloCell.h"
46 #include "TileEvent/TileCell.h"
50 #include "Identifier/Identifier.h"
52 
53 
54 // xAOD tracks and clusters
59 
64 
65 
70 
71 
72 
73 namespace Trk
74 {
75  class IParticleCaloExtensionTool;
76  class TrackParametersIdentificationHelper;
77 }
78 
79 namespace Rec
80 { class IParticleCaloCellAssociationTool; }
81 
82 
83 //Type definitions
84 typedef CaloCell CELL;
92 
93 
94 namespace KinematicUtils {
95  inline
96  void EnsurePhiInMinusPiToPi(double& phi) {
97  phi = fmod(phi, (2*M_PI));
98  if (phi < -M_PI) phi += 2*M_PI;
99  if (phi > M_PI) phi -= 2*M_PI;
100  return;
101  }
102 
103  inline
104  double deltaPhi(double phi1, double phi2) {
107  double dPhi=phi1-phi2;
108  if (dPhi>M_PI) dPhi=2*M_PI-dPhi;
109  else if(dPhi<-M_PI) dPhi=2*M_PI+dPhi;
110  return dPhi;
111  }
112 
113  inline
114  double deltaR(double eta1, double eta2, double phi1, double phi2) {
115  double dPhi=KinematicUtils::deltaPhi(phi1,phi2);
116  double dEta=std::fabs(eta1-eta2);
117  double dR=std::sqrt(std::pow(dEta,2)+std::pow(dPhi,2));
118  return dR;
119  }
120 }
121 
122 
123 static const InterfaceID IID_ITrackTools("ITrackTools", 1, 0);
124 
125 //========================================
126 class ITrackTools:virtual public IAlgTool{
127 //========================================
128  public:
129 
130  virtual ~ITrackTools(){}
131  static const InterfaceID& interfaceID(){ return IID_ITrackTools; };
132 
133  // METHOD FOR FILTERING ALGORITHM
135  const CaloCellContainer* input,
137  double cone,
138  bool includelar) = 0;
139  virtual double getPathInsideCell(const TRACK *track, const CaloCell *cell) = 0;
140  virtual double getPath(const CaloCell* cell, const Trk::TrackParameters *entrance, const Trk::TrackParameters *exit) = 0;
141  virtual std::vector< double > getXYZEtaPhiInCellSampling(const TRACK* track, const CaloCell *cell) = 0;
142  virtual std::vector< double > getXYZEtaPhiInCellSampling(const TRACK* track, CaloSampling::CaloSample sampling) = 0;
143  virtual std::unique_ptr<const Trk::TrackParameters> getTrackInCellSampling(const TRACK* track, CaloSampling::CaloSample sampling) = 0;
144  virtual std::vector< std::vector<double> > getXYZEtaPhiPerLayer(const TRACK* track) = 0;
145  virtual std::vector< std::vector<double> > getXYZEtaPhiPerSampling(const TRACK* track) = 0;
146  virtual int retrieveIndex(int sampling, float eta) = 0;
147 
149  const std::vector<xAOD::Iso::IsolationType>& cones ) = 0;
150 /*THIS IS GOING TO BE USED
151  virtual bool caloTopoClusterIsolation( xAOD::CaloIsolation& result, const xAOD::TrackParticle& tp,
152  const std::vector<xAOD::Iso::IsolationType>& cones, xAOD::CaloIso::SubtractionStrategy strategy) = 0;
153  virtual bool caloCellIsolation( xAOD::CaloIsolation& result, const xAOD::TrackParticle& tp,
154  const std::vector<xAOD::Iso::IsolationType>& cones, xAOD::CaloIso::SubtractionStrategy strategy) = 0;
155  virtual bool neutralEflowIsolation( xAOD::CaloIsolation& result, const xAOD::TrackParticle& tp,
156  const std::vector<xAOD::Iso::IsolationType>& cones, xAOD::CaloIso::SubtractionStrategy strategy) = 0;
157 */
158 };
159 #endif //ITrackTools_H
xAOD::TrackParticleAuxContainer_v5
Temporary container used until we have I/O for AuxStoreInternal.
Definition: TrackParticleAuxContainer_v5.h:35
get_generator_info.result
result
Definition: get_generator_info.py:21
CLUSTER
xAOD::CaloCluster CLUSTER
Definition: D3PDMaker/TileD3PDMaker/src/ITrackTools.h:89
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
TrackParameters.h
ParticleGun_SamplingFraction.eta2
eta2
Definition: ParticleGun_SamplingFraction.py:96
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
ConstDataVector.h
DataVector adapter that acts like it holds const pointers.
ITrackTools::getCellsWithinConeAroundTrack
virtual void getCellsWithinConeAroundTrack(const xAOD::TrackParticle *track, const CaloCellContainer *input, ConstDataVector< CaloCellContainer > *output, double cone, bool includelar)=0
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
TRACKCONTAINER
xAOD::TrackParticleContainer TRACKCONTAINER
Definition: D3PDMaker/TileD3PDMaker/src/ITrackTools.h:87
ITrackTools::getTrackInCellSampling
virtual std::unique_ptr< const Trk::TrackParameters > getTrackInCellSampling(const TRACK *track, CaloSampling::CaloSample sampling)=0
M_PI
#define M_PI
Definition: ActiveFraction.h:11
ParticleTest.tp
tp
Definition: ParticleTest.py:25
CaloCell.h
xAOD::eta1
setEt setPhi setE277 setWeta2 eta1
Definition: TrigEMCluster_v1.cxx:41
ITrackTools::interfaceID
static const InterfaceID & interfaceID()
Definition: D3PDMaker/TileD3PDMaker/src/ITrackTools.h:131
CLUSTERCONTAINER
xAOD::CaloClusterContainer CLUSTERCONTAINER
Definition: D3PDMaker/TileD3PDMaker/src/ITrackTools.h:90
ITrackTools::~ITrackTools
virtual ~ITrackTools()
Definition: D3PDMaker/TileD3PDMaker/src/ITrackTools.h:130
CaloClusterAuxContainer.h
INeutralEFlowIsolationTool.h
ICaloTopoClusterIsolationTool.h
KinematicUtils
Definition: D3PDMaker/TileD3PDMaker/src/ITrackTools.h:94
AthAlgorithm.h
GeoModelExperiment.h
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
IRDBAccessSvc.h
Definition of the abstract IRDBAccessSvc interface.
TileHWID.h
TrackParametersIdHelper.h
TrackParticleAuxContainer.h
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
Rec
Name: MuonSpContainer.h Package : offline/Reconstruction/MuonIdentification/muonEvent.
Definition: FakeTrackBuilder.h:10
TauGNNUtils::Variables::Track::dPhi
bool dPhi(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:530
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
AthAlgTool.h
ICaloCellIsolationTool.h
TileCell.h
CaloPhiRange.h
CaloPhiRange class declaration.
Trk::ParametersBase
Definition: ParametersBase.h:55
ITrackTools::retrieveIndex
virtual int retrieveIndex(int sampling, float eta)=0
ITrackTools::getXYZEtaPhiInCellSampling
virtual std::vector< double > getXYZEtaPhiInCellSampling(const TRACK *track, const CaloCell *cell)=0
IParticleCaloCellAssociationTool.h
CLUSTERAUXCONTAINER
xAOD::CaloClusterAuxContainer CLUSTERAUXCONTAINER
Definition: D3PDMaker/TileD3PDMaker/src/ITrackTools.h:91
DataVector< xAOD::TrackParticle_v1 >
CELLCONTAINER
CaloCellContainer CELLCONTAINER
Definition: D3PDMaker/TileD3PDMaker/src/ITrackTools.h:85
calibdata.exit
exit
Definition: calibdata.py:236
TRACKAUXCONTAINER
xAOD::TrackParticleAuxContainer TRACKAUXCONTAINER
Definition: D3PDMaker/TileD3PDMaker/src/ITrackTools.h:88
KinematicUtils::deltaPhi
double deltaPhi(double phi1, double phi2)
Definition: D3PDMaker/TileD3PDMaker/src/ITrackTools.h:104
xAOD::TrackIsolation
Definition: IsolationCommon.h:33
merge.output
output
Definition: merge.py:17
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
HWIdentifier.h
xAOD::CaloClusterAuxContainer_v2
Auxiliary container for calorimeter cluster containers.
Definition: CaloClusterAuxContainer_v2.h:30
ITrackTools::trackIsolation
virtual bool trackIsolation(xAOD::TrackIsolation &result, const xAOD::TrackParticle &tp, const std::vector< xAOD::Iso::IsolationType > &cones)=0
KinematicUtils::EnsurePhiInMinusPiToPi
void EnsurePhiInMinusPiToPi(double &phi)
Definition: D3PDMaker/TileD3PDMaker/src/ITrackTools.h:96
ITrackTools::getXYZEtaPhiInCellSampling
virtual std::vector< double > getXYZEtaPhiInCellSampling(const TRACK *track, CaloSampling::CaloSample sampling)=0
ITrackTools::getXYZEtaPhiPerSampling
virtual std::vector< std::vector< double > > getXYZEtaPhiPerSampling(const TRACK *track)=0
CaloCellContainer.h
CaloCellContainer
Container class for CaloCell.
Definition: CaloCellContainer.h:55
ITrackTools::getPath
virtual double getPath(const CaloCell *cell, const Trk::TrackParameters *entrance, const Trk::TrackParameters *exit)=0
ITrackTools::getPathInsideCell
virtual double getPathInsideCell(const TRACK *track, const CaloCell *cell)=0
IParticleCaloExtensionTool.h
CELL
CaloCell CELL
Definition: D3PDMaker/TileD3PDMaker/src/ITrackTools.h:84
ITrackIsolationTool.h
IRDBRecord.h
Definition of the abstract IRDBRecord interface.
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
ConstDataVector< CaloCellContainer >
ITrackTools
Definition: D3PDMaker/TileD3PDMaker/src/ITrackTools.h:126
CaloClusterContainer.h
TRACK
xAOD::TrackParticle TRACK
Definition: D3PDMaker/TileD3PDMaker/src/ITrackTools.h:86
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
KinematicUtils::deltaR
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: D3PDMaker/TileD3PDMaker/src/ITrackTools.h:114
IRDBRecordset.h
Definition of the abstract IRDBRecordset interface.
TauGNNUtils::Variables::Track::dEta
bool dEta(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:525
IGeoModelSvc.h
ITrackTools::getXYZEtaPhiPerLayer
virtual std::vector< std::vector< double > > getXYZEtaPhiPerLayer(const TRACK *track)=0
TrackParticleContainer.h