Go to the documentation of this file.
29 const bool initParams) {
33 const std::vector<THitI>&
hits =
35 const int nHits = t.
NHits;
37 const signed short int step =
38 -2 *
static_cast<int>(dir) + 1;
39 const int iFirstHit = (dir) ? nHits - 1 : 0;
40 const int iLastHit = (dir) ? 0 : nHits - 1;
43 const L1StsHit& hit1 = (*vStsHits)[
hits[iFirstHit + step]];
44 const L1StsHit& hit2 = (*vStsHits)[
hits[iFirstHit + 2 * step]];
46 int ista0 = GetFStation((*
vSFlag)[hit0.
f]);
47 int ista1 = GetFStation((*
vSFlag)[hit1.
f]);
48 int ista2 = GetFStation((*
vSFlag)[hit2.
f]);
54 fvec u0 =
static_cast<fscal>((*vStsStrips)[hit0.
f]);
55 fvec v0 =
static_cast<fscal>((*vStsStripsB)[hit0.
b]);
58 fvec z0 = (*vStsZPos)[hit0.
iz];
60 fvec u1 =
static_cast<fscal>((*vStsStrips)[hit1.
f]);
61 fvec v1 =
static_cast<fscal>((*vStsStripsB)[hit1.
b]);
66 fvec u2 =
static_cast<fscal>((*vStsStrips)[hit2.
f]);
67 fvec v2 =
static_cast<fscal>((*vStsStripsB)[hit2.
b]);
78 T.
tx = (x1 - x0) * dzi;
79 T.
ty = (y1 - y0) * dzi;
94 T.
C00 = hit0.dx * hit0.dx;
96 T.
C11 = hit0.dy * hit0.dy;
118 fld.Set(fB2, fz2, fB1, fz1, fB0, fz0);
120 int ista_prev = ista1;
123 for (
int i = iFirstHit + step; step *
i <= step * iLastHit;
i += step) {
126 ista = GetFStation((*
vSFlag)[hit.
f]);
130 float z_sta = (*vStsZPos)[hit.
iz];
132 fvec dz = z_sta - T.
z;
134 #if defined(mCBM) || defined(GLOBAL)
142 if ((step * ista <= step * (
NMvdStations + (step + 1) / 2 - 1))
147 fvec u =
static_cast<fscal>((*vStsStrips)[hit.
f]);
148 fvec v =
static_cast<fscal>((*vStsStripsB)[hit.
b]);
175 fld.Set(fB2, fz2, fB1, fz1, fB0, fz0);
185 const bool initParams) {
187 for (
int i = 0;
i < 1;
i++) {
204 std::vector<THitI> newHits;
208 const signed short int step =
209 -2 *
static_cast<int>(dir) + 1;
210 const int iFirstHit = (dir) ? 2 : t.
NHits - 3;
217 const int ista0 = GetFStation((*
vSFlag)[hit0.f]);
218 const int ista1 = GetFStation((*
vSFlag)[hit1.
f]);
219 const int ista2 = GetFStation((*
vSFlag)[hit2.
f]);
221 const L1Station& sta0 = vStations[ista0];
222 const L1Station& sta1 = vStations[ista1];
223 const L1Station& sta2 = vStations[ista2];
225 fvec u0 =
static_cast<fscal>((*vStsStrips)[hit0.f]);
226 fvec v0 =
static_cast<fscal>((*vStsStripsB)[hit0.b]);
233 fvec u1 =
static_cast<fscal>((*vStsStrips)[hit1.
f]);
234 fvec v1 =
static_cast<fscal>((*vStsStripsB)[hit1.
b]);
239 fvec u2 =
static_cast<fscal>((*vStsStrips)[hit2.
f]);
240 fvec v2 =
static_cast<fscal>((*vStsStripsB)[hit2.
b]);
255 fld.Set(fB2, fz2, fB1, fz1, fB0, fz0);
265 for (; (ista <
NStations) && (ista >= 0);
274 #if defined(mCBM) || defined(GLOBAL)
283 const fscal iz = 1 / T.
z[0];
301 const L1StsHit& hit = (*vStsHitsUnused)[ih];
321 fscal d2 = d_x * d_x + d_y * d_y;
322 if (d2 > r2_best)
continue;
325 if (d_x * d_x > dxm_est2)
continue;
330 if (iHit_best < 0)
break;
332 newHits.push_back((*
RealIHitP)[iHit_best]);
334 const L1StsHit& hit = (*vStsHitsUnused)[iHit_best];
335 fvec u =
static_cast<fvec>((*vStsStrips)[hit.
f]);
336 fvec v =
static_cast<fvec>((*vStsStripsB)[hit.
b]);
339 z = (*vStsZPos)[hit.
iz];
370 fld.Set(fB2, fz2, fB1, fz1, fB0, fz0);
375 const unsigned int NOldHits = t.
NHits;
376 const unsigned int NNewHits = newHits.size();
378 t.
NHits = (NNewHits + NOldHits);
379 for (
int i = NOldHits - 1;
i >= 0;
i--) {
382 for (
unsigned int i = 0, ii = NNewHits - 1;
i < NNewHits;
i++, ii--) {
386 const unsigned int NOldHits = t.
NHits;
387 t.
NHits = (newHits.size() + NOldHits);
388 for (
unsigned int i = 0;
i < newHits.size();
i++) {
const vector< fscal > * vStsZPos
const vector< L1StsHit > * vStsHits
L1Grid vGridTime[MaxNStations]
L1MaterialInfo materialInfo
void FindMoreHits(L1Branch &t, L1TrackPar &T, const bool dir, const fvec qp0=0.0)
void StripsToCoor(const fscal &u, const fscal &v, fscal &x, fscal &y, const L1Station &sta) const
friend F32vec4 sqrt(const F32vec4 &a)
float Pick_gather
parameters which are different for different iterations. Set in the begin of CAL1TrackFinder
void FilterTime(L1TrackPar &T, fvec t0, fvec dt0, fvec w=1.)
L1Vector< THitI > StsHits
L1UMeasurementInfo backInfo
THitI StsHitsUnusedStartIndex[MaxNStations+1]
void L1AddMaterial(L1TrackPar &T, fvec radThick, fvec qp0, fvec w=1, fvec mass2=0.10565f *0.10565f)
fscal BranchExtender(L1Branch &t)
Try to extrapolate and find additional hits on other stations.
const vector< unsigned char > * vSFlagB
void L1AddPipeMaterial(L1TrackPar &T, fvec qp0, fvec w=1, fvec mass2=0.10565f *0.10565f)
void L1Filter(L1TrackPar &T, L1UMeasurementInfo &info, fvec u, fvec w=1.)
const vector< unsigned char > * vSFlag
void BranchFitter(const L1Branch &t, L1TrackPar &T, const bool dir, const fvec qp0=0., const bool initParams=true)
Fit track. more precise than FitterFast.
Tindex FIRSTCASTATION
================================= DATA PART =================================
void GetFieldValue(const fvec &x, const fvec &y, L1FieldValue &B) const
vector< THitI > * RealIHitP
L1Station vStations[MaxNStations] _fvecalignment
friend F32vec4 fabs(const F32vec4 &a)
static vector< vector< QAHit > > hits
void GetHitCoor(const L1StsHit &_h, fscal &_x, fscal &_y, fscal &_z, const L1Station &sta)
--— Hit-point-strips conversion routines ---—
L1UMeasurementInfo frontInfo
void BranchFitterFast(const L1Branch &t, L1TrackPar &T, const bool dir, const fvec qp0=0., const bool initParams=true)
L1XYMeasurementInfo XYInfo