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