ATLAS Offline Software
ITrkVKalVrtFitter.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 // ITrkVKalVrtFitter.h - old VKalVrtInterface
6 //
7 // Old interface of VKalVrt.
8 // Fully implemented also in Reconstruction/VKalVrt/VKalVrtFitSvc
9 //
10 //---------------------------------------------------------------
11 #ifndef TRKVKALVRTFITTER_ITRKVKALVRTFITTER_H
12 #define TRKVKALVRTFITTER_ITRKVKALVRTFITTER_H
13 //Pphysical vectors
16 // Gaudi includes
18 //
21 
22 #include <vector>
23 #include <memory>
24 #include <span>
25 
26 class EventContext;
27 
28 namespace Trk{
29 
30 class IExtrapolator;
31 class IVKalState;
32 class Track;
33 
34 //------------------------------------------------------------------------
35  static const InterfaceID IID_ITrkVKalVrtFitter("ITrkVKalVrtFitter", 1, 0);
36 
37  class ITrkVKalVrtFitter : virtual public IAlgTool {
38  public:
39  static const InterfaceID& interfaceID() { return IID_ITrkVKalVrtFitter;}
40 //---------------------------------------------------------------------------
41 //Interface itself
42 
43  /*
44  * Context aware method
45  */
46  virtual std::unique_ptr<IVKalState> makeState(const EventContext& ctx) const = 0;
47 
48  /*
49  * For non-migrated clients which should always use the context aware method
50  */
51  virtual std::unique_ptr<IVKalState> makeState() const
52  {
53  return makeState(Gaudi::Hive::currentContext());
54  }
55 
57  const std::vector<const xAOD::TrackParticle*>& listC,
58  const std::vector<const xAOD::NeutralParticle*>& listN,
60  TLorentzVector& Momentum,
61  long int& Charge,
62  std::vector<double>& ErrorMatrix,
63  std::vector<double>& Chi2PerTrk,
64  std::vector<std::vector<double>>& TrkAtVrt,
65  double& Chi2,
66  IVKalState& istate,
67  bool ifCovV0 = false) const = 0;
68 
69  virtual StatusCode VKalVrtFit(const std::vector<const Perigee*>& list,
71  TLorentzVector& Momentum,
72  long int& Charge,
73  std::vector<double>& ErrorMatrix,
74  std::vector<double>& Chi2PerTrk,
75  std::vector<std::vector<double>>& TrkAtVrt,
76  double& Chi2,
77  IVKalState& istate,
78  bool ifCovV0 = false) const = 0;
79 
81  const std::vector<const TrackParameters*>& listC,
82  const std::vector<const NeutralParameters*>& listN,
84  TLorentzVector& Momentum,
85  long int& Charge,
86  std::vector<double>& ErrorMatrix,
87  std::vector<double>& Chi2PerTrk,
88  std::vector<std::vector<double>>& TrkAtVrt,
89  double& Chi2,
90  IVKalState& istate,
91  bool ifCovV0 = false) const = 0;
92 
93  //------
95  const TLorentzVector& Momentum,
96  const std::vector<double>& CovVrtMom,
97  const long int& Charge,
98  std::vector<double>& Perigee,
99  std::vector<double>& CovPerigee,
100  IVKalState& istate) const = 0;
101  //.........................................................................................
102 
104  std::span<const xAOD::TrackParticle* const> list,
106  IVKalState& istate) const = 0;
107 
109  const std::vector<const TrackParameters*>& list,
111  IVKalState& istate) const = 0;
112  //.........................................................................................
113 
114  virtual std::unique_ptr<Perigee>
115  CreatePerigee(const std::vector<double>& VKPerigee,
116  const std::vector<double>& VKCov,
117  IVKalState& istate) const = 0;
118 
119  virtual StatusCode VKalGetTrkWeights(std::vector<double>& Weights,
120  const IVKalState& istate) const = 0;
121 
122  virtual StatusCode VKalGetFullCov(long int, std::vector<double>& CovMtx,
123  IVKalState& istate, bool = false) const =0;
124 
125  virtual StatusCode VKalGetMassError(double& Mass, double& MassError,
126  const IVKalState& istate) const =0;
127 
128  virtual void setApproximateVertex(double,double,double,
129  IVKalState& istate) const =0;
130  virtual void setMassForConstraint(double,
131  IVKalState& istate) const =0;
132 
133  virtual void setMassForConstraint(double, std::span<const int>,
134  IVKalState& istate) const =0;
135 
136  virtual void setRobustness(int, IVKalState& istate) const =0;
137 
138  virtual void setRobustScale(double, IVKalState& istate) const =0;
139 
140  virtual void setCnstType(int, IVKalState& istate) const =0;
141 
142  virtual void setVertexForConstraint(const xAOD::Vertex &,
143  IVKalState& istate) const=0;
144 
145  virtual void setVertexForConstraint(double,double,double,
146  IVKalState& istate) const =0;
147 
148  virtual void setCovVrtForConstraint(double,double,double,
149  double,double,double,
150  IVKalState& istate) const=0;
151 
152  virtual void setMassInputParticles( const std::vector<double>&,
153  IVKalState& istate) const=0;
154 //----------------------------------------------------------------------------------------------------
155 
156  virtual double VKalGetImpact(const xAOD::TrackParticle*,
157  const Amg::Vector3D& Vertex,
158  const long int Charge,
159  std::vector<double>& Impact,
160  std::vector<double>& ImpactError,
161  IVKalState& istate) const = 0;
162 
163  virtual double VKalGetImpact(const Perigee*,
164  const Amg::Vector3D& Vertex,
165  const long int Charge,
166  std::vector<double>& Impact,
167  std::vector<double>& ImpactError,
168  IVKalState& istate) const = 0;
169 
170  virtual double VKalGetImpact(const xAOD::TrackParticle*,
171  const Amg::Vector3D& Vertex,
172  const long int Charge,
173  std::vector<double>& Impact,
174  std::vector<double>& ImpactError) const = 0;
175 
176  virtual double VKalGetImpact(const Perigee*,
177  const Amg::Vector3D& Vertex,
178  const long int Charge,
179  std::vector<double>& Impact,
180  std::vector<double>& ImpactError) const = 0;
181 
182  //----------------------------------------------------------------------------------------------------
183  };
184 
185 } //end of namespace
186 
187 #endif
TMDB::Weights
std::array< float, 7 > Weights
Definition: ITileCondToolTMDB.h:14
Trk::Vertex
Definition: Tracking/TrkEvent/VxVertex/VxVertex/Vertex.h:26
Trk::ITrkVKalVrtFitter::CreatePerigee
virtual std::unique_ptr< Perigee > CreatePerigee(const std::vector< double > &VKPerigee, const std::vector< double > &VKCov, IVKalState &istate) const =0
Trk::ITrkVKalVrtFitter::setApproximateVertex
virtual void setApproximateVertex(double, double, double, IVKalState &istate) const =0
Trk::ITrkVKalVrtFitter::VKalGetImpact
virtual double VKalGetImpact(const Perigee *, const Amg::Vector3D &Vertex, const long int Charge, std::vector< double > &Impact, std::vector< double > &ImpactError, IVKalState &istate) const =0
Trk::ITrkVKalVrtFitter::setMassForConstraint
virtual void setMassForConstraint(double, IVKalState &istate) const =0
Trk::ITrkVKalVrtFitter::setMassInputParticles
virtual void setMassInputParticles(const std::vector< double > &, IVKalState &istate) const =0
Trk::ITrkVKalVrtFitter::VKalGetImpact
virtual double VKalGetImpact(const xAOD::TrackParticle *, const Amg::Vector3D &Vertex, const long int Charge, std::vector< double > &Impact, std::vector< double > &ImpactError) const =0
Trk::ITrkVKalVrtFitter::VKalVrtFitFast
virtual StatusCode VKalVrtFitFast(const std::vector< const TrackParameters * > &list, Amg::Vector3D &Vertex, IVKalState &istate) const =0
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
Trk::ITrkVKalVrtFitter::interfaceID
static const InterfaceID & interfaceID()
Definition: ITrkVKalVrtFitter.h:39
Trk::ITrkVKalVrtFitter::VKalGetTrkWeights
virtual StatusCode VKalGetTrkWeights(std::vector< double > &Weights, const IVKalState &istate) const =0
Trk::ITrkVKalVrtFitter::setVertexForConstraint
virtual void setVertexForConstraint(double, double, double, IVKalState &istate) const =0
Trk::ITrkVKalVrtFitter
Definition: ITrkVKalVrtFitter.h:37
Trk::ErrorMatrix
Definition: ErrorMatrixCnv_p1.h:25
GeoPrimitives.h
NeutralParticleFwd.h
Trk::ITrkVKalVrtFitter::setCnstType
virtual void setCnstType(int, IVKalState &istate) const =0
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
Trk::ITrkVKalVrtFitter::makeState
virtual std::unique_ptr< IVKalState > makeState(const EventContext &ctx) const =0
Trk::ITrkVKalVrtFitter::VKalGetMassError
virtual StatusCode VKalGetMassError(double &Mass, double &MassError, const IVKalState &istate) const =0
Trk::ITrkVKalVrtFitter::VKalVrtFit
virtual StatusCode VKalVrtFit(const std::vector< const TrackParameters * > &listC, const std::vector< const NeutralParameters * > &listN, Amg::Vector3D &Vertex, TLorentzVector &Momentum, long int &Charge, std::vector< double > &ErrorMatrix, std::vector< double > &Chi2PerTrk, std::vector< std::vector< double >> &TrkAtVrt, double &Chi2, IVKalState &istate, bool ifCovV0=false) const =0
Trk::ITrkVKalVrtFitter::VKalGetFullCov
virtual StatusCode VKalGetFullCov(long int, std::vector< double > &CovMtx, IVKalState &istate, bool=false) const =0
Trk::ITrkVKalVrtFitter::VKalGetImpact
virtual double VKalGetImpact(const xAOD::TrackParticle *, const Amg::Vector3D &Vertex, const long int Charge, std::vector< double > &Impact, std::vector< double > &ImpactError, IVKalState &istate) const =0
EventPrimitives.h
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::ITrkVKalVrtFitter::setRobustness
virtual void setRobustness(int, IVKalState &istate) const =0
Trk::ITrkVKalVrtFitter::VKalVrtFit
virtual StatusCode VKalVrtFit(const std::vector< const xAOD::TrackParticle * > &listC, const std::vector< const xAOD::NeutralParticle * > &listN, Amg::Vector3D &Vertex, TLorentzVector &Momentum, long int &Charge, std::vector< double > &ErrorMatrix, std::vector< double > &Chi2PerTrk, std::vector< std::vector< double >> &TrkAtVrt, double &Chi2, IVKalState &istate, bool ifCovV0=false) const =0
Trk::ITrkVKalVrtFitter::setMassForConstraint
virtual void setMassForConstraint(double, std::span< const int >, IVKalState &istate) const =0
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::ITrkVKalVrtFitter::VKalGetImpact
virtual double VKalGetImpact(const Perigee *, const Amg::Vector3D &Vertex, const long int Charge, std::vector< double > &Impact, std::vector< double > &ImpactError) const =0
Trk::ITrkVKalVrtFitter::makeState
virtual std::unique_ptr< IVKalState > makeState() const
Definition: ITrkVKalVrtFitter.h:51
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
Trk::IVKalState
Definition: IVKalState.h:21
python.KeyStore.list
def list(self, key=None)
Definition: KeyStore.py:318
TrackParticleFwd.h
Trk::ITrkVKalVrtFitter::VKalVrtFitFast
virtual StatusCode VKalVrtFitFast(std::span< const xAOD::TrackParticle *const > list, Amg::Vector3D &Vertex, IVKalState &istate) const =0
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
Trk::ITrkVKalVrtFitter::setVertexForConstraint
virtual void setVertexForConstraint(const xAOD::Vertex &, IVKalState &istate) const =0
Trk::ITrkVKalVrtFitter::VKalVrtFit
virtual StatusCode VKalVrtFit(const std::vector< const Perigee * > &list, Amg::Vector3D &Vertex, TLorentzVector &Momentum, long int &Charge, std::vector< double > &ErrorMatrix, std::vector< double > &Chi2PerTrk, std::vector< std::vector< double >> &TrkAtVrt, double &Chi2, IVKalState &istate, bool ifCovV0=false) const =0
Trk::ITrkVKalVrtFitter::VKalVrtCvtTool
virtual StatusCode VKalVrtCvtTool(const Amg::Vector3D &Vertex, const TLorentzVector &Momentum, const std::vector< double > &CovVrtMom, const long int &Charge, std::vector< double > &Perigee, std::vector< double > &CovPerigee, IVKalState &istate) const =0
Trk::ITrkVKalVrtFitter::setCovVrtForConstraint
virtual void setCovVrtForConstraint(double, double, double, double, double, double, IVKalState &istate) const =0
Trk::ITrkVKalVrtFitter::setRobustScale
virtual void setRobustScale(double, IVKalState &istate) const =0