180 Double_t (*infoparalConformal)[5] = in->infoparalConformal ;
196 auxListHitsinTrack[in->maxstthits],
197 OutputListHitsinTrack[in->maxstthits],
198 OutputList2HitsinTrack[in->maxstthits],
199 ListHitsinTrackinWhichToSearch[in->maxstthits];
222 in->FiConformalIndex,
225 in->InclusionListStt,
229 in->maxstthitsintrack,
231 in->minimumhitspertrack,
244 if( *(in->nHitsinTrack) < in->minimumhitspertrack ||
245 *(in->nHitsinTrack) > in->maxstthitsintrack) {
256 for(j=0, Nouter =0; j<*(in->nHitsinTrack); j++){
257 if(info[ (in->ListHitsinTrack)[j] ][0]*
258 info[ (in->ListHitsinTrack)[j] ][0]+
259 info[ (in->ListHitsinTrack)[j] ][1]*
260 info[ (in->ListHitsinTrack)[j] ][1]
261 < in->apotemamaxskewstraw*in->apotemamaxskewstraw )
break;
265 if( Nouter >= in->minouterhitspertrack) {
266 for(i=0; i< Nouter;i++){
267 ListHitsinTrackinWhichToSearch[
i]=
268 (in->ListHitsinTrack)[i];
271 for(i=0; i< Nouter;i++){
273 in->FiConformalIndex,
275 in->InclusionListStt,
277 ListHitsinTrackinWhichToSearch[i],
278 ListHitsinTrackinWhichToSearch,
281 in->minimumhitspertrack,
289 OutputListHitsinTrack,
293 if( Naux >= in->minouterhitspertrack && Naux > 0.7 * Nouter )
break;
294 if( Naux >= in->minouterhitspertrack) {
300 for(j=Nouter;j<*(in->nHitsinTrack); j++){
301 ListHitsinTrackinWhichToSearch[j-Nouter] =
302 (in->ListHitsinTrack)[j];
306 in->FiConformalIndex,
307 in->InclusionListStt,
308 ListHitsinTrackinWhichToSearch[i],
309 ListHitsinTrackinWhichToSearch,
314 *(in->nHitsinTrack)-Nouter,
315 OutputList2HitsinTrack
319 *(in->nHitsinTrack)=Naux+Nbaux;
320 if( *(in->nHitsinTrack) >= in->minimumhitspertrack &&
321 *(in->nHitsinTrack) <=in->maxstthitsintrack) {
323 (in->ListHitsinTrack)[j] =
324 OutputListHitsinTrack[j];
326 for(j=0;j<Nbaux;j++){
327 (in->ListHitsinTrack)[Naux+j] =
328 OutputList2HitsinTrack[j];
337 if( *(in->nHitsinTrack) < in->minimumhitspertrack ||
338 *(in->nHitsinTrack)>in->maxstthitsintrack) {
346 for(j=0, rotationcos=0., rotationsin=0.; j<*(in->nHitsinTrack); j++){
347 rotationcos +=
cos((0.5+
348 (in->FiConformalIndex)[ (in->ListHitsinTrack)[j] ])
349 *2.*
PI/in->nfidivconformal) ;
351 rotationsin +=
sin((0.5+
352 in->FiConformalIndex[ (in->ListHitsinTrack)[j] ])
353 *2.*
PI/in->nfidivconformal) ;
355 rotationcos /=*(in->nHitsinTrack);
356 rotationsin /=*(in->nHitsinTrack);
357 rotationangle =
atan2(rotationsin, rotationcos);
364 Xconformal[1+(*(in->nHitsinTrack))],
365 Yconformal[1+(*(in->nHitsinTrack))],
366 DriftRadiusconformal[1+(*(in->nHitsinTrack))],
367 ErrorDriftRadiusconformal[1+(*(in->nHitsinTrack))];
371 aaa = in->posizSciTilx*in->posizSciTilx+in->posizSciTily*in->posizSciTily;
372 Xconformal[0] =in->posizSciTilx/aaa;
373 Yconformal[0] =in->posizSciTily/aaa;
374 ErrorDriftRadiusconformal[0] = in->dimensionscitil/aaa;
375 DriftRadiusconformal[0]=-1.;
378 nFitPoints = *(in->nHitsinTrack) + 1;
382 nFitPoints = *(in->nHitsinTrack);
387 for(j=0; j<(*(in->nHitsinTrack)); j++){
388 Xconformal[j+
offset] =infoparalConformal[(in->ListHitsinTrack)[j]][0];
389 Yconformal[j+
offset] =infoparalConformal[(in->ListHitsinTrack)[j]][1];
390 ErrorDriftRadiusconformal[j+
offset]=
391 infoparalConformal[(in->ListHitsinTrack)[j]][2];
392 DriftRadiusconformal[j+
offset]=
393 infoparalConformal[(in->ListHitsinTrack)[j]][2];
405 DriftRadiusconformal,
406 ErrorDriftRadiusconformal,
408 in->trajectory_vertex,
421 if(
status < 0 )
return false;
425 *(in->Oxx)= -0.5*(*(in->ALFA));
426 *(in->Oyy)= -0.5*(*(in->BETA));
427 *(in->Rr)= (*(in->Oxx)) * (*(in->Oxx)) + (*(in->Oyy)) * (*(in->Oyy))-(*(in->GAMMA));
430 if( *(in->Rr) < 0. )
return false;
431 *(in->Rr)=
sqrt( *(in->Rr) );
432 aaa =
sqrt( (*(in->Oxx)) * (*(in->Oxx)) + (*(in->Oyy)) * (*(in->Oyy)) );
436 if(aaa< 0.9*in->rstrawdetectormin/2.)
return false;
439 if ( *(in->Rr) + aaa < in->rstrawdetectormin *0.9 )
return false;
475 in->S_SciTilHitsinTrack,
477 in->InclusionListSciTil,
478 in->ListSciTilHitsinTrack,
479 in->maxscitilhitsintrack,
490 if( *(in->nSciTilHitsinTrack) >0 ){
494 if( *(in->nSciTilHitsinTrack) > 2 ) *(in->nSciTilHitsinTrack)=2;
496 for(j=0;j<*(in->nSciTilHitsinTrack);j++){
497 (in->InclusionListSciTil)[(in->ListSciTilHitsinTrack)[j]]
503 *(in->nSciTilHitsinTrack)=0;
511 if( *(in->Rr) < in->rstrawdetectormax/2){
512 GeomCalculator.FindingParallelTrackAngularRange(
520 in->rstrawdetectormin,
521 in->rstrawdetectormax
526 in->InclusionListStt,
544 in->FiConformalIndex,
546 in->InclusionListStt,
563 in->rstrawdetectormin,
570 if( NN < in->minimumhitspertrack ||
NN>in->maxstthitsintrack)
return false;
572 *(in->nHitsinTrack)=
NN;
574 for(i=0; i< *(in->nHitsinTrack);i++){
575 (in->ListHitsinTrack)[i]=auxListHitsinTrack[i];
586 X[*(in->nHitsinTrack)],
587 Y[*(in->nHitsinTrack)];
589 for(i=0;i<*(in->nHitsinTrack);i++){
590 X[
i]=info[(in->ListHitsinTrack)[i]][0];
591 Y[
i]=info[(in->ListHitsinTrack)[i]][1];
620 in->Fi_initial_helix_referenceframe,
621 in->Fi_final_helix_referenceframe,
633 GeomCalculator.FindingParallelTrackAngularRange(
641 in->rstrawdetectormin,
642 in->rstrawdetectormax
646 if( flagStt == -2 )
return false;
647 if( flagStt == -1 )
return false;
648 if( flagStt == 1 )
return false;
friend F32vec4 cos(const F32vec4 &a)
Short_t FitHelixCylinder(Short_t nHitsinTrack, Double_t *Xconformal, Double_t *Yconformal, Double_t *DriftRadiusconformal, Double_t *ErrorDriftRadiusconformal, Double_t rotationangle, Double_t trajectory_vertex[2], Short_t NMAX, Double_t *m, Double_t *q, Double_t *pAlfa, Double_t *pBeta, Double_t *pGamma, bool *Type, int istampa, int IVOLTE)
friend F32vec4 sqrt(const F32vec4 &a)
friend F32vec4 sin(const F32vec4 &a)
Short_t FindTrackStrictCollection(Short_t *FiConformalIndex, bool *InclusionListStt, Short_t iSeed, Short_t *ListHitsinTrackinWhichToSearch, Short_t MAXSTTHITS, Short_t NFiCELLDISTANCE, Short_t nfidivconformal, Short_t NParallelToSearch, Short_t *OutputListHitsinTrack)
void OrderingParallel(Short_t Charge, Double_t *Fi_initial_helix_referenceframe, Double_t *Fi_final_helix_referenceframe, Double_t info[][7], Short_t *ListParallelHits, Short_t nParallelHits, Double_t oX, Double_t oY, Double_t *U, Double_t *V)
Short_t TrkAssociatedParallelHitsToHelixQuater(Short_t *auxListHitsinTrack, Double_t deltanr, Short_t *FiConformalIndex, Short_t *HitsinBoxConformal, bool *InclusionListStt, Double_t info[][7], Double_t infoparalConformal[][5], Short_t *ListHitsinTrack, Double_t m, Short_t MAXSTTHITS, Short_t *nBoxConformal, Short_t nfidivconformal, Short_t nHitsinTrack, Int_t NhitsParallel, Short_t nrdivconformal, Double_t Oxx, Double_t Oyy, Double_t q, Double_t *radiaConf, Short_t *RConformalIndex, Double_t Rr, Double_t rstrawdetectormin, Short_t Status, Double_t strawradius)
Short_t TrkAssociatedParallelHitsToHelix5(Short_t *auxListHitsinTrack, bool *InclusionListStt, Double_t Fi_low, Double_t Fi_up, Double_t info[][7], Short_t *ListSttParHits, Int_t NhitsParallel, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t strawradius)
Short_t FindTrackPatterninBoxConformalSpecial(Short_t *FiConformalIndex, Short_t *HitsinBoxConformal, bool *InclusionListStt, Double_t info[][7], Short_t iSeed, Short_t *ListHitsinTrackinWhichToSearch, Short_t *ListSttParHits, Short_t maxstthits, Short_t minimumhitspertrack, Short_t *nBoxConformal, Short_t NFiCELLDISTANCE, Short_t nfidivconformal, Short_t Nparal, Short_t NparallelToSearch, Short_t NRCELLDISTANCE, Short_t nrdivconformal, Short_t *OutputListHitsinTrack, Short_t *RConformalIndex)
Short_t FindTrackPatterninBoxConformal(Short_t *FiConformalIndex, Short_t *HitsinBoxConformal, Short_t ihit, bool *InclusionListStt, Double_t info[][7], Short_t *ListHitsinTrack, Short_t *ListSttParHits, Short_t maxstthitsintracks, Short_t maxstthits, Short_t minimumhitspertrack, Short_t *nBoxConformal, Short_t nfidivconformal, Short_t nFicell, Short_t NFiCELLDISTANCE, Short_t Nparal, Short_t nRcell, Short_t NRCELLDISTANCE, Short_t *RConformalIndex, Short_t nrdivconformal)
Short_t AssociateSciTilHit(Double_t dimensionscitil, Double_t *esse, bool *InclusionListSciTil, Short_t *List, Short_t maxscitilhitsintrack, Short_t nSciTilHits, Double_t Oxx, Double_t Oyy, Double_t posizSciTil[][3], Double_t Rr)
friend F32vec4 atan2(const F32vec4 &y, const F32vec4 &x)
void FindCharge(Double_t oX, Double_t oY, Short_t nHits, Double_t *X, Double_t *Y, Short_t *Charge)