ATLAS Offline Software
Public Member Functions | Static Public Member Functions | List of all members
Trk::vkalPropagator Class Reference

#include <Propagator.h>

Collaboration diagram for Trk::vkalPropagator:

Public Member Functions

 vkalPropagator ()
 
 ~vkalPropagator ()=default
 

Static Public Member Functions

static void Propagate (long int TrkID, long int Charge, double *ParOld, double *CovOld, double *RefStart, double *RefEnd, double *ParNew, double *CovNew, VKalVrtControlBase *FitControl=0)
 
static bool checkTarget (double *RefEnd)
 
static void Propagate (VKTrack *trk, double *RefStart, double *RefEnd, double *ParNew, double *CovNew, VKalVrtControlBase *FitControl=0)
 

Detailed Description

Definition at line 54 of file Propagator.h.

Constructor & Destructor Documentation

◆ vkalPropagator()

Trk::vkalPropagator::vkalPropagator ( )
default

◆ ~vkalPropagator()

Trk::vkalPropagator::~vkalPropagator ( )
default

Member Function Documentation

◆ checkTarget()

bool Trk::vkalPropagator::checkTarget ( double *  RefEnd)
static

Definition at line 108 of file Propagator.cxx.

108  {
109  // if ( m_typePropagator == 3 ) return vk_objectProp->checkTarget(RefNew);
110  return true;
111 }

◆ Propagate() [1/2]

void Trk::vkalPropagator::Propagate ( long int  TrkID,
long int  Charge,
double *  ParOld,
double *  CovOld,
double *  RefStart,
double *  RefEnd,
double *  ParNew,
double *  CovNew,
VKalVrtControlBase FitControl = 0 
)
static

Definition at line 127 of file Propagator.cxx.

130  {
131  if (RefOld[0] == RefNew[0] && RefOld[1] == RefNew[1] &&
132  RefOld[2] == RefNew[2]) {
133  std::copy(ParOld, ParOld + 5, ParNew);
134  if (CovOld != nullptr) {
135  std::copy(CovOld, CovOld + 15, CovNew);
136  }
137  return;
138  }
139  //
140  //-- Propagation itself
141  //
142  if (FitControl == nullptr ||
143  (FitControl->vk_objProp == nullptr &&
144  FitControl->vk_funcProp ==
145  nullptr)) { // No external propagators, use internal ones
146  // std::cout<<" Core: use INTERNAL propagator. Charge="<<Charge<<'\n';
147  if (vkalUseRKMPropagator) {
148  PropagateRKM(Charge, ParOld, CovOld, RefOld, RefNew, ParNew, CovNew,
149  FitControl);
150  } else {
151  PropagateSTD(TrkID, Charge, ParOld, CovOld, RefOld, RefNew, ParNew,
152  CovNew, FitControl);
153  }
154  return;
155  }
156 
157  if (FitControl->vk_objProp) {
158  // std::cout<<" Core: use EXTERNAL propagator. Charge="<<Charge<<'\n';
159  if (Charge == 0) {
160  PropagateSTD(TrkID, Charge, ParOld, CovOld, RefOld, RefNew, ParNew,
161  CovNew, FitControl);
162  } else {
163  FitControl->vk_objProp->Propagate(TrkID, Charge, ParOld, CovOld, RefOld,
164  RefNew, ParNew, CovNew,
165  *FitControl->vk_istate);
166  if (ParNew[0] == 0. && ParNew[1] == 0. && ParNew[2] == 0. &&
167  ParNew[3] == 0. && ParNew[4] == 0.) {
168  PropagateRKM(Charge, ParOld, CovOld, RefOld, RefNew, ParNew, CovNew,
169  FitControl);
170  }
171  }
172  return;
173  }
174  //-------------------
175  if (FitControl->vk_funcProp) {
176  FitControl->vk_funcProp(TrkID, Charge, ParOld, CovOld, RefOld, RefNew,
177  ParNew, CovNew);
178  return;
179  }
180  //-------------------
181 }

◆ Propagate() [2/2]

void Trk::vkalPropagator::Propagate ( VKTrack trk,
double *  RefStart,
double *  RefEnd,
double *  ParNew,
double *  CovNew,
VKalVrtControlBase FitControl = 0 
)
static

Definition at line 183 of file Propagator.cxx.

185  {
186  if (RefOld[0] == RefNew[0] && RefOld[1] == RefNew[1] &&
187  RefOld[2] == RefNew[2]) {
188  std::copy(trk->refPerig, trk->refPerig + 5, ParNew);
189  std::copy(trk->refCovar, trk->refCovar + 15, CovNew);
190  return;
191  }
192  long int TrkID = trk->Id;
193  long int Charge = trk->Charge;
194  //
195  //-- Propagation itself
196  //
197  if (FitControl == nullptr ||
198  (FitControl->vk_objProp == nullptr &&
199  FitControl->vk_funcProp ==
200  nullptr)) { // No external propagators, use internal ones
201  if (vkalUseRKMPropagator) {
202  PropagateRKM(Charge, trk->refPerig, trk->refCovar, RefOld, RefNew, ParNew,
203  CovNew, FitControl);
204  } else {
205  PropagateSTD(TrkID, Charge, trk->refPerig, trk->refCovar, RefOld, RefNew,
206  ParNew, CovNew, FitControl);
207  }
208  return;
209  }
210 
211  if (FitControl->vk_objProp) {
212  if (Charge == 0) {
213  PropagateSTD(TrkID, Charge, trk->refPerig, trk->refCovar, RefOld, RefNew,
214  ParNew, CovNew, FitControl);
215  } else {
216  FitControl->vk_objProp->Propagate(TrkID, Charge, trk->refPerig,
217  trk->refCovar, RefOld, RefNew, ParNew,
218  CovNew, *FitControl->vk_istate);
219  if (ParNew[0] == 0. && ParNew[1] == 0. && ParNew[2] == 0. &&
220  ParNew[3] == 0. && ParNew[4] == 0.) {
221  PropagateRKM(Charge, trk->refPerig, trk->refCovar, RefOld, RefNew,
222  ParNew, CovNew, FitControl);
223  }
224  }
225  return;
226  }
227  //-------------------
228  if (FitControl->vk_funcProp) {
229  FitControl->vk_funcProp(TrkID, Charge, trk->refPerig, trk->refCovar, RefOld,
230  RefNew, ParNew, CovNew);
231  return;
232  }
233 }

The documentation for this class was generated from the following files:
Trk::basePropagator::Propagate
virtual void Propagate(long int TrkID, long int Charge, double *ParOld, double *CovOld, double *RefStart, double *RefEnd, double *ParNew, double *CovNew, IVKalState &istate) const =0
vkalUseRKMPropagator
#define vkalUseRKMPropagator
Definition: Propagator.h:18
Trk::VKTrack::Id
long int Id
Definition: TrkVKalVrtCoreBase.h:72
Trk::VKTrack::Charge
int Charge
Definition: TrkVKalVrtCoreBase.h:73
Trk::VKTrack::refPerig
double refPerig[5]
Definition: TrkVKalVrtCoreBase.h:96
Trk::VKalVrtControlBase::vk_funcProp
const addrPropagator vk_funcProp
Definition: TrkVKalVrtCore.h:39
Trk::VKalVrtControlBase::vk_objProp
const basePropagator * vk_objProp
Definition: TrkVKalVrtCore.h:38
Trk::VKalVrtControlBase::vk_istate
IVKalState * vk_istate
Definition: TrkVKalVrtCore.h:40
Trk::VKTrack::refCovar
double refCovar[15]
Definition: TrkVKalVrtCoreBase.h:97
calibdata.copy
bool copy
Definition: calibdata.py:27