]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONRecoParam.cxx
Doxygen warnings fixed
[u/mrichter/AliRoot.git] / MUON / AliMUONRecoParam.cxx
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
33 ClassImp(AliMUONRecoParam)
34
35
36 //_____________________________________________________________________________
37 AliMUONRecoParam::AliMUONRecoParam()
38 : AliDetectorRecoParam(),
39   fClusteringMode("MLEM"),
40   fTrackingMode("KALMAN"),
41   fMinBendingMomentum(0.),
42   fMaxBendingMomentum(0.),
43   fMaxNonBendingSlope(0.),
44   fNonBendingVertexDispersion(0.),
45   fBendingVertexDispersion(0.),
46   fMaxNonBendingDistanceToTrack(0.),
47   fMaxBendingDistanceToTrack(0.),
48   fSigmaCutForTracking(0.),
49   fSigmaCutForImprovement(0.),
50   fSigmaCutForTrigger(0.),
51   fMaxNormChi2MatchTrigger(0.),
52   fPercentOfFullClusterInESD(10.),
53   fCombinedClusterTrackReco(kFALSE),
54   fTrackAllTracks(kFALSE),
55   fRecoverTracks(kFALSE),
56   fMakeTrackCandidatesFast(kFALSE),
57   fMakeMoreTrackCandidates(kFALSE),
58   fComplementTracks(kFALSE),
59   fImproveTracks(kFALSE),
60   fUseSmoother(kFALSE),
61   fSaveFullClusterInESD(kTRUE),
62   fCalibrationMode("NOGAIN"),
63   fBypassSt45(kFALSE)
64 {
65   /// Constructor
66   SetNameTitle("MUON","MUON");
67   
68   // use the default parameters for low flux environment
69   SetLowFluxParam();
70 }
71
72 //_____________________________________________________________________________
73 AliMUONRecoParam::~AliMUONRecoParam() 
74 {
75   /// Destructor
76 }
77
78 //_____________________________________________________________________________
79 Option_t*
80 AliMUONRecoParam::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
91 //_____________________________________________________________________________
92 AliMUONRecoParam *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 //_____________________________________________________________________________
103 AliMUONRecoParam *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 //_____________________________________________________________________________
114 void AliMUONRecoParam::SetLowFluxParam() 
115 {
116   /// Set reconstruction parameters for low flux environment
117   
118   fMinBendingMomentum = 1.;
119   fMaxBendingMomentum = 3000.;
120   fMaxNonBendingSlope = 0.3;
121   fNonBendingVertexDispersion = 10.;
122   fBendingVertexDispersion = 10.;
123   fMaxNonBendingDistanceToTrack = 1.;
124   fMaxBendingDistanceToTrack = 1.;
125   fSigmaCutForTracking = 6.;
126   fSigmaCutForImprovement = 5.;
127   fSigmaCutForTrigger = 8.;
128   fMaxNormChi2MatchTrigger = 16.;
129   fCombinedClusterTrackReco = kFALSE;
130   fTrackAllTracks = kTRUE;
131   fRecoverTracks = kTRUE;
132   fMakeTrackCandidatesFast = kFALSE;
133   fMakeMoreTrackCandidates = kFALSE;
134   fComplementTracks = kTRUE;
135   fImproveTracks = kTRUE;
136   fUseSmoother = kTRUE;
137   for (Int_t iCh = 0; iCh < 10; iCh++) fUseChamber[iCh] = kTRUE;
138   for (Int_t iSt = 0; iSt < 5; iSt++) fRequestStation[iSt] = kTRUE;
139   fBypassSt45 = kFALSE;
140   
141 }
142
143 //_____________________________________________________________________________
144 void AliMUONRecoParam::SetHighFluxParam() 
145 {
146   /// Set reconstruction parameters for high flux environment
147   
148   fMinBendingMomentum = 1.;
149   fMaxBendingMomentum = 3000.;
150   fMaxNonBendingSlope = 0.3;
151   fNonBendingVertexDispersion = 10.;
152   fBendingVertexDispersion = 10.;
153   fMaxNonBendingDistanceToTrack = 1.;
154   fMaxBendingDistanceToTrack = 1.;
155   fSigmaCutForTracking = 6.;
156   fSigmaCutForImprovement = 5.;
157   fSigmaCutForTrigger = 8.;
158   fMaxNormChi2MatchTrigger = 16.;
159   fCombinedClusterTrackReco = kFALSE;
160   fTrackAllTracks = kTRUE;
161   fRecoverTracks = kTRUE;
162   fMakeTrackCandidatesFast = kFALSE;
163   fMakeMoreTrackCandidates = kFALSE;
164   fComplementTracks = kTRUE;
165   fImproveTracks = kTRUE;
166   fUseSmoother = kTRUE;
167   for (Int_t iCh = 0; iCh < 10; iCh++) fUseChamber[iCh] = kTRUE;
168   for (Int_t iSt = 0; iSt < 5; iSt++) fRequestStation[iSt] = kTRUE;
169   fBypassSt45 = kFALSE;
170   
171 }
172
173 //_____________________________________________________________________________
174 void 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   
181   cout<<Form("Calibration mode = %s",fCalibrationMode.Data())<<endl;
182   cout<<Form("Clustering mode = %s",fClusteringMode.Data())<<endl;
183   cout<<Form("Tracking mode = %s",fTrackingMode.Data())<<endl;
184
185   if (BypassSt45()) cout << "Will bypass St45 (replacing their clusters by generated ones from trigger tracks)" << endl;
186   
187   if (fCombinedClusterTrackReco) cout<<"Combined cluster/track reconstruction: ON"<<endl;
188   else cout<<"Combined cluster/track reconstruction: OFF"<<endl;
189   
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   
193   cout<<Form("Bending momentum range = [%5.2f,%5.2f]",fMinBendingMomentum,fMaxBendingMomentum)<<endl;
194   
195   cout<<Form("Maximum non bending slope = %5.2f",fMaxNonBendingSlope)<<endl;
196   
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;
205
206   cout<<Form("Sigma cut for trigger hit pattern = %5.2f",fSigmaCutForTrigger)<<endl;
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   
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   
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   
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   
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   
288   
289   cout<<"\t-------------------------------------"<<endl<<endl;
290   
291 }
292