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