]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONTrackParam.cxx
Init() method added.
[u/mrichter/AliRoot.git] / MUON / AliMUONTrackParam.cxx
CommitLineData
a9e2aefa 1/**************************************************************************
2 * Copyright(c) 1998-1999, 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
88cb7938 16/* $Id$ */
a9e2aefa 17
56316147 18//-----------------------------------------------------------------------------
19// Class AliMUONTrackParam
20//-------------------------
21// Track parameters in ALICE dimuon spectrometer
22//-----------------------------------------------------------------------------
a9e2aefa 23
37827b29 24#include "AliMUONTrackParam.h"
96ebe67e 25#include "AliMUONVCluster.h"
22ccc301 26
211c52eb 27#include "AliESDMuonTrack.h"
37827b29 28#include "AliLog.h"
22ccc301 29
22ccc301 30#include <TMath.h>
ea94c18b 31
32#include <Riostream.h>
a9e2aefa 33
7945aae7 34/// \cond CLASSIMP
a9e2aefa 35ClassImp(AliMUONTrackParam) // Class implementation in ROOT context
7945aae7 36/// \endcond
a9e2aefa 37
61adb9bd 38 //_________________________________________________________________________
30178c30 39AliMUONTrackParam::AliMUONTrackParam()
54d7ba50 40 : TObject(),
208f139e 41 fZ(0.),
ea94c18b 42 fParameters(5,1),
208f139e 43 fCovariances(0x0),
ea94c18b 44 fPropagator(0x0),
45 fExtrapParameters(0x0),
46 fExtrapCovariances(0x0),
47 fSmoothParameters(0x0),
48 fSmoothCovariances(0x0),
96ebe67e 49 fClusterPtr(0x0),
50 fOwnCluster(kFALSE),
ea94c18b 51 fRemovable(kFALSE),
b709ac13 52 fAloneInChamber(kTRUE),
ea94c18b 53 fTrackChi2(0.),
54 fLocalChi2(0.)
30178c30 55{
37827b29 56 /// Constructor
30178c30 57}
61adb9bd 58
30178c30 59 //_________________________________________________________________________
de2cd600 60AliMUONTrackParam::AliMUONTrackParam(const AliMUONTrackParam& theMUONTrackParam)
61 : TObject(theMUONTrackParam),
208f139e 62 fZ(theMUONTrackParam.fZ),
ea94c18b 63 fParameters(theMUONTrackParam.fParameters),
208f139e 64 fCovariances(0x0),
ea94c18b 65 fPropagator(0x0),
66 fExtrapParameters(0x0),
67 fExtrapCovariances(0x0),
68 fSmoothParameters(0x0),
69 fSmoothCovariances(0x0),
96ebe67e 70 fClusterPtr(0x0),
71 fOwnCluster(theMUONTrackParam.fOwnCluster),
ea94c18b 72 fRemovable(theMUONTrackParam.fRemovable),
b709ac13 73 fAloneInChamber(theMUONTrackParam.fAloneInChamber),
ea94c18b 74 fTrackChi2(theMUONTrackParam.fTrackChi2),
75 fLocalChi2(theMUONTrackParam.fLocalChi2)
de2cd600 76{
2457f726 77 /// Copy constructor
208f139e 78 if (theMUONTrackParam.fCovariances) fCovariances = new TMatrixD(*(theMUONTrackParam.fCovariances));
ea94c18b 79 if (theMUONTrackParam.fPropagator) fPropagator = new TMatrixD(*(theMUONTrackParam.fPropagator));
80 if (theMUONTrackParam.fExtrapParameters) fExtrapParameters = new TMatrixD(*(theMUONTrackParam.fExtrapParameters));
81 if (theMUONTrackParam.fExtrapCovariances) fExtrapCovariances = new TMatrixD(*(theMUONTrackParam.fExtrapCovariances));
82 if (theMUONTrackParam.fSmoothParameters) fSmoothParameters = new TMatrixD(*(theMUONTrackParam.fSmoothParameters));
83 if (theMUONTrackParam.fSmoothCovariances) fSmoothCovariances = new TMatrixD(*(theMUONTrackParam.fSmoothCovariances));
96ebe67e 84
1467f4ba 85 if(fOwnCluster) fClusterPtr = static_cast<AliMUONVCluster*>(theMUONTrackParam.fClusterPtr->Clone());
96ebe67e 86 else fClusterPtr = theMUONTrackParam.fClusterPtr;
de2cd600 87}
88
89 //_________________________________________________________________________
90AliMUONTrackParam& AliMUONTrackParam::operator=(const AliMUONTrackParam& theMUONTrackParam)
61adb9bd 91{
2457f726 92 /// Asignment operator
30178c30 93 if (this == &theMUONTrackParam)
61adb9bd 94 return *this;
95
30178c30 96 // base class assignement
97 TObject::operator=(theMUONTrackParam);
98
ea94c18b 99 fZ = theMUONTrackParam.fZ;
100
101 fParameters = theMUONTrackParam.fParameters;
208f139e 102
103 if (theMUONTrackParam.fCovariances) {
104 if (fCovariances) *fCovariances = *(theMUONTrackParam.fCovariances);
105 else fCovariances = new TMatrixD(*(theMUONTrackParam.fCovariances));
019df241 106 } else {
208f139e 107 delete fCovariances;
108 fCovariances = 0x0;
109 }
110
ea94c18b 111 if (theMUONTrackParam.fPropagator) {
112 if (fPropagator) *fPropagator = *(theMUONTrackParam.fPropagator);
113 else fPropagator = new TMatrixD(*(theMUONTrackParam.fPropagator));
019df241 114 } else {
ea94c18b 115 delete fPropagator;
116 fPropagator = 0x0;
117 }
118
119 if (theMUONTrackParam.fExtrapParameters) {
120 if (fExtrapParameters) *fExtrapParameters = *(theMUONTrackParam.fExtrapParameters);
121 else fExtrapParameters = new TMatrixD(*(theMUONTrackParam.fExtrapParameters));
019df241 122 } else {
ea94c18b 123 delete fExtrapParameters;
124 fExtrapParameters = 0x0;
125 }
126
127 if (theMUONTrackParam.fExtrapCovariances) {
128 if (fExtrapCovariances) *fExtrapCovariances = *(theMUONTrackParam.fExtrapCovariances);
129 else fExtrapCovariances = new TMatrixD(*(theMUONTrackParam.fExtrapCovariances));
019df241 130 } else {
ea94c18b 131 delete fExtrapCovariances;
132 fExtrapCovariances = 0x0;
133 }
134
135 if (theMUONTrackParam.fSmoothParameters) {
136 if (fSmoothParameters) *fSmoothParameters = *(theMUONTrackParam.fSmoothParameters);
137 else fSmoothParameters = new TMatrixD(*(theMUONTrackParam.fSmoothParameters));
019df241 138 } else {
ea94c18b 139 delete fSmoothParameters;
140 fSmoothParameters = 0x0;
141 }
142
143 if (theMUONTrackParam.fSmoothCovariances) {
144 if (fSmoothCovariances) *fSmoothCovariances = *(theMUONTrackParam.fSmoothCovariances);
145 else fSmoothCovariances = new TMatrixD(*(theMUONTrackParam.fSmoothCovariances));
019df241 146 } else {
ea94c18b 147 delete fSmoothCovariances;
148 fSmoothCovariances = 0x0;
149 }
150
96ebe67e 151 fOwnCluster = theMUONTrackParam.fOwnCluster;
1467f4ba 152 if(fOwnCluster) fClusterPtr = static_cast<AliMUONVCluster*>(theMUONTrackParam.fClusterPtr->Clone());
96ebe67e 153 else fClusterPtr = theMUONTrackParam.fClusterPtr;
ea94c18b 154
155 fRemovable = theMUONTrackParam.fRemovable;
156
b709ac13 157 fAloneInChamber = theMUONTrackParam.fAloneInChamber;
158
ea94c18b 159 fTrackChi2 = theMUONTrackParam.fTrackChi2;
160 fLocalChi2 = theMUONTrackParam.fLocalChi2;
161
61adb9bd 162 return *this;
163}
de2cd600 164
165 //__________________________________________________________________________
166AliMUONTrackParam::~AliMUONTrackParam()
61adb9bd 167{
de2cd600 168/// Destructor
208f139e 169 DeleteCovariances();
ea94c18b 170 delete fPropagator;
171 delete fExtrapParameters;
172 delete fExtrapCovariances;
173 delete fSmoothParameters;
174 delete fSmoothCovariances;
96ebe67e 175 if(fOwnCluster) delete fClusterPtr;
de2cd600 176}
177
178 //__________________________________________________________________________
ea94c18b 179void
180AliMUONTrackParam::Clear(Option_t* /*opt*/)
181{
96ebe67e 182 /// clear memory
ea94c18b 183 DeleteCovariances();
184 delete fPropagator; fPropagator = 0x0;
185 delete fExtrapParameters; fExtrapParameters = 0x0;
186 delete fExtrapCovariances; fExtrapCovariances = 0x0;
187 delete fSmoothParameters; fSmoothParameters = 0x0;
188 delete fSmoothCovariances; fSmoothCovariances = 0x0;
96ebe67e 189 if(fOwnCluster) {
190 delete fClusterPtr; fClusterPtr = 0x0;
191 }
de2cd600 192}
193
211c52eb 194 //_________________________________________________________________________
195void AliMUONTrackParam::GetParamFrom(const AliESDMuonTrack& esdMuonTrack)
196{
60765b06 197 /// Get parameters from ESD track
ea94c18b 198 fZ = esdMuonTrack.GetZ();
199 fParameters(0,0) = esdMuonTrack.GetNonBendingCoor();
200 fParameters(1,0) = TMath::Tan(esdMuonTrack.GetThetaX());
201 fParameters(2,0) = esdMuonTrack.GetBendingCoor();
202 fParameters(3,0) = TMath::Tan(esdMuonTrack.GetThetaY());
203 fParameters(4,0) = esdMuonTrack.GetInverseBendingMomentum();
211c52eb 204}
205
206 //_________________________________________________________________________
ea94c18b 207void AliMUONTrackParam::SetParamFor(AliESDMuonTrack& esdMuonTrack) const
211c52eb 208{
60765b06 209 /// Set parameters in ESD track
ea94c18b 210 esdMuonTrack.SetZ(fZ);
211 esdMuonTrack.SetNonBendingCoor(fParameters(0,0));
212 esdMuonTrack.SetThetaX(TMath::ATan(fParameters(1,0)));
213 esdMuonTrack.SetBendingCoor(fParameters(2,0));
214 esdMuonTrack.SetThetaY(TMath::ATan(fParameters(3,0)));
215 esdMuonTrack.SetInverseBendingMomentum(fParameters(4,0));
211c52eb 216}
217
22ccc301 218 //_________________________________________________________________________
219void AliMUONTrackParam::GetParamFromUncorrected(const AliESDMuonTrack& esdMuonTrack)
220{
60765b06 221 /// Get parameters from ESD track
ea94c18b 222 fZ = esdMuonTrack.GetZUncorrected();
223 fParameters(0,0) = esdMuonTrack.GetNonBendingCoorUncorrected();
224 fParameters(1,0) = TMath::Tan(esdMuonTrack.GetThetaXUncorrected());
225 fParameters(2,0) = esdMuonTrack.GetBendingCoorUncorrected();
226 fParameters(3,0) = TMath::Tan(esdMuonTrack.GetThetaYUncorrected());
227 fParameters(4,0) = esdMuonTrack.GetInverseBendingMomentumUncorrected();
22ccc301 228}
229
230 //_________________________________________________________________________
ea94c18b 231void AliMUONTrackParam::SetParamForUncorrected(AliESDMuonTrack& esdMuonTrack) const
22ccc301 232{
60765b06 233 /// Set parameters in ESD track
ea94c18b 234 esdMuonTrack.SetZUncorrected(fZ);
235 esdMuonTrack.SetNonBendingCoorUncorrected(fParameters(0,0));
236 esdMuonTrack.SetThetaXUncorrected(TMath::ATan(fParameters(1,0)));
237 esdMuonTrack.SetBendingCoorUncorrected(fParameters(2,0));
238 esdMuonTrack.SetThetaYUncorrected(TMath::ATan(fParameters(3,0)));
239 esdMuonTrack.SetInverseBendingMomentumUncorrected(fParameters(4,0));
60765b06 240}
241
242 //_________________________________________________________________________
243void AliMUONTrackParam::GetCovFrom(const AliESDMuonTrack& esdMuonTrack)
244{
245 /// Get parameters covariances from ESD track
246
247 // Get ESD covariance matrix
248 if (!fCovariances) fCovariances = new TMatrixD(5,5);
249 esdMuonTrack.GetCovariances(*fCovariances);
250
251 // compute Jacobian to change the coordinate system
252 // from (X,thetaX,Y,thetaY,c/pYZ) to (X,slopeX,Y,slopeY,c/pYZ)
253 Double_t cosThetaX = TMath::Cos(TMath::ATan(fParameters(1,0)));
254 Double_t cosThetaY = TMath::Cos(TMath::ATan(fParameters(3,0)));
255 TMatrixD jacob(5,5);
256 jacob.Zero();
257 jacob(0,0) = 1.;
258 jacob(1,1) = 1. / cosThetaX / cosThetaX;
259 jacob(2,2) = 1.;
260 jacob(3,3) = 1. / cosThetaY / cosThetaY;
261 jacob(4,4) = 1.;
262
263 // compute covariance matrix in ESD coordinate system
264 TMatrixD tmp(*fCovariances,TMatrixD::kMultTranspose,jacob);
265 *fCovariances = TMatrixD(jacob,TMatrixD::kMult,tmp);
266
267}
268
269 //_________________________________________________________________________
270void AliMUONTrackParam::SetCovFor(AliESDMuonTrack& esdMuonTrack) const
271{
272 /// Set parameters covariances in ESD track
273
274 // set null matrix if covariances does not exist
275 if (!fCovariances) {
276 TMatrixD tmp(5,5);
277 tmp.Zero();
278 esdMuonTrack.SetCovariances(tmp);
279 return;
280 }
281
282 // compute Jacobian to change the coordinate system
283 // from (X,slopeX,Y,slopeY,c/pYZ) to (X,thetaX,Y,thetaY,c/pYZ)
284 Double_t cosThetaX = TMath::Cos(TMath::ATan(fParameters(1,0)));
285 Double_t cosThetaY = TMath::Cos(TMath::ATan(fParameters(3,0)));
286 TMatrixD jacob(5,5);
287 jacob.Zero();
288 jacob(0,0) = 1.;
289 jacob(1,1) = cosThetaX * cosThetaX;
290 jacob(2,2) = 1.;
291 jacob(3,3) = cosThetaY * cosThetaY;
292 jacob(4,4) = 1.;
293
294 // compute covariance matrix in ESD coordinate system
295 TMatrixD tmp(*fCovariances,TMatrixD::kMultTranspose,jacob);
296 TMatrixD tmp2(jacob,TMatrixD::kMult,tmp);
297 esdMuonTrack.SetCovariances(tmp2);
298
22ccc301 299}
300
b8dc484b 301 //__________________________________________________________________________
6464217e 302Double_t AliMUONTrackParam::Px() const
b8dc484b 303{
22ccc301 304 /// return p_x from track parameters
b8dc484b 305 Double_t pYZ, pZ, pX;
306 pYZ = 0;
ea94c18b 307 if ( TMath::Abs(fParameters(4,0)) > 0 )
308 pYZ = TMath::Abs(1.0 / fParameters(4,0));
309 pZ = -pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0))); // spectro. (z<0)
310 pX = pZ * fParameters(1,0);
b8dc484b 311 return pX;
312}
37827b29 313
b8dc484b 314 //__________________________________________________________________________
6464217e 315Double_t AliMUONTrackParam::Py() const
b8dc484b 316{
22ccc301 317 /// return p_y from track parameters
b8dc484b 318 Double_t pYZ, pZ, pY;
319 pYZ = 0;
ea94c18b 320 if ( TMath::Abs(fParameters(4,0)) > 0 )
321 pYZ = TMath::Abs(1.0 / fParameters(4,0));
322 pZ = -pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0))); // spectro. (z<0)
323 pY = pZ * fParameters(3,0);
b8dc484b 324 return pY;
325}
37827b29 326
b8dc484b 327 //__________________________________________________________________________
6464217e 328Double_t AliMUONTrackParam::Pz() const
b8dc484b 329{
22ccc301 330 /// return p_z from track parameters
b8dc484b 331 Double_t pYZ, pZ;
332 pYZ = 0;
ea94c18b 333 if ( TMath::Abs(fParameters(4,0)) > 0 )
334 pYZ = TMath::Abs(1.0 / fParameters(4,0));
335 pZ = -pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0))); // spectro. (z<0)
b8dc484b 336 return pZ;
337}
37827b29 338
b8dc484b 339 //__________________________________________________________________________
6464217e 340Double_t AliMUONTrackParam::P() const
b8dc484b 341{
22ccc301 342 /// return p from track parameters
b8dc484b 343 Double_t pYZ, pZ, p;
344 pYZ = 0;
ea94c18b 345 if ( TMath::Abs(fParameters(4,0)) > 0 )
346 pYZ = TMath::Abs(1.0 / fParameters(4,0));
347 pZ = -pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0))); // spectro. (z<0)
b8dc484b 348 p = TMath::Abs(pZ) *
ea94c18b 349 TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0) + fParameters(1,0) * fParameters(1,0));
b8dc484b 350 return p;
351
b45fd22b 352}
4d03a78e 353
208f139e 354 //__________________________________________________________________________
ea94c18b 355const TMatrixD& AliMUONTrackParam::GetCovariances() const
208f139e 356{
357 /// Return the covariance matrix (create it before if needed)
358 if (!fCovariances) {
359 fCovariances = new TMatrixD(5,5);
ea94c18b 360 fCovariances->Zero();
208f139e 361 }
ea94c18b 362 return *fCovariances;
363}
208f139e 364
365 //__________________________________________________________________________
ea94c18b 366void AliMUONTrackParam::SetCovariances(const TMatrixD& covariances)
208f139e 367{
368 /// Set the covariance matrix
ea94c18b 369 if (fCovariances) *fCovariances = covariances;
370 else fCovariances = new TMatrixD(covariances);
208f139e 371}
372
373 //__________________________________________________________________________
ea94c18b 374void AliMUONTrackParam::SetCovariances(const Double_t matrix[5][5])
208f139e 375{
376 /// Set the covariance matrix
377 if (fCovariances) fCovariances->SetMatrixArray(&(matrix[0][0]));
378 else fCovariances = new TMatrixD(5,5,&(matrix[0][0]));
379}
380
381 //__________________________________________________________________________
ea94c18b 382void AliMUONTrackParam::SetVariances(const Double_t matrix[5][5])
208f139e 383{
384 /// Set the diagonal terms of the covariance matrix (variances)
385 if (!fCovariances) fCovariances = new TMatrixD(5,5);
ea94c18b 386 fCovariances->Zero();
208f139e 387 for (Int_t i=0; i<5; i++) (*fCovariances)(i,i) = matrix[i][i];
388}
389
390 //__________________________________________________________________________
391void AliMUONTrackParam::DeleteCovariances()
392{
393 /// Delete the covariance matrix
686772dc 394 delete fCovariances;
208f139e 395 fCovariances = 0x0;
396}
397
398 //__________________________________________________________________________
ea94c18b 399const TMatrixD& AliMUONTrackParam::GetPropagator() const
208f139e 400{
ea94c18b 401 /// Return the propagator (create it before if needed)
402 if (!fPropagator) {
403 fPropagator = new TMatrixD(5,5);
019df241 404 fPropagator->UnitMatrix();
208f139e 405 }
ea94c18b 406 return *fPropagator;
96ebe67e 407}
ea94c18b 408
409 //__________________________________________________________________________
410void AliMUONTrackParam::ResetPropagator()
411{
412 /// Reset the propagator
019df241 413 if (fPropagator) fPropagator->UnitMatrix();
ea94c18b 414}
415
416 //__________________________________________________________________________
417void AliMUONTrackParam::UpdatePropagator(const TMatrixD& propagator)
418{
419 /// Update the propagator
ea94c18b 420 if (fPropagator) *fPropagator = TMatrixD(propagator,TMatrixD::kMult,*fPropagator);
421 else fPropagator = new TMatrixD(propagator);
422}
423
424 //__________________________________________________________________________
425const TMatrixD& AliMUONTrackParam::GetExtrapParameters() const
426{
427 /// Return extrapolated parameters (create it before if needed)
428 if (!fExtrapParameters) {
429 fExtrapParameters = new TMatrixD(5,1);
430 fExtrapParameters->Zero();
431 }
432 return *fExtrapParameters;
433 }
434
435 //__________________________________________________________________________
436void AliMUONTrackParam::SetExtrapParameters(const TMatrixD& extrapParameters)
437{
438 /// Set extrapolated parameters
ea94c18b 439 if (fExtrapParameters) *fExtrapParameters = extrapParameters;
440 else fExtrapParameters = new TMatrixD(extrapParameters);
441}
442
443 //__________________________________________________________________________
444const TMatrixD& AliMUONTrackParam::GetExtrapCovariances() const
445{
446 /// Return the extrapolated covariance matrix (create it before if needed)
447 if (!fExtrapCovariances) {
448 fExtrapCovariances = new TMatrixD(5,5);
449 fExtrapCovariances->Zero();
450 }
451 return *fExtrapCovariances;
452 }
453
454 //__________________________________________________________________________
455void AliMUONTrackParam::SetExtrapCovariances(const TMatrixD& extrapCovariances)
456{
457 /// Set the extrapolated covariance matrix
ea94c18b 458 if (fExtrapCovariances) *fExtrapCovariances = extrapCovariances;
459 else fExtrapCovariances = new TMatrixD(extrapCovariances);
460}
461
462 //__________________________________________________________________________
463const TMatrixD& AliMUONTrackParam::GetSmoothParameters() const
464{
465 /// Return the smoothed parameters (create it before if needed)
466 if (!fSmoothParameters) {
467 fSmoothParameters = new TMatrixD(5,1);
468 fSmoothParameters->Zero();
469 }
470 return *fSmoothParameters;
471 }
472
473 //__________________________________________________________________________
474void AliMUONTrackParam::SetSmoothParameters(const TMatrixD& smoothParameters)
475{
476 /// Set the smoothed parameters
ea94c18b 477 if (fSmoothParameters) *fSmoothParameters = smoothParameters;
478 else fSmoothParameters = new TMatrixD(smoothParameters);
479}
480
481 //__________________________________________________________________________
482const TMatrixD& AliMUONTrackParam::GetSmoothCovariances() const
483{
484 /// Return the smoothed covariance matrix (create it before if needed)
485 if (!fSmoothCovariances) {
486 fSmoothCovariances = new TMatrixD(5,5);
487 fSmoothCovariances->Zero();
488 }
489 return *fSmoothCovariances;
490 }
491
492 //__________________________________________________________________________
493void AliMUONTrackParam::SetSmoothCovariances(const TMatrixD& smoothCovariances)
494{
495 /// Set the smoothed covariance matrix
ea94c18b 496 if (fSmoothCovariances) *fSmoothCovariances = smoothCovariances;
497 else fSmoothCovariances = new TMatrixD(smoothCovariances);
208f139e 498}
499
500 //__________________________________________________________________________
501Int_t AliMUONTrackParam::Compare(const TObject* trackParam) const
502{
503 /// "Compare" function to sort with decreasing Z (spectro. muon Z <0).
96ebe67e 504 /// Returns 1 (0, -1) if the current Z
505 /// is smaller than (equal to, larger than) Z of trackParam
847cbaef 506 if (fZ < ((AliMUONTrackParam*)trackParam)->GetZ()) return(1);
507 else if (fZ == ((AliMUONTrackParam*)trackParam)->GetZ()) return(0);
208f139e 508 else return(-1);
509}
510
6464217e 511//_____________________________________________-
512void AliMUONTrackParam::Print(Option_t* opt) const
513{
2457f726 514 /// Printing TrackParam information
515 /// "full" option for printing all the information about the TrackParam
6464217e 516 TString sopt(opt);
517 sopt.ToUpper();
518
519 if ( sopt.Contains("FULL") ) {
ea94c18b 520 cout << "<AliMUONTrackParam> Bending P=" << setw(5) << setprecision(3) << 1./fParameters(4,0) <<
521 ", NonBendSlope=" << setw(5) << setprecision(3) << fParameters(1,0)*180./TMath::Pi() <<
522 ", BendSlope=" << setw(5) << setprecision(3) << fParameters(3,0)*180./TMath::Pi() <<
523 ", (x,y,z)_IP=(" << setw(5) << setprecision(3) << fParameters(0,0) <<
524 "," << setw(5) << setprecision(3) << fParameters(2,0) <<
525 "," << setw(5) << setprecision(3) << fZ <<
6464217e 526 ") cm, (px,py,pz)=(" << setw(5) << setprecision(3) << Px() <<
527 "," << setw(5) << setprecision(3) << Py() <<
528 "," << setw(5) << setprecision(3) << Pz() << ") GeV/c" << endl;
529 }
530 else {
531 cout << "<AliMUONTrackParam>" << endl;
532 }
533
534}