32 #include <TClonesArray.h> 33 #include <TLorentzVector.h> 41 fInverseBendingMomentum(FLT_MAX),
47 fInverseBendingMomentumAtDCA(FLT_MAX),
51 fNonBendingCoorAtDCA(0),
52 fInverseBendingMomentumUncorrected(FLT_MAX),
53 fThetaXUncorrected(0),
54 fThetaYUncorrected(0),
56 fBendingCoorUncorrected(0),
57 fNonBendingCoorUncorrected(0),
71 fHitsPatternInTrigCh(0),
72 fHitsPatternInTrigChTrk(0),
83 for (Int_t i = 0; i < 15; i++) fCovariances[i] = 0;
90 fInverseBendingMomentum(muonTrack.fInverseBendingMomentum),
91 fThetaX(muonTrack.fThetaX),
92 fThetaY(muonTrack.fThetaY),
94 fBendingCoor(muonTrack.fBendingCoor),
95 fNonBendingCoor(muonTrack.fNonBendingCoor),
96 fInverseBendingMomentumAtDCA(muonTrack.fInverseBendingMomentumAtDCA),
97 fThetaXAtDCA(muonTrack.fThetaXAtDCA),
98 fThetaYAtDCA(muonTrack.fThetaYAtDCA),
99 fBendingCoorAtDCA(muonTrack.fBendingCoorAtDCA),
100 fNonBendingCoorAtDCA(muonTrack.fNonBendingCoorAtDCA),
101 fInverseBendingMomentumUncorrected(muonTrack.fInverseBendingMomentumUncorrected),
102 fThetaXUncorrected(muonTrack.fThetaXUncorrected),
103 fThetaYUncorrected(muonTrack.fThetaYUncorrected),
104 fZUncorrected(muonTrack.fZUncorrected),
105 fBendingCoorUncorrected(muonTrack.fBendingCoorUncorrected),
106 fNonBendingCoorUncorrected(muonTrack.fNonBendingCoorUncorrected),
107 fRAtAbsorberEnd(muonTrack.fRAtAbsorberEnd),
108 fChi2(muonTrack.fChi2),
109 fChi2MatchTrigger(muonTrack.fChi2MatchTrigger),
110 fLocalTrigger(muonTrack.fLocalTrigger),
111 fX1Pattern(muonTrack.fX1Pattern),
112 fY1Pattern(muonTrack.fY1Pattern),
113 fX2Pattern(muonTrack.fX2Pattern),
114 fY2Pattern(muonTrack.fY2Pattern),
115 fX3Pattern(muonTrack.fX3Pattern),
116 fY3Pattern(muonTrack.fY3Pattern),
117 fX4Pattern(muonTrack.fX4Pattern),
118 fY4Pattern(muonTrack.fY4Pattern),
119 fMuonClusterMap(muonTrack.fMuonClusterMap),
120 fHitsPatternInTrigCh(muonTrack.fHitsPatternInTrigCh),
121 fHitsPatternInTrigChTrk(muonTrack.fHitsPatternInTrigChTrk),
122 fNHit(muonTrack.fNHit),
125 fLabel(muonTrack.fLabel),
126 fESDEvent(muonTrack.fESDEvent)
136 fClusters =
new TClonesArray(
"AliESDMuonCluster",muonTrack.
fClusters->GetEntriesFast());
155 if (
this == &muonTrack)
210 fClusters =
new TClonesArray(
"AliESDMuonCluster",muonTrack.
fClusters->GetEntriesFast());
237 if(
this==&obj)
return;
256 if (opt && opt[0] ==
'C') {
315 for (Int_t i = 0; i < 5; i++)
316 for (Int_t j = 0; j <= i; j++)
324 for (Int_t i = 0; i < 5; i++)
325 for (Int_t j = 0; j <= i; j++)
343 TMatrixD covESD(5,5);
354 pZ * pZ * pZ * tanThetaY / cosThetaY2;
360 jacob(3,1) = pZ / cosThetaX2;
361 jacob(3,3) = dpZdthetaY * tanThetaX;
362 jacob(3,4) = dpZdinvpYZ * tanThetaX;
363 jacob(4,3) = dpZdthetaY * tanThetaY + pZ / cosThetaY2;
364 jacob(4,4) = dpZdinvpYZ * tanThetaY;
365 jacob(5,3) = dpZdthetaY;
366 jacob(5,4) = dpZdinvpYZ;
369 TMatrixD tmp(covESD,TMatrixD::kMultTranspose,jacob);
370 TMatrixD covAOD(jacob,TMatrixD::kMult,tmp);
373 for (Int_t i = 0; i < 6; i++)
374 for (Int_t j = 0; j <= i; j++)
375 cov[i*(i+1)/2 + j] = covAOD(i,j);
383 Double_t nonBendingSlope = TMath::Tan(
fThetaX);
384 Double_t bendingSlope = TMath::Tan(
fThetaY);
386 Double_t pZ = -pYZ / TMath::Sqrt(1.0 + bendingSlope*bendingSlope);
387 return pZ * nonBendingSlope;
394 Double_t bendingSlope = TMath::Tan(
fThetaY);
396 Double_t pZ = -pYZ / TMath::Sqrt(1.0 + bendingSlope*bendingSlope);
397 return pZ * bendingSlope;
404 Double_t bendingSlope = TMath::Tan(
fThetaY);
406 return -pYZ / TMath::Sqrt(1.0 + bendingSlope*bendingSlope);
413 Double_t nonBendingSlope = TMath::Tan(
fThetaX);
414 Double_t bendingSlope = TMath::Tan(
fThetaY);
416 Double_t pZ = -pYZ / TMath::Sqrt(1.0 + bendingSlope*bendingSlope);
417 return -pZ * TMath::Sqrt(1.0 + bendingSlope*bendingSlope + nonBendingSlope*nonBendingSlope);
424 Double_t muonMass =
M();
425 Double_t nonBendingSlope = TMath::Tan(
fThetaX);
426 Double_t bendingSlope = TMath::Tan(
fThetaY);
428 Double_t pZ = -pYZ / TMath::Sqrt(1.0 + bendingSlope*bendingSlope);
429 Double_t pX = pZ * nonBendingSlope;
430 Double_t pY = pZ * bendingSlope;
431 Double_t e = TMath::Sqrt(muonMass*muonMass + pX*pX + pY*pY + pZ*pZ);
432 vP.SetPxPyPzE(pX, pY, pZ, e);
442 Double_t pZ = -pYZ / TMath::Sqrt(1.0 + bendingSlope*bendingSlope);
443 return pZ * nonBendingSlope;
452 Double_t pZ = -pYZ / TMath::Sqrt(1.0 + bendingSlope*bendingSlope);
453 return pZ * bendingSlope;
462 return -pYZ / TMath::Sqrt(1.0 + bendingSlope*bendingSlope);
472 Double_t pZ = -pYZ / TMath::Sqrt(1.0 + bendingSlope*bendingSlope);
473 return -pZ * TMath::Sqrt(1.0 + bendingSlope*bendingSlope + nonBendingSlope*nonBendingSlope);
480 Double_t muonMass =
M();
484 Double_t pZ = -pYZ / TMath::Sqrt(1.0 + bendingSlope*bendingSlope);
485 Double_t pX = pZ * nonBendingSlope;
486 Double_t pY = pZ * bendingSlope;
487 Double_t e = TMath::Sqrt(muonMass*muonMass + pX*pX + pY*pY + pZ*pZ);
488 vP.SetPxPyPzE(pX, pY, pZ, e);
498 Double_t pZ = -pYZ / TMath::Sqrt(1.0 + bendingSlope*bendingSlope);
499 return pZ * nonBendingSlope;
508 Double_t pZ = -pYZ / TMath::Sqrt(1.0 + bendingSlope*bendingSlope);
509 return pZ * bendingSlope;
518 return -pYZ / TMath::Sqrt(1.0 + bendingSlope*bendingSlope);
528 Double_t pZ = -pYZ / TMath::Sqrt(1.0 + bendingSlope*bendingSlope);
529 return -pZ * TMath::Sqrt(1.0 + bendingSlope*bendingSlope + nonBendingSlope*nonBendingSlope);
536 Double_t muonMass =
M();
540 Double_t pZ = -pYZ / TMath::Sqrt(1.0 + bendingSlope*bendingSlope);
541 Double_t pX = pZ * nonBendingSlope;
542 Double_t pY = pZ * bendingSlope;
543 Double_t e = TMath::Sqrt(muonMass*muonMass + pX*pX + pY*pY + pZ*pZ);
544 vP.SetPxPyPzE(pX, pY, pZ, e);
552 Int_t ndf = 2 *
static_cast<Int_t
>(
fNHit) - 5;
553 return (ndf > 0) ? ndf : 0;
562 return (ndf > 0) ?
fChi2 /
static_cast<Double_t
>(ndf) : 0.;
592 Int_t nMatchedChambers = 0;
593 for (Int_t ich=0; ich<4; ich++)
597 return (nMatchedChambers >= 2);
604 Int_t deviation =
LoDev();
605 if ( deviation > 15 )
return 1;
606 else if ( deviation < 15 )
return -1;
625 for (Int_t i = 0; i <
fClusters->GetEntriesFast(); i++) {
629 *newCluster = *cluster;
640 pattern |= (0x1 << ( 7 - ( 4*cathode + chamber )));
647 if ( slatOrInfo > 0x1F ) {
648 AliErrorClass(Form(
"slatOrInfo is 0x%x should be at most 0x1f",slatOrInfo));
652 AliErrorClass(Form(
"board is %i should be at most 242",board));
655 if ( effType > 0x3 ) {
656 AliErrorClass(Form(
"effType is 0x%x should be at most 0x3",effType));
659 pattern |= effType << 8;
660 pattern |= slatOrInfo << 10;
661 pattern |= board << 15;
668 return (pattern >> (7 - ( 4*cathode + chamber ))) & 0x1;
675 return (pattern >> 8) & 0x3;
682 return (pattern >> 10) & 0x1F;
689 return ( pattern >> 15 ) & 0xFF;
706 pattern &= 0x3FFFFFFF;
Double32_t fInverseBendingMomentumAtDCA
Inverse bending momentum (GeV/c ** -1) times the charge.
TArrayI * fClustersId
Array of clusters'Id attached to the track.
Double32_t fCovariances[15]
reduced covariance matrix of parameters AT FIRST CHAMBER
Double32_t fThetaXUncorrected
Angle of track at vertex in X direction (rad)
UShort_t fY1Pattern
y-strips pattern in st6/ch1
Class to describe the MUON tracks in the Event Summary Data class.
virtual ~AliESDMuonTrack()
Double32_t fThetaYAtDCA
Angle of track at vertex in Y direction (rad)
UShort_t fY4Pattern
y-strips pattern in st7/ch2
Double32_t fNonBendingCoorUncorrected
non bending coordinate (cm)
AliVParticle & operator=(const AliVParticle &vPart)
Double_t PxUncorrected() const
void LorentzPAtDCA(TLorentzVector &vP) const
UShort_t fHitsPatternInTrigCh
Word containing info on the hits left in trigger chambers.
virtual void Copy(TObject &obj) const
void GetCovariances(TMatrixD &cov) const
Double_t GetNormalizedChi2() const
UChar_t fNHit
number of clusters attached to the track
UShort_t fX3Pattern
x-strips pattern in st7/ch1
static void AddEffInfo(UInt_t &pattern, Int_t slatOrInfo, Int_t board=0, EAliTriggerChPatternFlag effType=kNoEff)
Add efficiency flag and crossed RPC or info on rejected track.
Double32_t fRAtAbsorberEnd
transverse position r of the track at the end of the absorber
UShort_t fX2Pattern
x-strips pattern in st6/ch2
virtual void Clear(Option_t *opt="")
Int_t fLabel
point to the corresponding MC track
Int_t LoCircuit(void) const
static Int_t GetSlatOrInfo(UInt_t pattern)
Getting crossed slat or info.
#define AliErrorClass(message)
Double_t PyUncorrected() const
Int_t fLocalTrigger
packed local trigger information
Double32_t fInverseBendingMomentum
Inverse bending momentum (GeV/c ** -1) times the charge.
UShort_t fX1Pattern
x-strips pattern in st6/ch1
Class to describe the MUON clusters in the Event Summary Data.
Double32_t fInverseBendingMomentumUncorrected
Inverse bending momentum (GeV/c ** -1) times the charge.
Double_t PzUncorrected() const
void LorentzP(TLorentzVector &vP) const
TClonesArray * fClusters
Array of clusters attached to the track – deprecated.
static Bool_t IsChamberHit(UInt_t pattern, Int_t cathode, Int_t chamber)
Chamber was hit.
Double32_t fThetaXAtDCA
Angle of track at vertex in X direction (rad)
Bool_t MatchTriggerDigits(Bool_t fromTrack) const
Double32_t fChi2MatchTrigger
chi2 of trigger/track matching
Double32_t fBendingCoor
bending coordinate (cm)
void LorentzPUncorrected(TLorentzVector &vP) const
Int_t GetMatchTrigger() const
void AddMuonTrigDevSignInfo(UInt_t &pattern) const
AliESDMuonCluster * NewMuonCluster()
void MovePadsToESD(AliESDEvent &esd)
UShort_t fX4Pattern
x-strips pattern in st7/ch2
Double32_t fZ
Z coordinate (cm)
Double32_t fThetaX
Angle of track at vertex in X direction (rad)
void GetCovarianceXYZPxPyPz(Double_t cov[21]) const
Double32_t fThetaYUncorrected
Angle of track at vertex in Y direction (rad)
Int_t GetMuonTrigDevSign() const
Double32_t fThetaY
Angle of track at vertex in Y direction (rad)
void AddClusterId(UInt_t clusterId)
static void SetFiredChamber(UInt_t &pattern, Int_t cathode, Int_t chamber)
Set hits pattern.
UShort_t fY3Pattern
y-strips pattern in st7/ch1
Double_t PUncorrected() const
Double32_t fBendingCoorUncorrected
bending coordinate (cm)
Double32_t fNonBendingCoorAtDCA
non bending coordinate (cm)
Double32_t fChi2
chi2 in the MUON track fit
UShort_t fY2Pattern
y-strips pattern in st6/ch2
Double32_t fBendingCoorAtDCA
bending coordinate (cm)
static Int_t GetCrossedBoard(UInt_t pattern)
Getting crossed board.
Double32_t fZUncorrected
Z coordinate (cm)
UInt_t fMuonClusterMap
Map of clusters in tracking chambers.
void SetCovariances(const TMatrixD &cov)
static Int_t GetEffFlag(UInt_t pattern)
Get Efficiency flag.
AliESDMuonTrack & operator=(const AliESDMuonTrack &esdm)
UInt_t fHitsPatternInTrigChTrk
Trigger hit map from tracker track extrapolation.
void MoveClustersToESD(AliESDEvent &esd)
Double32_t fNonBendingCoor
non bending coordinate (cm)