1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 // Combine cosmic track pairs (upper, lower) and do track fitting
19 // lu@physi.uni-heidelberg.de
25 const Double_t _TPCZMIN = -250;
26 const Double_t _TPCZMAX = 250;
27 const Double_t _TPCINR = 84.8;
28 const Double_t _TPCOUR = 246.6;
31 #ifndef ALITPCCOMBINEDTRACKFIT_H
32 #define ALITPCCOMBINEDTRACKFIT_H
34 class TTreeSRedirector;
36 class AliTPCCosmicTrackfit
39 AliTPCCosmicTrackfit(const Int_t dlev=0, const TString tag="test");
41 ~AliTPCCosmicTrackfit();
43 void SetRow(const Int_t shift, const Int_t step){ fRowStartShift = shift; fRowStep = step; }
44 void SetX(const Double_t xmin, const Double_t xmax){ fXMin = xmin; fXMax = xmax; }
46 Bool_t CombineESDtracks(AliESDtrack * &trk0, AliESDtrack *&trk1);
47 Bool_t CombineTPCseedsFast(AliTPCseed * tpcseeds[], const AliExternalTrackParam * trkpars[]);
48 Bool_t CombineTPCseeds(AliTPCseed * &seed0, AliTPCseed *&seed1);
51 //--------- getters ------------
52 Bool_t IsSwap() const {return fKswap;}
53 Int_t GetStatus()const{return fStatus;}
54 Int_t GetFitNcls()const{return fFitNcls;}
55 Int_t GetMissNcls()const{return fMissNcls;}
56 Double_t GetChi2PerCluster()const{return fPreChi2;}
57 Double_t GetFitLeverArm() const {return fFitLeverArm;}
58 Double_t GetImpactD() const {return fImpactD;}
59 Double_t GetImpactZ() const {return fImpactZ;}
60 Double_t GetLeverArm()const {return fLeverArm;}
61 TVector3 GetInnerClusterUp()const {return fInnerClusterUp;}
62 TVector3 GetInnerClusterLow()const {return fInnerClusterLow;}
64 Double_t ImpactParameter2D() const;
65 Double_t ImpactParameter3D() const;
67 Double_t MinPhi()const;
69 const AliExternalTrackParam * GetTrackParamUp() const {return fTrackparUp;}
70 const AliExternalTrackParam * GetTrackParamLow() const {return fTrackparLow;}
71 const AliExternalTrackParam * GetIniTrackParamUp() const {return fIniTrackparUp;}
72 const AliExternalTrackParam * GetIniTrackParamLow() const {return fIniTrackparLow;}
74 AliExternalTrackParam * CopyTrackParamUp() const {return new AliExternalTrackParam(*fTrackparUp);}
75 AliExternalTrackParam * CopyTrackParamLow() const {return new AliExternalTrackParam(*fTrackparLow);}
76 AliExternalTrackParam * CopyIniTrackParamUp() const {return new AliExternalTrackParam(*fIniTrackparUp);}
77 AliExternalTrackParam * CopyIniTrackParamLow() const {return new AliExternalTrackParam(*fIniTrackparLow);}
79 AliTPCseed * GetTPCseedUp() const {return fSeedUp;}
80 AliTPCseed * GetTPCseedLow() const {return fSeedLow;}
82 TTreeSRedirector * GetStreamer() const {return fStreamer;}
96 AliTPCCosmicTrackfit(const AliTPCCosmicTrackfit & p);
97 AliTPCCosmicTrackfit & operator=(const AliTPCCosmicTrackfit & p);
99 void IniCombineESDtracks();
100 Bool_t GetTPCseeds(const AliESDtrack *trk0, const AliESDtrack *trk1);
102 Bool_t CheckLeverArm();
105 void CombineTPCseeds();
108 TTreeSRedirector *fStreamer; //!debug streamer
109 Int_t fDebugLevel; //debug level
111 AliTPCseed * fSeedUp; //TPC seed of upper track
112 AliTPCseed * fSeedLow; //TPC seed of lower track
113 AliExternalTrackParam * fTrackparUp; //track param of upper track
114 AliExternalTrackParam * fTrackparLow; //track param of lower track
115 AliExternalTrackParam * fIniTrackparUp; //track param of upper track by MakeSeed
116 AliExternalTrackParam * fIniTrackparLow; //track param of lower track by MakeSeed
118 Int_t fStatus; //status for CombineESDtracks/CombineTPCseeds: 0-successful, otherwise fail
119 Bool_t fKswap; //true if should be / already be swapped
121 TVector3 fInnerClusterUp; //xyz of the inner most TPC trackpoint of the Upper track
122 TVector3 fInnerClusterLow; //xyz of the inner most TPC trackpoint of the Lower track
123 Double_t fLeverArm; //transverse difference between upper most and lower most clusters
125 Int_t fFitNcls; //number of TPC clusters successful in propagation (mean of the two propagation: upwards and downwards)
126 Int_t fMissNcls; //number of TPC clusters fail in propagation (sum of the two propagation)
127 Double_t fPreChi2; //Predicted chi2/nfit over the two propagation
128 Double_t fFitLeverArm; //Lever arm calculated from clusters in fitkernel
129 Double_t fImpactD; //2d impact parameter
130 Double_t fImpactZ; //z of impact parameter
132 Int_t fRowStartShift; //row start shift
133 Int_t fRowStep; //row step
134 Double_t fXMin; //cluster X min
135 Double_t fXMax; //cluster X max
136 static const Double_t fgkCutLeverArm = 350; //minimum lever arm 350 ~ 250 * sqrt(2)
137 static const Double_t fgkMaxChi2 = 10; //max. chi2/ncls