ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::ForCFT Struct Reference

#include <ForCFT.h>

Collaboration diagram for Trk::ForCFT:

Public Member Functions

void prcfit (long int ntrk, double *wm, const double *wmfit, double bmag, const double *vrt, const double *vrte) noexcept
void vksetIterationNum (long int Iter) noexcept
void vksetIterationPrec (double Prec) noexcept
void vksetRobustScale (double Scale) noexcept
void vksetRobustness (long int Rob) noexcept
void vksetUseMassCnst () noexcept
void vksetUsePhiCnst () noexcept
void vksetUsePlaneCnst (double a, double b, double c, double d) noexcept
void vksetUseThetaCnst () noexcept
void vksetUseAprioriVrt () noexcept
void vksetUsePointingCnst (int iType=1) noexcept
void vksetUsePassNear (int iType=1) noexcept
void setmasscnst_ (long int ncnsttrk, long int *indextrk, double wmcnst) noexcept
 ForCFT () noexcept
 ~ForCFT ()=default

Public Attributes

int useMassCnst {}
int usePhiCnst {}
int useThetaCnst {}
int usePointingCnst {}
int useAprioriVrt {}
int usePassNear {}
int usePlaneCnst {}
int useRadiusCnst {}
int nmcnst
double wm [vkalNTrkM]
double wmfit [vkalMaxNMassCnst]
double localbmag
double Ap {}
double Bp {}
double Cp {}
double Dp {}
double RC {}
double radiusRefP [2] {}
double vrt [3] {}
double covvrt [6] {}
double wgtvrt [6] {}
double vrtstp [3] {}
int irob
double RobustScale
double robres [vkalNTrkM]
int indtrkmc [vkalMaxNMassCnst][vkalNTrkM]
int IterationNumber
double IterationPrecision

Detailed Description

Definition at line 12 of file ForCFT.h.

Constructor & Destructor Documentation

◆ ForCFT()

Trk::ForCFT::ForCFT ( )
noexcept

Definition at line 123 of file PrCFit.cxx.

123 {
124 nmcnst=0;
127 Ap=Bp=Dp=Cp=RC=0.;
128 IterationNumber = 50;
129 IterationPrecision=1.e-3;
130 RobustScale = 1.; irob=0;
131 for (int ic=0; ic<vkalMaxNMassCnst; ++ic) wmfit[ic] = -10000.;
132 for (int it=0; it<vkalNTrkM; ++it) {
134 robres[it] = 1.;
135 for(int ic=0; ic<vkalMaxNMassCnst; ic++) indtrkmc[ic][it]=0;
136 }
137 localbmag=1.997; // Safety: standard magnetic field in ID
138}
#define vkalMaxNMassCnst
Definition CommonPars.h:27
#define vkalNTrkM
Definition CommonPars.h:22
constexpr double chargedPionMassInMeV
the mass of the charged pion (in MeV)
int ic
Definition grepfile.py:33
int useMassCnst
Definition ForCFT.h:15
int usePhiCnst
Definition ForCFT.h:16
double robres[vkalNTrkM]
Definition ForCFT.h:51
int indtrkmc[vkalMaxNMassCnst][vkalNTrkM]
Definition ForCFT.h:52
double Dp
Definition ForCFT.h:34
int useThetaCnst
Definition ForCFT.h:17
double RC
Definition ForCFT.h:35
int usePlaneCnst
Definition ForCFT.h:21
double IterationPrecision
Definition ForCFT.h:54
double Cp
Definition ForCFT.h:33
int irob
Definition ForCFT.h:49
double Ap
Definition ForCFT.h:31
int useAprioriVrt
Definition ForCFT.h:19
int IterationNumber
Definition ForCFT.h:53
double RobustScale
Definition ForCFT.h:50
double localbmag
Definition ForCFT.h:29
double wm[vkalNTrkM]
Definition ForCFT.h:27
int nmcnst
Definition ForCFT.h:26
int usePointingCnst
Definition ForCFT.h:18
int usePassNear
Definition ForCFT.h:20
double wmfit[vkalMaxNMassCnst]
Definition ForCFT.h:28
double Bp
Definition ForCFT.h:32

◆ ~ForCFT()

Trk::ForCFT::~ForCFT ( )
default

Member Function Documentation

◆ prcfit()

void Trk::ForCFT::prcfit ( long int ntrk,
double * wm,
const double * wmfit,
double bmag,
const double * vrt,
const double * vrte )
noexcept

Definition at line 44 of file PrCFit.cxx.

45{
46 long int i__1;
47 double summ;
48
49
50/*------------------------------------------------------------------------------*/
51/* SETTING OF INITIAL PARAMETERS FOR C-FIT */
52/* (DEPENDING ON TYPE OF FIT) */
53/* INPUT: */
54/* NTRK : number of tracks */
55/* WM(JTK) : track masses ( if negative - track doesn't */
56/* : participate in mass constraint ) */
57/* WMFIT : masses for mass constraints */
58/* VRT(3) : point for directional constraint */
59/* (usually primary vertex) */
60/* VRTE(6) : error matrix for VRT ( for IFLAG=6) */
61/* BMAG : magnetic field (in Tesla) */
62/* Magnetic field is obligatory , other parameters MUST be set */
63/* when used in constraints */
64/* General mass constraint for all tracks is set in PRCFIT through WMFIT */
65/* if WMFIT > Sum_of_track_masses */
66/* Any number of additional mass constraints can be set up with */
67/* SetMassCnst(NCnstTrk,IndexTrk,WMCNST) where */
68/* INPUT: */
69/* NCnstTrk :track number of track subset for cnst.*/
70/* IndexTrk(NCnstTrk) :index of each track from subset in */
71/* :general track set for vertex fit. */
72/* WmCnst :Mass for given constraint */
73/* Author: V.Kostioukhine (1995 ,2004,2005) */
74/* */
75/* All functions here must be called AFTER(!!!) prcfit. */
76/* */
77/*------------------------------------------------------------------------------*/
78
79 this->localbmag = bmag;
80 this->nmcnst = 0;
81 for (int i=0; i<8; ++i) this->wmfit[i] = -10000.;
82 summ = 0.;
83 i__1 = ntrk<vkalNTrkM ? ntrk: vkalNTrkM;
84 for (int i=0; i<i__1; ++i) {
85 this->wm[i] = std::abs(wm[i]);
86 summ += wm[i];
87 }
88 if ((*wmfit) > summ) {
89/* Set general mass constraint based on ALL tracks */
90 this->nmcnst = 1;
91 for (int i = 0; i < vkalNTrkM; ++i) {
92 indtrkmc[0][i] = 0;
93 if (i < ntrk) {indtrkmc[0][i] = 1;}
94 }
95 this->wmfit[0] = (*wmfit);
96 }
97
98 this->vrt[0] = vrt[0];
99 this->vrt[1] = vrt[1];
100 this->vrt[2] = vrt[2];
101 this->covvrt[0] = vrte[0];
102 this->covvrt[1] = vrte[1];
103 this->covvrt[2] = vrte[2];
104 this->covvrt[3] = vrte[3];
105 this->covvrt[4] = vrte[4];
106 this->covvrt[5] = vrte[5];
107 this->irob = 0;
108 this->IterationNumber = 50;
109 this->IterationPrecision = 1.e-3;
110 for (int i = 0; i < vkalNTrkM; ++i) this->robres[i]=1.; //Safety
111//
112// Reset all constraints
113//
114this->useMassCnst = 0;
115this->usePhiCnst = 0;
116this->useThetaCnst = 0;
117this->useAprioriVrt = 0;
118this->usePointingCnst = 0;
119this->usePassNear = 0;
120//forcft_1.usePlaneCnst = 0; //Used only on demand=> must NOT be reset here!!!
121}
double covvrt[6]
Definition ForCFT.h:45
double vrt[3]
Definition ForCFT.h:45

◆ setmasscnst_()

void Trk::ForCFT::setmasscnst_ ( long int ncnsttrk,
long int * indextrk,
double wmcnst )
noexcept

Definition at line 179 of file PrCFit.cxx.

180{
181 if (indextrk==nullptr) return; //Protection! Track indices start from 1 (not 0)!
182 --indextrk;
183
184 ++nmcnst;
185 if (nmcnst > 8) return ;
186 for (int i = 0; i < vkalNTrkM; ++i) {
187 indtrkmc[nmcnst-1][i] = 0;
188 }
189 for (int i = 0; i < ncnsttrk; ++i) {
190 if (indextrk[i] > 0 && indextrk[i] < vkalNTrkM) {
191 indtrkmc[nmcnst-1][indextrk[i]] = 1;
192 }
193 }
194 wmfit[nmcnst - 1] = wmcnst;
195 }

◆ vksetIterationNum()

void Trk::ForCFT::vksetIterationNum ( long int Iter)
noexcept

Definition at line 141 of file PrCFit.cxx.

142{
143 if (Iter<3) Iter=3;
144 if (Iter>100) Iter=100;
145 IterationNumber = Iter;
146}

◆ vksetIterationPrec()

void Trk::ForCFT::vksetIterationPrec ( double Prec)
noexcept

Definition at line 148 of file PrCFit.cxx.

149{
150 if (Prec<1.e-5) Prec=1.e-5;
151 if (Prec>1.e-1) Prec=1.e-1;
152 IterationPrecision = Prec;
153}

◆ vksetRobustness()

void Trk::ForCFT::vksetRobustness ( long int Rob)
noexcept

Definition at line 162 of file PrCFit.cxx.

163{
164 if (Rob<0) Rob=0;
165 if (Rob>7) Rob=7;
166 irob = Rob;
167}

◆ vksetRobustScale()

void Trk::ForCFT::vksetRobustScale ( double Scale)
noexcept

Definition at line 155 of file PrCFit.cxx.

156{
157 if (Scale<0.01) Scale=0.01;
158 if (Scale>100.) Scale=100.;
160}
void Scale(TH1 *h, double d=1)

◆ vksetUseAprioriVrt()

void Trk::ForCFT::vksetUseAprioriVrt ( )
inlinenoexcept

Definition at line 66 of file ForCFT.h.

66{ useAprioriVrt = 1;}

◆ vksetUseMassCnst()

void Trk::ForCFT::vksetUseMassCnst ( )
noexcept

Definition at line 169 of file PrCFit.cxx.

169{ useMassCnst = 1;}

◆ vksetUsePassNear()

void Trk::ForCFT::vksetUsePassNear ( int iType = 1)
inlinenoexcept

Definition at line 68 of file ForCFT.h.

68{ usePassNear = iType<2 ? 1 : 2 ;}

◆ vksetUsePhiCnst()

void Trk::ForCFT::vksetUsePhiCnst ( )
noexcept

Definition at line 170 of file PrCFit.cxx.

170{ usePhiCnst = 1;}

◆ vksetUsePlaneCnst()

void Trk::ForCFT::vksetUsePlaneCnst ( double a,
double b,
double c,
double d )
noexcept

Definition at line 171 of file PrCFit.cxx.

171 {
172 if(a+b+c+d == 0.){ usePlaneCnst = 0;
173 }else{ usePlaneCnst = 1; }
174 Ap = a; Bp = b; Cp = c; Dp = d;
175}
static Double_t a

◆ vksetUsePointingCnst()

void Trk::ForCFT::vksetUsePointingCnst ( int iType = 1)
inlinenoexcept

Definition at line 67 of file ForCFT.h.

67{ usePointingCnst = iType<2 ? 1 : 2 ;}

◆ vksetUseThetaCnst()

void Trk::ForCFT::vksetUseThetaCnst ( )
inlinenoexcept

Definition at line 65 of file ForCFT.h.

65{ useThetaCnst = 1;}

Member Data Documentation

◆ Ap

double Trk::ForCFT::Ap {}

Definition at line 31 of file ForCFT.h.

31{};

◆ Bp

double Trk::ForCFT::Bp {}

Definition at line 32 of file ForCFT.h.

32{};

◆ covvrt

double Trk::ForCFT::covvrt[6] {}

Definition at line 45 of file ForCFT.h.

45{}, covvrt[6]{}, wgtvrt[6]{};
double wgtvrt[6]
Definition ForCFT.h:45

◆ Cp

double Trk::ForCFT::Cp {}

Definition at line 33 of file ForCFT.h.

33{};

◆ Dp

double Trk::ForCFT::Dp {}

Definition at line 34 of file ForCFT.h.

34{};

◆ indtrkmc

int Trk::ForCFT::indtrkmc[vkalMaxNMassCnst][vkalNTrkM]

Definition at line 52 of file ForCFT.h.

◆ irob

int Trk::ForCFT::irob

Definition at line 49 of file ForCFT.h.

◆ IterationNumber

int Trk::ForCFT::IterationNumber

Definition at line 53 of file ForCFT.h.

◆ IterationPrecision

double Trk::ForCFT::IterationPrecision

Definition at line 54 of file ForCFT.h.

◆ localbmag

double Trk::ForCFT::localbmag

Definition at line 29 of file ForCFT.h.

◆ nmcnst

int Trk::ForCFT::nmcnst

Definition at line 26 of file ForCFT.h.

◆ radiusRefP

double Trk::ForCFT::radiusRefP[2] {}

Definition at line 36 of file ForCFT.h.

36{};

◆ RC

double Trk::ForCFT::RC {}

Definition at line 35 of file ForCFT.h.

35{};

◆ robres

double Trk::ForCFT::robres[vkalNTrkM]

Definition at line 51 of file ForCFT.h.

◆ RobustScale

double Trk::ForCFT::RobustScale

Definition at line 50 of file ForCFT.h.

◆ useAprioriVrt

int Trk::ForCFT::useAprioriVrt {}

Definition at line 19 of file ForCFT.h.

19{};

◆ useMassCnst

int Trk::ForCFT::useMassCnst {}

Definition at line 15 of file ForCFT.h.

15{};

◆ usePassNear

int Trk::ForCFT::usePassNear {}

Definition at line 20 of file ForCFT.h.

20{};

◆ usePhiCnst

int Trk::ForCFT::usePhiCnst {}

Definition at line 16 of file ForCFT.h.

16{};

◆ usePlaneCnst

int Trk::ForCFT::usePlaneCnst {}

Definition at line 21 of file ForCFT.h.

21{};

◆ usePointingCnst

int Trk::ForCFT::usePointingCnst {}

Definition at line 18 of file ForCFT.h.

18{};

◆ useRadiusCnst

int Trk::ForCFT::useRadiusCnst {}

Definition at line 22 of file ForCFT.h.

22{};

◆ useThetaCnst

int Trk::ForCFT::useThetaCnst {}

Definition at line 17 of file ForCFT.h.

17{};

◆ vrt

double Trk::ForCFT::vrt[3] {}

Definition at line 45 of file ForCFT.h.

45{}, covvrt[6]{}, wgtvrt[6]{};

◆ vrtstp

double Trk::ForCFT::vrtstp[3] {}

Definition at line 48 of file ForCFT.h.

48{};

◆ wgtvrt

double Trk::ForCFT::wgtvrt[6] {}

Definition at line 45 of file ForCFT.h.

45{}, covvrt[6]{}, wgtvrt[6]{};

◆ wm

double Trk::ForCFT::wm[vkalNTrkM]

Definition at line 27 of file ForCFT.h.

◆ wmfit

double Trk::ForCFT::wmfit[vkalMaxNMassCnst]

Definition at line 28 of file ForCFT.h.


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