]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/AliRsnMiniPair.h
Improved merging.
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / AliRsnMiniPair.h
1 #ifndef ALIRSNMINIPAIR_H
2 #define ALIRSNMINIPAIR_H
3
4 //
5 // This object is used as lightweight temporary container
6 // of all information needed from any input object and
7 // useful for resonance analysis.
8 //
9
10 #include <TObject.h>
11 #include <TLorentzVector.h>
12
13 class AliRsnMiniParticle;
14
15 class AliRsnMiniPair : public TObject {
16 public:
17
18    AliRsnMiniPair() : fMother(-1), fMotherPDG(0) { }
19
20    Int_t          &Mother()    {return fMother;}
21    Int_t          &MotherPDG() {return fMotherPDG;}
22    void            Fill(AliRsnMiniParticle *p1, AliRsnMiniParticle *p2, Double_t m1, Double_t m2, Double_t refMass);
23    void            FillRef(Double_t mass);
24    void            InvertP(Bool_t first);
25
26    Int_t           ID(Bool_t mc) const {if (mc) return 1; else return 0;}
27
28    TLorentzVector &P1 (Bool_t mc) {return fP1 [ID(mc)];}
29    TLorentzVector &P2 (Bool_t mc) {return fP2 [ID(mc)];}
30    TLorentzVector &Sum(Bool_t mc) {return fSum[ID(mc)];}
31    TLorentzVector &Ref(Bool_t mc) {return fRef[ID(mc)];}
32
33    Double_t        Pt(Bool_t mc)             const  {return fSum[ID(mc)].Pt();}
34    Double_t        Pz(Bool_t mc)             const  {return fSum[ID(mc)].Pz();}
35    Double_t        Eta(Bool_t mc)            const  {return fSum[ID(mc)].Eta();}
36    Double_t        InvMass(Bool_t mc)        const  {return fSum[ID(mc)].M();}
37    Double_t        InvMassRes()              const;
38    Double_t        InvMassDiff()             const;
39    Double_t        Mt(Bool_t mc)             const  {return fRef[ID(mc)].Mt();}
40    Double_t        Y(Bool_t mc)              const  {return fRef[ID(mc)].Rapidity();}
41    Double_t        PtRatio(Bool_t mc)        const;
42    Double_t        DipAngle(Bool_t mc)       const;
43    Double_t        CosThetaStar(Bool_t mc);
44    Double_t        DaughterPt(Int_t daughterId, Bool_t mc); 
45    void            DaughterPxPyPz(Int_t daughterId, Bool_t mc, Double_t *pxpypz); 
46       
47  private:
48    
49    TLorentzVector fP1 [2];    // 1st daughter momentum
50    TLorentzVector fP2 [2];    // 2nd daughter momentum
51    TLorentzVector fSum[2];    // sum of momenta
52    TLorentzVector fRef[2];    // same as 'fSum' but with nominal resonance mass
53    
54    Int_t          fMother;    // label of mothers (when common)
55    Int_t          fMotherPDG; // PDG code of mother (when common)
56    
57    ClassDef(AliRsnMiniPair,1)
58      };
59
60 #endif