]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONRecoParam.cxx
One more warning fixed
[u/mrichter/AliRoot.git] / MUON / AliMUONRecoParam.cxx
CommitLineData
3304fa09 1/**************************************************************************
2* Copyright(c) 1998-2007, 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/// \class AliMUONRecoParam
19///
20/// Class with MUON reconstruction parameters
21///
22/// \author Philippe Pillot
23//-----------------------------------------------------------------------------
24
25
26
27#include "AliMUONRecoParam.h"
28
29#include "AliLog.h"
30
31#include <Riostream.h>
32
33ClassImp(AliMUONRecoParam)
34
35
36//_____________________________________________________________________________
37AliMUONRecoParam::AliMUONRecoParam()
15d30ed4 38: AliDetectorRecoParam(),
3304fa09 39 fClusteringMode("MLEM"),
40 fTrackingMode("KALMAN"),
0e894e58 41 fMostProbBendingMomentum(0.),
3304fa09 42 fMinBendingMomentum(0.),
43 fMaxBendingMomentum(0.),
9bf6860b 44 fMaxNonBendingSlope(0.),
9f093251 45 fMaxBendingSlope(0.),
3304fa09 46 fNonBendingVertexDispersion(0.),
47 fBendingVertexDispersion(0.),
48 fMaxNonBendingDistanceToTrack(0.),
49 fMaxBendingDistanceToTrack(0.),
50 fSigmaCutForTracking(0.),
51 fSigmaCutForImprovement(0.),
fda59e58 52 fSigmaCutForTrigger(0.),
b5270f21 53 fStripCutForTrigger(0.),
54 fMaxStripAreaForTrigger(0.),
3304fa09 55 fMaxNormChi2MatchTrigger(0.),
0a18ba02 56 fPercentOfFullClusterInESD(10.),
38bcf0ef 57 fCombinedClusterTrackReco(kFALSE),
3304fa09 58 fTrackAllTracks(kFALSE),
59 fRecoverTracks(kFALSE),
60 fMakeTrackCandidatesFast(kFALSE),
9bf6860b 61 fMakeMoreTrackCandidates(kFALSE),
3304fa09 62 fComplementTracks(kFALSE),
63 fImproveTracks(kFALSE),
0a18ba02 64 fUseSmoother(kFALSE),
de98fdc9 65 fSaveFullClusterInESD(kTRUE),
9bf6860b 66 fCalibrationMode("NOGAIN"),
67 fBypassSt45(kFALSE)
3304fa09 68{
69 /// Constructor
15d30ed4 70 SetNameTitle("MUON","MUON");
3304fa09 71
72 // use the default parameters for low flux environment
73 SetLowFluxParam();
74}
75
76//_____________________________________________________________________________
77AliMUONRecoParam::~AliMUONRecoParam()
78{
79 /// Destructor
80}
81
9bf6860b 82//_____________________________________________________________________________
83Option_t*
84AliMUONRecoParam::GetCalibrationMode() const
85{
86 /// Return the calibration mode. Can be :
87 /// NOGAIN : only do pedestal subtraction
88 /// GAIN : do pedestal subtraction, and apply gain correction, but with a
89 /// single capacitance value for all channels
90 /// GAINCONSTANTCAPA : as GAIN, but with a channel-dependent capacitance value
91
92 return fCalibrationMode.Data();
93}
94
3304fa09 95//_____________________________________________________________________________
96AliMUONRecoParam *AliMUONRecoParam::GetLowFluxParam()
97{
98 /// Return default reconstruction parameters for low flux environment
99
100 AliMUONRecoParam *param = new AliMUONRecoParam();
101 param->SetLowFluxParam();
102
103 return param;
104}
105
106//_____________________________________________________________________________
107AliMUONRecoParam *AliMUONRecoParam::GetHighFluxParam()
108{
109 /// Return default reconstruction parameters for high flux environment
110
111 AliMUONRecoParam *param = new AliMUONRecoParam();
112 param->SetHighFluxParam();
113
114 return param;
115}
116
0e894e58 117//_____________________________________________________________________________
118AliMUONRecoParam *AliMUONRecoParam::GetCosmicParam()
119{
120 /// Return default reconstruction parameters for high flux environment
121
122 AliMUONRecoParam *param = new AliMUONRecoParam();
123 param->SetCosmicParam();
124
125 return param;
126}
127
3304fa09 128//_____________________________________________________________________________
129void AliMUONRecoParam::SetLowFluxParam()
130{
131 /// Set reconstruction parameters for low flux environment
132
0e894e58 133 fMostProbBendingMomentum = 2.;
9bf6860b 134 fMinBendingMomentum = 1.;
3304fa09 135 fMaxBendingMomentum = 3000.;
9bf6860b 136 fMaxNonBendingSlope = 0.3;
9f093251 137 fMaxBendingSlope = 0.4;
3304fa09 138 fNonBendingVertexDispersion = 10.;
139 fBendingVertexDispersion = 10.;
9bf6860b 140 fMaxNonBendingDistanceToTrack = 1.;
141 fMaxBendingDistanceToTrack = 1.;
3304fa09 142 fSigmaCutForTracking = 6.;
143 fSigmaCutForImprovement = 5.;
fda59e58 144 fSigmaCutForTrigger = 8.;
b5270f21 145 fStripCutForTrigger = 1.;
146 fMaxStripAreaForTrigger = 3.;
3304fa09 147 fMaxNormChi2MatchTrigger = 16.;
6cac085d 148 fCombinedClusterTrackReco = kFALSE;
3304fa09 149 fTrackAllTracks = kTRUE;
150 fRecoverTracks = kTRUE;
151 fMakeTrackCandidatesFast = kFALSE;
9bf6860b 152 fMakeMoreTrackCandidates = kFALSE;
3304fa09 153 fComplementTracks = kTRUE;
154 fImproveTracks = kTRUE;
155 fUseSmoother = kTRUE;
9bf6860b 156 for (Int_t iCh = 0; iCh < 10; iCh++) fUseChamber[iCh] = kTRUE;
157 for (Int_t iSt = 0; iSt < 5; iSt++) fRequestStation[iSt] = kTRUE;
6cac085d 158 fBypassSt45 = kFALSE;
3304fa09 159
160}
161
162//_____________________________________________________________________________
163void AliMUONRecoParam::SetHighFluxParam()
164{
165 /// Set reconstruction parameters for high flux environment
166
0e894e58 167 fMostProbBendingMomentum = 2.;
9bf6860b 168 fMinBendingMomentum = 1.;
3304fa09 169 fMaxBendingMomentum = 3000.;
9bf6860b 170 fMaxNonBendingSlope = 0.3;
9f093251 171 fMaxBendingSlope = 0.4;
3304fa09 172 fNonBendingVertexDispersion = 10.;
173 fBendingVertexDispersion = 10.;
9bf6860b 174 fMaxNonBendingDistanceToTrack = 1.;
175 fMaxBendingDistanceToTrack = 1.;
3304fa09 176 fSigmaCutForTracking = 6.;
177 fSigmaCutForImprovement = 5.;
fda59e58 178 fSigmaCutForTrigger = 8.;
b5270f21 179 fStripCutForTrigger = 1.;
180 fMaxStripAreaForTrigger = 3.;
3304fa09 181 fMaxNormChi2MatchTrigger = 16.;
6cac085d 182 fCombinedClusterTrackReco = kFALSE;
3304fa09 183 fTrackAllTracks = kTRUE;
184 fRecoverTracks = kTRUE;
185 fMakeTrackCandidatesFast = kFALSE;
9bf6860b 186 fMakeMoreTrackCandidates = kFALSE;
3304fa09 187 fComplementTracks = kTRUE;
188 fImproveTracks = kTRUE;
189 fUseSmoother = kTRUE;
9bf6860b 190 for (Int_t iCh = 0; iCh < 10; iCh++) fUseChamber[iCh] = kTRUE;
191 for (Int_t iSt = 0; iSt < 5; iSt++) fRequestStation[iSt] = kTRUE;
6cac085d 192 fBypassSt45 = kFALSE;
3304fa09 193
194}
195
0e894e58 196//_____________________________________________________________________________
197void AliMUONRecoParam::SetCosmicParam()
198{
199 /// Set reconstruction parameters for high flux environment
200
201 fMostProbBendingMomentum = 2.;
202 fMinBendingMomentum = 1.;
203 fMaxBendingMomentum = 10000000.;
204 fMaxNonBendingSlope = 0.3;
9f093251 205 fMaxBendingSlope = 0.4;
0e894e58 206 fNonBendingVertexDispersion = 10.;
207 fBendingVertexDispersion = 10.;
208 fMaxNonBendingDistanceToTrack = 10.;
209 fMaxBendingDistanceToTrack = 10.;
210 fSigmaCutForTracking = 20.;
211 fSigmaCutForImprovement = 20.;
212 fSigmaCutForTrigger = 8.;
213 fMaxNormChi2MatchTrigger = 16.;
214 fPercentOfFullClusterInESD = 100.;
215 fCombinedClusterTrackReco = kFALSE;
216 fTrackAllTracks = kTRUE;
217 fRecoverTracks = kTRUE;
218 fMakeTrackCandidatesFast = kFALSE;
219 fMakeMoreTrackCandidates = kFALSE;
220 fComplementTracks = kTRUE;
221 fImproveTracks = kTRUE;
222 fUseSmoother = kTRUE;
223 fSaveFullClusterInESD = kTRUE;
224 for (Int_t iCh = 0; iCh < 10; iCh++) fUseChamber[iCh] = kTRUE;
225 for (Int_t iSt = 0; iSt < 5; iSt++) fRequestStation[iSt] = kTRUE;
226 fBypassSt45 = kFALSE;
227
228}
229
3304fa09 230//_____________________________________________________________________________
231void AliMUONRecoParam::Print(Option_t *option) const
232{
233 /// print reconstruction parameters
234 /// if option = FULL then print also unused parameters
235
236 cout<<endl<<"\t------Reconstruction parameters------"<<endl;
237
de98fdc9 238 cout<<Form("Calibration mode = %s",fCalibrationMode.Data())<<endl;
3304fa09 239 cout<<Form("Clustering mode = %s",fClusteringMode.Data())<<endl;
3304fa09 240 cout<<Form("Tracking mode = %s",fTrackingMode.Data())<<endl;
9bf6860b 241
242 if (BypassSt45()) cout << "Will bypass St45 (replacing their clusters by generated ones from trigger tracks)" << endl;
3304fa09 243
15d30ed4 244 if (fCombinedClusterTrackReco) cout<<"Combined cluster/track reconstruction: ON"<<endl;
245 else cout<<"Combined cluster/track reconstruction: OFF"<<endl;
38bcf0ef 246
0a18ba02 247 if (fSaveFullClusterInESD) cout<<Form("Save all cluster info in ESD for %5.2f %% of events",fPercentOfFullClusterInESD)<<endl;
248 else cout<<"Save partial cluster info in ESD"<<endl;
249
0e894e58 250 cout<<Form("Most probable bending momentum (used only if B=0) = %5.2f",fMostProbBendingMomentum)<<endl;
251
3304fa09 252 cout<<Form("Bending momentum range = [%5.2f,%5.2f]",fMinBendingMomentum,fMaxBendingMomentum)<<endl;
253
9bf6860b 254 cout<<Form("Maximum non bending slope = %5.2f",fMaxNonBendingSlope)<<endl;
255
9f093251 256 cout<<Form("Maximum bending slope (used only if B=0) = %5.2f",fMaxBendingSlope)<<endl;
257
3304fa09 258 if (strstr(fTrackingMode,"ORIGINAL"))
259 cout<<Form("Vertex dispertion = (%5.2f,%5.2f)",fNonBendingVertexDispersion,fBendingVertexDispersion)<<endl;
260 else if (strstr(option,"FULL"))
261 cout<<Form("Vertex dispertion (used for original tracking only) = (%5.2f,%5.2f)",fNonBendingVertexDispersion,fBendingVertexDispersion)<<endl;
262
263 cout<<Form("Maximum distance to track = (%5.2f,%5.2f)",fMaxNonBendingDistanceToTrack,fMaxBendingDistanceToTrack)<<endl;
264
265 cout<<Form("Sigma cut for tracking = %5.2f",fSigmaCutForTracking)<<endl;
fda59e58 266
267 cout<<Form("Sigma cut for trigger hit pattern = %5.2f",fSigmaCutForTrigger)<<endl;
b5270f21 268
269 cout<<Form("Cut in strips for trigger chamber efficiency = %5.2f",fStripCutForTrigger)<<endl;
270
271 cout<<Form("Max search area in strips for trigger chamber efficiency = %5.2f",fMaxStripAreaForTrigger)<<endl;
272
3304fa09 273 if (fTrackAllTracks) cout<<"Track all the possible candidates"<<endl;
274 else cout<<"Track only the best candidates"<<endl;
275
276 if (strstr(option,"FULL")) {
277 cout<<"Make track candidates assuming linear propagation between stations 4 and 5: ";
278 if (fMakeTrackCandidatesFast) cout<<"ON"<<endl;
279 else cout<<"OFF"<<endl;
280 } else if (fMakeTrackCandidatesFast)
281 cout<<"Make track candidates assuming linear propagation between stations 4 and 5"<<endl;
282
9bf6860b 283 if (strstr(option,"FULL")) {
284 cout<<"Make track candidates starting from 1 cluster in each of the stations 4 and 5: ";
285 if (fMakeMoreTrackCandidates) cout<<"ON"<<endl;
286 else cout<<"OFF"<<endl;
287 } else if (fMakeMoreTrackCandidates)
288 cout<<"Make track candidates starting from 1 cluster in each of the stations 4 and 5"<<endl;
289
3304fa09 290 if (strstr(option,"FULL")) {
291 cout<<"Try to recover tracks getting lost during tracking: ";
292 if (fRecoverTracks) cout<<"ON"<<endl;
293 else cout<<"OFF"<<endl;
294 } else if (fRecoverTracks)
295 cout<<"Try to recover tracks getting lost during tracking"<<endl;
296
297 if (strstr(option,"FULL")) {
298 cout<<"Try to complete the reconstructed tracks by adding missing clusters: ";
299 if (fComplementTracks) cout<<"ON"<<endl;
300 else cout<<"OFF"<<endl;
301 } else if (fComplementTracks)
302 cout<<"Try to complete the reconstructed tracks by adding missing clusters"<<endl;
303
304 if (strstr(option,"FULL")) {
305 cout<<"Try to improve the reconstructed tracks by removing bad clusters: ";
306 if (fImproveTracks) cout<<Form("ON (sigma cut = %5.2f)",fSigmaCutForImprovement)<<endl;
307 else cout<<"OFF"<<endl;
308 } else if (fImproveTracks)
309 cout<<Form("Try to improve the reconstructed tracks by removing bad clusters (sigma cut = %5.2f)",fSigmaCutForImprovement)<<endl;
310
311 if (strstr(option,"FULL")) {
312 cout<<"Use smoother to compute final track parameters, etc, at each cluster (used for Kalman tracking only): ";
313 if (fUseSmoother) cout<<"ON"<<endl;
314 else cout<<"OFF"<<endl;
315 } else if (fUseSmoother)
316 cout<<"Use smoother to compute final track parameters, etc, at each cluster"<<endl;
317
318 cout<<Form("Maximum normalized chi2 of tracking/trigger track matching = %5.2f",fMaxNormChi2MatchTrigger)<<endl;
319
9bf6860b 320 Bool_t discardedCh = kFALSE;
321 Int_t ch = 0;
322 do {
323 if (!UseChamber(ch)) {
324 if (!discardedCh) {
325 cout<<"Discarded chambers(1..): "<<ch+1;
326 discardedCh = kTRUE;
327 }
328 else cout<<" "<<ch+1;
329 }
330 } while (++ch < 10);
331 if (discardedCh) cout<<endl;
332
333 Bool_t discardedSt = kFALSE;
334 Int_t st = 0;
335 do {
336 if (!RequestStation(st)) {
337 if (!discardedSt) {
338 cout<<"Not requested stations(1..): "<<st+1;
339 discardedSt = kTRUE;
340 }
341 else cout<<" "<<st+1;
342 }
343 } while (++st < 5);
344 if (discardedSt) cout<<endl;
345
3304fa09 346 cout<<"\t-------------------------------------"<<endl<<endl;
347
348}
349