]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/Rec/AliTPCRecoParam.cxx
ATO-17 - adding switch - correction for signal below threshold in the crosstalk corre...
[u/mrichter/AliRoot.git] / TPC / Rec / AliTPCRecoParam.cxx
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
17 ///////////////////////////////////////////////////////////////////////////////
18 //                                                                           //
19 // Class with TPC reconstruction parameters                                  //
20 //                                                                           //  
21 //
22 /*
23   The reconstruction parameters are used in the AliTPCclusterer and AliTPCtracker
24   
25   They are retrieved:
26   0. User speciefied it in reconstruction macro
27   1. if (not 0) from OCDB  - AliTPCcalibDB::GetRecoParam(eventtype)
28   2. if (not 0 or 1) default parameter - High flux enevironment used  
29
30
31   // Setting for systematic errors addition
32   [0] - systematic RMSY
33   [1] - systematic RMSZ
34   [2] - systematic RMSSNP
35   [3] - systematic RMSTheta
36   [4] - systematic RMSCuravture -  systematic error in 1/cm not in 1/pt
37   //
38   //  How to add it example - 3 mm systematic error y, 3 cm systematic error z (drift)
39   Double_t sysError[5]={0.3,3, 0.3/150., 3./150.,0.3/(150*150.)}
40   param->SetSystematicError(sysError);
41
42 */
43                                                                            //
44 ///////////////////////////////////////////////////////////////////////////////
45
46
47 #include "AliTPCRecoParam.h"
48
49 ClassImp(AliTPCRecoParam)
50
51
52 Bool_t AliTPCRecoParam::fgUseTimeCalibration=kTRUE; // flag usage the time dependent calibration
53                                       // to be switched off for pass 0 reconstruction
54                                       // Use static function, other option will be to use 
55                                       // additional specific storage ?
56
57 //_____________________________________________________________________________
58 AliTPCRecoParam::AliTPCRecoParam():
59   AliDetectorRecoParam(),
60   fUseHLTClusters(4),  // use HLTorRAW data
61   fUseHLTPreSeeding(0), // no pre-seeding for now
62   fBClusterSharing(kTRUE),
63   fCtgRange(1.05),       
64   fMaxSnpTracker(0.95),
65   fMaxSnpTrack(0.999),
66   fUseOuterDetectors(kFALSE),
67   fMaxChi2TPCTRD(36),     // maximal allowed chi2 between the TRD in and TPC out to be accepted for refit
68   fMaxChi2TPCITS(36),     // maximal allowed chi2 between the ITS in and TPC out to be accepted for backpropagation
69   fDumpSignal(kFALSE),
70   fFirstBin(0),
71   fLastBin(-1),
72   fBCalcPedestal(kFALSE),
73   fBDoUnfold(kTRUE),
74   fDumpAmplitudeMin(100),
75   fMaxNoise(2.),
76   //
77   fUseOnePadCluster(kTRUE),
78   fUseHLTOnePadCluster(kFALSE),
79   fMinMaxCutAbs(4.),
80   fMinLeftRightCutAbs(6.),
81   fMinUpDownCutAbs(6.),
82   //
83   fMinMaxCutSigma(4.),
84   fMinLeftRightCutSigma(7.),
85   fMinUpDownCutSigma(8.),
86   fMaxC(0.3),
87   fBSpecialSeeding(kFALSE),
88   fBKinkFinder(kTRUE),
89   fLastSeedRowSec(120),
90   fSeedGapPrim(6),
91   fSeedGapSec(6),
92   fUseFieldCorrection(0),      // use field correction
93   fUseComposedCorrection(kFALSE),      // use field correction
94   fUseRPHICorrection(0),      // use rphi correction
95   fUseRadialCorrection(0),    // use radial correction
96   fUseQuadrantAlignment(0),   // use quadrant alignment
97   fUseSectorAlignment(0),     // use sector alignment
98   fUseDriftCorrectionTime(1), // use drift correction time
99   fUseDriftCorrectionGY(1),   // use drif correction global y
100   fUseGainCorrectionTime(0),  // use gain correction time
101   fUseExBCorrection(1),  // use ExB correction
102   fUseMultiplicityCorrectionDedx(kTRUE), // use Dedx multiplicity correction
103   fUseAlignmentTime(kTRUE),              // use time dependent alignment correction
104   fUseIonTailCorrection(0),   // no ion tail correction for now
105   fCrosstalkCorrection(0),   // crosstalk correction factor (from each signal substracted by (mean signal in wite patch)xfCrosstalkCorrection) - Effect important only after removing oc capacitors in 2012
106   fCrosstalkCorrectionMissingCharge(1),   // crosstalk correction factor - missing charge (from each signal substracted by (mean signal in wite patch)xfCrosstalkCorrection) - Effect important only after removing oc capacitors in 2012
107  //
108   fUseTotCharge(kTRUE),          // switch use total or max charge
109   fMinFraction(0.01),           // truncated mean - lower threshold
110   fMaxFaction(0.7),            // truncated mean - upper threshold
111   fNeighborRowsDedx(2),           // neighbour rows for below threshold dEdx calculation
112   fGainCorrectionHVandPTMode(0), // switch for the usage of GainCorrectionHVandPT (see AliTPCcalibDB::GetGainCorrectionHVandPT   
113   fSkipTimeBins(5),              // number of time bins to be skiiped (corrupted signal druing gating opening)
114   fUseTOFCorrection(kTRUE),
115   fUseSystematicCorrelation(kTRUE)
116 {
117   //
118   // constructor
119   //
120   SetName("TPC");
121   SetTitle("TPC");
122   for (Int_t i=0;i<5;i++) fSystematicErrors[i]=0;
123   // systematic error parameterization at INNER wall of the TPC
124   fSystematicErrorClusterInner[0]=0.5;   // 0.5 cm
125   fSystematicErrorClusterInner[1]=5;     // 5 cm slope  
126   //
127   fCutSharedClusters[0]=0.5; // maximal allowed fraction of shared clusters - shorter track
128   fCutSharedClusters[1]=0.25; // maximal allowed fraction of shared clusters - longer  track
129   fClusterMaxRange[0]=1;     // y - pad      range
130   fClusterMaxRange[1]=1;     // z - time bin range
131   fKinkAngleCutChi2[0]=9;    // angular cut for kink finder - to create a kink
132                              // ~ about 5 % rate  for high pt kink finder
133   fKinkAngleCutChi2[1]=12;    // angular cut for kink finder - to use the partial track                             // form kink 
134                              // ~ about 2 % rate  for high pt kink finder
135 }
136
137 //_____________________________________________________________________________
138 AliTPCRecoParam::~AliTPCRecoParam() 
139 {
140   //
141   // destructor
142   //  
143 }
144
145 void AliTPCRecoParam::Print(const Option_t* /*option*/) const{
146   //
147   //
148   //
149   AliTPCRecoParam::Dump();
150   printf("Systematic errors:\n");
151   const char * cherrs[5]={"sy=","sz=","ssnp=","stheta=","s1pt="};
152   for (Int_t i=0; i<5; i++){
153     printf("%s%f\n",cherrs[i],fSystematicErrors[i]);
154   }
155 }
156
157
158 AliTPCRecoParam *AliTPCRecoParam::GetLowFluxParam(){
159   //
160   // make default reconstruction  parameters for low  flux env.
161   //
162   AliTPCRecoParam *param = new AliTPCRecoParam;
163   param->fCtgRange = 10;
164   param->fFirstBin = 0;
165   param->fLastBin  = 1000;
166   param->SetName("Low Flux");
167   param->SetTitle("Low Flux");
168   return param;
169 }
170
171 AliTPCRecoParam *AliTPCRecoParam::GetHighFluxParam(){
172   //
173   // make reco parameters for high flux env.
174   //
175   AliTPCRecoParam *param = new AliTPCRecoParam;
176   param->fCtgRange = 1.05;
177   param->fFirstBin = 0;
178   param->fLastBin  = 1000;  
179   param->fUseTotCharge=kFALSE;
180   param->SetName("High Flux");
181   param->SetTitle("High Flux");
182   return param;
183 }
184
185 AliTPCRecoParam *AliTPCRecoParam::GetHLTParam(){
186   //
187   // make reco parameters for high flux env.
188   //
189   AliTPCRecoParam *param = new AliTPCRecoParam;
190   param->fCtgRange = 1.05;
191   param->fFirstBin = 80;
192   param->fLastBin  = 1000;  
193   param->fMaxSnpTracker = 0.9; 
194   param->fMaxC          = 0.06; 
195   //
196   param->SetName("Hlt Param");
197   param->SetTitle("Hlt Param"); 
198   param->fBKinkFinder   = kFALSE;
199   return param;
200 }
201
202 AliTPCRecoParam *AliTPCRecoParam::GetLaserTestParam(Bool_t bPedestal){
203   //
204   // special setting for laser
205   //
206   AliTPCRecoParam *param = new AliTPCRecoParam;
207   param->fDumpSignal=kTRUE;
208   param->fCtgRange = 10.05;
209   param->fFirstBin = 0;
210   param->fLastBin  = 1000;
211   param->fBCalcPedestal = bPedestal;
212   param->fBDoUnfold     = kFALSE;
213   param->fDumpAmplitudeMin = 150;
214   param->fBKinkFinder   = kFALSE;
215   param->fMaxSnpTracker = 0.98;
216   param->fMaxC          = 0.02;
217   param->fBSpecialSeeding = kTRUE;
218   param->fUseTOFCorrection=kFALSE;
219   param->fUseHLTClusters=1; // always RAW data
220   //
221   //
222   param->SetName("Laser Flux");
223   param->SetTitle("Laser Flux");
224   return param;
225 }
226
227 AliTPCRecoParam *AliTPCRecoParam::GetCosmicTestParam(Bool_t bPedestal){
228   //
229   // special setting for cosmic 
230   // 
231   AliTPCRecoParam *param = new AliTPCRecoParam;
232   param->fDumpSignal=kTRUE;
233   param->fCtgRange = 10.05;    // full TPC
234   param->fFirstBin = 60;
235   param->fLastBin  = 1000;
236   param->fBCalcPedestal = bPedestal;
237   param->fBDoUnfold     = kFALSE;
238   param->fBSpecialSeeding = kTRUE;
239   param->fMaxC          = 0.07;
240   param->fBKinkFinder   = kFALSE;
241   param->fUseTOFCorrection =kFALSE;
242   param->SetName("Cosmic Flux");
243   param->SetTitle("Cosmic Flux");
244
245   return param;
246 }
247
248
249 Bool_t  AliTPCRecoParam::GetUseTimeCalibration(){ 
250   //
251   // get
252   //
253   return fgUseTimeCalibration;
254 }
255 void    AliTPCRecoParam::SetUseTimeCalibration(Bool_t useTimeCalibration) {
256   //
257   // set 
258   //
259   fgUseTimeCalibration = useTimeCalibration;
260 }
261