]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/muon/AliAODDimuon.h
Warning fixed
[u/mrichter/AliRoot.git] / PWG3 / muon / AliAODDimuon.h
CommitLineData
71b7d225 1#ifndef AliAODDimuon_H
2#define AliAODDimuon_H
3
aba89748 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 with the addition of a pointer to the AliAODEventInfo. An instance of
14// this class has also to be added to the AliAODEvent structure to provide
15// additional information that is specific to MUON and therefore has not been
16// included into the AOD header.
17// Two transient data members are not stored on file as they can be recomputed
18// at runtime.
19//
71b7d225 20
aba89748 21// 2007/07/07 v1.00 Initial version
22// 2007/12/06 v1.01 Introduction of AliAODEventInfo
23// 2007/12/18 v1.02 Corrected CostCS for Like-Sign, added CostKh, CostHe and xf
24// 2008/02/01 v1.03 Apply coding conventions
71b7d225 25
26#include "TRef.h"
27#include "AliVParticle.h"
71b7d225 28#include "AliAODTrack.h"
29#include "AliAODEvent.h"
30#include "AliAODEventInfo.h"
31
aba89748 32class TLorentzVector;
33
71b7d225 34class AliAODDimuon: public AliVParticle {
35public:
36 AliAODDimuon();
37 AliAODDimuon(const AliAODDimuon& dimu);
aba89748 38 AliAODDimuon &operator=(const AliAODDimuon& dimu);
39 AliAODDimuon(TObject *mu0, TObject *mu1, TObject *ei=0);
40 virtual ~AliAODDimuon();
71b7d225 41
42 // Methods to access kinematics
43 virtual Double_t Px() const;
44 virtual Double_t Py() const;
45 virtual Double_t Pz() const;
46 virtual Bool_t PxPyPz(Double_t* p) const { p[0]=Px(); p[1]=Py(); p[2]=Pz(); return 1;}
47 virtual Double_t Pt() const;
48 virtual Double_t P() const;
49
50 virtual Double_t OneOverPt() const {return Pt()>0 ? 1./Pt() : -999999999;}
51 virtual Double_t Phi() const;
52 virtual Double_t Theta() const;
53
54 virtual Double_t E() const;
55 virtual Double_t M() const;
56
57 virtual Double_t Eta() const;
58 virtual Double_t Y() const;
59
60 virtual Short_t Charge() const;
61
62 // Dimuon vertex will be implemented when the muon track covariance matrix
63 // at vertex will be included in the ESD (and AOD)
64 // It would require also the information about magnetic field when filling AOD
65 virtual Double_t Xv() const {return -999999999;}
66 virtual Double_t Yv() const {return -999999999;}
67 virtual Double_t Zv() const {return -999999999;}
68 virtual Bool_t XvYvZv(Double_t* v) const { v[0]=-999999999; v[1]=-999999999; v[2]=-999999999; return 0;}
69
70 Double_t P();
71 Double_t Phi();
72 Double_t Theta();
73 Double_t M();
aba89748 74 Double_t Mass();
71b7d225 75 Double_t Eta();
76 Double_t Y();
77
78 // Added functions
aba89748 79 Double_t XF(); // Feynman x
71b7d225 80 Double_t CostCS(); // Cosinus of the Collins-Soper polar decay angle
81 Double_t CostHe(); // Cosinus of the Helicity polar decay angle
82 Int_t AnyPt();
83 Int_t LowPt();
84 Int_t HighPt();
85 Double_t MaxChi2Match();
86 // PID
87 virtual const Double_t *PID() const {return 0;} // return PID object (to be defined, still)
1dfb5bc7 88 //
89 Int_t GetLabel() const {return -1;}
71b7d225 90
aba89748 91 // Additional getters and setters
92 AliAODTrack* GetMu(Int_t imu=0) const {return (imu==0||imu==1)&&(fMu[imu]!=0) ? (AliAODTrack*)fMu[imu].GetObject() : 0; } // Get a pointer to a muon
93 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
94 AliAODEventInfo* GetEventInfo() const {return (fEi!=0) ? (AliAODEventInfo*)fEi.GetObject() : 0; } // Get a pointer to the AliAODEventInfo
95 AliAODEventInfo* GetEi() const { return (fEi!=0) ? (AliAODEventInfo*)fEi.GetObject() : 0; }
96 AliAODEventInfo* Ei() const { return (fEi!=0) ? (AliAODEventInfo*)fEi.GetObject() : 0; }
71b7d225 97
aba89748 98 void SetEi(AliAODEventInfo *ei){ fEi=ei; }
99 void SetMu(Int_t imu=0, AliAODTrack *mu=0);
100 void SetMuons(AliAODTrack *mu0=0, AliAODTrack *mu1=0);
71b7d225 101
102private:
103 Int_t CheckPointers() const;
104 void BookP();
aba89748 105
106 // Data members
107 TRef fMu[2]; // Pointers to the reconstructed muons
108 TRef fEi; // Pointer to the EventInfo object
109 TLorentzVector *fP; //! TLorentzVector of dimuon momentum (not stored into file)
110
111 // Useful constants
112 Double_t fMProton; //! Proton mass (not stored into file)
113
71b7d225 114 ClassDef(AliAODDimuon,1) // AliAODDimuon track
115};
116
117#endif