PandaRoot
PndTrkTracking2.h
Go to the documentation of this file.
1 #ifndef PndTrkTracking2_H
2 #define PndTrkTracking2_H 1
3 #include <vector>
4 
5 // #include "FairRootManager.h"
6 #include "PndPersistencyTask.h"
7 #include "PndGeoSttPar.h"
8 #include "PndMCTrack.h"
9 #include "PndTrkPrintouts.h"
10 #include "PndSttTrack.h"
11 #include "PndSttTrackFinder.h"
12 #include "PndSttTube.h"
13 #include "PndTrkVectors.h"
14 
15 #include "TClonesArray.h"
16 #include "TGeoVolume.h"
17 #include "TStopwatch.h"
18 #include "TList.h"
19 #include "TH1.h"
20 #include "TH1F.h"
21 #include "TH2F.h"
22 
23 class FairMCPoint;
24 
26 
27  public:
30 
32  PndTrkTracking2(Int_t verbose);
33 
35  PndTrkTracking2(int istamp, bool iplot, bool doMcComparison);
36 
38  PndTrkTracking2(int istamp, bool iplot, bool doMcComparison, bool doSciTil);
39 
42 
43  void Cleanup()
44  {
45  fYesCleanStt = true;
46  fYesCleanMvd = true;
47  return;
48  };
49  void NOCleanup()
50  {
51  fYesCleanStt = false;
52  fYesCleanMvd = false;
53  return;
54  };
55 
56  void CleanupStt()
57  {
58  fYesCleanStt = true;
59  return;
60  };
61  void NOCleanupStt()
62  {
63  fYesCleanStt = false;
64  return;
65  };
66  void CleanupMvd()
67  {
68  fYesCleanMvd = true;
69  return;
70  };
71  void NOCleanupMvd()
72  {
73  fYesCleanMvd = false;
74  return;
75  };
76 
78  virtual void Exec(Option_t *opt);
79 
81  virtual InitStatus Init();
82 
84  {
85  fMvdAloneTracking = false;
86  return;
87  };
88 
89  void PrintTime()
90  {
91  cout << "\nMy calculation of the time is :";
92  cout << " real time " << frtime2 << " sec., CPU time " << fctime2 << " seconds." << endl << endl;
93  return;
94  };
95 
96  void SetInputBranchName(const char *string1, const char *string2, const char *string3)
97  {
98  sprintf(fSttBranch, "%s", string1);
99  sprintf(fMvdPixelBranch, "%s", string2);
100  sprintf(fMvdStripBranch, "%s", string3);
101  return;
102  };
103 
104  void SetEventsToPlot(int nev) { fNevents_to_plot = nev; };
105 
106  void SetParContainers();
107 
109  void SetPersistence(Bool_t persistence) { SetPersistency(persistence); }
110 
112  {
113  fMvdAloneTracking = true;
114  return;
115  };
116 
117  // write out the histograms
118  void WriteHistograms();
119 
120  private:
121 // divisions of the Theta angle range [0, 90 degrees );
122 #define BOCA_90DEGREES_DIVISIONS 180
123 
124  static const Short_t LEGIANDRE_NRADIUSDIV = 100,
125  LEGIANDRE_NTHETADIV = 2 * BOCA_90DEGREES_DIVISIONS, // divisions of the Theta angle range [0, 2*PI radians);
126  // LEGIANDRE_NRADIUSDIV = 100,
127  // LEGIANDRE_NTHETADIV = 360,
128  MAXMCTRACKS = 100, MAXMVDPIXELHITS = 500, MAXMVDPIXELHITSINTRACK = 10, MAXMVDSTRIPHITS = 500, MAXMVDSTRIPHITSINTRACK = 10, MAXMVDTRACKSPEREVENT = 400,
129  MAXSCITILHITS = 200, // max SciTil hits total.
130  MAXSCITILHITSINTRACK = 2, // max SciTil hits in one track.
131  MAXSTTHITS = 900, MAXSTTHITSINTRACK = 40, MAXTRACKSPEREVENT = 200,
132  // NFIDIVCONFORMAL = (Short_t) (3.141592654 * 45./0.5),
133  NFIDIVCONFORMAL = 282, NRDIVCONFORMAL = 10,
134  NUMBER_STRAWS = 4542; // the straw numbers
135  // start at 1 and goes up to 4542 included;
136 
137  bool doMcComparison, fSingleHitListStt[MAXSTTHITS], iplotta, fMvdAloneTracking, fYesCleanMvd, fYesCleanStt, fYesSciTil, fInclusionListStt[MAXSTTHITS],
138  fInclusionListSciTil[MAXSCITILHITS], finMvdTrackCandPixel[MAXMVDPIXELHITS], finMvdTrackCandStrip[MAXMVDSTRIPHITS], fTypeConf[MAXTRACKSPEREVENT];
139 
142  char fSttBranch[200], fMvdPixelBranch[200], fMvdStripBranch[200];
143 
144  Short_t fnAxialOuterRight, // number of axial Stt, outer, on the right (looking into the beam);
145  fnAxialInnerRight, // number of axial Stt, inner, on the right (looking into the beam);
146  fnAxialOuterLeft, // number of axial Stt, outer, on the left (looking into the beam);
147  fnAxialInnerLeft, // number of axial Stt, inner, on the left (looking into the beam);
148 
149  fListAxialOuterRight[NUMBER_STRAWS], // list of axial Stt, outer, on the right (looking into the beam);
150  fListAxialInnerRight[NUMBER_STRAWS], // list of axial Stt, inner, on the lright (looking into the beam);
151  fListAxialOuterLeft[NUMBER_STRAWS], // list of axial Stt, outer, on the left (looking into the beam);
152  fListAxialInnerLeft[NUMBER_STRAWS], // list of axial Stt, inner, on the left (looking into the beam);
153 
154  fnSkewRight, // number of skew Stt, on the right (looking into the beam);
155  fnSkewLeft, // number of skew Stt, on the right (looking into the beam);
156  fListSkewRight[NUMBER_STRAWS], // list of axial Stt, inner, on the lright (looking into the beam);
157  fListSkewLeft[NUMBER_STRAWS], // list of axial Stt, outer, on the left (looking into the beam);
158 
159  fListHitMvdTrackCand[MAXMVDTRACKSPEREVENT][MAXMVDPIXELHITSINTRACK + MAXMVDSTRIPHITSINTRACK],
160  fListHitTypeMvdTrackCand[MAXMVDTRACKSPEREVENT][MAXMVDPIXELHITSINTRACK + MAXMVDSTRIPHITSINTRACK], fListMvdDSPixelHitNotTrackCand[MAXMVDPIXELHITS],
161  fListMvdDSStripHitNotTrackCand[MAXMVDSTRIPHITS], fListMvdPixelHitsinTrack[MAXTRACKSPEREVENT][MAXMVDPIXELHITSINTRACK],
162  fListMvdStripHitsinTrack[MAXTRACKSPEREVENT][MAXMVDSTRIPHITSINTRACK], fListMvdUSPixelHitNotTrackCand[MAXMVDPIXELHITS], fListMvdUSStripHitNotTrackCand[MAXMVDSTRIPHITS],
163  fListParContiguous[NUMBER_STRAWS][6], fListSciTilHitsinTrack[MAXTRACKSPEREVENT][MAXSCITILHITSINTRACK], fListSttParHitsinTrack[MAXTRACKSPEREVENT][MAXSTTHITSINTRACK],
164  fListSttParHits[MAXSTTHITS], fListSttSkewHitsinTrack[MAXTRACKSPEREVENT][MAXSTTHITSINTRACK], fListSttSkewHitsinTrackSolution[MAXTRACKSPEREVENT][MAXSTTHITSINTRACK],
165  fListSttSkewHits[MAXSTTHITS], fListTrackCandHit[MAXTRACKSPEREVENT][MAXSTTHITSINTRACK + MAXMVDPIXELHITSINTRACK + MAXMVDSTRIPHITSINTRACK + MAXSCITILHITSINTRACK],
166  // type = 0 --> Mvd Pixel; type = 1 --> Mvd Strip; type = 1 --> Mvd Strip; type = 2 --> Stt Parallel
167  // type = 3 --> Stt Straw; type 1001 --> SciTil; type -1 --> noise.
168  fListTrackCandHitType[MAXTRACKSPEREVENT][MAXSTTHITSINTRACK + MAXMVDPIXELHITSINTRACK + MAXMVDSTRIPHITSINTRACK + MAXSCITILHITSINTRACK], fnHitMvdTrackCand[MAXMVDTRACKSPEREVENT],
169  fnMCTracks, fMCtrack_of_Pixel[MAXMVDPIXELHITS], fMCtrack_of_Strip[MAXMVDSTRIPHITS], fnMvdDSPixelHitNotTrackCand, fnMvdDSStripHitNotTrackCand, fnMvdPixelHit,
170  fnMvdPixelHitsinTrack[MAXTRACKSPEREVENT], fnMvdStripHit, fnMvdStripHitsinTrack[MAXTRACKSPEREVENT], fnMvdTrackCand, fnMvdUSPixelHitNotTrackCand, fnMvdUSStripHitNotTrackCand,
171  fnParContiguous[NUMBER_STRAWS], fnSciTilHits, fnSciTilHitsinTrack[MAXTRACKSPEREVENT], fnSttParHitsinTrack[MAXTRACKSPEREVENT], fnSttSkewHitsinTrack[MAXTRACKSPEREVENT],
172  fnTrackCandHit[MAXTRACKSPEREVENT], fStrawCode[NUMBER_STRAWS], fStrawCode2[NUMBER_STRAWS], fTubeID[MAXSTTHITS];
173 
174  int fNevents_to_plot, istampa, IVOLTE;
175 
176  Double_t fALFA[MAXTRACKSPEREVENT], fBETA[MAXTRACKSPEREVENT], fBFIELD,
177 
178  fCandidatePixelDriftRadius[MAXMVDPIXELHITS], fCandidatePixelErrorDriftRadius[MAXMVDPIXELHITS], fCandidatePixelS[MAXMVDPIXELHITS], fCandidatePixelZ[MAXMVDPIXELHITS],
179 
180  fCandidateStripDriftRadius[MAXMVDSTRIPHITS], fCandidateStripErrorDriftRadius[MAXMVDSTRIPHITS], fCandidateStripS[MAXMVDSTRIPHITS], fCandidateStripZ[MAXMVDSTRIPHITS],
181 
182  fCandidateSciTilDriftRadius, fCandidateSciTilErrorDriftRadius, fCandidateSciTilS, fCandidateSciTilZ,
183 
184  fCandidateSkewS[2 * MAXSTTHITS], // here 2*MAXSTTHITS because in principle the skew straw may have
185  fCandidateSkewZ[2 * MAXSTTHITS], // 2 intersections wit the helix cylinder;
186  fCandidateSkewZDrift[2 * MAXSTTHITS], // "
187  fCandidateSkewZError[2 * MAXSTTHITS], // "
188 
189  fCosine[LEGIANDRE_NTHETADIV], fCxMC[MAXMCTRACKS], fCyMC[MAXMCTRACKS], fDELTATHETA, fFimin, fGAMMA[MAXTRACKSPEREVENT], fMCSkewAloneX[MAXSTTHITS], fMCSkewAloneY[MAXSTTHITS],
190  fMCtruthTrkInfo[15][MAXMCTRACKS], fOx[MAXTRACKSPEREVENT], fOy[MAXTRACKSPEREVENT], fposizSciTil[MAXSCITILHITS][3], fpSciTilx[MAXSCITILHITS], fpSciTily[MAXSCITILHITS],
191  fpSciTilz[MAXSCITILHITS], fR[MAXTRACKSPEREVENT], frefindexMvdPixel[MAXMVDPIXELHITS], frefindexMvdStrip[MAXMVDSTRIPHITS], fradiaConf[NRDIVCONFORMAL], fR_MC[MAXMCTRACKS],
192  fsigmaXMvdPixel[MAXMVDPIXELHITS], fsigmaYMvdPixel[MAXMVDPIXELHITS], fsigmaZMvdPixel[MAXMVDPIXELHITS], fsigmaXMvdStrip[MAXMVDSTRIPHITS], fsigmaYMvdStrip[MAXMVDSTRIPHITS],
193  fsigmaZMvdStrip[MAXMVDSTRIPHITS], fSinus[LEGIANDRE_NTHETADIV], fS_SciTilHitsinTrack[MAXTRACKSPEREVENT][MAXSCITILHITS], fxTube[NUMBER_STRAWS], fxxyyTube[NUMBER_STRAWS],
194  fyTube[NUMBER_STRAWS], fzTube[NUMBER_STRAWS], fXMvdPixel[MAXMVDPIXELHITS], fXMvdStrip[MAXMVDSTRIPHITS], fYMvdPixel[MAXMVDPIXELHITS], fYMvdStrip[MAXMVDSTRIPHITS],
195  fZMvdPixel[MAXMVDPIXELHITS], fZMvdStrip[MAXMVDSTRIPHITS];
196 
197  //----------------------- real, cputime stuff;
198 
199  Double_t fctime, fctime2, frtime, frtime2;
200  TStopwatch ftimer, ftimer2;
201  //--------------------------------
202 
203  // FairRootManager *ioman;
204 
205  FILE *HANDLE, *HANDLE2;
206 
207  TH1F *hdeltaRPixel, *hdeltaRStrip, *hdeltaRPixel2, *hdeltaRStrip2;
208 
209  TClonesArray
211  *fMCTrackArray,
213  *fMvdMCPointArray,
215  *fMvdPixelHitArray,
217  *fMvdStripHitArray,
219  *fMvdTrackCandArray,
221  *fSciTHitArray,
223  *fSciTPointArray,
225  *fSttTubeArray,
227  *fSttPointArray,
229  *fSttHitArray,
231  *fSttTrackArray,
233  *fSttTrackCandArray,
235  *fSttMvdPndTrackCandArray,
237  *fSttMvdPndTrackArray;
238 
239  PndGeoSttPar *fSttParameters; // CHECK added
240 
241  void Initialization_ClassVariables();
242 
243  bool AcceptHitsConformal(Double_t distance,
244  Double_t DriftConfR, // drift radius in conformal space
245  Double_t StrawConfR // straw radius in conformal space
246  );
247 
248  Short_t AssociateBetterAfterFitSkewHitsToXYTrack(Short_t TemporarynSttSkewhitinTrack, // input
249  Short_t SkewList[][2], // input, list of selected skew hits (in skew numbering)
250  Double_t *S, // input, S coordinate of selected Skew hit
251  Double_t *Z, // input, Z coordinate of selected Skew hit
252  Double_t *ZDrift, // input, drift distance IN Z DIRECTION only, of selected Skew hit
253  Double_t *ZError, // input, error (in SZ space) IN Z DIRECTION only, of selected Skew hit
254  Double_t KAPPA, // input, KAPPA result of fit
255  Double_t FI0, // input, FI0 result of fit
256  Short_t *tempore, // output result, associated skew hits
257  Double_t *temporeS, // output, associated skew hit S
258  Double_t *temporeZ, // output, associated skew hits Z
259  Double_t *temporeZDrift, // output, associated skew hit Z drift
260  Double_t *temporeZError, // output, associated skew hits Z error;
261  Short_t *STATUS // output
262  );
263 
264  Short_t AssociateSciTilHit(Double_t Oxx, Double_t Oyy, Double_t Rr,
265  Short_t *List, // output, list of SciTil hits associated (max. 2);
266  Double_t *esse // output, list of S of the SciTil hits associated.
267  );
268 
269  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,
270  Double_t *WDY, Double_t *WDZ, Double_t Fi_low_limit, Double_t Fi_up_limit, Short_t Charge,
271  Short_t SkewList[][2], // output,list of selected skew hits (skew numbering)
272  Double_t *S, // output, S coordinate of selected Skew hit
273  Double_t *Z, // output, Z coordinate of selected Skew hit
274  Double_t *ZDrift, // output, drift distance IN Z DIRECTION only,
275  // of selected Skew hit
276  Double_t *ZError // output, error (in SZ space) IN Z DIRECTION only, of selected Skew hit.
277  );
278 
279  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,
280  Double_t *WDY, Double_t *WDZ, Double_t Fi_low_limit, Double_t Fi_up_limit, Short_t Charge,
281  Short_t SkewList[][2], // output,list of selected skew hits (skew numbering)
282  Double_t *S, // output, S coordinate of selected Skew hit
283  Double_t *Z, // output, Z coordinate of selected Skew hit
284  Double_t *ZDrift, // output, drift distance IN Z DIRECTION only,
285  // of selected Skew hit
286  Double_t *ZError // output, error (in SZ space) IN Z DIRECTION only, of selected Skew hit.
287  );
288 
289  bool BadTrack_ParStt(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge,
290  Double_t Xcross[2], // Xcross[0]=point of entrance;
291  // Xcross[1]=point of exit.
292  Double_t Ycross[2], Short_t nHits, Short_t *ListHits, Double_t info[][7], Double_t cut, Short_t maxnum,
293  Short_t islack // uncertainty allowed as far as
294  // the n. of hits that should be present.
295  );
296 
297  void CalculateSinandCosin();
298 
299  void CollectParSttHitsagain(Vec<bool> &keepit, Vec<bool> &Mvdhits, Double_t info[][7], Short_t nSttParHit, Short_t StartTrackCand, Short_t EndTrackCand, Double_t *KAPPA,
300  Double_t *FI0, Double_t *Fi_low_limit, Double_t *Fi_up_limit,
301  Short_t *fnSttParHitsinTrack, // input/output
302  Short_t fListSttParHitsinTrack[][MAXSTTHITSINTRACK] // input/output
303  );
304 
305  Short_t CompareTracks(Short_t first_track, Short_t second_track);
306 
307  bool EliminateClones(Short_t nTotalCandidates, // input;
308  Double_t fraction, // input; raction of common hits to declare the two tracks clones;
309  bool *keepit // input and output;
310  );
311 
312  void EliminateSpuriousSZ_bis(Short_t ncand, Short_t MaxTurnofTracks, Double_t signPz, Double_t *SchosenPixel, Double_t *SchosenStrip, Double_t *SchosenSkew,
313  Double_t *ZchosenPixel, Double_t *ZchosenStrip, Double_t *ZchosenSkew, Double_t *ErrorchosenPixel, Double_t *ErrorchosenStrip,
314  Double_t *ErrorchosenSkew, Double_t KAPPA, Double_t FI0, Double_t Rr);
315 
316  void EliminateSpuriousSZ_ter(Short_t ncand, Short_t MaxTurnofTracks, Double_t signPz, Double_t *SchosenPixel, Double_t *SchosenStrip, Double_t *SchosenSkew,
317  Double_t *ZchosenPixel, Double_t *ZchosenStrip, Double_t *ZchosenSkew, Double_t *ErrorchosenPixel, Double_t *ErrorchosenStrip,
318  Double_t *ErrorchosenSkew, Double_t KAPPA, Double_t FI0, Double_t Rr);
319 
320  void FindCharge(Double_t oX, Double_t oY, Short_t nHits, Double_t *X, Double_t *Y, Short_t *Charge);
321 
322  Short_t FindTrackStrictCollection(Short_t NFiCELLDISTANCE,
323  // seed track (original notation) as far as the Fi angle is concerned
324  Short_t iSeed,
325  // n. of hits to search in ListHitsinTrackinWhichToSearch
326  Short_t NParallelToSearch, Short_t *ListHitsinTrackinWhichToSearch, bool *InclusionList, Short_t *FiConformalIndex,
327  Short_t *OutputListHitsinTrack);
328 
329  void GetVolumeCharacteristics(TGeoVolume *tgeovol, TGeoHMatrix *mat, Double_t GlobalScal[3], Double_t GlobalTrans[3], Double_t GlobalRot[9]);
330 
331  void FixDiscontinuitiesFiangleinSZplane(Short_t TemporarynSkewHitsinTrack, Vec<Double_t> &S, Double_t *Fi_initial_helix_referenceframe, Short_t Charge);
332 
333  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,
334  Double_t *Posiz // output
335  );
336 
337  void Initial_SttParHits_DecreasingR_Ordering(Double_t info[][7], Short_t *ListSttParHi, Int_t nSttParHit);
338 
339  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],
340  Double_t SchosenSkew[][MAXSTTHITS], Double_t ZchosenSkew[][MAXSTTHITS], Short_t *daTrackFoundaTrackMC);
341 
342  void LoadSZetc_forSZfit(Short_t ncand, // input
343  Short_t nhitsinfit,
344  // Double_t * TemporaryS, // input
345  // Double_t * TemporaryZ, // input
346  // Double_t * TemporaryZDrift, // input
347  // Double_t * TemporaryZError, // input
348 
349  Vec<Double_t> &ErrorDriftRadius, // output
350  Double_t *ErrorDriftRadiusbis, // output
351  Vec<Double_t> &DriftRadius, // output
352  Double_t *DriftRadiusbis, // output
353  Vec<Double_t> &S, // output
354  Double_t *Sbis, // output
355  Vec<Double_t> &ZED, // output
356  Double_t *ZEDbis // output
357  );
358 
359  void LoadSZetc_forSZfit2(Short_t ncand, // input
360  Short_t nhitsinfit,
361  Double_t *S_Skew, // input
362  Double_t *TemporaryZ, // input
363  Double_t *TemporaryZDrift, // input
364  Double_t *TemporaryZError, // input
365 
366  Vec<Double_t> &ErrorDriftRadius, // output
367  Double_t *ErrorDriftRadiusbis, // output
368  Vec<Double_t> &DriftRadius, // output
369  Double_t *DriftRadiusbis, // output
370  Vec<Double_t> &S, // output
371  Double_t *Sbis, // output
372  Vec<Double_t> &ZED, // output
373  Double_t *ZEDbis // output
374  );
375 
376  void MakeInclusionListStt(Int_t nSttHit, Short_t *TubeID, Double_t info[][7]);
377 
378  void MatchMvdHitsToSttTracks(Vec<bool> &keepit, Double_t delta, Double_t highqualitycut, Short_t nSttTrackCand, Double_t *FI0, Double_t *Fifirst, Vec<Short_t> &CHARGE,
379  Short_t *nPixelHitsinTrack, // output
380  Short_t ListPixelHitsinTrack[][MAXMVDPIXELHITSINTRACK], // output
381  Short_t *nStripHitsinTrack, // output
382  Short_t ListStripHitsinTrack[][MAXMVDSTRIPHITSINTRACK] // output
383  );
384 
385  void MatchMvdHitsToSttTracksagain(Vec<bool> &keepit, Vec<bool> &Mvdhits, Double_t delta, Double_t highqualitycut, Short_t nSttTrackCand, Double_t *FI0, Double_t *Fifirst,
386  Vec<Short_t> &CHARGE,
387 
388  Short_t *nPixelHitsinTrack, // output
389  Short_t ListPixelHitsinTrack[][MAXMVDPIXELHITSINTRACK], // output
390  Short_t *nStripHitsinTrack, // output
391  Short_t ListStripHitsinTrack[][MAXMVDSTRIPHITSINTRACK] // output
392  );
393 
394  void MatchMvdHitsToSttTracks2(bool *keepit, Double_t delta, Double_t highqualitycut, Short_t nSttTrackCand, Double_t *FI0, Double_t *Fifirst, Short_t *CHARGE,
395  Short_t *nPixelHitsinTrack, // output
396  Short_t ListPixelHitsinTrack[][MAXMVDPIXELHITSINTRACK], // output
397  Short_t *nStripHitsinTrack, // output
398  Short_t ListStripHitsinTrack[][MAXMVDSTRIPHITSINTRACK] // output
399  );
400 
401  void
402  OrderingConformal_Loading_ListTrackCandHit(bool *keepit, Short_t ncand, Double_t info[][7], Double_t Trajectory_Start[][2], Short_t *CHARGE, Double_t SchosenSkew[][MAXSTTHITS]);
403 
404  void OrderingR_Loading_ListTrackCandHit(bool *keepit, Short_t ncand, Double_t info[][7]);
405 
406  void OrderingSttSkewandSttParallel(Double_t oX, Double_t oY, Double_t Rr, Short_t nSkewhit, Short_t *ListSkewHits,
407  Double_t *SList, // it is related to the skew hits. IMPORTANT :
408  // the index must be the ORIGINAL skew hit number,
409  // therefore SList[ListSkewHits[*]].
410  Short_t Charge, Short_t nParHits, Short_t *ListParHits, Double_t *U, Double_t *V,
411  Short_t *BigList // final ordered Parallel+Skew list;
412  // already in NATIVE hit number.
413  );
414 
415  void OrderingUsingConformal(Double_t oX, Double_t oY, Double_t Traj_Sta[2], Int_t nHits,
416  Double_t XY[][2], // XY[*][0] = X position, XY[*][0] = Y position.
417  Short_t Charge, // input
418  Int_t *ListHits);
419 
420  void Ordering_Loading_ListTrackCandHit(
421  // Vec <bool>& keepit,
422  bool *keepit, Short_t FirstCandidate, Short_t LastCandidate, Double_t info[][7], Double_t Trajectory_Start[][2],
423  // Vec <Short_t>& CHARGE,
424  Short_t *CHARGE, Double_t SchosenSkew[][MAXSTTHITS]);
425  void RefitMvdStt(Short_t nCandHit, Short_t *fListTrackCandHit, Short_t *fListTrackCandHitType, Double_t info[][7], Double_t rotationangle, Double_t trajectory_vertex[2],
426  Short_t iexcl,
427  Double_t *pAlfa, // output of the fit
428  Double_t *pBeta, // output of the fit
429  Double_t *pGamma, // set at zero always for now
430  bool *status // fit status; true = successful
431  );
432 
433  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,
434  Double_t *Fi_up_limit, Short_t HitsinBoxConformal[][NRDIVCONFORMAL][NFIDIVCONFORMAL], Double_t info[][7], Double_t infoparalConformal[][5],
435  Short_t nBoxConformal[][NFIDIVCONFORMAL], Int_t nSttParHit, Int_t &nSttTrackCand, Short_t *RConformalIndex, Double_t *trajectory_vertex, Double_t *UU,
436  Double_t *VV);
437 
438  void SeparateInnerOuterParallel(
439 
440  // input
441  Short_t nHits, Short_t *ListHits, Double_t info[][7], Double_t RStrawDetInnerParMax,
442 
443  // output
444  Short_t *nInnerHits, Short_t *ListInnerHits, Short_t *nOuterHits, Short_t *ListOuterHits,
445 
446  Short_t *nInnerHitsLeft, Short_t *ListInnerHitsLeft, Short_t *nInnerHitsRight, Short_t *ListInnerHitsRight,
447 
448  Short_t *nOuterHitsLeft, Short_t *ListOuterHitsLeft, Short_t *nOuterHitsRight, Short_t *ListOuterHitsRight);
449 
450  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,
451  Short_t *Listofhits, Double_t info[][7], Double_t RStrawDetMin, Double_t RStrawDetInnerParMax, Double_t RStrawDetOuterParMin, Double_t RStrawDetMax);
452 
453  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,
454  Short_t *Listofhits, Double_t *S, Double_t info[][7], Double_t RminStrawSkew, Double_t RmaxStrawSkew, Double_t cut, Short_t maxnum);
455 
456  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,
457  Short_t &nHitsSkew, Short_t *ListHitsSkew, Double_t *auxS, Double_t info[][7], Double_t RStrawDetMin, Double_t ApotemaMaxInnerPar, Double_t ApotemaMinSkew,
458  Double_t ApotemaMaxSkew, Double_t ApotemaMinOuterPar, Double_t RStrawDetMax);
459 
460  Short_t TrkAssociatedParallelHitsToHelixQuater(bool *ExclusionList, Double_t m, Double_t q, Short_t Status, Short_t nHitsinTrack, Short_t *ListHitsinTrack, Int_t NhitsParallel,
461  Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t info[][7], Double_t infoparalConformal[][5], Short_t *RConformalIndex,
462  Short_t *FiConformalIndex, Short_t nBoxConformal[][NFIDIVCONFORMAL], Short_t HitsinBoxConformal[][NRDIVCONFORMAL][NFIDIVCONFORMAL],
463  Short_t *auxListHitsinTrack);
464 
465  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,
466  Short_t *auxListHitsinTrack);
467 
468  void StoreSZ_MvdScitil(Short_t ncand);
469 
470  ClassDef(PndTrkTracking2, 1);
471 };
472 
473 #endif
void SetEventsToPlot(int nev)
__m128 m
Definition: P4_F32vec4.h:26
void WriteHistograms()
void SetPersistency(Bool_t val=kTRUE)
virtual void Exec(Option_t *opt)
virtual InitStatus Init()
#define BOCA_90DEGREES_DIVISIONS
void SetPersistence(Bool_t persistence)
void SetInputBranchName(const char *string1, const char *string2, const char *string3)
void NoMvdAloneTracking()
void YesMvdAloneTracking()
int status[10]
Definition: f_Init.h:24
void SetParContainers()