]>
Commit | Line | Data |
---|---|---|
44347160 | 1 | #ifndef ALIITSRECOPARAM_H |
2 | #define ALIITSRECOPARAM_H | |
572f41f9 | 3 | /* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. * |
44347160 | 4 | * See cxx source for full Copyright notice */ |
5 | ||
572f41f9 | 6 | /* $Id$ */ |
7 | ||
44347160 | 8 | /////////////////////////////////////////////////////////////////////////////// |
9 | // // | |
10 | // Class with ITS reconstruction parameters // | |
11 | // Origin: andrea.dainese@lnl.infn.it // | |
12 | // // | |
13 | /////////////////////////////////////////////////////////////////////////////// | |
14 | ||
15 | ||
6518a6c5 | 16 | #include "AliDetectorRecoParam.h" |
e50912db | 17 | #include "AliITSgeomTGeo.h" |
44347160 | 18 | |
6518a6c5 | 19 | class AliITSRecoParam : public AliDetectorRecoParam |
44347160 | 20 | { |
21 | public: | |
22 | AliITSRecoParam(); | |
23 | virtual ~AliITSRecoParam(); | |
24 | ||
25 | static AliITSRecoParam *GetLowFluxParam();// make reco parameters for low flux env. | |
26 | static AliITSRecoParam *GetHighFluxParam();// make reco parameters for high flux env. | |
27 | static AliITSRecoParam *GetCosmicTestParam();// special setting for cosmic | |
4a66240a | 28 | static AliITSRecoParam *GetPlaneEffParam(Int_t i);// special setting for Plane Efficiency studies |
44347160 | 29 | |
e50912db | 30 | static Int_t GetLayersNotToSkip(Int_t i) { return fgkLayersNotToSkip[i]; } |
31 | static Int_t GetLastLayerToTrackTo() { return fgkLastLayerToTrackTo; } | |
32 | static Int_t GetMaxClusterPerLayer() { return fgkMaxClusterPerLayer; } | |
33 | static Int_t GetMaxClusterPerLayer5() { return fgkMaxClusterPerLayer5; } | |
34 | static Int_t GetMaxClusterPerLayer10() { return fgkMaxClusterPerLayer10; } | |
35 | static Int_t GetMaxClusterPerLayer20() { return fgkMaxClusterPerLayer20; } | |
36 | static Int_t GetMaxDetectorPerLayer() { return fgkMaxDetectorPerLayer; } | |
37 | static Double_t Getriw() { return fgkriw; } | |
38 | static Double_t Getdiw() { return fgkdiw; } | |
39 | static Double_t GetX0iw() { return fgkX0iw; } | |
40 | static Double_t Getrcd() { return fgkrcd; } | |
41 | static Double_t Getdcd() { return fgkdcd; } | |
42 | static Double_t GetX0cd() { return fgkX0cd; } | |
43 | static Double_t Getyr() { return fgkyr; } | |
44 | static Double_t Getdr() { return fgkdr; } | |
45 | static Double_t Getzm() { return fgkzm; } | |
46 | static Double_t Getdm() { return fgkdm; } | |
47 | static Double_t Getrs() { return fgkrs; } | |
48 | static Double_t Getds() { return fgkds; } | |
49 | static Double_t GetrInsideITSscreen() { return fgkrInsideITSscreen; } | |
50 | static Double_t GetrInsideSPD1() { return fgkrInsideSPD1; } | |
51 | static Double_t GetrPipe() { return fgkrPipe; } | |
52 | static Double_t GetrInsidePipe() { return fgkrInsidePipe; } | |
53 | static Double_t GetrOutsidePipe() { return fgkrOutsidePipe; } | |
54 | static Double_t GetdPipe() { return fgkdPipe; } | |
55 | static Double_t GetrInsideShield(Int_t i) { return fgkrInsideShield[i]; } | |
56 | static Double_t GetrOutsideShield(Int_t i) { return fgkrOutsideShield[i]; } | |
57 | static Double_t Getdshield(Int_t i) { return fgkdshield[i]; } | |
58 | static Double_t GetX0shield(Int_t i) { return fgkX0shield[i]; } | |
59 | static Double_t GetX0Air() { return fgkX0Air; } | |
60 | static Double_t GetX0Be() { return fgkX0Be; } | |
61 | static Double_t GetBoundaryWidth() { return fgkBoundaryWidth; } | |
62 | static Double_t GetDeltaXNeighbDets() { return fgkDeltaXNeighbDets; } | |
63 | static Double_t GetSPDdetzlength() { return fgkSPDdetzlength; } | |
64 | static Double_t GetSPDdetxlength() { return fgkSPDdetxlength; } | |
65 | ||
44347160 | 66 | Double_t GetSigmaY2(Int_t i) const { return fSigmaY2[i]; } |
67 | Double_t GetSigmaZ2(Int_t i) const { return fSigmaZ2[i]; } | |
68 | ||
69 | Double_t GetMaxSnp() const { return fMaxSnp; } | |
70 | ||
71 | Double_t GetNSigmaYLayerForRoadY() const { return fNSigmaYLayerForRoadY; } | |
72 | Double_t GetNSigmaRoadY() const { return fNSigmaRoadY; } | |
73 | Double_t GetNSigmaZLayerForRoadZ() const { return fNSigmaZLayerForRoadZ; } | |
74 | Double_t GetNSigmaRoadZ() const { return fNSigmaRoadZ; } | |
75 | Double_t GetNSigma2RoadYC() const { return fNSigma2RoadYC; } | |
76 | Double_t GetNSigma2RoadZC() const { return fNSigma2RoadZC; } | |
77 | Double_t GetNSigma2RoadYNonC() const { return fNSigma2RoadYNonC; } | |
78 | Double_t GetNSigma2RoadZNonC() const { return fNSigma2RoadZNonC; } | |
79 | ||
80 | Double_t GetChi2PerCluster() const { return fChi2PerCluster; } | |
81 | Double_t GetMaxChi2PerCluster(Int_t i) const { return fMaxChi2PerCluster[i]; } | |
82 | Double_t GetMaxNormChi2NonC(Int_t i) const { return fMaxNormChi2NonC[i]; } | |
83 | Double_t GetMaxNormChi2C(Int_t i) const { return fMaxNormChi2C[i]; } | |
afd25725 | 84 | Double_t GetMaxNormChi2NonCForHypothesis() const { return fMaxNormChi2NonCForHypothesis; } |
44347160 | 85 | Double_t GetMaxChi2() const { return fMaxChi2; } |
86 | Double_t GetMaxChi2s(Int_t i) const { return fMaxChi2s[i]; } | |
87 | Double_t GetMaxChi2sR(Int_t i) const { return fMaxChi2sR[i]; } | |
88 | Double_t GetMaxChi2In() const { return fMaxChi2In; } | |
44347160 | 89 | Double_t GetMaxRoad() const { return fMaxRoad; } |
afd25725 | 90 | Double_t GetMaxNormChi2ForGolden(Int_t i) const { return 3.+0.5*i; } |
44347160 | 91 | |
92 | Double_t GetXVdef() const { return fXV; } | |
93 | Double_t GetYVdef() const { return fYV; } | |
94 | Double_t GetZVdef() const { return fZV; } | |
95 | Double_t GetSigmaXVdef() const { return fSigmaXV; } | |
96 | Double_t GetSigmaYVdef() const { return fSigmaYV; } | |
97 | Double_t GetSigmaZVdef() const { return fSigmaZV; } | |
afd25725 | 98 | |
99 | Double_t GetVertexCut() const { return fVertexCut; } | |
100 | Double_t GetMaxDZforPrimTrk() const { return fMaxDZforPrimTrk; } | |
101 | Double_t GetMaxDZToUseConstraint() const { return fMaxDZToUseConstraint; } | |
102 | Double_t GetMaxDforV0dghtrForProlongation() const { return fMaxDforV0dghtrForProlongation; } | |
103 | Double_t GetMaxDForProlongation() const { return fMaxDForProlongation; } | |
104 | Double_t GetMaxDZForProlongation() const { return fMaxDZForProlongation; } | |
105 | Double_t GetMinPtForProlongation() const { return fMinPtForProlongation; } | |
106 | ||
107 | void SetAddVirtualClustersInDeadZone(Bool_t add=kTRUE) { fAddVirtualClustersInDeadZone=add; return; } | |
108 | Bool_t GetAddVirtualClustersInDeadZone() const { return fAddVirtualClustersInDeadZone; } | |
109 | Double_t GetZWindowDeadZone() const { return fZWindowDeadZone; } | |
110 | Double_t GetSigmaXDeadZoneHit2() const { return fSigmaXDeadZoneHit2; } | |
111 | Double_t GetSigmaZDeadZoneHit2() const { return fSigmaZDeadZoneHit2; } | |
112 | Double_t GetXPassDeadZoneHits() const { return fXPassDeadZoneHits; } | |
113 | ||
114 | ||
115 | ||
e50912db | 116 | void SetUseTGeoInTracker(Int_t use=1) { fUseTGeoInTracker=use; return; } |
117 | Int_t GetUseTGeoInTracker() const { return fUseTGeoInTracker; } | |
44347160 | 118 | |
afd25725 | 119 | void SetAllowSharedClusters(Bool_t allow=kTRUE) { fAllowSharedClusters=allow; return; } |
120 | Bool_t GetAllowSharedClusters() const { return fAllowSharedClusters; } | |
121 | ||
e50912db | 122 | void SetClusterErrorsParam(Int_t param=1) { fClusterErrorsParam=param; return; } |
123 | Int_t GetClusterErrorsParam() const { return fClusterErrorsParam; } | |
124 | void SetUseAmplitudeInfo(Bool_t use=kTRUE) { for(Int_t i=0;i<AliITSgeomTGeo::kNLayers;i++) fUseAmplitudeInfo[i]=use; return; } | |
572f41f9 | 125 | void SetUseAmplitudeInfo(Int_t ilay,Bool_t use) { fUseAmplitudeInfo[ilay]=use; return; } |
126 | Bool_t GetUseAmplitudeInfo(Int_t ilay) const { return fUseAmplitudeInfo[ilay]; } | |
4a66240a | 127 | // |
128 | void SetComputePlaneEff(Bool_t ext=kTRUE) { fComputePlaneEff=ext; return; } | |
129 | Bool_t GetComputePlaneEff() const { return fComputePlaneEff; } | |
130 | // | |
2755f080 | 131 | void SetExtendedEtaAcceptance(Bool_t ext=kTRUE) { fExtendedEtaAcceptance=ext; return; } |
132 | Bool_t GetExtendedEtaAcceptance() const { return fExtendedEtaAcceptance; } | |
6518a6c5 | 133 | void SetUseDeadZonesFromOCDB(Bool_t use=kTRUE) { fUseDeadZonesFromOCDB=use; return; } |
134 | Bool_t GetUseDeadZonesFromOCDB() const { return fUseDeadZonesFromOCDB; } | |
572f41f9 | 135 | |
2755f080 | 136 | void SetFactorSAWindowSizes(Double_t fact=1.) { fFactorSAWindowSizes=fact; return; } |
137 | Double_t GetFactorSAWindowSizes() const { return fFactorSAWindowSizes; } | |
572f41f9 | 138 | |
afd25725 | 139 | void SetFindV0s(Bool_t find=kTRUE) { fFindV0s=find; return; } |
140 | Bool_t GetFindV0s() const { return fFindV0s; } | |
141 | ||
2755f080 | 142 | void SetLayersParameters(); |
143 | ||
144 | void SetLayerToSkip(Int_t i) { fLayersToSkip[i]=1; return; } | |
145 | Int_t GetLayersToSkip(Int_t i) const { return fLayersToSkip[i]; } | |
e340bb86 | 146 | |
6518a6c5 | 147 | void SetUseUnfoldingInClusterFinderSPD(Bool_t use=kTRUE) { fUseUnfoldingInClusterFinderSPD=use; return; } |
148 | Bool_t GetUseUnfoldingInClusterFinderSPD() const { return fUseUnfoldingInClusterFinderSPD; } | |
149 | void SetUseUnfoldingInClusterFinderSDD(Bool_t use=kTRUE) { fUseUnfoldingInClusterFinderSDD=use; return; } | |
150 | Bool_t GetUseUnfoldingInClusterFinderSDD() const { return fUseUnfoldingInClusterFinderSDD; } | |
151 | void SetUseUnfoldingInClusterFinderSSD(Bool_t use=kTRUE) { fUseUnfoldingInClusterFinderSSD=use; return; } | |
152 | Bool_t GetUseUnfoldingInClusterFinderSSD() const { return fUseUnfoldingInClusterFinderSSD; } | |
153 | ||
44347160 | 154 | // |
e50912db | 155 | |
156 | enum {fgkMaxClusterPerLayer=70000}; //7000*10; // max clusters per layer | |
157 | enum {fgkMaxClusterPerLayer5=28000};//7000*10*2/5; // max clusters per layer | |
158 | enum {fgkMaxClusterPerLayer10=14000};//7000*10*2/10; // max clusters per layer | |
159 | enum {fgkMaxClusterPerLayer20=7000};//7000*10*2/20; // max clusters per layer | |
160 | ||
44347160 | 161 | protected: |
162 | // | |
e50912db | 163 | static const Int_t fgkLayersNotToSkip[AliITSgeomTGeo::kNLayers]; // array with layers not to skip |
164 | static const Int_t fgkLastLayerToTrackTo; // innermost layer | |
165 | static const Int_t fgkMaxDetectorPerLayer; // max clusters per layer | |
166 | static const Double_t fgkriw; // TPC inner wall radius | |
167 | static const Double_t fgkdiw; // TPC inner wall x/X0 | |
168 | static const Double_t fgkX0iw; // TPC inner wall X0 | |
169 | static const Double_t fgkrcd; // TPC central drum radius | |
170 | static const Double_t fgkdcd; // TPC central drum x/X0 | |
171 | static const Double_t fgkX0cd; // TPC central drum X0 | |
172 | static const Double_t fgkyr; // TPC rods y (tracking c.s.) | |
173 | static const Double_t fgkdr; // TPC rods x/X0 | |
174 | static const Double_t fgkzm; // TPC membrane z | |
175 | static const Double_t fgkdm; // TPC membrane x/X0 | |
176 | static const Double_t fgkrs; // ITS screen radius | |
177 | static const Double_t fgkds; // ITS screed x/X0 | |
178 | static const Double_t fgkrInsideITSscreen; // inside ITS screen radius | |
179 | static const Double_t fgkrInsideSPD1; // inside SPD1 radius | |
180 | static const Double_t fgkrPipe; // pipe radius | |
181 | static const Double_t fgkrInsidePipe; // inside pipe radius | |
182 | static const Double_t fgkrOutsidePipe; // outside pipe radius | |
183 | static const Double_t fgkdPipe; // pipe x/X0 | |
184 | static const Double_t fgkrInsideShield[2]; // inside SPD (0) SDD (1) shield radius | |
185 | static const Double_t fgkrOutsideShield[2]; // outside SPD (0) SDD (1) shield radius | |
186 | static const Double_t fgkdshield[2]; // SPD (0) SDD (1) shield x/X0 | |
187 | static const Double_t fgkX0shield[2]; // SPD (0) SDD (1) shield X0 | |
188 | static const Double_t fgkX0Air; // air X0 | |
189 | static const Double_t fgkX0Be; // Berillium X0 | |
190 | static const Double_t fgkBoundaryWidth; // to define track at detector boundary | |
191 | static const Double_t fgkDeltaXNeighbDets; // max difference in radius between neighbouring detectors | |
192 | static const Double_t fgkSPDdetzlength; // SPD ladder length in z | |
193 | static const Double_t fgkSPDdetxlength; // SPD ladder length in x | |
194 | ||
2755f080 | 195 | Int_t fLayersToSkip[AliITSgeomTGeo::kNLayers]; // array with layers to skip (MI,SA) |
196 | ||
44347160 | 197 | // spatial resolutions of the detectors |
e50912db | 198 | Double_t fSigmaY2[AliITSgeomTGeo::kNLayers]; // y |
199 | Double_t fSigmaZ2[AliITSgeomTGeo::kNLayers]; // z | |
44347160 | 200 | // |
201 | Double_t fMaxSnp; // maximum of sin(phi) (MI) | |
202 | // | |
203 | // search road (MI) | |
36e140f1 | 204 | Double_t fNSigmaYLayerForRoadY; // y |
205 | Double_t fNSigmaRoadY; // y | |
206 | Double_t fNSigmaZLayerForRoadZ; // z | |
207 | Double_t fNSigmaRoadZ; // z | |
208 | Double_t fNSigma2RoadZC; // z | |
209 | Double_t fNSigma2RoadYC; // y | |
210 | Double_t fNSigma2RoadZNonC; // z | |
211 | Double_t fNSigma2RoadYNonC; // y | |
44347160 | 212 | // |
213 | // chi2 cuts | |
e50912db | 214 | Double_t fMaxChi2PerCluster[AliITSgeomTGeo::kNLayers-1]; // max chi2 for MIP (MI) |
215 | Double_t fMaxNormChi2NonC[AliITSgeomTGeo::kNLayers]; //max norm chi2 for non constrained tracks (MI) | |
216 | Double_t fMaxNormChi2C[AliITSgeomTGeo::kNLayers]; //max norm chi2 for constrained tracks (MI) | |
afd25725 | 217 | Double_t fMaxNormChi2NonCForHypothesis; //max norm chi2 (on layers 0,1,2) for hypotheis to be kept (MI) |
44347160 | 218 | Double_t fMaxChi2; // used to initialize variables needed to find minimum chi2 (MI,V2) |
e50912db | 219 | Double_t fMaxChi2s[AliITSgeomTGeo::kNLayers]; // max predicted chi2 (cluster & track prol.) (MI) |
44347160 | 220 | // |
221 | Double_t fMaxRoad; // (V2) | |
222 | // | |
223 | Double_t fMaxChi2In; // (NOT USED) | |
e50912db | 224 | Double_t fMaxChi2sR[AliITSgeomTGeo::kNLayers]; // (NOT USED) |
44347160 | 225 | Double_t fChi2PerCluster; // (NOT USED) |
226 | // | |
227 | // default primary vertex (MI,V2) | |
36e140f1 | 228 | Double_t fXV; // x |
229 | Double_t fYV; // y | |
230 | Double_t fZV; // z | |
231 | Double_t fSigmaXV; // x | |
232 | Double_t fSigmaYV; // y | |
233 | Double_t fSigmaZV; // z | |
44347160 | 234 | Double_t fVertexCut; // (V2) |
afd25725 | 235 | Double_t fMaxDZforPrimTrk; // maximum (imp. par.)/(1+layer) to define |
236 | // a primary and apply vertex constraint (MI) | |
237 | Double_t fMaxDZToUseConstraint; // maximum (imp. par.) for tracks to be | |
238 | // prolonged with constraint | |
239 | // cuts to decide if trying to prolong a TPC track (MI) | |
240 | Double_t fMaxDforV0dghtrForProlongation; // max. rphi imp. par. cut for V0 daughter | |
44347160 | 241 | // |
afd25725 | 242 | Double_t fMaxDForProlongation; // max. rphi imp. par. cut |
243 | Double_t fMaxDZForProlongation; // max. 3D imp. par. cut | |
244 | Double_t fMinPtForProlongation; // min. pt cut | |
245 | ||
246 | // parameters to create "virtual" clusters in SPD dead zone (MI) | |
36e140f1 | 247 | Bool_t fAddVirtualClustersInDeadZone; // add if kTRUE |
248 | Double_t fZWindowDeadZone; // window size | |
249 | Double_t fSigmaXDeadZoneHit2; // x error virtual cls | |
250 | Double_t fSigmaZDeadZoneHit2; // z error virtual cls | |
251 | Double_t fXPassDeadZoneHits; // x distance between clusters | |
afd25725 | 252 | |
253 | ||
e50912db | 254 | Int_t fUseTGeoInTracker; // use TGeo to get material budget in tracker MI |
afd25725 | 255 | Bool_t fAllowSharedClusters; // if kFALSE don't set to kITSin tracks with shared clusters (MI) |
e50912db | 256 | Int_t fClusterErrorsParam; // parametrization for cluster errors (MI), see AliITSRecoParam::GetError() |
257 | Bool_t fUseAmplitudeInfo[AliITSgeomTGeo::kNLayers]; // use cluster charge in cluster-track matching (SDD,SSD) (MI) | |
4a66240a | 258 | Bool_t fComputePlaneEff; // flag to enable Computation of PlaneEfficiency |
2755f080 | 259 | Bool_t fExtendedEtaAcceptance; // enable jumping from TPC to SPD at large eta (MI) |
6518a6c5 | 260 | Bool_t fUseDeadZonesFromOCDB; // enable using OCDB info on dead modules.. (MI) |
2755f080 | 261 | Double_t fFactorSAWindowSizes; // larger window sizes in SA |
afd25725 | 262 | |
263 | Bool_t fFindV0s; // flag to enable V0 finder (MI) | |
264 | ||
6518a6c5 | 265 | // cluster unfolding in ITS cluster finders |
266 | Bool_t fUseUnfoldingInClusterFinderSPD; // SPD | |
267 | Bool_t fUseUnfoldingInClusterFinderSDD; // SDD | |
268 | Bool_t fUseUnfoldingInClusterFinderSSD; // SSD | |
269 | ||
44347160 | 270 | ClassDef(AliITSRecoParam,1) // ITS reco parameters |
271 | }; | |
272 | ||
273 | #endif |