fTRDsignal is added to AliAODPid class (copied from AliESDtrack).
[u/mrichter/AliRoot.git] / STEER / AOD / AliAODDimuon.h
CommitLineData
866d8d78 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
29class TLorentzVector;
30
31class AliAODDimuon: public AliVParticle {
32public:
33 AliAODDimuon();
34 AliAODDimuon(const AliAODDimuon& dimu);
35 AliAODDimuon &operator=(const AliAODDimuon& dimu);
36 AliAODDimuon(TObject *mu0, TObject *mu1);
37 virtual ~AliAODDimuon();
38
39 // Methods to access kinematics
40 virtual Double_t Px() const;
41 virtual Double_t Py() const;
42 virtual Double_t Pz() const;
43 virtual Bool_t PxPyPz(Double_t* p) const { p[0]=Px(); p[1]=Py(); p[2]=Pz(); return 1;}
44 virtual Double_t Pt() const;
45 virtual Double_t P() const;
46
47 virtual Double_t OneOverPt() const {return Pt()>0 ? 1./Pt() : -999999999;}
48 virtual Double_t Phi() const;
49 virtual Double_t Theta() const;
50
51 virtual Double_t E() const;
52 virtual Double_t M() const;
e7329cf1 53
54 virtual Double_t Mass() const { return M(); }
55
866d8d78 56 virtual Double_t Eta() const;
57 virtual Double_t Y() const;
58
59 virtual Short_t Charge() const;
60
61 // Dimuon vertex will be implemented when the muon track covariance matrix
62 // at vertex will be included in the ESD (and AOD)
63 // It would require also the information about magnetic field when filling AOD
64 virtual Double_t Xv() const {return -999999999;}
65 virtual Double_t Yv() const {return -999999999;}
66 virtual Double_t Zv() const {return -999999999;}
67 virtual Bool_t XvYvZv(Double_t* v) const { v[0]=-999999999; v[1]=-999999999; v[2]=-999999999; return 0;}
68
866d8d78 69 // Added functions
70 Double_t XF(); // Feynman x
71 Double_t CostCS(); // Cosinus of the Collins-Soper polar decay angle
72 Double_t CostHe(); // Cosinus of the Helicity polar decay angle
48453d08 73 Double_t PhiCS(); // Azimuthal angle in the Collins-Soper frame
74 Double_t PhiHe(); // Azimuthal angle in the Helicity frame
866d8d78 75 Int_t AnyPt();
76 Int_t LowPt();
77 Int_t HighPt();
78 Double_t MaxChi2Match();
79 // PID
80 virtual const Double_t *PID() const {return 0;} // return PID object (to be defined, still)
6a8e543a 81
866d8d78 82 //
83 Int_t GetLabel() const {return -1;}
866d8d78 84 // Additional getters and setters
e7329cf1 85 AliAODTrack* GetMu(Int_t imu=0) const {return Mu(imu); } // Get a pointer to a muon
866d8d78 86 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
87
88 void SetMu(Int_t imu=0, AliAODTrack *mu=0);
89 void SetMuons(AliAODTrack *mu0=0, AliAODTrack *mu1=0);
6a8e543a 90 // Dummy
91 virtual Int_t PdgCode() const {return 0;}
866d8d78 92
93private:
e7329cf1 94
866d8d78 95 Int_t CheckPointers() const;
e7329cf1 96
97 TLorentzVector* TLV() const;
866d8d78 98
99 // Data members
100 TRef fMu[2]; // Pointers to the reconstructed muons
e7329cf1 101 mutable TLorentzVector *fP; //! TLorentzVector of dimuon momentum (not stored into file)
866d8d78 102
103 // Useful constants
104 Double_t fMProton; //! Proton mass (not stored into file)
105
e7329cf1 106 ClassDef(AliAODDimuon,2) // AliAODDimuon track
866d8d78 107};
108
109#endif