]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONRecoParam.cxx
Doxygen warnings 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"),
41 fMinBendingMomentum(0.),
42 fMaxBendingMomentum(0.),
9bf6860b 43 fMaxNonBendingSlope(0.),
3304fa09 44 fNonBendingVertexDispersion(0.),
45 fBendingVertexDispersion(0.),
46 fMaxNonBendingDistanceToTrack(0.),
47 fMaxBendingDistanceToTrack(0.),
48 fSigmaCutForTracking(0.),
49 fSigmaCutForImprovement(0.),
fda59e58 50 fSigmaCutForTrigger(0.),
3304fa09 51 fMaxNormChi2MatchTrigger(0.),
0a18ba02 52 fPercentOfFullClusterInESD(10.),
38bcf0ef 53 fCombinedClusterTrackReco(kFALSE),
3304fa09 54 fTrackAllTracks(kFALSE),
55 fRecoverTracks(kFALSE),
56 fMakeTrackCandidatesFast(kFALSE),
9bf6860b 57 fMakeMoreTrackCandidates(kFALSE),
3304fa09 58 fComplementTracks(kFALSE),
59 fImproveTracks(kFALSE),
0a18ba02 60 fUseSmoother(kFALSE),
de98fdc9 61 fSaveFullClusterInESD(kTRUE),
9bf6860b 62 fCalibrationMode("NOGAIN"),
63 fBypassSt45(kFALSE)
3304fa09 64{
65 /// Constructor
15d30ed4 66 SetNameTitle("MUON","MUON");
3304fa09 67
68 // use the default parameters for low flux environment
69 SetLowFluxParam();
70}
71
72//_____________________________________________________________________________
73AliMUONRecoParam::~AliMUONRecoParam()
74{
75 /// Destructor
76}
77
9bf6860b 78//_____________________________________________________________________________
79Option_t*
80AliMUONRecoParam::GetCalibrationMode() const
81{
82 /// Return the calibration mode. Can be :
83 /// NOGAIN : only do pedestal subtraction
84 /// GAIN : do pedestal subtraction, and apply gain correction, but with a
85 /// single capacitance value for all channels
86 /// GAINCONSTANTCAPA : as GAIN, but with a channel-dependent capacitance value
87
88 return fCalibrationMode.Data();
89}
90
3304fa09 91//_____________________________________________________________________________
92AliMUONRecoParam *AliMUONRecoParam::GetLowFluxParam()
93{
94 /// Return default reconstruction parameters for low flux environment
95
96 AliMUONRecoParam *param = new AliMUONRecoParam();
97 param->SetLowFluxParam();
98
99 return param;
100}
101
102//_____________________________________________________________________________
103AliMUONRecoParam *AliMUONRecoParam::GetHighFluxParam()
104{
105 /// Return default reconstruction parameters for high flux environment
106
107 AliMUONRecoParam *param = new AliMUONRecoParam();
108 param->SetHighFluxParam();
109
110 return param;
111}
112
113//_____________________________________________________________________________
114void AliMUONRecoParam::SetLowFluxParam()
115{
116 /// Set reconstruction parameters for low flux environment
117
9bf6860b 118 fMinBendingMomentum = 1.;
3304fa09 119 fMaxBendingMomentum = 3000.;
9bf6860b 120 fMaxNonBendingSlope = 0.3;
3304fa09 121 fNonBendingVertexDispersion = 10.;
122 fBendingVertexDispersion = 10.;
9bf6860b 123 fMaxNonBendingDistanceToTrack = 1.;
124 fMaxBendingDistanceToTrack = 1.;
3304fa09 125 fSigmaCutForTracking = 6.;
126 fSigmaCutForImprovement = 5.;
fda59e58 127 fSigmaCutForTrigger = 8.;
3304fa09 128 fMaxNormChi2MatchTrigger = 16.;
6cac085d 129 fCombinedClusterTrackReco = kFALSE;
3304fa09 130 fTrackAllTracks = kTRUE;
131 fRecoverTracks = kTRUE;
132 fMakeTrackCandidatesFast = kFALSE;
9bf6860b 133 fMakeMoreTrackCandidates = kFALSE;
3304fa09 134 fComplementTracks = kTRUE;
135 fImproveTracks = kTRUE;
136 fUseSmoother = kTRUE;
9bf6860b 137 for (Int_t iCh = 0; iCh < 10; iCh++) fUseChamber[iCh] = kTRUE;
138 for (Int_t iSt = 0; iSt < 5; iSt++) fRequestStation[iSt] = kTRUE;
6cac085d 139 fBypassSt45 = kFALSE;
3304fa09 140
141}
142
143//_____________________________________________________________________________
144void AliMUONRecoParam::SetHighFluxParam()
145{
146 /// Set reconstruction parameters for high flux environment
147
9bf6860b 148 fMinBendingMomentum = 1.;
3304fa09 149 fMaxBendingMomentum = 3000.;
9bf6860b 150 fMaxNonBendingSlope = 0.3;
3304fa09 151 fNonBendingVertexDispersion = 10.;
152 fBendingVertexDispersion = 10.;
9bf6860b 153 fMaxNonBendingDistanceToTrack = 1.;
154 fMaxBendingDistanceToTrack = 1.;
3304fa09 155 fSigmaCutForTracking = 6.;
156 fSigmaCutForImprovement = 5.;
fda59e58 157 fSigmaCutForTrigger = 8.;
3304fa09 158 fMaxNormChi2MatchTrigger = 16.;
6cac085d 159 fCombinedClusterTrackReco = kFALSE;
3304fa09 160 fTrackAllTracks = kTRUE;
161 fRecoverTracks = kTRUE;
162 fMakeTrackCandidatesFast = kFALSE;
9bf6860b 163 fMakeMoreTrackCandidates = kFALSE;
3304fa09 164 fComplementTracks = kTRUE;
165 fImproveTracks = kTRUE;
166 fUseSmoother = kTRUE;
9bf6860b 167 for (Int_t iCh = 0; iCh < 10; iCh++) fUseChamber[iCh] = kTRUE;
168 for (Int_t iSt = 0; iSt < 5; iSt++) fRequestStation[iSt] = kTRUE;
6cac085d 169 fBypassSt45 = kFALSE;
3304fa09 170
171}
172
173//_____________________________________________________________________________
174void AliMUONRecoParam::Print(Option_t *option) const
175{
176 /// print reconstruction parameters
177 /// if option = FULL then print also unused parameters
178
179 cout<<endl<<"\t------Reconstruction parameters------"<<endl;
180
de98fdc9 181 cout<<Form("Calibration mode = %s",fCalibrationMode.Data())<<endl;
3304fa09 182 cout<<Form("Clustering mode = %s",fClusteringMode.Data())<<endl;
3304fa09 183 cout<<Form("Tracking mode = %s",fTrackingMode.Data())<<endl;
9bf6860b 184
185 if (BypassSt45()) cout << "Will bypass St45 (replacing their clusters by generated ones from trigger tracks)" << endl;
3304fa09 186
15d30ed4 187 if (fCombinedClusterTrackReco) cout<<"Combined cluster/track reconstruction: ON"<<endl;
188 else cout<<"Combined cluster/track reconstruction: OFF"<<endl;
38bcf0ef 189
0a18ba02 190 if (fSaveFullClusterInESD) cout<<Form("Save all cluster info in ESD for %5.2f %% of events",fPercentOfFullClusterInESD)<<endl;
191 else cout<<"Save partial cluster info in ESD"<<endl;
192
3304fa09 193 cout<<Form("Bending momentum range = [%5.2f,%5.2f]",fMinBendingMomentum,fMaxBendingMomentum)<<endl;
194
9bf6860b 195 cout<<Form("Maximum non bending slope = %5.2f",fMaxNonBendingSlope)<<endl;
196
3304fa09 197 if (strstr(fTrackingMode,"ORIGINAL"))
198 cout<<Form("Vertex dispertion = (%5.2f,%5.2f)",fNonBendingVertexDispersion,fBendingVertexDispersion)<<endl;
199 else if (strstr(option,"FULL"))
200 cout<<Form("Vertex dispertion (used for original tracking only) = (%5.2f,%5.2f)",fNonBendingVertexDispersion,fBendingVertexDispersion)<<endl;
201
202 cout<<Form("Maximum distance to track = (%5.2f,%5.2f)",fMaxNonBendingDistanceToTrack,fMaxBendingDistanceToTrack)<<endl;
203
204 cout<<Form("Sigma cut for tracking = %5.2f",fSigmaCutForTracking)<<endl;
fda59e58 205
206 cout<<Form("Sigma cut for trigger hit pattern = %5.2f",fSigmaCutForTrigger)<<endl;
3304fa09 207
208 if (fTrackAllTracks) cout<<"Track all the possible candidates"<<endl;
209 else cout<<"Track only the best candidates"<<endl;
210
211 if (strstr(option,"FULL")) {
212 cout<<"Make track candidates assuming linear propagation between stations 4 and 5: ";
213 if (fMakeTrackCandidatesFast) cout<<"ON"<<endl;
214 else cout<<"OFF"<<endl;
215 } else if (fMakeTrackCandidatesFast)
216 cout<<"Make track candidates assuming linear propagation between stations 4 and 5"<<endl;
217
9bf6860b 218 if (strstr(option,"FULL")) {
219 cout<<"Make track candidates starting from 1 cluster in each of the stations 4 and 5: ";
220 if (fMakeMoreTrackCandidates) cout<<"ON"<<endl;
221 else cout<<"OFF"<<endl;
222 } else if (fMakeMoreTrackCandidates)
223 cout<<"Make track candidates starting from 1 cluster in each of the stations 4 and 5"<<endl;
224
3304fa09 225 if (strstr(option,"FULL")) {
226 cout<<"Try to recover tracks getting lost during tracking: ";
227 if (fRecoverTracks) cout<<"ON"<<endl;
228 else cout<<"OFF"<<endl;
229 } else if (fRecoverTracks)
230 cout<<"Try to recover tracks getting lost during tracking"<<endl;
231
232 if (strstr(option,"FULL")) {
233 cout<<"Try to complete the reconstructed tracks by adding missing clusters: ";
234 if (fComplementTracks) cout<<"ON"<<endl;
235 else cout<<"OFF"<<endl;
236 } else if (fComplementTracks)
237 cout<<"Try to complete the reconstructed tracks by adding missing clusters"<<endl;
238
239 if (strstr(option,"FULL")) {
240 cout<<"Try to improve the reconstructed tracks by removing bad clusters: ";
241 if (fImproveTracks) cout<<Form("ON (sigma cut = %5.2f)",fSigmaCutForImprovement)<<endl;
242 else cout<<"OFF"<<endl;
243 } else if (fImproveTracks)
244 cout<<Form("Try to improve the reconstructed tracks by removing bad clusters (sigma cut = %5.2f)",fSigmaCutForImprovement)<<endl;
245
246 if (strstr(option,"FULL")) {
247 cout<<"Use smoother to compute final track parameters, etc, at each cluster (used for Kalman tracking only): ";
248 if (fUseSmoother) cout<<"ON"<<endl;
249 else cout<<"OFF"<<endl;
250 } else if (fUseSmoother)
251 cout<<"Use smoother to compute final track parameters, etc, at each cluster"<<endl;
252
253 cout<<Form("Maximum normalized chi2 of tracking/trigger track matching = %5.2f",fMaxNormChi2MatchTrigger)<<endl;
254
9bf6860b 255 Bool_t discardedCh = kFALSE;
256 Int_t ch = 0;
257 do {
258 if (!UseChamber(ch)) {
259 if (!discardedCh) {
260 cout<<"Discarded chambers(1..): "<<ch+1;
261 discardedCh = kTRUE;
262 }
263 else cout<<" "<<ch+1;
264 }
265 } while (++ch < 10);
266 if (discardedCh) cout<<endl;
267
268 Bool_t discardedSt = kFALSE;
269 Int_t st = 0;
270 do {
271 if (!RequestStation(st)) {
272 if (!discardedSt) {
273 cout<<"Not requested stations(1..): "<<st+1;
274 discardedSt = kTRUE;
275 }
276 else cout<<" "<<st+1;
277 }
278 } while (++st < 5);
279 if (discardedSt) cout<<endl;
280
6cac085d 281 if (strstr(option,"FULL")) {
282 cout<<"Bypass stations 4 and 5 (use trigger tracks as primary track candidates): ";
283 if (fBypassSt45) cout<<"ON"<<endl;
284 else cout<<"OFF"<<endl;
285 } else if (fBypassSt45)
286 cout<<"Bypass stations 4 and 5 (use trigger tracks as primary track candidates)"<<endl;
287
9bf6860b 288
3304fa09 289 cout<<"\t-------------------------------------"<<endl<<endl;
290
291}
292