Line data Source code
1 : #ifndef AliAODDimuon_H
2 : #define AliAODDimuon_H
3 :
4 : // AliAODDimuon: a class for AODs for the MUON Arm of the ALICE Experiment
5 : // Author: P. Cortese, Universita' del Piemonte Orientale in Alessandria and
6 : // INFN of Torino - Italy
7 : //
8 : // The class defines a dimuon pair object from two AliAODTrack objects.
9 : // AliAODDimuon objects are supposed to be added to the AliAODEvent structure
10 : // during analysis. They would then allow to calculate the dimuon-related
11 : // kinematic variables with a minimal disk occupancy.
12 : // The payload of the class has been reduced to two pointers to the two
13 : // tracks. An instance of this class has also to be added to the AliAODEvent
14 : // structure to provide additional information that is specific to MUON and
15 : // therefore has not been included into the AOD header.
16 : // Two transient data members are not stored on file as they can be recomputed
17 : // at runtime.
18 : //
19 :
20 : // 2007/07/07 v1.00 Initial version
21 : // 2007/12/06 v1.01 Introduction of AliAODEventInfo
22 : // 2007/12/18 v1.02 Corrected CostCS for Like-Sign, added CostKh, CostHe and xf
23 : // 2008/02/01 v1.03 Apply coding conventions
24 :
25 : #include "TRef.h"
26 : #include "AliVParticle.h"
27 : #include "AliAODTrack.h"
28 :
29 : class TLorentzVector;
30 :
31 : class AliAODDimuon: public AliVParticle {
32 : public:
33 : AliAODDimuon();
34 : AliAODDimuon(const AliAODDimuon& dimu);
35 : AliAODDimuon &operator=(const AliAODDimuon& dimu);
36 : AliAODDimuon(TObject *mu0, TObject *mu1);
37 : virtual ~AliAODDimuon();
38 :
39 : virtual void Clear(Option_t* opt="");
40 :
41 : // Methods to access kinematics
42 : virtual Double_t Px() const;
43 : virtual Double_t Py() const;
44 : virtual Double_t Pz() const;
45 0 : virtual Bool_t PxPyPz(Double_t* p) const { p[0]=Px(); p[1]=Py(); p[2]=Pz(); return 1;}
46 : virtual Double_t Pt() const;
47 : virtual Double_t P() const;
48 :
49 0 : virtual Double_t OneOverPt() const {return Pt()>0 ? 1./Pt() : -999999999;}
50 : virtual Double_t Phi() const;
51 : virtual Double_t Theta() const;
52 :
53 : virtual Double_t E() const;
54 : virtual Double_t M() const;
55 :
56 0 : virtual Double_t Mass() const { return M(); }
57 :
58 : virtual Double_t Eta() const;
59 : virtual Double_t Y() const;
60 :
61 : virtual Short_t Charge() const;
62 :
63 : // Dimuon vertex will be implemented when the muon track covariance matrix
64 : // at vertex will be included in the ESD (and AOD)
65 : // It would require also the information about magnetic field when filling AOD
66 0 : virtual Double_t Xv() const {return -999999999;}
67 0 : virtual Double_t Yv() const {return -999999999;}
68 0 : virtual Double_t Zv() const {return -999999999;}
69 0 : virtual Bool_t XvYvZv(Double_t* v) const { v[0]=-999999999; v[1]=-999999999; v[2]=-999999999; return 0;}
70 :
71 : // Added functions
72 : Double_t XF(); // Feynman x
73 : Double_t CostCS(); // Cosinus of the Collins-Soper polar decay angle
74 : Double_t CostHe(); // Cosinus of the Helicity polar decay angle
75 : Double_t PhiCS(); // Azimuthal angle in the Collins-Soper frame
76 : Double_t PhiHe(); // Azimuthal angle in the Helicity frame
77 : Int_t AnyPt();
78 : Int_t LowPt();
79 : Int_t HighPt();
80 : Double_t MaxChi2Match();
81 : // PID
82 0 : virtual const Double_t *PID() const {return 0;} // return PID object (to be defined, still)
83 :
84 : //
85 0 : Int_t GetLabel() const {return -1;}
86 : // Additional getters and setters
87 0 : AliAODTrack* GetMu(Int_t imu=0) const {return Mu(imu); } // Get a pointer to a muon
88 0 : AliAODTrack* Mu(Int_t imu=0) const {return (imu==0||imu==1)&&(fMu[imu]!=0) ? (AliAODTrack*)fMu[imu].GetObject() : 0; } // Get a pointer to a muon
89 :
90 : void SetMu(Int_t imu=0, AliAODTrack *mu=0);
91 : void SetMuons(AliAODTrack *mu0=0, AliAODTrack *mu1=0);
92 : // Dummy
93 0 : virtual Int_t PdgCode() const {return 0;}
94 :
95 : private:
96 :
97 : Int_t CheckPointers() const;
98 :
99 : TLorentzVector* TLV() const;
100 :
101 : // Data members
102 : TRef fMu[2]; // Pointers to the reconstructed muons
103 : mutable TLorentzVector *fP; //! TLorentzVector of dimuon momentum (not stored into file)
104 :
105 : // Useful constants
106 : Double_t fMProton; //! Proton mass (not stored into file)
107 :
108 174 : ClassDef(AliAODDimuon,2) // AliAODDimuon track
109 : };
110 :
111 : #endif
|