]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/TPCbase/AliTPCRecoParam.h
doxy: TPC/TPCbase converted
[u/mrichter/AliRoot.git] / TPC / TPCbase / AliTPCRecoParam.h
1 #ifndef ALITPCRECOPARAM_H
2 #define ALITPCRECOPARAM_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /// \class AliTPCRecoParam
7 /// \brief Class with TPC reconstruction parameters
8
9
10 #include "AliDetectorRecoParam.h"
11
12 class AliTPCRecoParam : public AliDetectorRecoParam
13 {
14  public:
15   AliTPCRecoParam();
16   virtual ~AliTPCRecoParam();
17   virtual void Print(const Option_t* option="") const;
18   static   Bool_t  GetUseTimeCalibration();
19   static   void    SetUseTimeCalibration(Bool_t useTimeCalibration);
20
21   void     SetUseHLTClusters(Int_t useHLTClusters){fUseHLTClusters=useHLTClusters;}
22   Int_t    GetUseHLTClusters() const {return fUseHLTClusters;}
23   void     SetUseHLTPreSeeding(Int_t useHLTPreSeeding){fUseHLTPreSeeding=useHLTPreSeeding;}
24   Int_t    GetUseHLTPreSeeding() const {return fUseHLTPreSeeding;}
25   void     SetClusterSharing(Bool_t sharing){fBClusterSharing=sharing;}
26   Bool_t   GetClusterSharing() const {return fBClusterSharing;}
27   Double_t GetCtgRange() const     { return fCtgRange;}
28   Double_t GetMaxSnpTracker() const{ return fMaxSnpTracker;}
29   Double_t GetMaxSnpTrack() const  { return fMaxSnpTrack;}
30   Bool_t   GetUseOuterDetectors() const { return fUseOuterDetectors;}
31   void     SetUseOuterDetectors(Bool_t flag)  { fUseOuterDetectors=flag;}
32   void     SetMaxChi2TPCTRD(Double_t maxChi2){fMaxChi2TPCTRD=maxChi2;}
33   Double_t GetMaxChi2TPCTRD() const {return fMaxChi2TPCTRD;}
34   void     SetMaxChi2TPCITS(Double_t maxChi2){fMaxChi2TPCITS=maxChi2;}
35   Double_t GetMaxChi2TPCITS() const {return fMaxChi2TPCITS;}
36   Double_t GetCutSharedClusters(Int_t index)const { return fCutSharedClusters[index];}
37   void  SetCutSharedClusters(Int_t index, Float_t value){ fCutSharedClusters[index]=value;}
38   Int_t GetClusterMaxRange(Int_t index)const { return fClusterMaxRange[index];}
39   void     SetClusterMaxRange(Int_t index, Int_t value){ fClusterMaxRange[index]=value;}
40   //
41   // Outlier filtering configuration
42   //
43   Int_t   GetUseOulierClusterFilter() const { return fUseOulierClusterFilter;}  // swith to use outlier cluster filter
44   void    SetUseOulierClusterFilter(Int_t value){ fUseOulierClusterFilter=value;}  // swith to use outlier cluster filter
45   //
46   Bool_t   DumpSignal()     const  { return fDumpSignal;}
47   void     SetTimeInterval(Int_t first, Int_t last) { fFirstBin=first, fLastBin =last;}
48   Int_t    GetFirstBin() const     { return fFirstBin;}
49   Int_t    GetLastBin() const      { return fLastBin;}
50   void     SetTimeBinRange(Int_t first, Int_t last){ fFirstBin = first; fLastBin = last;}
51   Bool_t   GetCalcPedestal()       const  { return fBCalcPedestal;}
52   Bool_t   GetDoUnfold()           const  { return fBDoUnfold;}
53   void     SetDoUnfold(Bool_t unfold)     { fBDoUnfold = unfold;}
54   Float_t  GetDumpAmplitudeMin()   const  { return fDumpAmplitudeMin;}
55   Float_t  GetMaxNoise()           const  { return fMaxNoise;}
56   //
57   Int_t    GetUseOnePadCluster()   const  { return fUseOnePadCluster;}
58   Bool_t   GetUseHLTOnePadCluster()const  { return fUseHLTOnePadCluster;}
59   Float_t  GetMinMaxCutAbs()       const  { return fMinMaxCutAbs; }
60   Float_t  GetMinLeftRightCutAbs() const  { return fMinLeftRightCutAbs;}  // minimal amplitude left right - PRF
61   Float_t  GetMinUpDownCutAbs()    const  { return fMinUpDownCutAbs;}  // minimal amplitude up-down - TRF
62   Float_t  GetMinMaxCutSigma()       const  { return fMinMaxCutSigma; }
63   Float_t  GetMinLeftRightCutSigma() const  { return fMinLeftRightCutSigma;}  // minimal amplitude left right - PRF
64   Float_t  GetMinUpDownCutSigma()    const  { return fMinUpDownCutSigma;}  // minimal amplitude up-down - TRF
65   //
66   void SetUseOnePadCluster(Int_t use)      {   fUseOnePadCluster = use;}
67   void SetUseHLTOnePadCluster(Bool_t use)  {   fUseHLTOnePadCluster = use;}
68   void SetMinMaxCutAbs(Float_t th)         {   fMinMaxCutAbs=th; }
69   void SetMinLeftRightCutAbs(Float_t th)   {   fMinLeftRightCutAbs=th;}  // minimal amplitude left right - PRF
70   void SetMinUpDownCutAbs(Float_t th)      {   fMinUpDownCutAbs=th;}  // minimal amplitude up-down - TRF
71   void SetMinMaxCutSigma(Float_t th)       {   fMinMaxCutSigma=th; }
72   void SetMinLeftRightCutSigma(Float_t th) {   fMinLeftRightCutSigma=th;}  // minimal amplitude left right - PRF
73   void SetMinUpDownCutSigma(Float_t th)    {   fMinUpDownCutSigma=th;}  // minimal amplitude up-down - TRF
74   void  SetUseTotCharge(Bool_t flag) {fUseTotCharge = flag;}
75   void  SetCtgRange(Double_t ctgRange) {fCtgRange = ctgRange;}
76   void  SetUseMultiplicityCorrectionDedx(Bool_t flag) {fUseMultiplicityCorrectionDedx = flag;}
77
78   void  SetUseAlignmentTime(Bool_t flag) {fUseAlignmentTime = flag;}
79   void  SetNeighborRowsDedx(Int_t nRows) {fNeighborRowsDedx = nRows;}
80   void SetCorrectionHVandPTMode(Int_t value){ fGainCorrectionHVandPTMode =value;}
81   void SetSkipTimeBins(Double_t value) {fSkipTimeBins=value;}
82   //
83   Int_t    GetLastSeedRowSec()       const  { return fLastSeedRowSec;}
84   Int_t    GetSeedGapPrim()        const  { return fSeedGapPrim;}
85   Int_t    GetSeedGapSec()         const  { return fSeedGapSec;}
86   void     SetDoKinks(Bool_t on)   { fBKinkFinder=on; }
87   Bool_t   GetDoKinks() const      { return fBKinkFinder;}
88   Double_t GetKinkAngleCutChi2(Int_t index) const {return fKinkAngleCutChi2[index];}
89   void     SetKinkAngleCutChi2(Int_t index,Double_t value) {fKinkAngleCutChi2[index]=value;}
90   void     SetSeedGapPrim(Int_t seedGapPrim)         { fSeedGapPrim = seedGapPrim;}
91   void     SetSeedGapSec(Int_t seedGapSec)          { fSeedGapSec  = seedGapSec;}
92   Float_t  GetMaxC()    const      { return fMaxC;}
93   Bool_t   GetSpecialSeeding() const { return fBSpecialSeeding;}
94   //
95   //
96
97   //
98   // Correction setup
99   //
100   void  SetUseFieldCorrection(Int_t flag){fUseFieldCorrection=flag;}
101   void  SetUseComposedCorrection(Bool_t flag){fUseComposedCorrection=flag;}
102   void  SetUseRPHICorrection(Int_t flag){fUseRPHICorrection=flag;}
103   void  SetUseRadialCorrection(Int_t flag){fUseRadialCorrection=flag;}
104   void  SetUseQuadrantAlignment(Int_t flag){fUseQuadrantAlignment=flag;}
105   void  SetUseSectorAlignment(Int_t flag){fUseSectorAlignment=flag;}
106   void  SetUseDriftCorrectionTime(Int_t flag){fUseDriftCorrectionTime=flag;}
107   void  SetUseDriftCorrectionGY(Int_t flag){fUseDriftCorrectionGY=flag;}
108   void  SetUseGainCorrectionTime(Int_t flag){fUseGainCorrectionTime=flag;}
109   void  SetUseExBCorrection(Int_t flag){fUseExBCorrection=flag;}
110   void  SetUseTOFCorrection(Bool_t flag) {fUseTOFCorrection = flag;}
111   void  SetUseIonTailCorrection(Int_t flag) {fUseIonTailCorrection = flag;}
112   void  SetCrosstalkCorrection(Float_t crosstalkCorrection) {fCrosstalkCorrection= crosstalkCorrection; }
113   void  SetCrosstalkCorrectionMissingCharge(Float_t crosstalkCorrection) {fCrosstalkCorrectionMissingCharge= crosstalkCorrection; }
114  //
115   Int_t GetUseFieldCorrection() const {return fUseFieldCorrection;}
116   Int_t GetUseComposedCorrection() const {return fUseComposedCorrection;}
117   Int_t GetUseRPHICorrection() const {return fUseRPHICorrection;}
118   Int_t GetUseRadialCorrection() const {return fUseRadialCorrection;}
119   Int_t GetUseQuadrantAlignment() const {return fUseQuadrantAlignment;}
120   Int_t GetUseSectorAlignment() const {return fUseSectorAlignment;}
121   Int_t GetUseDriftCorrectionTime() const {return fUseDriftCorrectionTime;}
122   Int_t GetUseDriftCorrectionGY() const {return fUseDriftCorrectionGY;}
123   Int_t GetUseGainCorrectionTime() const {return fUseGainCorrectionTime;}
124   Int_t GetUseExBCorrection() const {return fUseExBCorrection;}
125   Bool_t GetUseTOFCorrection() {return fUseTOFCorrection;}
126   Int_t GetUseIonTailCorrection() const {return fUseIonTailCorrection;}
127   Double_t GetCrosstalkCorrection() const {return fCrosstalkCorrection;}
128  Double_t GetCrosstalkCorrectionMissingCharge() const {return fCrosstalkCorrectionMissingCharge;}
129
130   Bool_t GetUseMultiplicityCorrectionDedx() const {return fUseMultiplicityCorrectionDedx;}
131   Int_t  GetGainCorrectionHVandPTMode() const  { return   fGainCorrectionHVandPTMode;}
132   Double_t  GetSkipTimeBins() const {return fSkipTimeBins;}
133
134   Bool_t GetUseAlignmentTime() const {return fUseAlignmentTime;}
135   //
136   Bool_t   GetUseTotCharge() const {return fUseTotCharge;}          // switch use total or max charge
137   Float_t  GetMinFraction() const {return fMinFraction;}           // truncated mean - lower threshold
138   Float_t  GetMaxFraction() const {return fMaxFaction;}            // truncated mean - upper threshold
139   Int_t    GetNeighborRowsDedx() const {return fNeighborRowsDedx;}
140
141   //
142   void     SetSystematicError(Double_t *systematic){ for (Int_t i=0; i<5;i++) fSystematicErrors[i]=systematic[i];}
143   void     SetSystematicErrorCluster(Double_t *systematic){ for (Int_t i=0; i<2;i++) fSystematicErrorCluster[i]=systematic[i];}
144   const Double_t * GetSystematicError() const { return fSystematicErrors;}
145   const Double_t * GetSystematicErrorClusterInner() const { return fSystematicErrorClusterInner;}
146   const Double_t * GetSystematicErrorCluster() const { return fSystematicErrorCluster;}
147
148   void    SetUseSystematicCorrelation(Bool_t useCorrelation)  {fUseSystematicCorrelation=useCorrelation;}
149   Bool_t  GetUseSystematicCorrelation() const { return fUseSystematicCorrelation;}
150
151   static   AliTPCRecoParam *GetLowFluxParam();        // make reco parameters for low  flux env.
152   static   AliTPCRecoParam *GetHighFluxParam();       // make reco parameters for high flux env.
153   static   AliTPCRecoParam *GetHLTParam(); // special setting for HLT
154   static   AliTPCRecoParam *GetLaserTestParam(Bool_t bPedestal);  // special setting for laser
155   static   AliTPCRecoParam *GetCosmicTestParam(Bool_t bPedestal); // special setting for cosmic
156   //
157  protected:
158
159   Int_t    fUseHLTClusters;  ///< allows usage of HLT clusters instead of RAW data
160   Int_t    fUseHLTPreSeeding; ///< Usage of HLT pre-seeding
161   Bool_t   fBClusterSharing; ///< allows or disable cluster sharing during tracking
162   Double_t fCtgRange;        ///< +-fCtgRange is the ctg(Theta) window used for clusterization and tracking (MI)
163   Double_t fMaxSnpTracker;   ///< max sin of local angle  - for TPC tracker
164   Double_t fMaxSnpTrack;     ///< max sin of local angle  - for track
165   Bool_t   fUseOuterDetectors; ///< switch - to use the outer detectors
166   Double_t fMaxChi2TPCTRD;     ///< maximal allowed chi2 between the TRD in and TPC out to be accepted for refit
167   Double_t fMaxChi2TPCITS;     ///< maximal allowed chi2 between the ITS in and TPC out to be accepted for backpropagation
168   //
169   // Outlier filtering configuration
170   //
171   Int_t   fUseOulierClusterFilter;  ///< swith to use outlier cluster filter
172
173   Double_t fCutSharedClusters[2]; ///< cut value - maximal amount  of shared clusters
174   Int_t fClusterMaxRange[2];   ///< neighborhood  - to define local maxima for cluster
175   //
176   //   clusterer parameters
177   //
178   Bool_t   fDumpSignal;      ///< Dump Signal information flag
179   Int_t    fFirstBin;        ///< first time bin used by cluster finder
180   Int_t    fLastBin;         ///< last time bin  used by cluster finder
181   Bool_t   fBCalcPedestal;   ///< calculate Pedestal
182   Bool_t   fBDoUnfold;       ///< do unfolding of clusters
183   Float_t  fDumpAmplitudeMin; ///< minimal amplitude of signal to be dumped
184   Float_t  fMaxNoise;        ///< maximal noise sigma on pad to be used in cluster finder
185   Int_t    fUseOnePadCluster; ///< flag - use one pad cluster -0 not use >0 use
186   Bool_t   fUseHLTOnePadCluster; ///< flag - use one HLT pad cluster for tracking
187   Float_t  fMinMaxCutAbs;    ///< minimal amplitude at cluster maxima
188   Float_t  fMinLeftRightCutAbs;  ///< minimal amplitude left right - PRF
189   Float_t  fMinUpDownCutAbs;  ///< minimal amplitude up-down - TRF
190   Float_t  fMinMaxCutSigma;    ///< minimal amplitude at cluster maxima
191   Float_t  fMinLeftRightCutSigma;  ///< minimal amplitude left right - PRF
192   Float_t  fMinUpDownCutSigma;  ///< minimal amplitude up-down - TRF
193   //
194   //
195   Float_t  fMaxC;            ///< maximal curvature for tracking
196   Bool_t   fBSpecialSeeding; ///< special seeding with big inclination angles allowed (for Cosmic and laser)
197   Bool_t   fBKinkFinder;       ///< do kink finder reconstruction
198   Double_t fKinkAngleCutChi2[2];   ///< angular cut for kinks
199   Int_t    fLastSeedRowSec;     ///< Most Inner Row to make seeding for secondaries
200   Int_t    fSeedGapPrim;   ///< seeding gap for primary tracks
201   Int_t    fSeedGapSec;   ///< seeding gap for secondary tracks
202
203   //
204   // Correction switches
205   //
206   Int_t fUseFieldCorrection;     ///< use field correction
207   Bool_t fUseComposedCorrection; ///< flag to use composed correction
208   Int_t fUseRPHICorrection;      ///< use rphi correction
209   Int_t fUseRadialCorrection;    ///< use radial correction
210   Int_t fUseQuadrantAlignment;   ///< use quadrant alignment
211   Int_t fUseSectorAlignment;     ///< use sector alignment
212   Int_t fUseDriftCorrectionTime; ///< use drift correction time
213   Int_t fUseDriftCorrectionGY;   ///< use drif correction global y
214   Int_t fUseGainCorrectionTime;  ///< use gain correction time
215   Int_t fUseExBCorrection;       ///< use ExB correction
216   Bool_t fUseMultiplicityCorrectionDedx; ///< use Dedx multiplicity correction
217   Bool_t fUseAlignmentTime;              ///< use time dependent alignment correction
218   Int_t fUseIonTailCorrection;   ///< use ion tail correction
219   Double_t fCrosstalkCorrection;   ///< crosstalk correction factor (fro each signal substracted by (mean signal in wite patch)xfCrosstalkCorrection) - Effect important only after removing oc capacitors in 2012
220   Double_t fCrosstalkCorrectionMissingCharge;   ///< crosstalk correction factor - missing charge factor (from each signal substracted by (mean signal in wite patch)xfCrosstalkCorrection) - Effect important only after removing  capacitors in 2012
221  //
222   // dEdx switches
223   //
224   Bool_t   fUseTotCharge;          ///< switch use total or max charge
225   Float_t fMinFraction;           ///< truncated mean - lower threshold
226   Float_t fMaxFaction;            ///< truncated mean - upper threshold
227   Int_t   fNeighborRowsDedx;      ///< number of neighboring rows to identify cluster below thres in dEdx calculation 0 -> switch off
228   Int_t   fGainCorrectionHVandPTMode; ///< switch for the usage of GainCorrectionHVandPT (see AliTPCcalibDB::GetGainCorrectionHVandPT
229   Double_t fSkipTimeBins;        ///< number of time bins to be skiiped (corrupted signal druing gating opening)
230
231   Bool_t fUseTOFCorrection;  ///< switch - kTRUE use TOF correction kFALSE - do not use
232   //
233   //  misscalibration
234   //
235   Double_t fSystematicErrors[5];  ///< systematic errors in the track parameters - to be added to TPC covariance matrix
236   Double_t fSystematicErrorClusterInner[2];  ///< systematic error of the cluster - used to downscale the information
237   Double_t fSystematicErrorCluster[2];        ///< systematic error of the cluster - used e.g in OpenGG run to provide better cluster to track association efficiency
238   Bool_t fUseSystematicCorrelation;         ///< switch to use the correlation for the sys
239 public:
240   static Bool_t fgUseTimeCalibration; ///< flag usage the time dependent calibration
241                                       // to be switched off for pass 0 reconstruction
242                                       // Use static function, other option will be to use
243                                       // additional specific storage ?
244   /// \cond CLASSIMP
245   ClassDef(AliTPCRecoParam, 21)
246   /// \endcond
247 };
248
249
250 #endif