51 const double Covariance[],
61 for (
int i = 0; i < 3; i++) {
67 for(
int i=0; i<5; i++) {
rmnd[i]=0;}
68 std::copy(Covariance, Covariance+15,
refCovar);
75 std::copy(Weight, Weight+15,
WgtM);
81 std::copy(Covariance, Covariance+15,
refCovar);
99 out.precision(5); out << std::defaultfloat;
100 out <<
" Track par: Iteration <-> Ref" << std::endl;
101 out <<
" * a_0 : "<< track.a0() <<
" "<< track.r_a0() << std::endl;
102 out <<
" * z_0 : "<< track.z() <<
" "<< track.r_z() << std::endl;
103 out <<
" * theta : "<< track.theta()<<
" "<< track.r_theta()<< std::endl;
104 out <<
" * phi : "<< track.phi() <<
" "<< track.r_phi() << std::endl;
105 out <<
" * q/R : "<< track.invR() <<
" "<< track.r_invR() << std::endl;
106 out <<
" * Charge: "<< track.Charge <<
" Mass: "<<track.m_mass<< std::endl;
107 out <<
"-> with ref ErrorMatrix: " << std::endl;out.precision(5);
108 out << track.refCovar[0] <<std::endl;
109 out << track.refCovar[1] <<
", "<<track.refCovar[2] <<std::endl;
110 out << track.refCovar[3] <<
", "<<track.refCovar[4] <<
", "<<track.refCovar[5] <<std::endl;
111 out << track.refCovar[6] <<
", "<<track.refCovar[7] <<
", "<<track.refCovar[8] <<
", "
112 << track.refCovar[9]<<std::endl;
113 out << track.refCovar[10]<<
", "<<track.refCovar[11]<<
", "<<track.refCovar[12]<<
", "
114 << track.refCovar[13]<<
", "<<track.refCovar[14]<<std::endl;
115 out <<
"-> and iteration WeightMatrix: " << std::endl;
116 out << track.WgtM[0] <<std::endl;
117 out << track.WgtM[1] <<
", "<<track.WgtM[2] <<std::endl;
118 out << track.WgtM[3] <<
", "<<track.WgtM[4] <<
", "<<track.WgtM[5] <<std::endl;
119 out << track.WgtM[6] <<
", "<<track.WgtM[7] <<
", "<<track.WgtM[8] <<
", "
120 << track.WgtM[9]<<std::endl;
121 out << track.WgtM[10]<<
", "<<track.WgtM[11]<<
", "<<track.WgtM[12]<<
", "
122 << track.WgtM[13]<<
", "<<track.WgtM[14]<<std::endl;
165 for(
int i=0; i<6; i++) {
169 fitV[i] =src.fitV[i];
170 iniV[i] =src.iniV[i];
171 cnstV[i] =src.cnstV[i];
173 refV[i] =src.refV[i];
175 fitMom[i] = src.fitMom[i];
177 for(
int i=0; i<21; i++){
185 int NTrack=src.TrackList.size();
188 for(
int i=0; i<SIZE; i++)
for(
int j=0; j<SIZE; j++) {
ader[i*FULLSIZE+j]=src.ader[i*FULLSIZE+j]; }
190 for(
int i=0; i<NTrack; i++)
TrackList.emplace_back(
new VKTrack(*(src.TrackList[i])) );
192 for(
int ic=0; ic<(
int)src.ConstraintList.size(); ic++){
193 ConstraintList.emplace_back(src.ConstraintList[ic]->clone());
208 for(
int i=0; i<6; i++) {
212 fitV[i] =src.fitV[i];
213 iniV[i] =src.iniV[i];
214 cnstV[i] =src.cnstV[i];
216 refV[i] =src.refV[i];
218 fitMom[i] = src.fitMom[i];
220 for(
int i=0; i<21; i++){
228 int NTrack=src.TrackList.size();
231 for(
int i=0; i<SIZE; i++)
for(
int j=0; j<SIZE; j++) {
ader[i*FULLSIZE+j]=src.ader[i*FULLSIZE+j]; }
236 for(
int i=0; i<NTrack; i++)
TrackList.emplace_back(
new VKTrack(*(src.TrackList[i])) );
238 for(
int ic=0; ic<(int)src.ConstraintList.size(); ic++){
242 std::copy (std::begin(src.T), std::end(src.T), std::begin(
T));
243 std::copy (std::begin(src.wa), std::end(src.wa), std::begin(
wa));
244 std::copy (std::begin(src.dxyz0), std::end(src.dxyz0), std::begin(
dxyz0));
253 if (Iter>100) Iter=100;
259 if (Prec<1.e-5) Prec=1.e-5;
260 if (Prec>1.e-1) Prec=1.e-1;
279 for(
int it=0; it<Ntrk; it++) sumM +=
vk_forcft.wm[it];
282 for(
int it=0; it<Ntrk; it++)
vk_forcft.indtrkmc[0][it]=1;
289 int Ntrk=std::min((
int)
Index.size(),NtrkTot);
301 if(
a+b+c+d == 0.){
vk_forcft.usePlaneCnst = 0;
306 if(R == 0.){
vk_forcft.useRadiusCnst = 0;
IndexedConstituentUserInfo::Index Index
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 *)