]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - TRD/AliTRDrecoParam.cxx
Reco Param with Latency window, L1 latency & vertex shift
[u/mrichter/AliRoot.git] / TRD / AliTRDrecoParam.cxx
... / ...
CommitLineData
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/* $Id$ */
17
18///////////////////////////////////////////////////////////////////////////////
19// //
20// Parameter class for the TRD reconstruction //
21// //
22// Authors: //
23// Alex Bercuci <A.Bercuci@gsi.de> //
24// Markus Fasel <M.Fasel@gsi.de> //
25// //
26///////////////////////////////////////////////////////////////////////////////
27
28#include "AliTRDrecoParam.h"
29#include "AliTRDrawStreamBase.h"
30
31ClassImp(AliTRDrecoParam)
32
33
34//______________________________________________________________
35AliTRDrecoParam::AliTRDrecoParam()
36 :AliDetectorRecoParam()
37 ,fkdNchdy(12.)
38 ,fkMaxTheta(1.0)
39 ,fkMaxPhi(2.0)
40 ,fkRoad0y(6.0)
41 ,fkRoad0z(8.5)
42 ,fkRoad1y(2.0)
43 ,fkRoad1z(20.0)
44 ,fkRoad2y(3.0)
45 ,fkRoad2z(20.0)
46 ,fkPlaneQualityThreshold(5.0)// 4.2? under Investigation
47 ,fkRoadzMultiplicator(1.5)
48 ,fkFindable(.333)
49 ,fkChi2Z(30./*14.*//*12.5*/)
50 ,fkChi2Y(.25)
51 ,fkChi2YSlope(7.73)
52 ,fkChi2ZSlope(0.069)
53 ,fkChi2YCut(0.5)
54 ,fkPhiSlope(10.6)
55 ,fkNMeanClusters(20.)
56 ,fkNSigmaClusters(2.)
57 ,fkNClusterNoise(0.)
58 ,fkNMeanTracklets(5.5)
59 ,fkTrackLikelihood(-15.)
60 ,fFlags(0)
61 ,fRawStreamVersion("REAL")
62 ,fMinMaxCutSigma(4.)
63 ,fMinLeftRightCutSigma(8.)
64 ,fClusMaxThresh(4.5)
65 ,fClusSigThresh(3.5)
66 ,fTCnexp(1)
67 ,fNumberOfPresamples(0)
68 ,fNumberOfPostsamples(0)
69{
70 //
71 // Default constructor
72 //
73 fSysCovMatrix[0] = 0.; // y direction (1 cm)
74 fSysCovMatrix[1] = 0.; // z direction (1 cm)
75 fSysCovMatrix[2] = 0.; // snp
76 fSysCovMatrix[3] = 0.; // tgl
77 fSysCovMatrix[4] = 0.; // 1/pt
78
79 // Xe tail cancellation parameters
80 fTCParams[0] = 1.156; // r1
81 fTCParams[1] = 0.130; // r2
82 fTCParams[2] = 0.114; // c1
83 fTCParams[3] = 0.624; // c2
84 // Ar tail cancellation parameters
85 fTCParams[4] = 6.; // r1
86 fTCParams[5] = 0.62; // r2
87 fTCParams[6] = 0.0087;// c1
88 fTCParams[7] = 0.07; // c2
89
90 memset(fPIDThreshold, 0, AliTRDCalPID::kNMom*sizeof(Double_t));
91 memset(fStreamLevel, 0, kTRDreconstructionTasks * sizeof(Int_t));
92
93 SetPIDNeuralNetwork();
94 SetEightSlices();
95 SetImproveTracklets();
96 SetLUT();
97 SetTailCancelation();
98}
99
100//______________________________________________________________
101AliTRDrecoParam::AliTRDrecoParam(const AliTRDrecoParam &ref)
102 :AliDetectorRecoParam(ref)
103 ,fkdNchdy(ref.fkdNchdy)
104 ,fkMaxTheta(ref.fkMaxTheta)
105 ,fkMaxPhi(ref.fkMaxPhi)
106 ,fkRoad0y(ref.fkRoad0y)
107 ,fkRoad0z(ref.fkRoad0z)
108 ,fkRoad1y(ref.fkRoad1y)
109 ,fkRoad1z(ref.fkRoad1z)
110 ,fkRoad2y(ref.fkRoad2y)
111 ,fkRoad2z(ref.fkRoad2z)
112 ,fkPlaneQualityThreshold(ref.fkPlaneQualityThreshold)
113 ,fkRoadzMultiplicator(ref.fkRoadzMultiplicator)
114 ,fkFindable(ref.fkFindable)
115 ,fkChi2Z(ref.fkChi2Z)
116 ,fkChi2Y(ref.fkChi2Y)
117 ,fkChi2YSlope(ref.fkChi2YSlope)
118 ,fkChi2ZSlope(ref.fkChi2ZSlope)
119 ,fkChi2YCut(ref.fkChi2YCut)
120 ,fkPhiSlope(ref.fkPhiSlope)
121 ,fkNMeanClusters(ref.fkNMeanClusters)
122 ,fkNSigmaClusters(ref.fkNSigmaClusters)
123 ,fkNClusterNoise(ref.fkNClusterNoise)
124 ,fkNMeanTracklets(ref.fkNMeanTracklets)
125 ,fkTrackLikelihood(ref.fkTrackLikelihood)
126 ,fFlags(ref.fFlags)
127 ,fRawStreamVersion(ref.fRawStreamVersion)
128 ,fMinMaxCutSigma(ref.fMinMaxCutSigma)
129 ,fMinLeftRightCutSigma(ref.fMinLeftRightCutSigma)
130 ,fClusMaxThresh(ref.fClusMaxThresh)
131 ,fClusSigThresh(ref.fClusSigThresh)
132 ,fTCnexp(ref.fTCnexp)
133 ,fNumberOfPresamples(ref.fNumberOfPresamples)
134 ,fNumberOfPostsamples(ref.fNumberOfPostsamples)
135{
136 //
137 // Copy constructor
138 //
139 memcpy(fSysCovMatrix, ref.fSysCovMatrix, 5*sizeof(Double_t));
140 memcpy(fTCParams, ref.fTCParams, 8*sizeof(Double_t));
141 memcpy(fPIDThreshold, ref.fPIDThreshold, AliTRDCalPID::kNMom*sizeof(Double_t));
142 memcpy(fStreamLevel, ref.fStreamLevel, kTRDreconstructionTasks * sizeof(Int_t));
143}
144
145//______________________________________________________________
146AliTRDrecoParam *AliTRDrecoParam::GetLowFluxParam()
147{
148 //
149 // Parameters for the low flux environment
150 //
151
152 AliTRDrecoParam *rec = new AliTRDrecoParam();
153 rec->fkdNchdy = 12.; // pp in TRD
154 rec->SetVertexConstrained();
155 rec->SetCheckTimeConsistency();
156 return rec;
157
158}
159
160//______________________________________________________________
161AliTRDrecoParam *AliTRDrecoParam::GetHighFluxParam()
162{
163 //
164 // Parameters for the high flux environment
165 //
166
167 AliTRDrecoParam *rec = new AliTRDrecoParam();
168 rec->fkdNchdy = 4000.; // PbPb in TRD
169 rec->SetVertexConstrained();
170 rec->SetCheckTimeConsistency();
171 return rec;
172
173}
174
175//______________________________________________________________
176AliTRDrecoParam *AliTRDrecoParam::GetCosmicTestParam()
177{
178 //
179 // Parameters for the cosmics data
180 //
181
182 AliTRDrecoParam *par = new AliTRDrecoParam();
183 par->fSysCovMatrix[0] = 2.; // y direction (1 cm)
184 par->fSysCovMatrix[1] = 2.; // z direction (1 cm)
185 par->fkChi2YSlope = 0.11853;
186 par->fkChi2ZSlope = 0.04527;
187 par->fkChi2YCut = 1.;
188 par->fkPhiSlope = 10.; //3.17954;
189 par->fkMaxTheta = 2.1445;
190 par->fkMaxPhi = 2.7475;
191 par->fkNMeanClusters = 12.89;
192 par->fkNSigmaClusters = 2.095;
193 par->fkRoadzMultiplicator = 3.;
194 par->fStreamLevel[kTracker] = 1;
195 par->SetCheckTimeConsistency();
196 return par;
197
198}
199
200
201//______________________________________________________________
202Float_t AliTRDrecoParam::GetNClusters() const
203{
204 // Estimate the number of clusters in the TRD detector
205
206 Float_t nclusters = (fkNMeanClusters + 2*fkNSigmaClusters)*fkNMeanTracklets*fkdNchdy;
207 nclusters *= 1.+fkNClusterNoise;
208 return nclusters;
209}
210
211//______________________________________________________________
212void AliTRDrecoParam::SetPIDLQslices(Int_t s)
213{
214// Setting number of slices used by the PID LQ method s={1, 2}
215// If PID NN is set this function will change to PID LQ.
216
217 if(IsPIDNeuralNetwork()){
218 AliWarning("PID set to NN. Changing to LQ.");
219 SetPIDNeuralNetwork(kFALSE);
220 }
221
222 switch(s){
223 case 1:
224 if(TESTBIT(fFlags, kLQ2D)) CLRBIT(fFlags, kLQ2D);
225 break;
226 case 2:
227 SETBIT(fFlags, kLQ2D);
228 break;
229 default:
230 AliWarning(Form("N[%d] PID LQ slices not implemented. Using default 2.", s));
231 SETBIT(fFlags, kLQ2D);
232 break;
233 }
234}
235