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, 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';
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}
#define vkalUseRKMPropagator
Definition Propagator.h:18
const basePropagator * vk_objProp
const addrPropagator vk_funcProp
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

◆ 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
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}
double refCovar[15]

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