90 targX(0), targY(0), targZ(0),
96 fTrackingLevel(0), fGhostSuppression(0),
102 void SetData(
const vector< L1StsHit > & StsHits_,
103 const vector< L1Strip > & StsStrips_,
104 const vector< L1Strip > & StsStripsB_,
105 const vector< fscal > & StsZPos_,
106 const vector< unsigned char > & SFlag_,
107 const vector< unsigned char > & SFlagB_,
108 const THitI* StsHitsStartIndex_,
109 const THitI* StsHitsStopIndex_ );
164 const L1FieldValue& GetVtxFieldValue()
const {
return vtxFieldValue;}
165 const L1FieldRegion& GetVtxFieldRegion()
const {
return vtxFieldRegion;}
176 void CAFindTrack(
int ista,
182 void CleanTriplets(
bool isClean = 0
184 ,
unsigned int* nlevels = 0
194 void BranchFitterFast(
const L1Branch &t,
L1TrackPar& T,
const bool dir,
const fvec qp0 = 0.,
const bool initParams =
true);
197 void BranchFitter(
const L1Branch &t,
L1TrackPar& T,
const bool dir,
const fvec qp0 = 0.,
const bool initParams =
true);
211 void InvertCholetsky(
fvec a[15]);
212 void MultiplySS(
fvec const C[15],
fvec const V[15],
fvec K[5][5]);
213 void MultiplyMS(
fvec const C[5][5],
fvec const V[15],
fvec K[15]);
214 void MultiplySR(
fvec const C[15],
fvec const r_in[5],
fvec r_out[5]);
216 void CAMergeClones();
219 unsigned char GetFStation(
unsigned char flag ){
return flag/4; }
220 bool GetFUsed (
unsigned char flag ){
return (flag&0x02)!=0; }
223 void SetFStation (
unsigned char &flag,
unsigned int iStation ){ flag = iStation*4 + (flag%4); }
224 void SetFUsed (
unsigned char &flag ){ flag |= 0x02; }
226 void SetFUnUsed (
unsigned char &flag ){ flag &= 0xFC; }
235 fvec *du_front = 0,
fvec *du_back = 0
240 int istal,
int istam,
246 fvec *du_front = 0,
fvec *du_back = 0
259#ifdef DOUB_PERFORMANCE
260 vector<THitI> &hitsl_2,
262 vector<THitI> &hitsm_2,
263 vector<bool> &lmDuplets
270 int istam,
int istar,
276 vector<THitI> &hitsm_2,
279 const vector<bool> &mrDuplets,
283 vector<THitI> &hitsl_3, vector<THitI> &hitsm_3, vector<THitI> &hitsr_3,
302 vector<THitI> &hitsl_3, vector<THitI> &hitsm_3, vector<THitI> &hitsr_3,
308 int n3,
int istal,
int istam,
int istar,
310 vector<THitI> &hitsl_3, vector<THitI> &hitsm_3, vector<THitI> &hitsr_3,
312 unsigned int &nstaltriplets,
313 vector<L1Triplet> &vTriplets_part,
314 unsigned int *TripStartIndexH,
unsigned int *TripStopIndexH
323 unsigned int *TripStartIndexH,
unsigned int *TripStopIndexH,
329 int istal,
int istam,
331 vector< int>& n_g1,
unsigned int *portionStopIndex,
338 vector<bool> &lmDuplets,
342 vector<THitI> &hitsm_2
346 void TripletsStaPort(
347 int istal,
int istam,
int istar,
348 unsigned int& nstaltriplets,
353 int &n_2,
unsigned int *portionStopIndex,
355 vector<THitI> &hitsm_2,
357 const vector<bool> &mrDuplets,
360 vector<L1Triplet> *vTriplets_part,
361 unsigned int *TripStartIndexH,
unsigned int *TripStopIndexH
375 friend class ParalleledDup;
376 friend class ParalleledTrip;
392#ifdef FIND_GAPED_TRACKS
393 enum { kFastPrimIter,
404#ifdef TRACKS_FROM_TRIPLETS
405 enum { fNFindIterations = TRACKS_FROM_TRIPLETS_ITERATION+1 };
410 enum { fNFindIterations = 3 };
411 enum { kFastPrimIter = 0,
421 const float TRACK_CHI2_CUT;
422 float TRIPLET_CHI2_CUT;
423 float DOUBLET_CHI2_CUT;
433 fvec targX, targY, targZ;
443 Portion = 1024/coeff,
445 MaxPortionDoublets = 10000/5 * 64/2 /coeff *1,
446 MaxPortionTriplets = 10000*5 * 64/2 /coeff *1,
447 MaxNPortion = 40 * coeff / multiCoeff,
450 MaxArrSize = MaxNPortion*MaxPortionDoublets/
MaxNStations
456 vector <L1Triplet> vTriplets;
459 int fTrackingLevel, fGhostSuppression;
460 float fMomentumCutOff;
466#ifdef TRIP_PERFORMANCE
470#ifdef DOUB_PERFORMANCE
479 void operator=(
const L1Algo&);