ATLAS Offline Software
Loading...
Searching...
No Matches
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, const double *ParOld, const double *CovOld, const double *RefOld, double *RefNew, double *ParNew, double *CovNew, VKalVrtControlBase *FitControl=0)
static bool checkTarget (const double *RefEnd)
static void Propagate (VKTrack *trk, const double *RefStart, const double *RefEnd, double *ParNew, double *CovNew, VKalVrtControlBase *FitControl=0)

Detailed Description

Definition at line 59 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 ( const double * RefEnd)
static

Definition at line 112 of file Propagator.cxx.

112 {
113 // if ( m_typePropagator == 3 ) return vk_objectProp->checkTarget(RefNew);
114 return true;
115}

◆ Propagate() [1/2]

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

Definition at line 131 of file Propagator.cxx.

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

◆ Propagate() [2/2]

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

Definition at line 187 of file Propagator.cxx.

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

The documentation for this class was generated from the following files: