1 /**************************************************************************
2 * Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
17 //-----------------------------------------------------------------------------
18 /// \class AliMUONRecoParam
20 /// Class with MUON reconstruction parameters
22 /// \author Philippe Pillot
23 //-----------------------------------------------------------------------------
27 #include "AliMUONRecoParam.h"
31 #include <Riostream.h>
33 ClassImp(AliMUONRecoParam)
36 //_____________________________________________________________________________
37 AliMUONRecoParam::AliMUONRecoParam()
38 : AliDetectorRecoParam(),
39 fClusteringMode("MLEM"),
40 fTrackingMode("KALMAN"),
41 fMinBendingMomentum(0.),
42 fMaxBendingMomentum(0.),
43 fNonBendingVertexDispersion(0.),
44 fBendingVertexDispersion(0.),
45 fMaxNonBendingDistanceToTrack(0.),
46 fMaxBendingDistanceToTrack(0.),
47 fSigmaCutForTracking(0.),
48 fSigmaCutForImprovement(0.),
49 fSigmaCutForTrigger(0.),
50 fMaxNormChi2MatchTrigger(0.),
51 fPercentOfFullClusterInESD(10.),
52 fCombinedClusterTrackReco(kFALSE),
53 fTrackAllTracks(kFALSE),
54 fRecoverTracks(kFALSE),
55 fMakeTrackCandidatesFast(kFALSE),
56 fComplementTracks(kFALSE),
57 fImproveTracks(kFALSE),
59 fSaveFullClusterInESD(kTRUE),
60 fCalibrationMode("NOGAIN")
63 SetNameTitle("MUON","MUON");
65 // use the default parameters for low flux environment
69 //_____________________________________________________________________________
70 AliMUONRecoParam::~AliMUONRecoParam()
75 //_____________________________________________________________________________
76 AliMUONRecoParam *AliMUONRecoParam::GetLowFluxParam()
78 /// Return default reconstruction parameters for low flux environment
80 AliMUONRecoParam *param = new AliMUONRecoParam();
81 param->SetLowFluxParam();
86 //_____________________________________________________________________________
87 AliMUONRecoParam *AliMUONRecoParam::GetHighFluxParam()
89 /// Return default reconstruction parameters for high flux environment
91 AliMUONRecoParam *param = new AliMUONRecoParam();
92 param->SetHighFluxParam();
97 //_____________________________________________________________________________
98 void AliMUONRecoParam::SetLowFluxParam()
100 /// Set reconstruction parameters for low flux environment
102 fMinBendingMomentum = 0.5;
103 fMaxBendingMomentum = 3000.;
104 fNonBendingVertexDispersion = 10.;
105 fBendingVertexDispersion = 10.;
106 fMaxNonBendingDistanceToTrack = 2.;
107 fMaxBendingDistanceToTrack = 2.;
108 fSigmaCutForTracking = 6.;
109 fSigmaCutForImprovement = 5.;
110 fSigmaCutForTrigger = 8.;
111 fMaxNormChi2MatchTrigger = 16.;
112 fTrackAllTracks = kTRUE;
113 fRecoverTracks = kTRUE;
114 fMakeTrackCandidatesFast = kFALSE;
115 fComplementTracks = kTRUE;
116 fImproveTracks = kTRUE;
117 fUseSmoother = kTRUE;
121 //_____________________________________________________________________________
122 void AliMUONRecoParam::SetHighFluxParam()
124 /// Set reconstruction parameters for high flux environment
126 fMinBendingMomentum = 0.5;
127 fMaxBendingMomentum = 3000.;
128 fNonBendingVertexDispersion = 10.;
129 fBendingVertexDispersion = 10.;
130 fMaxNonBendingDistanceToTrack = 2.;
131 fMaxBendingDistanceToTrack = 2.;
132 fSigmaCutForTracking = 6.;
133 fSigmaCutForImprovement = 5.;
134 fSigmaCutForTrigger = 8.;
135 fMaxNormChi2MatchTrigger = 16.;
136 fTrackAllTracks = kTRUE;
137 fRecoverTracks = kTRUE;
138 fMakeTrackCandidatesFast = kFALSE;
139 fComplementTracks = kTRUE;
140 fImproveTracks = kTRUE;
141 fUseSmoother = kTRUE;
145 //_____________________________________________________________________________
146 void AliMUONRecoParam::Print(Option_t *option) const
148 /// print reconstruction parameters
149 /// if option = FULL then print also unused parameters
151 cout<<endl<<"\t------Reconstruction parameters------"<<endl;
153 cout<<Form("Calibration mode = %s",fCalibrationMode.Data())<<endl;
154 cout<<Form("Clustering mode = %s",fClusteringMode.Data())<<endl;
156 cout<<Form("Tracking mode = %s",fTrackingMode.Data())<<endl;
158 if (fCombinedClusterTrackReco) cout<<"Combined cluster/track reconstruction: ON"<<endl;
159 else cout<<"Combined cluster/track reconstruction: OFF"<<endl;
161 if (fSaveFullClusterInESD) cout<<Form("Save all cluster info in ESD for %5.2f %% of events",fPercentOfFullClusterInESD)<<endl;
162 else cout<<"Save partial cluster info in ESD"<<endl;
164 cout<<Form("Bending momentum range = [%5.2f,%5.2f]",fMinBendingMomentum,fMaxBendingMomentum)<<endl;
166 if (strstr(fTrackingMode,"ORIGINAL"))
167 cout<<Form("Vertex dispertion = (%5.2f,%5.2f)",fNonBendingVertexDispersion,fBendingVertexDispersion)<<endl;
168 else if (strstr(option,"FULL"))
169 cout<<Form("Vertex dispertion (used for original tracking only) = (%5.2f,%5.2f)",fNonBendingVertexDispersion,fBendingVertexDispersion)<<endl;
171 cout<<Form("Maximum distance to track = (%5.2f,%5.2f)",fMaxNonBendingDistanceToTrack,fMaxBendingDistanceToTrack)<<endl;
173 cout<<Form("Sigma cut for tracking = %5.2f",fSigmaCutForTracking)<<endl;
175 cout<<Form("Sigma cut for trigger hit pattern = %5.2f",fSigmaCutForTrigger)<<endl;
177 if (fTrackAllTracks) cout<<"Track all the possible candidates"<<endl;
178 else cout<<"Track only the best candidates"<<endl;
180 if (strstr(option,"FULL")) {
181 cout<<"Make track candidates assuming linear propagation between stations 4 and 5: ";
182 if (fMakeTrackCandidatesFast) cout<<"ON"<<endl;
183 else cout<<"OFF"<<endl;
184 } else if (fMakeTrackCandidatesFast)
185 cout<<"Make track candidates assuming linear propagation between stations 4 and 5"<<endl;
187 if (strstr(option,"FULL")) {
188 cout<<"Try to recover tracks getting lost during tracking: ";
189 if (fRecoverTracks) cout<<"ON"<<endl;
190 else cout<<"OFF"<<endl;
191 } else if (fRecoverTracks)
192 cout<<"Try to recover tracks getting lost during tracking"<<endl;
194 if (strstr(option,"FULL")) {
195 cout<<"Try to complete the reconstructed tracks by adding missing clusters: ";
196 if (fComplementTracks) cout<<"ON"<<endl;
197 else cout<<"OFF"<<endl;
198 } else if (fComplementTracks)
199 cout<<"Try to complete the reconstructed tracks by adding missing clusters"<<endl;
201 if (strstr(option,"FULL")) {
202 cout<<"Try to improve the reconstructed tracks by removing bad clusters: ";
203 if (fImproveTracks) cout<<Form("ON (sigma cut = %5.2f)",fSigmaCutForImprovement)<<endl;
204 else cout<<"OFF"<<endl;
205 } else if (fImproveTracks)
206 cout<<Form("Try to improve the reconstructed tracks by removing bad clusters (sigma cut = %5.2f)",fSigmaCutForImprovement)<<endl;
208 if (strstr(option,"FULL")) {
209 cout<<"Use smoother to compute final track parameters, etc, at each cluster (used for Kalman tracking only): ";
210 if (fUseSmoother) cout<<"ON"<<endl;
211 else cout<<"OFF"<<endl;
212 } else if (fUseSmoother)
213 cout<<"Use smoother to compute final track parameters, etc, at each cluster"<<endl;
215 cout<<Form("Maximum normalized chi2 of tracking/trigger track matching = %5.2f",fMaxNormChi2MatchTrigger)<<endl;
217 cout<<"\t-------------------------------------"<<endl<<endl;