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