2 #include <TDatabasePDG.h>
3 #include <TLorentzVector.h>
4 #include <TClonesArray.h>
6 #include "AliAODTrack.h"
7 #include "AliESDMuonTrack.h"
8 #include "AliMCMuonTrack.h"
9 #include "AliAODMuonTrack.h"
11 ClassImp(AliAODMuonTrack)
13 //-----------------------------------------------------------------------------
14 AliAODMuonTrack::AliAODMuonTrack() :
24 // default constructor
28 //-----------------------------------------------------------------------------
29 AliAODMuonTrack::AliAODMuonTrack(AliAODTrack *trk) :
39 // default constructor
41 this->FillTrackInfo(trk);
44 //-----------------------------------------------------------------------------
45 AliAODMuonTrack::AliAODMuonTrack(AliESDMuonTrack *trk) :
55 // default constructor
57 this->FillTrackInfo(trk);
60 //-----------------------------------------------------------------------------
61 AliAODMuonTrack::~AliAODMuonTrack()
68 //-----------------------------------------------------------------------------
69 void AliAODMuonTrack::FillTrackInfo(AliAODTrack *trk)
71 Double_t mMu = TDatabasePDG::Instance()->GetParticle(13)->Mass();
72 Double_t px = trk->Px();
73 Double_t py = trk->Py();
74 Double_t pz = trk->Pz();
75 Double_t energy = TMath::Sqrt(mMu*mMu + px*px + py*py + pz*pz);
76 fP.SetPxPyPzE(px,py,pz,energy);
77 fCharge = trk->Charge();
78 fTrigger = trk->GetMatchTrigger();
80 fChi2 = trk->Chi2perNDF();
84 //-----------------------------------------------------------------------------
85 void AliAODMuonTrack::FillTrackInfo(AliESDMuonTrack *trk)
88 fCharge = trk->Charge();
89 fTrigger = trk->GetMatchTrigger();
91 fChi2 = trk->GetChi2()/(2.*trk->GetNHit()-5.);
95 //-----------------------------------------------------------------------------
96 Bool_t AliAODMuonTrack::SelectSingleMuon(Double_t cuts[10])
98 TLorentzVector lorentzP = this->GetP();
99 Double_t p = lorentzP.P();
100 if (p<cuts[0] || (p>cuts[1])) return kFALSE;
102 Double_t pt = lorentzP.Pt();
103 if (pt<cuts[2] || pt>cuts[3]) return kFALSE;
105 Double_t eta = lorentzP.Eta();
106 if (eta<cuts[4] || eta>cuts[5]) return kFALSE;
108 Double_t dca = this->GetDCA();
109 if (dca<cuts[6] || dca>cuts[7]) return kFALSE;
111 Int_t trigger = this->GetTrigger();
112 if (trigger<cuts[8] || trigger>cuts[9]) return kFALSE;