Test for Coverity
[u/mrichter/AliRoot.git] / TPC / AliTPCCosmicTrackfit.h
CommitLineData
15d37333 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
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 **************************************************************************/
15//
16// Combine cosmic track pairs (upper, lower) and do track fitting
17//
18// Xianguo Lu
19// lu@physi.uni-heidelberg.de
20// Xianguo.Lu@cern.ch
21
22//
23/*
24//in [cm]
25const Double_t _TPCZMIN = -250;
26const Double_t _TPCZMAX = 250;
27const Double_t _TPCINR = 84.8;
28const Double_t _TPCOUR = 246.6;
29*/
30
3aa6a136 31#ifndef ALITPCCOSMICTRACKFIT_H
32#define ALITPCCOSMICTRACKFIT_H
15d37333 33
3aa6a136 34#ifndef TVECTOR3_H
35#include "TVector3.h"
36#endif
15d37333 37
38class AliTPCCosmicTrackfit
39{
40 public:
41 AliTPCCosmicTrackfit(const Int_t dlev=0, const TString tag="test");
42
43 ~AliTPCCosmicTrackfit();
44
45 void SetRow(const Int_t shift, const Int_t step){ fRowStartShift = shift; fRowStep = step; }
46 void SetX(const Double_t xmin, const Double_t xmax){ fXMin = xmin; fXMax = xmax; }
47
48 Bool_t CombineESDtracks(AliESDtrack * &trk0, AliESDtrack *&trk1);
49 Bool_t CombineTPCseedsFast(AliTPCseed * tpcseeds[], const AliExternalTrackParam * trkpars[]);
50 Bool_t CombineTPCseeds(AliTPCseed * &seed0, AliTPCseed *&seed1);
51 void Print() const ;
52
53 //--------- getters ------------
54 Bool_t IsSwap() const {return fKswap;}
55 Int_t GetStatus()const{return fStatus;}
56 Int_t GetFitNcls()const{return fFitNcls;}
57 Int_t GetMissNcls()const{return fMissNcls;}
58 Double_t GetChi2PerCluster()const{return fPreChi2;}
59 Double_t GetFitLeverArm() const {return fFitLeverArm;}
60 Double_t GetImpactD() const {return fImpactD;}
61 Double_t GetImpactZ() const {return fImpactZ;}
62 Double_t GetLeverArm()const {return fLeverArm;}
63 TVector3 GetInnerClusterUp()const {return fInnerClusterUp;}
64 TVector3 GetInnerClusterLow()const {return fInnerClusterLow;}
3aa6a136 65
66 TVector3 ImpactParameter2D() const;
67 TVector3 ImpactParameter3D() const;
68
15d37333 69 Double_t MinPhi()const;
70
71 const AliExternalTrackParam * GetTrackParamUp() const {return fTrackparUp;}
72 const AliExternalTrackParam * GetTrackParamLow() const {return fTrackparLow;}
73 const AliExternalTrackParam * GetIniTrackParamUp() const {return fIniTrackparUp;}
74 const AliExternalTrackParam * GetIniTrackParamLow() const {return fIniTrackparLow;}
75
76 AliExternalTrackParam * CopyTrackParamUp() const {return new AliExternalTrackParam(*fTrackparUp);}
77 AliExternalTrackParam * CopyTrackParamLow() const {return new AliExternalTrackParam(*fTrackparLow);}
78 AliExternalTrackParam * CopyIniTrackParamUp() const {return new AliExternalTrackParam(*fIniTrackparUp);}
79 AliExternalTrackParam * CopyIniTrackParamLow() const {return new AliExternalTrackParam(*fIniTrackparLow);}
80
81 AliTPCseed * GetTPCseedUp() const {return fSeedUp;}
82 AliTPCseed * GetTPCseedLow() const {return fSeedLow;}
83
84 TTreeSRedirector * GetStreamer() const {return fStreamer;}
85
86 private:
87 enum CombineStatus{
88 kFailGetTPCseeds=1,
89 kFailNclsMin =2,
90 kFailSwapSeeds =3,
91 kFailLeverArm =4,
92 kFailMakeSeed =5,
93 kFailPropagation=6,
94 kFailChi2 =7,
95 kFailImpact =8
96 };
97
98 AliTPCCosmicTrackfit(const AliTPCCosmicTrackfit & p);
99 AliTPCCosmicTrackfit & operator=(const AliTPCCosmicTrackfit & p);
100
3aa6a136 101 static Double_t CutLeverArm(){ return 350;} //minimum lever arm 350 ~ 250 * sqrt(2)
102 static Double_t MaxChi2(){ return 10;} //max. chi2/ncls
103
15d37333 104 void IniCombineESDtracks();
105 Bool_t GetTPCseeds(const AliESDtrack *trk0, const AliESDtrack *trk1);
106 Bool_t CheckNcls();
107 Bool_t CheckLeverArm();
108 Bool_t AnaSeeds();
109
110 void CombineTPCseeds();
111 void Update();
112
113 TTreeSRedirector *fStreamer; //!debug streamer
114 Int_t fDebugLevel; //debug level
115
116 AliTPCseed * fSeedUp; //TPC seed of upper track
117 AliTPCseed * fSeedLow; //TPC seed of lower track
118 AliExternalTrackParam * fTrackparUp; //track param of upper track
119 AliExternalTrackParam * fTrackparLow; //track param of lower track
120 AliExternalTrackParam * fIniTrackparUp; //track param of upper track by MakeSeed
121 AliExternalTrackParam * fIniTrackparLow; //track param of lower track by MakeSeed
122
123 Int_t fStatus; //status for CombineESDtracks/CombineTPCseeds: 0-successful, otherwise fail
124 Bool_t fKswap; //true if should be / already be swapped
125
126 TVector3 fInnerClusterUp; //xyz of the inner most TPC trackpoint of the Upper track
127 TVector3 fInnerClusterLow; //xyz of the inner most TPC trackpoint of the Lower track
128 Double_t fLeverArm; //transverse difference between upper most and lower most clusters
129
130 Int_t fFitNcls; //number of TPC clusters successful in propagation (mean of the two propagation: upwards and downwards)
131 Int_t fMissNcls; //number of TPC clusters fail in propagation (sum of the two propagation)
132 Double_t fPreChi2; //Predicted chi2/nfit over the two propagation
133 Double_t fFitLeverArm; //Lever arm calculated from clusters in fitkernel
134 Double_t fImpactD; //2d impact parameter
135 Double_t fImpactZ; //z of impact parameter
136
137 Int_t fRowStartShift; //row start shift
138 Int_t fRowStep; //row step
139 Double_t fXMin; //cluster X min
140 Double_t fXMax; //cluster X max
15d37333 141};
142
143#endif