58 const double Covariance[],
68 for (
int i = 0; i < 3; i++) {
74 for(
int i=0; i<5; i++) {
rmnd[i]=0;}
75 std::copy(Covariance, Covariance+15,
refCovar);
82 std::copy(Weight, Weight+15,
WgtM);
88 std::copy(Covariance, Covariance+15,
refCovar);
106 out.precision(5); out << std::defaultfloat;
107 out <<
" Track par: Iteration <-> Ref" << std::endl;
108 out <<
" * a_0 : "<< track.a0() <<
" "<< track.r_a0() << std::endl;
109 out <<
" * z_0 : "<< track.z() <<
" "<< track.r_z() << std::endl;
110 out <<
" * theta : "<< track.theta()<<
" "<< track.r_theta()<< std::endl;
111 out <<
" * phi : "<< track.phi() <<
" "<< track.r_phi() << std::endl;
112 out <<
" * q/R : "<< track.invR() <<
" "<< track.r_invR() << std::endl;
113 out <<
" * Charge: "<< track.Charge <<
" Mass: "<<track.m_mass<< std::endl;
114 out <<
"-> with ref ErrorMatrix: " << std::endl;out.precision(5);
115 out << track.refCovar[0] <<std::endl;
116 out << track.refCovar[1] <<
", "<<track.refCovar[2] <<std::endl;
117 out << track.refCovar[3] <<
", "<<track.refCovar[4] <<
", "<<track.refCovar[5] <<std::endl;
118 out << track.refCovar[6] <<
", "<<track.refCovar[7] <<
", "<<track.refCovar[8] <<
", "
119 << track.refCovar[9]<<std::endl;
120 out << track.refCovar[10]<<
", "<<track.refCovar[11]<<
", "<<track.refCovar[12]<<
", "
121 << track.refCovar[13]<<
", "<<track.refCovar[14]<<std::endl;
122 out <<
"-> and iteration WeightMatrix: " << std::endl;
123 out << track.WgtM[0] <<std::endl;
124 out << track.WgtM[1] <<
", "<<track.WgtM[2] <<std::endl;
125 out << track.WgtM[3] <<
", "<<track.WgtM[4] <<
", "<<track.WgtM[5] <<std::endl;
126 out << track.WgtM[6] <<
", "<<track.WgtM[7] <<
", "<<track.WgtM[8] <<
", "
127 << track.WgtM[9]<<std::endl;
128 out << track.WgtM[10]<<
", "<<track.WgtM[11]<<
", "<<track.WgtM[12]<<
", "
129 << track.WgtM[13]<<
", "<<track.WgtM[14]<<std::endl;
172 for(
int i=0; i<6; i++) {
176 fitV[i] =src.fitV[i];
177 iniV[i] =src.iniV[i];
178 cnstV[i] =src.cnstV[i];
180 refV[i] =src.refV[i];
182 fitMom[i] = src.fitMom[i];
184 for(
int i=0; i<21; i++){
192 int NTrack=src.TrackList.size();
195 for(
int i=0; i<SIZE; i++)
for(
int j=0; j<SIZE; j++) {
ader[i*FULLSIZE+j]=src.ader[i*FULLSIZE+j]; }
197 for(
int i=0; i<NTrack; i++)
TrackList.emplace_back(
new VKTrack(*(src.TrackList[i])) );
199 for(
int ic=0; ic<(
int)src.ConstraintList.size(); ic++){
200 ConstraintList.emplace_back(src.ConstraintList[ic]->clone());
215 for(
int i=0; i<6; i++) {
219 fitV[i] =src.fitV[i];
220 iniV[i] =src.iniV[i];
221 cnstV[i] =src.cnstV[i];
223 refV[i] =src.refV[i];
225 fitMom[i] = src.fitMom[i];
227 for(
int i=0; i<21; i++){
235 int NTrack=src.TrackList.size();
238 for(
int i=0; i<SIZE; i++)
for(
int j=0; j<SIZE; j++) {
ader[i*FULLSIZE+j]=src.ader[i*FULLSIZE+j]; }
243 for(
int i=0; i<NTrack; i++)
TrackList.emplace_back(
new VKTrack(*(src.TrackList[i])) );
245 for(
int ic=0; ic<(int)src.ConstraintList.size(); ic++){
249 std::copy (std::begin(src.T), std::end(src.T), std::begin(
T));
250 std::copy (std::begin(src.wa), std::end(src.wa), std::begin(
wa));
251 std::copy (std::begin(src.dxyz0), std::end(src.dxyz0), std::begin(
dxyz0));
260 if (Iter>100) Iter=100;
266 if (Prec<1.e-5) Prec=1.e-5;
267 if (Prec>1.e-1) Prec=1.e-1;
286 for(
int it=0; it<Ntrk; it++) sumM +=
vk_forcft.wm[it];
289 for(
int it=0; it<Ntrk; it++)
vk_forcft.indtrkmc[0][it]=1;
296 int Ntrk=std::min((
int)
Index.size(),NtrkTot);
308 if(
a+b+c+d == 0.){
vk_forcft.usePlaneCnst = 0;
313 if(R == 0.){
vk_forcft.useRadiusCnst = 0;
IndexedConstituentUserInfo::Index Index
double m_accuracyConstraint
std::vector< int > matrixPnt
std::unique_ptr< double[]> fullCovMatrix
std::vector< std::unique_ptr< VKVertex > > cascadeVertexList
void setReference(const double[], const double[])
void setCurrent(const double[], const double[])
VKVertex * m_originVertex
VKTrack(long int, const double[], const double[], VKVertex *, double)
double savedVrtMomCov[21]
VKVertex(const VKalVrtControl &)
void setRefIterV(double v[]) noexcept
void setFitV(double v[3]) noexcept
void setCnstV(double v[3]) noexcept
std::vector< VKVertex * > includedVrt
VKVertex & operator=(const VKVertex &src)
void setIniV(double v[3]) noexcept
std::vector< std::unique_ptr< VKTrack > > TrackList
double ader[(3 *vkalNTrkM+3) *(3 *vkalNTrkM+3)]
std::vector< std::unique_ptr< VKConstraintBase > > ConstraintList
void setRefV(double v[3]) noexcept
std::vector< std::unique_ptr< TWRK > > tmpArr
VKVertex * nextCascadeVrt
std::unique_ptr< VKalVrtControl > vk_fitterControl
const basePropagator * vk_objProp
const addrPropagator vk_funcProp
baseMagFld * vk_objMagFld
VKalVrtControlBase(baseMagFld *, const addrMagHandler, const basePropagator *, const addrPropagator, IVKalState *istate=nullptr)
const addrMagHandler vk_funcMagFld
void setUsePointingCnst(int)
void renewFullCovariance(double *)
void setIterationNum(int Iter)
void renewCascadeEvent(CascadeEvent *)
void setRobustness(int Rob)
void setIterationPrec(double Prec)
void setMassCnstData(int Ntrk, double Mass)
VKalVrtControl(const VKalVrtControlBase &)
bool m_frozenVersionForBTagging
void setRobustScale(double Scale)
CascadeEvent * m_cascadeEvent
void setUsePlaneCnst(double a, double b, double c, double d)
bool m_allowUltraDisplaced
void setUseRadiusCnst(double R, double RefP[2])
std::unique_ptr< double[]> m_fullCovariance
void Scale(TH1 *h, double d=1)
Ensure that the ATLAS eigen extensions are properly loaded.
void(* addrMagHandler)(double, double, double, double &, double &, double &)
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
MsgStream & operator<<(MsgStream &sl, const AlignModule &alignModule)
overload of << operator for MsgStream for debug output
void(* addrPropagator)(long int, long int, double *, double *, double *, double *, double *, double *)