FairRoot/PandaRoot
PndTrkTracking2.h
Go to the documentation of this file.
1 #ifndef PndTrkTracking2_H
2 #define PndTrkTracking2_H 1
3 #include <vector>
4 
5 
6 // #include "FairRootManager.h"
7 #include "PndPersistencyTask.h"
8 #include "PndGeoSttPar.h"
9 #include "PndMCTrack.h"
10 #include "PndTrkPrintouts.h"
11 #include "PndSttTrack.h"
12 #include "PndSttTrackFinder.h"
13 #include "PndSttTube.h"
14 #include "PndTrkVectors.h"
15 
16 #include "TClonesArray.h"
17 #include "TGeoVolume.h"
18 #include "TStopwatch.h"
19 #include "TList.h"
20 #include "TH1.h"
21 #include "TH1F.h"
22 #include "TH2F.h"
23 
24 class FairMCPoint;
25 
27 {
28 
29  public:
30 
33 
35  PndTrkTracking2(Int_t verbose);
36 
38  PndTrkTracking2(int istamp, bool iplot, bool doMcComparison);
39 
41  PndTrkTracking2(int istamp, bool iplot, bool doMcComparison, bool doSciTil);
42 
45 
46 
47  void Cleanup( ){fYesCleanStt=true; fYesCleanMvd=true; return;};
48  void NOCleanup( ){fYesCleanStt=false; fYesCleanMvd=false; return;};
49 
50  void CleanupStt( ){fYesCleanStt=true; return;};
51  void NOCleanupStt( ){fYesCleanStt=false; return;};
52  void CleanupMvd( ){fYesCleanMvd=true; return;};
53  void NOCleanupMvd( ){fYesCleanMvd=false; return;};
54 
55 
57  virtual void Exec(Option_t* opt);
58 
60  virtual InitStatus Init();
61 
62 
63  void NoMvdAloneTracking( ){ fMvdAloneTracking=false; return;};
64 
65 
66  void PrintTime()
67  {
68  cout<<"\nMy calculation of the time is :";
69  cout << " real time " << frtime2 << " sec., CPU time " << fctime2
70  << " seconds." << endl << endl;
71  return;
72 
73  };
74 
76  const char* string1,
77  const char* string2,
78  const char* string3
79  )
80  {
81  sprintf(fSttBranch,"%s", string1);
82  sprintf(fMvdPixelBranch,"%s", string2);
83  sprintf(fMvdStripBranch,"%s", string3);
84  return;
85  };
86 
87  void SetEventsToPlot(int nev ){fNevents_to_plot = nev;};
88 
89  void SetParContainers();
90 
92  void SetPersistence(Bool_t persistence) { SetPersistency(persistence); }
93 
94  void YesMvdAloneTracking( ){ fMvdAloneTracking=true; return;};
95 
96 
97  // write out the histograms
98  void WriteHistograms();
99 
100 
101 
102  private:
103 
104 // divisions of the Theta angle range [0, 90 degrees );
105 #define BOCA_90DEGREES_DIVISIONS 180
106 
107  static const Short_t
109  LEGIANDRE_NTHETADIV = 2* BOCA_90DEGREES_DIVISIONS , // divisions of the Theta angle range [0, 2*PI radians);
110 // LEGIANDRE_NRADIUSDIV = 100,
111 // LEGIANDRE_NTHETADIV = 360,
112  MAXMCTRACKS = 100,
118  MAXSCITILHITS = 200, // max SciTil hits total.
119  MAXSCITILHITSINTRACK = 2, // max SciTil hits in one track.
120  MAXSTTHITS = 900,
123 // NFIDIVCONFORMAL = (Short_t) (3.141592654 * 45./0.5),
126  NUMBER_STRAWS = 4542; // the straw numbers
127  // start at 1 and goes up to 4542 included;
128 
129 
130  bool
133  iplotta,
135  fYesCleanMvd,
136  fYesCleanStt,
137  fYesSciTil,
143 
144 
145 
148  char
150  fMvdPixelBranch[200],
151  fMvdStripBranch[200];
152 
153 
154 
155 
156  Short_t
157  fnAxialOuterRight, // number of axial Stt, outer, on the right (looking into the beam);
158  fnAxialInnerRight, // number of axial Stt, inner, on the right (looking into the beam);
159  fnAxialOuterLeft, // number of axial Stt, outer, on the left (looking into the beam);
160  fnAxialInnerLeft, // number of axial Stt, inner, on the left (looking into the beam);
161 
162  fListAxialOuterRight[NUMBER_STRAWS], // list of axial Stt, outer, on the right (looking into the beam);
163  fListAxialInnerRight[NUMBER_STRAWS], // list of axial Stt, inner, on the lright (looking into the beam);
164  fListAxialOuterLeft[NUMBER_STRAWS], // list of axial Stt, outer, on the left (looking into the beam);
165  fListAxialInnerLeft[NUMBER_STRAWS], // list of axial Stt, inner, on the left (looking into the beam);
166 
167  fnSkewRight, // number of skew Stt, on the right (looking into the beam);
168  fnSkewLeft, // number of skew Stt, on the right (looking into the beam);
169  fListSkewRight[NUMBER_STRAWS], // list of axial Stt, inner, on the lright (looking into the beam);
170  fListSkewLeft[NUMBER_STRAWS], // list of axial Stt, outer, on the left (looking into the beam);
171 
192  // type = 0 --> Mvd Pixel; type = 1 --> Mvd Strip; type = 1 --> Mvd Strip; type = 2 --> Stt Parallel
193  // type = 3 --> Stt Straw; type 1001 --> SciTil; type -1 --> noise.
200  fnMCTracks,
213  fnSciTilHits,
221 
222 
223  int
225  istampa,
226  IVOLTE ;
227 
228  Double_t
231  fBFIELD,
232 
237 
242 
243 
248 
249  fCandidateSkewS[2*MAXSTTHITS], // here 2*MAXSTTHITS because in principle the skew straw may have
250  fCandidateSkewZ[2*MAXSTTHITS], // 2 intersections wit the helix cylinder;
253 
257  fDELTATHETA,
258  fFimin,
292 
293 //----------------------- real, cputime stuff;
294 
295  Double_t
297  fctime2,
298  frtime,
299  frtime2;
300  TStopwatch
302  ftimer2;
303 //--------------------------------
304 
305 
306 // FairRootManager *ioman;
307 
308  FILE
310  * HANDLE2;
311 
312  TH1F
314  *hdeltaRStrip,
315  *hdeltaRPixel2,
316  *hdeltaRStrip2;
317 
318 
319  TClonesArray
331  *fSciTHitArray,
335  *fSttTubeArray,
339  *fSttHitArray,
348 
349  PndGeoSttPar *fSttParameters; // CHECK added
350 
351 
352 
354 
355 
356  bool AcceptHitsConformal(
357  Double_t distance,
358  Double_t DriftConfR, //drift radius in conformal space
359  Double_t StrawConfR // straw radius in conformal space
360  );
361 
362 
363 
365  Short_t TemporarynSttSkewhitinTrack, // input
366  Short_t SkewList[][2], // input, list of selected skew hits (in skew numbering)
367  Double_t *S, // input, S coordinate of selected Skew hit
368  Double_t *Z, // input, Z coordinate of selected Skew hit
369  Double_t *ZDrift, // input, drift distance IN Z DIRECTION only, of selected Skew hit
370  Double_t *ZError, // input, error (in SZ space) IN Z DIRECTION only, of selected Skew hit
371  Double_t KAPPA, // input, KAPPA result of fit
372  Double_t FI0, // input, FI0 result of fit
373  Short_t *tempore, // output result, associated skew hits
374  Double_t *temporeS, // output, associated skew hit S
375  Double_t *temporeZ, // output, associated skew hits Z
376  Double_t *temporeZDrift, // output, associated skew hit Z drift
377  Double_t *temporeZError, // output, associated skew hits Z error;
378  Short_t *STATUS // output
379  );
380 
381 
382 
383 
384  Short_t AssociateSciTilHit(
385  Double_t Oxx,
386  Double_t Oyy,
387  Double_t Rr,
388  Short_t *List, // output, list of SciTil hits associated (max. 2);
389  Double_t *esse // output, list of S of the SciTil hits associated.
390  );
391 
392 
394  bool *InclusionListSkew,
395  Short_t NSkewhits,
396  Short_t *infoskew,
397  Double_t Oxx,
398  Double_t Oyy,
399  Double_t Rr,
400  Double_t info[][7],
401  Double_t *WDX,
402  Double_t *WDY,
403  Double_t *WDZ,
404  Double_t Fi_low_limit,
405  Double_t Fi_up_limit,
406  Short_t Charge,
407  Short_t SkewList[][2], // output,list of selected skew hits (skew numbering)
408  Double_t *S, // output, S coordinate of selected Skew hit
409  Double_t *Z, // output, Z coordinate of selected Skew hit
410  Double_t *ZDrift, // output, drift distance IN Z DIRECTION only,
411  // of selected Skew hit
412  Double_t *ZError // output, error (in SZ space) IN Z DIRECTION only, of selected Skew hit.
413  );
414 
415 
416 
418  bool *InclusionListSkew,
419  Short_t NSkewhits,
420  Short_t *infoskew,
421  Double_t Oxx,
422  Double_t Oyy,
423  Double_t Rr,
424  Double_t info[][7],
425  Double_t *WDX,
426  Double_t *WDY,
427  Double_t *WDZ,
428  Double_t Fi_low_limit,
429  Double_t Fi_up_limit,
430  Short_t Charge,
431  Short_t SkewList[][2], // output,list of selected skew hits (skew numbering)
432  Double_t *S, // output, S coordinate of selected Skew hit
433  Double_t *Z, // output, Z coordinate of selected Skew hit
434  Double_t *ZDrift, // output, drift distance IN Z DIRECTION only,
435  // of selected Skew hit
436  Double_t *ZError // output, error (in SZ space) IN Z DIRECTION only, of selected Skew hit.
437  );
438 
439 
440  bool BadTrack_ParStt(
441  Double_t Oxx,
442  Double_t Oyy,
443  Double_t Rr,
444  Short_t Charge,
445  Double_t Xcross[2], // Xcross[0]=point of entrance;
446  // Xcross[1]=point of exit.
447  Double_t Ycross[2],
448  Short_t nHits,
449  Short_t* ListHits,
450  Double_t info[][7],
451  Double_t cut,
452  Short_t maxnum,
453  Short_t islack // uncertainty allowed as far as
454  // the n. of hits that should be present.
455  );
456 
458  );
459 
460 
462  Vec <bool>& keepit,
463  Vec <bool>& Mvdhits,
464  Double_t info[][7],
465  Short_t nSttParHit,
466  Short_t StartTrackCand,
467  Short_t EndTrackCand,
468  Double_t *KAPPA,
469  Double_t *FI0,
470  Double_t *Fi_low_limit,
471  Double_t *Fi_up_limit,
472  Short_t *fnSttParHitsinTrack, // input/output
473  Short_t fListSttParHitsinTrack[][MAXSTTHITSINTRACK] // input/output
474  );
475 
476  Short_t CompareTracks(
477  Short_t first_track,
478  Short_t second_track
479  );
480 
481 
482  bool EliminateClones(
483  Short_t nTotalCandidates, // input;
484  Double_t fraction,// input; raction of common hits to declare the two tracks clones;
485  bool * keepit // input and output;
486  );
487 
488 
490  Short_t ncand,
491  Short_t MaxTurnofTracks,
492  Double_t signPz,
493  Double_t *SchosenPixel,
494  Double_t *SchosenStrip,
495  Double_t *SchosenSkew,
496  Double_t *ZchosenPixel,
497  Double_t *ZchosenStrip,
498  Double_t *ZchosenSkew,
499  Double_t *ErrorchosenPixel,
500  Double_t *ErrorchosenStrip,
501  Double_t *ErrorchosenSkew,
502  Double_t KAPPA,
503  Double_t FI0,
504  Double_t Rr
505  );
506 
507 
508 
510  Short_t ncand,
511  Short_t MaxTurnofTracks,
512  Double_t signPz,
513  Double_t *SchosenPixel,
514  Double_t *SchosenStrip,
515  Double_t *SchosenSkew,
516  Double_t *ZchosenPixel,
517  Double_t *ZchosenStrip,
518  Double_t *ZchosenSkew,
519  Double_t *ErrorchosenPixel,
520  Double_t *ErrorchosenStrip,
521  Double_t *ErrorchosenSkew,
522  Double_t KAPPA,
523  Double_t FI0,
524  Double_t Rr
525  );
526 
527 
528 
529 
530  void FindCharge(
531  Double_t oX,
532  Double_t oY,
533  Short_t nHits,
534  Double_t *X,
535  Double_t *Y,
536  Short_t * Charge
537  );
538 
539 
540 
541 
543  Short_t NFiCELLDISTANCE,
544  // seed track (original notation) as far as the Fi angle is concerned
545  Short_t iSeed,
546  // n. of hits to search in ListHitsinTrackinWhichToSearch
547  Short_t NParallelToSearch,
548  Short_t *ListHitsinTrackinWhichToSearch,
549  bool *InclusionList,
550  Short_t *FiConformalIndex,
551  Short_t *OutputListHitsinTrack
552  );
553 
554  void GetVolumeCharacteristics( TGeoVolume * tgeovol, TGeoHMatrix *mat,
555  Double_t GlobalScal[3], Double_t GlobalTrans[3], Double_t GlobalRot[9]);
556 
558  Short_t TemporarynSkewHitsinTrack,
559  Vec <Double_t> & S,
560  Double_t *Fi_initial_helix_referenceframe,
561  Short_t Charge
562  );
563 
564 
565  void InfoXYZParal(
566  Double_t info[][7],
567  Short_t infopar,
568  Double_t Oxx,
569  Double_t Oyy,
570  Double_t Rr,
571  Double_t KAPPA,
572  Double_t FI0,
573  Short_t Charge,
574  Double_t *Posiz // output
575  );
576 
577 
579  Double_t info[][7],
580  Short_t *ListSttParHi,
581  Int_t nSttParHit
582  );
583 
584 
586  bool* keepit,
587  bool* SttSZfit,
588  Short_t nTotalCandidates,
589  Short_t* Charge,
590  Int_t nSttTrackCand,
591  Double_t *FI0,
592  Double_t *KAPPA,
593  Double_t info[][7],
594  Double_t SchosenSkew[][MAXSTTHITS],
595  Double_t ZchosenSkew[][MAXSTTHITS],
596  Short_t *daTrackFoundaTrackMC
597  );
598 
599 
600  void LoadSZetc_forSZfit(
601  Short_t ncand, // input
602  Short_t nhitsinfit,
603 // Double_t * TemporaryS, // input
604 // Double_t * TemporaryZ, // input
605 // Double_t * TemporaryZDrift, // input
606 // Double_t * TemporaryZError, // input
607 
608  Vec <Double_t>& ErrorDriftRadius, // output
609  Double_t * ErrorDriftRadiusbis, // output
610  Vec <Double_t>& DriftRadius, // output
611  Double_t * DriftRadiusbis, // output
612  Vec <Double_t> & S, // output
613  Double_t * Sbis, // output
614  Vec <Double_t>& ZED, // output
615  Double_t * ZEDbis // output
616  );
617 
618 
619 
620  void LoadSZetc_forSZfit2(
621  Short_t ncand, // input
622  Short_t nhitsinfit,
623  Double_t * S_Skew, // input
624  Double_t * TemporaryZ, // input
625  Double_t * TemporaryZDrift, // input
626  Double_t * TemporaryZError, // input
627 
628  Vec <Double_t>& ErrorDriftRadius, // output
629  Double_t * ErrorDriftRadiusbis, // output
630  Vec <Double_t>& DriftRadius, // output
631  Double_t * DriftRadiusbis, // output
632  Vec <Double_t> & S, // output
633  Double_t * Sbis, // output
634  Vec <Double_t>& ZED, // output
635  Double_t * ZEDbis // output
636  );
637 
639  Int_t nSttHit,
640  Short_t * TubeID,
641  Double_t info[][7]
642  );
643 
644 
645 
647  Vec<bool> &keepit,
648  Double_t delta,
649  Double_t highqualitycut,
650  Short_t nSttTrackCand,
651  Double_t *FI0,
652  Double_t *Fifirst,
653  Vec <Short_t>& CHARGE,
654  Short_t *nPixelHitsinTrack, // output
655  Short_t ListPixelHitsinTrack[][MAXMVDPIXELHITSINTRACK], // output
656  Short_t *nStripHitsinTrack, // output
657  Short_t ListStripHitsinTrack[][MAXMVDSTRIPHITSINTRACK] // output
658  );
659 
660 
661 
662 
664  Vec <bool>& keepit,
665  Vec <bool>& Mvdhits,
666  Double_t delta,
667  Double_t highqualitycut,
668  Short_t nSttTrackCand,
669  Double_t *FI0,
670  Double_t *Fifirst,
671  Vec <Short_t>& CHARGE,
672 
673  Short_t *nPixelHitsinTrack, // output
674  Short_t ListPixelHitsinTrack[][MAXMVDPIXELHITSINTRACK], // output
675  Short_t *nStripHitsinTrack, // output
676  Short_t ListStripHitsinTrack[][MAXMVDSTRIPHITSINTRACK] // output
677  );
678 
679 
680 
681 
683  bool *keepit,
684  Double_t delta,
685  Double_t highqualitycut,
686  Short_t nSttTrackCand,
687  Double_t *FI0,
688  Double_t *Fifirst,
689  Short_t *CHARGE,
690  Short_t *nPixelHitsinTrack, // output
691  Short_t ListPixelHitsinTrack[][MAXMVDPIXELHITSINTRACK], // output
692  Short_t *nStripHitsinTrack, // output
693  Short_t ListStripHitsinTrack[][MAXMVDSTRIPHITSINTRACK] // output
694  );
695 
696 
697 
699  bool* keepit,
700  Short_t ncand,
701  Double_t info[][7],
702  Double_t Trajectory_Start[][2],
703  Short_t* CHARGE,
704  Double_t SchosenSkew[][MAXSTTHITS]
705  );
706 
708  bool* keepit,
709  Short_t ncand,
710  Double_t info[][7]
711  );
712 
714  Double_t oX,
715  Double_t oY,
716  Double_t Rr,
717  Short_t nSkewhit,
718  Short_t *ListSkewHits,
719  Double_t *SList, // it is related to the skew hits. IMPORTANT :
720  // the index must be the ORIGINAL skew hit number,
721  // therefore SList[ListSkewHits[*]].
722  Short_t Charge,
723  Short_t nParHits,
724  Short_t *ListParHits,
725  Double_t *U,
726  Double_t *V,
727  Short_t *BigList // final ordered Parallel+Skew list;
728  // already in NATIVE hit number.
729  );
730 
732  Double_t oX,
733  Double_t oY,
734  Double_t Traj_Sta[2],
735  Int_t nHits,
736  Double_t XY[][2], // XY[*][0] = X position, XY[*][0] = Y position.
737  Short_t Charge, // input
738  Int_t *ListHits
739  );
740 
741 
742 
743 
745 // Vec <bool>& keepit,
746  bool * keepit,
747  Short_t FirstCandidate,
748  Short_t LastCandidate,
749  Double_t info[][7],
750  Double_t Trajectory_Start[][2],
751 // Vec <Short_t>& CHARGE,
752  Short_t * CHARGE,
753  Double_t SchosenSkew[][MAXSTTHITS]
754  );
755  void RefitMvdStt(
756  Short_t nCandHit,
757  Short_t *fListTrackCandHit,
758  Short_t *fListTrackCandHitType,
759  Double_t info[][7],
760  Double_t rotationangle,
761  Double_t trajectory_vertex[2],
762  Short_t iexcl,
763  Double_t *pAlfa, // output of the fit
764  Double_t *pBeta, // output of the fit
765  Double_t *pGamma,// set at zero always for now
766  bool *status // fit status; true = successful
767  );
768 
769  void StartFromSciTil(
770  Short_t * Charge,
771  Short_t * FiConformalIndex,
772  Double_t *Fi_final_helix_referenceframe,
773  Double_t *Fi_initial_helix_referenceframe,
774  Double_t * Fi_low_limit,
775  Double_t * Fi_up_limit,
776  Short_t HitsinBoxConformal[][NRDIVCONFORMAL][NFIDIVCONFORMAL],
777  Double_t info[][7],
778  Double_t infoparalConformal[][5],
779  Short_t nBoxConformal[][NFIDIVCONFORMAL],
780  Int_t nSttParHit,
781  Int_t &nSttTrackCand,
782  Short_t * RConformalIndex,
783  Double_t *trajectory_vertex,
784  Double_t *UU,
785  Double_t *VV
786  );
787 
789 
790  // input
791  Short_t nHits,
792  Short_t *ListHits,
793  Double_t info[][7],
794  Double_t RStrawDetInnerParMax,
795 
796  // output
797  Short_t *nInnerHits,
798  Short_t *ListInnerHits,
799  Short_t *nOuterHits,
800  Short_t *ListOuterHits,
801 
802  Short_t *nInnerHitsLeft,
803  Short_t *ListInnerHitsLeft,
804  Short_t *nInnerHitsRight,
805  Short_t *ListInnerHitsRight,
806 
807  Short_t *nOuterHitsLeft,
808  Short_t *ListOuterHitsLeft,
809  Short_t *nOuterHitsRight,
810  Short_t *ListOuterHitsRight
811  );
812 
813  bool SttParalCleanup(
814  Double_t GAP,
815  Double_t Oxx,
816  Double_t Oyy,
817  Double_t Rr,
818  Short_t Charge,
819  Double_t Start[3],
820  Double_t FI0,
821  Double_t FiLimitAdmissible,
822  Short_t nHits,
823  Short_t *Listofhits,
824  Double_t info[][7],
825  Double_t RStrawDetMin,
826  Double_t RStrawDetInnerParMax,
827  Double_t RStrawDetOuterParMin,
828  Double_t RStrawDetMax
829  );
830 
831 
832  bool SttSkewCleanup(
833  Double_t GAP,
834  Double_t Oxx,
835  Double_t Oyy,
836  Double_t Rr,
837  Short_t Charge,
838  Double_t Start[3],
839  Double_t FI0,
840  Double_t FiLimitAdmissible,
841  Short_t nHits,
842  Short_t *Listofhits,
843  Double_t *S,
844  Double_t info[][7],
845  Double_t RminStrawSkew,
846  Double_t RmaxStrawSkew,
847  Double_t cut,
848  Short_t maxnum
849  );
850 
851 
852  bool TrackCleanup(
853  Double_t GAP,
854  Double_t Oxx,
855  Double_t Oyy,
856  Double_t Rr,
857  Double_t KAPPA,
858  Double_t FI0,
859  Short_t Charge,
860  Double_t Start[3],
861  Short_t &nHitsPar,
862  Short_t *ListHitsPar,
863  Short_t &nHitsSkew,
864  Short_t *ListHitsSkew,
865  Double_t *auxS,
866  Double_t info[][7],
867  Double_t RStrawDetMin,
868  Double_t ApotemaMaxInnerPar,
869  Double_t ApotemaMinSkew,
870  Double_t ApotemaMaxSkew,
871  Double_t ApotemaMinOuterPar,
872  Double_t RStrawDetMax
873  );
874 
875 
877  bool *ExclusionList,
878  Double_t m,
879  Double_t q,
880  Short_t Status,
881  Short_t nHitsinTrack,
882  Short_t *ListHitsinTrack,
883  Int_t NhitsParallel,
884  Double_t Oxx,
885  Double_t Oyy,
886  Double_t Rr,
887  Double_t info[][7],
888  Double_t infoparalConformal[][5],
889  Short_t *RConformalIndex,
890  Short_t *FiConformalIndex,
891  Short_t nBoxConformal[][NFIDIVCONFORMAL],
892  Short_t HitsinBoxConformal[][NRDIVCONFORMAL][NFIDIVCONFORMAL],
893  Short_t *auxListHitsinTrack
894  );
895 
896 
897 
899  bool *ExclusionList,
900  Int_t NhitsParallel,
901  Double_t Oxx,
902  Double_t Oyy,
903  Double_t Rr,
904  Double_t info[][7],
905  Double_t Fi_low,
906  Double_t Fi_up,
907  Short_t *auxListHitsinTrack
908  );
909 
910 
911  void StoreSZ_MvdScitil(Short_t ncand);
912 
913 
915 
916 };
917 
918 #endif
void SetEventsToPlot(int nev)
bool fInclusionListSciTil[MAXSCITILHITS]
virtual void Exec(Option_t *opt)
TClonesArray * fSciTHitArray
Double_t fS_SciTilHitsinTrack[MAXTRACKSPEREVENT][MAXSCITILHITS]
Double_t fYMvdStrip[MAXMVDSTRIPHITS]
Short_t fListAxialInnerLeft[NUMBER_STRAWS]
Double_t fXMvdStrip[MAXMVDSTRIPHITS]
bool AcceptHitsConformal(Double_t distance, Double_t DriftConfR, Double_t StrawConfR)
Double_t fxxyyTube[NUMBER_STRAWS]
bool fTypeConf[MAXTRACKSPEREVENT]
void InfoXYZParal(Double_t info[][7], Short_t infopar, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t KAPPA, Double_t FI0, Short_t Charge, Double_t *Posiz)
TClonesArray * fSttTrackArray
Short_t fListSttParHits[MAXSTTHITS]
Short_t fTubeID[MAXSTTHITS]
Short_t fListMvdDSPixelHitNotTrackCand[MAXMVDPIXELHITS]
Short_t fListSttSkewHitsinTrack[MAXTRACKSPEREVENT][MAXSTTHITSINTRACK]
Double_t fsigmaYMvdStrip[MAXMVDSTRIPHITS]
Double_t fOy[MAXTRACKSPEREVENT]
Short_t TrkAssociatedParallelHitsToHelixQuater(bool *ExclusionList, Double_t m, Double_t q, Short_t Status, Short_t nHitsinTrack, Short_t *ListHitsinTrack, Int_t NhitsParallel, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t info[][7], Double_t infoparalConformal[][5], Short_t *RConformalIndex, Short_t *FiConformalIndex, Short_t nBoxConformal[][NFIDIVCONFORMAL], Short_t HitsinBoxConformal[][NRDIVCONFORMAL][NFIDIVCONFORMAL], Short_t *auxListHitsinTrack)
__m128 m
Definition: P4_F32vec4.h:28
TClonesArray * fSttMvdPndTrackCandArray
Double_t fZMvdStrip[MAXMVDSTRIPHITS]
void OrderingUsingConformal(Double_t oX, Double_t oY, Double_t Traj_Sta[2], Int_t nHits, Double_t XY[][2], Short_t Charge, Int_t *ListHits)
Short_t fListMvdStripHitsinTrack[MAXTRACKSPEREVENT][MAXMVDSTRIPHITSINTRACK]
Double_t fsigmaZMvdStrip[MAXMVDSTRIPHITS]
Double_t fMCSkewAloneY[MAXSTTHITS]
Short_t fnMvdUSStripHitNotTrackCand
void MatchMvdHitsToSttTracksagain(Vec< bool > &keepit, Vec< bool > &Mvdhits, Double_t delta, Double_t highqualitycut, Short_t nSttTrackCand, Double_t *FI0, Double_t *Fifirst, Vec< Short_t > &CHARGE, Short_t *nPixelHitsinTrack, Short_t ListPixelHitsinTrack[][MAXMVDPIXELHITSINTRACK], Short_t *nStripHitsinTrack, Short_t ListStripHitsinTrack[][MAXMVDSTRIPHITSINTRACK])
Double_t fCandidatePixelDriftRadius[MAXMVDPIXELHITS]
Double_t fCandidateStripZ[MAXMVDSTRIPHITS]
Short_t CompareTracks(Short_t first_track, Short_t second_track)
Short_t fnSciTilHitsinTrack[MAXTRACKSPEREVENT]
static const Short_t LEGIANDRE_NRADIUSDIV
#define verbose
bool SttSkewCleanup(Double_t GAP, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3], Double_t FI0, Double_t FiLimitAdmissible, Short_t nHits, Short_t *Listofhits, Double_t *S, Double_t info[][7], Double_t RminStrawSkew, Double_t RmaxStrawSkew, Double_t cut, Short_t maxnum)
void Initial_SttParHits_DecreasingR_Ordering(Double_t info[][7], Short_t *ListSttParHi, Int_t nSttParHit)
Double_t fsigmaXMvdStrip[MAXMVDSTRIPHITS]
Short_t fMCtrack_of_Strip[MAXMVDSTRIPHITS]
Short_t fListAxialInnerRight[NUMBER_STRAWS]
Double_t fposizSciTil[MAXSCITILHITS][3]
void StartFromSciTil(Short_t *Charge, Short_t *FiConformalIndex, Double_t *Fi_final_helix_referenceframe, Double_t *Fi_initial_helix_referenceframe, Double_t *Fi_low_limit, Double_t *Fi_up_limit, Short_t HitsinBoxConformal[][NRDIVCONFORMAL][NFIDIVCONFORMAL], Double_t info[][7], Double_t infoparalConformal[][5], Short_t nBoxConformal[][NFIDIVCONFORMAL], Int_t nSttParHit, Int_t &nSttTrackCand, Short_t *RConformalIndex, Double_t *trajectory_vertex, Double_t *UU, Double_t *VV)
void GetVolumeCharacteristics(TGeoVolume *tgeovol, TGeoHMatrix *mat, Double_t GlobalScal[3], Double_t GlobalTrans[3], Double_t GlobalRot[9])
Double_t fMCtruthTrkInfo[15][MAXMCTRACKS]
TClonesArray * fSttMvdPndTrackArray
Double_t fsigmaZMvdPixel[MAXMVDPIXELHITS]
Short_t fListHitTypeMvdTrackCand[MAXMVDTRACKSPEREVENT][MAXMVDPIXELHITSINTRACK+MAXMVDSTRIPHITSINTRACK]
Short_t AssociateSkewHitsToXYTrack2(bool *InclusionListSkew, Short_t NSkewhits, Short_t *infoskew, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t info[][7], Double_t *WDX, Double_t *WDY, Double_t *WDZ, Double_t Fi_low_limit, Double_t Fi_up_limit, Short_t Charge, Short_t SkewList[][2], Double_t *S, Double_t *Z, Double_t *ZDrift, Double_t *ZError)
Double_t fpSciTilx[MAXSCITILHITS]
Double_t fALFA[MAXTRACKSPEREVENT]
void SetPersistency(Bool_t val=kTRUE)
Short_t fListSkewLeft[NUMBER_STRAWS]
Double_t fCandidateSciTilDriftRadius
Double_t fpSciTily[MAXSCITILHITS]
timer Start()
static const Short_t MAXMCTRACKS
Short_t fnSttSkewHitsinTrack[MAXTRACKSPEREVENT]
Double_t fOx[MAXTRACKSPEREVENT]
double Y
Definition: anaLmdDigi.C:68
void RefitMvdStt(Short_t nCandHit, Short_t *fListTrackCandHit, Short_t *fListTrackCandHitType, Double_t info[][7], Double_t rotationangle, Double_t trajectory_vertex[2], Short_t iexcl, Double_t *pAlfa, Double_t *pBeta, Double_t *pGamma, bool *status)
Short_t fListTrackCandHit[MAXTRACKSPEREVENT][MAXSTTHITSINTRACK+MAXMVDPIXELHITSINTRACK+MAXMVDSTRIPHITSINTRACK+MAXSCITILHITSINTRACK]
void OrderingR_Loading_ListTrackCandHit(bool *keepit, Short_t ncand, Double_t info[][7])
Short_t fListMvdUSPixelHitNotTrackCand[MAXMVDPIXELHITS]
Short_t fnSttParHitsinTrack[MAXTRACKSPEREVENT]
Short_t fListSkewRight[NUMBER_STRAWS]
Short_t fStrawCode2[NUMBER_STRAWS]
Double_t fCosine[LEGIANDRE_NTHETADIV]
bool EliminateClones(Short_t nTotalCandidates, Double_t fraction, bool *keepit)
Double_t fCandidateSciTilS
Short_t fListMvdUSStripHitNotTrackCand[MAXMVDSTRIPHITS]
Double_t fCxMC[MAXMCTRACKS]
Double_t fR_MC[MAXMCTRACKS]
bool finMvdTrackCandPixel[MAXMVDPIXELHITS]
static const Short_t MAXSCITILHITSINTRACK
void Initialization_ClassVariables()
Short_t fListTrackCandHitType[MAXTRACKSPEREVENT][MAXSTTHITSINTRACK+MAXMVDPIXELHITSINTRACK+MAXMVDSTRIPHITSINTRACK+MAXSCITILHITSINTRACK]
static const Short_t MAXMVDPIXELHITSINTRACK
bool finMvdTrackCandStrip[MAXMVDSTRIPHITS]
double cut[MAX]
Definition: autocutx.C:36
Double_t fMCSkewAloneX[MAXSTTHITS]
Double_t fsigmaYMvdPixel[MAXMVDPIXELHITS]
TClonesArray * fSttTubeArray
Short_t fnParContiguous[NUMBER_STRAWS]
Short_t fnMvdDSPixelHitNotTrackCand
char fMvdPixelBranch[200]
Double_t fXMvdPixel[MAXMVDPIXELHITS]
static const Short_t LEGIANDRE_NTHETADIV
#define BOCA_90DEGREES_DIVISIONS
Short_t fListMvdDSStripHitNotTrackCand[MAXMVDSTRIPHITS]
int nHits
Definition: RiemannTest.C:16
TClonesArray * fMvdPixelHitArray
void SeparateInnerOuterParallel(Short_t nHits, Short_t *ListHits, Double_t info[][7], Double_t RStrawDetInnerParMax, Short_t *nInnerHits, Short_t *ListInnerHits, Short_t *nOuterHits, Short_t *ListOuterHits, Short_t *nInnerHitsLeft, Short_t *ListInnerHitsLeft, Short_t *nInnerHitsRight, Short_t *ListInnerHitsRight, Short_t *nOuterHitsLeft, Short_t *ListOuterHitsLeft, Short_t *nOuterHitsRight, Short_t *ListOuterHitsRight)
void MatchMvdHitsToSttTracks(Vec< bool > &keepit, Double_t delta, Double_t highqualitycut, Short_t nSttTrackCand, Double_t *FI0, Double_t *Fifirst, Vec< Short_t > &CHARGE, Short_t *nPixelHitsinTrack, Short_t ListPixelHitsinTrack[][MAXMVDPIXELHITSINTRACK], Short_t *nStripHitsinTrack, Short_t ListStripHitsinTrack[][MAXMVDSTRIPHITSINTRACK])
Double_t
Double_t fCandidateStripErrorDriftRadius[MAXMVDSTRIPHITS]
TClonesArray * fSttTrackCandArray
Double_t frefindexMvdPixel[MAXMVDPIXELHITS]
Double_t fCyMC[MAXMCTRACKS]
Double_t fsigmaXMvdPixel[MAXMVDPIXELHITS]
Short_t fListHitMvdTrackCand[MAXMVDTRACKSPEREVENT][MAXMVDPIXELHITSINTRACK+MAXMVDSTRIPHITSINTRACK]
Short_t fnMvdDSStripHitNotTrackCand
Double_t fxTube[NUMBER_STRAWS]
TClonesArray * fSttPointArray
Short_t fListParContiguous[NUMBER_STRAWS][6]
Short_t fListAxialOuterRight[NUMBER_STRAWS]
static const Short_t MAXSCITILHITS
bool fInclusionListStt[MAXSTTHITS]
void CollectParSttHitsagain(Vec< bool > &keepit, Vec< bool > &Mvdhits, Double_t info[][7], Short_t nSttParHit, Short_t StartTrackCand, Short_t EndTrackCand, Double_t *KAPPA, Double_t *FI0, Double_t *Fi_low_limit, Double_t *Fi_up_limit, Short_t *fnSttParHitsinTrack, Short_t fListSttParHitsinTrack[][MAXSTTHITSINTRACK])
Double_t fCandidateStripDriftRadius[MAXMVDSTRIPHITS]
TClonesArray * fSttHitArray
static const Short_t MAXSTTHITSINTRACK
void SetPersistence(Bool_t persistence)
void LoadSZetc_forSZfit2(Short_t ncand, Short_t nhitsinfit, Double_t *S_Skew, Double_t *TemporaryZ, Double_t *TemporaryZDrift, Double_t *TemporaryZError, Vec< Double_t > &ErrorDriftRadius, Double_t *ErrorDriftRadiusbis, Vec< Double_t > &DriftRadius, Double_t *DriftRadiusbis, Vec< Double_t > &S, Double_t *Sbis, Vec< Double_t > &ZED, Double_t *ZEDbis)
Double_t fBETA[MAXTRACKSPEREVENT]
Double_t fCandidateSciTilErrorDriftRadius
char fSttBranch[200]
Double_t fCandidatePixelS[MAXMVDPIXELHITS]
Short_t AssociateBetterAfterFitSkewHitsToXYTrack(Short_t TemporarynSttSkewhitinTrack, Short_t SkewList[][2], Double_t *S, Double_t *Z, Double_t *ZDrift, Double_t *ZError, Double_t KAPPA, Double_t FI0, Short_t *tempore, Double_t *temporeS, Double_t *temporeZ, Double_t *temporeZDrift, Double_t *temporeZError, Short_t *STATUS)
static const Short_t NUMBER_STRAWS
static const Short_t MAXMVDPIXELHITS
Short_t fMCtrack_of_Pixel[MAXMVDPIXELHITS]
TClonesArray * fMvdMCPointArray
void FixDiscontinuitiesFiangleinSZplane(Short_t TemporarynSkewHitsinTrack, Vec< Double_t > &S, Double_t *Fi_initial_helix_referenceframe, Short_t Charge)
TClonesArray * fMCTrackArray
bool fSingleHitListStt[MAXSTTHITS]
static const Short_t MAXMVDSTRIPHITSINTRACK
void StoreSZ_MvdScitil(Short_t ncand)
void Ordering_Loading_ListTrackCandHit(bool *keepit, Short_t FirstCandidate, Short_t LastCandidate, Double_t info[][7], Double_t Trajectory_Start[][2], Short_t *CHARGE, Double_t SchosenSkew[][MAXSTTHITS])
void FindCharge(Double_t oX, Double_t oY, Short_t nHits, Double_t *X, Double_t *Y, Short_t *Charge)
void SetInputBranchName(const char *string1, const char *string2, const char *string3)
void MakeInclusionListStt(Int_t nSttHit, Short_t *TubeID, Double_t info[][7])
Double_t fCandidatePixelErrorDriftRadius[MAXMVDPIXELHITS]
Double_t fYMvdPixel[MAXMVDPIXELHITS]
Short_t TrkAssociatedParallelHitsToHelix5(bool *ExclusionList, Int_t NhitsParallel, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t info[][7], Double_t Fi_low, Double_t Fi_up, Short_t *auxListHitsinTrack)
Short_t fnMvdUSPixelHitNotTrackCand
double X
Definition: anaLmdDigi.C:68
Short_t fnHitMvdTrackCand[MAXMVDTRACKSPEREVENT]
void NoMvdAloneTracking()
Double_t fSinus[LEGIANDRE_NTHETADIV]
Short_t fStrawCode[NUMBER_STRAWS]
Short_t fListSciTilHitsinTrack[MAXTRACKSPEREVENT][MAXSCITILHITSINTRACK]
bool BadTrack_ParStt(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Xcross[2], Double_t Ycross[2], Short_t nHits, Short_t *ListHits, Double_t info[][7], Double_t cut, Short_t maxnum, Short_t islack)
Short_t fnMvdPixelHitsinTrack[MAXTRACKSPEREVENT]
Double_t fCandidateSkewS[2 *MAXSTTHITS]
Short_t fListSttSkewHitsinTrackSolution[MAXTRACKSPEREVENT][MAXSTTHITSINTRACK]
Short_t fListMvdPixelHitsinTrack[MAXTRACKSPEREVENT][MAXMVDPIXELHITSINTRACK]
Short_t fnAxialInnerLeft
Double_t fCandidateSkewZDrift[2 *MAXSTTHITS]
void YesMvdAloneTracking()
void LoadPndTrack_TrackCand(bool *keepit, bool *SttSZfit, Short_t nTotalCandidates, Short_t *Charge, Int_t nSttTrackCand, Double_t *FI0, Double_t *KAPPA, Double_t info[][7], Double_t SchosenSkew[][MAXSTTHITS], Double_t ZchosenSkew[][MAXSTTHITS], Short_t *daTrackFoundaTrackMC)
bool SttParalCleanup(Double_t GAP, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3], Double_t FI0, Double_t FiLimitAdmissible, Short_t nHits, Short_t *Listofhits, Double_t info[][7], Double_t RStrawDetMin, Double_t RStrawDetInnerParMax, Double_t RStrawDetOuterParMin, Double_t RStrawDetMax)
virtual InitStatus Init()
Double_t fCandidateSkewZ[2 *MAXSTTHITS]
Short_t fnAxialInnerRight
Double_t fyTube[NUMBER_STRAWS]
void EliminateSpuriousSZ_ter(Short_t ncand, Short_t MaxTurnofTracks, Double_t signPz, Double_t *SchosenPixel, Double_t *SchosenStrip, Double_t *SchosenSkew, Double_t *ZchosenPixel, Double_t *ZchosenStrip, Double_t *ZchosenSkew, Double_t *ErrorchosenPixel, Double_t *ErrorchosenStrip, Double_t *ErrorchosenSkew, Double_t KAPPA, Double_t FI0, Double_t Rr)
double Z
Definition: anaLmdDigi.C:68
Short_t fListAxialOuterLeft[NUMBER_STRAWS]
void LoadSZetc_forSZfit(Short_t ncand, Short_t nhitsinfit, Vec< Double_t > &ErrorDriftRadius, Double_t *ErrorDriftRadiusbis, Vec< Double_t > &DriftRadius, Double_t *DriftRadiusbis, Vec< Double_t > &S, Double_t *Sbis, Vec< Double_t > &ZED, Double_t *ZEDbis)
bool TrackCleanup(Double_t GAP, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t KAPPA, Double_t FI0, Short_t Charge, Double_t Start[3], Short_t &nHitsPar, Short_t *ListHitsPar, Short_t &nHitsSkew, Short_t *ListHitsSkew, Double_t *auxS, Double_t info[][7], Double_t RStrawDetMin, Double_t ApotemaMaxInnerPar, Double_t ApotemaMinSkew, Double_t ApotemaMaxSkew, Double_t ApotemaMinOuterPar, Double_t RStrawDetMax)
Double_t fZMvdPixel[MAXMVDPIXELHITS]
static const Short_t MAXTRACKSPEREVENT
TClonesArray * fMvdTrackCandArray
Double_t fGAMMA[MAXTRACKSPEREVENT]
Short_t fListSttParHitsinTrack[MAXTRACKSPEREVENT][MAXSTTHITSINTRACK]
void OrderingConformal_Loading_ListTrackCandHit(bool *keepit, Short_t ncand, Double_t info[][7], Double_t Trajectory_Start[][2], Short_t *CHARGE, Double_t SchosenSkew[][MAXSTTHITS])
Short_t AssociateSkewHitsToXYTrack(bool *InclusionListSkew, Short_t NSkewhits, Short_t *infoskew, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t info[][7], Double_t *WDX, Double_t *WDY, Double_t *WDZ, Double_t Fi_low_limit, Double_t Fi_up_limit, Short_t Charge, Short_t SkewList[][2], Double_t *S, Double_t *Z, Double_t *ZDrift, Double_t *ZError)
void MatchMvdHitsToSttTracks2(bool *keepit, Double_t delta, Double_t highqualitycut, Short_t nSttTrackCand, Double_t *FI0, Double_t *Fifirst, Short_t *CHARGE, Short_t *nPixelHitsinTrack, Short_t ListPixelHitsinTrack[][MAXMVDPIXELHITSINTRACK], Short_t *nStripHitsinTrack, Short_t ListStripHitsinTrack[][MAXMVDSTRIPHITSINTRACK])
Double_t fpSciTilz[MAXSCITILHITS]
Short_t fnAxialOuterRight
Short_t FindTrackStrictCollection(Short_t NFiCELLDISTANCE, Short_t iSeed, Short_t NParallelToSearch, Short_t *ListHitsinTrackinWhichToSearch, bool *InclusionList, Short_t *FiConformalIndex, Short_t *OutputListHitsinTrack)
TClonesArray * fSciTPointArray
Short_t AssociateSciTilHit(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t *List, Double_t *esse)
Double_t fCandidateSkewZError[2 *MAXSTTHITS]
Short_t fnMvdStripHitsinTrack[MAXTRACKSPEREVENT]
Double_t fCandidateSciTilZ
Short_t fnTrackCandHit[MAXTRACKSPEREVENT]
static const Short_t NFIDIVCONFORMAL
void OrderingSttSkewandSttParallel(Double_t oX, Double_t oY, Double_t Rr, Short_t nSkewhit, Short_t *ListSkewHits, Double_t *SList, Short_t Charge, Short_t nParHits, Short_t *ListParHits, Double_t *U, Double_t *V, Short_t *BigList)
static const Short_t MAXMVDSTRIPHITS
Double_t fCandidatePixelZ[MAXMVDPIXELHITS]
ClassDef(PndTrkTracking2, 1)
Short_t fListSttSkewHits[MAXSTTHITS]
Double_t fR[MAXTRACKSPEREVENT]
Double_t fradiaConf[NRDIVCONFORMAL]
static const Short_t NRDIVCONFORMAL
TStopwatch ftimer2
char fMvdStripBranch[200]
TClonesArray * fMvdStripHitArray
int status[10]
Definition: f_Init.h:28
Short_t fnAxialOuterLeft
static const Short_t MAXSTTHITS
void EliminateSpuriousSZ_bis(Short_t ncand, Short_t MaxTurnofTracks, Double_t signPz, Double_t *SchosenPixel, Double_t *SchosenStrip, Double_t *SchosenSkew, Double_t *ZchosenPixel, Double_t *ZchosenStrip, Double_t *ZchosenSkew, Double_t *ErrorchosenPixel, Double_t *ErrorchosenStrip, Double_t *ErrorchosenSkew, Double_t KAPPA, Double_t FI0, Double_t Rr)
static const Short_t MAXMVDTRACKSPEREVENT
PndGeoSttPar * fSttParameters
Double_t fCandidateStripS[MAXMVDSTRIPHITS]
Double_t frefindexMvdStrip[MAXMVDSTRIPHITS]
Double_t fzTube[NUMBER_STRAWS]