major TRD reconstruction update
[u/mrichter/AliRoot.git] / TRD / AliTRDrecoParam.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 /* $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
31 ClassImp(AliTRDrecoParam)
32
33 //______________________________________________________________
34 AliTRDrecoParam::AliTRDrecoParam()
35   :AliDetectorRecoParam()
36   ,fkdNchdy(12.)
37   ,fkMaxTheta(1.0)      
38   ,fkMaxPhi(2.0) 
39   ,fkRoad0y(6.0)
40   ,fkRoad0z(8.5) 
41   ,fkRoad1y(2.0)
42   ,fkRoad1z(20.0)       
43   ,fkRoad2y(3.0)
44   ,fkRoad2z(20.0)
45   ,fkPlaneQualityThreshold(5.0)// 4.2? under Investigation
46   ,fkFindable(.333)
47   ,fkChi2Z(30./*14.*//*12.5*/)
48   ,fkChi2Y(.25)
49   ,fkChi2YSlope(7.73)
50   ,fkChi2ZSlope(0.069)
51         ,fkChi2YCut(0.5)
52   ,fkPhiSlope(10.6)
53   ,fkNMeanClusters(20.)
54   ,fkNSigmaClusters(2.)
55   ,fkNClusterNoise(0.)
56   ,fkNMeanTracklets(5.5)
57   ,fkTrackLikelihood(-15.)
58   ,fMinMaxCutSigma(4.)
59   ,fMinLeftRightCutSigma(8.)
60   ,fClusMaxThresh(4.5)
61   ,fClusSigThresh(3.5)
62   ,fTCnexp(1)
63   ,fNumberOfPresamples(0)
64   ,fNumberOfPostsamples(0)
65 {
66   //
67   // Default constructor
68   //
69   fSysCovMatrix[0] = 0.; // y direction (1 cm)
70   fSysCovMatrix[1] = 0.; // z direction (1 cm)
71   fSysCovMatrix[2] = 0.; // snp
72   fSysCovMatrix[3] = 0.; // tgl
73   fSysCovMatrix[4] = 0.; // 1/pt
74
75   memset(fPIDThreshold, 0, AliTRDCalPID::kNMom*sizeof(Double_t));
76 }
77
78 //______________________________________________________________
79 AliTRDrecoParam::AliTRDrecoParam(const AliTRDrecoParam &ref)
80   :AliDetectorRecoParam(ref)
81   ,fkdNchdy(ref.fkdNchdy)
82   ,fkMaxTheta(ref.fkMaxTheta)
83   ,fkMaxPhi(ref.fkMaxPhi)
84   ,fkRoad0y(ref.fkRoad0y)
85   ,fkRoad0z(ref.fkRoad0z) 
86   ,fkRoad1y(ref.fkRoad1y)
87   ,fkRoad1z(ref.fkRoad1z)       
88   ,fkRoad2y(ref.fkRoad2y)
89   ,fkRoad2z(ref.fkRoad2z)
90   ,fkPlaneQualityThreshold(ref.fkPlaneQualityThreshold)
91   ,fkFindable(ref.fkFindable)
92   ,fkChi2Z(ref.fkChi2Z)
93   ,fkChi2Y(ref.fkChi2Y)
94   ,fkChi2YSlope(ref.fkChi2YSlope)
95   ,fkChi2ZSlope(ref.fkChi2ZSlope)
96         ,fkChi2YCut(ref.fkChi2YCut)
97   ,fkPhiSlope(ref.fkPhiSlope)
98   ,fkNMeanClusters(ref.fkNMeanClusters)
99   ,fkNSigmaClusters(ref.fkNSigmaClusters)
100   ,fkNClusterNoise(ref.fkNClusterNoise)
101   ,fkNMeanTracklets(ref.fkNMeanTracklets)
102   ,fkTrackLikelihood(ref.fkTrackLikelihood)
103   ,fMinMaxCutSigma(ref.fMinMaxCutSigma)
104   ,fMinLeftRightCutSigma(ref.fMinLeftRightCutSigma)
105   ,fClusMaxThresh(ref.fClusMaxThresh)
106   ,fClusSigThresh(ref.fClusSigThresh)
107   ,fTCnexp(ref.fTCnexp)
108   ,fNumberOfPresamples(ref.fNumberOfPresamples)
109   ,fNumberOfPostsamples(ref.fNumberOfPostsamples)
110 {
111   //
112   // Copy constructor
113   //
114   memcpy(fSysCovMatrix, ref.fSysCovMatrix, 5*sizeof(Double_t));
115   memcpy(fPIDThreshold, ref.fPIDThreshold, AliTRDCalPID::kNMom*sizeof(Double_t));
116 }
117
118 //______________________________________________________________
119 AliTRDrecoParam *AliTRDrecoParam::GetLowFluxParam()
120 {
121   //
122   // Parameters for the low flux environment
123   //
124
125   AliTRDrecoParam *rec = new AliTRDrecoParam();
126   rec->fkdNchdy = 12.; // pp in TRD
127   return rec;
128
129 }
130
131 //______________________________________________________________
132 AliTRDrecoParam *AliTRDrecoParam::GetHighFluxParam()
133 {
134   //
135   // Parameters for the high flux environment
136   //
137
138   AliTRDrecoParam *rec = new AliTRDrecoParam();
139   rec->fkdNchdy = 4000.; // PbPb in TRD
140
141   return rec;
142
143 }
144
145 //______________________________________________________________
146 AliTRDrecoParam *AliTRDrecoParam::GetCosmicTestParam()
147 {
148   //
149   // Parameters for the cosmics data
150   //
151
152   AliTRDrawStreamBase::SetRawStreamVersion("TB");
153   AliTRDrecoParam *par = new AliTRDrecoParam();
154   par->fSysCovMatrix[0] = 1.; // y direction (1 cm)
155   par->fSysCovMatrix[1] = 1.; // z direction (1 cm)
156   par->fkChi2YSlope     = 0.11853;
157   par->fkChi2ZSlope     = 0.04527;
158   par->fkChi2YCut       = 1.;
159   par->fkPhiSlope       = 3.17954;
160   par->fkMaxTheta       = 2.1445;
161   par->fkMaxPhi         = 2.7475;
162   par->fkNMeanClusters  = 12.89;
163   par->fkNSigmaClusters = 2.095;
164   return par;
165
166 }
167
168
169 //______________________________________________________________
170 Float_t AliTRDrecoParam::GetNClusters() const
171 {
172   // Estimate the number of clusters in the TRD detector
173   
174   Float_t nclusters = (fkNMeanClusters + 2*fkNSigmaClusters)*fkNMeanTracklets*fkdNchdy;
175   nclusters *= 1.+fkNClusterNoise;
176   return nclusters;
177 }