]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/AliRsnMiniPair.h
From Massimo:
[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 #include "TClonesArray.h"
13 #include "AliRsnListOutput.h"
14
15 class AliRsnListOutput;
16 class AliRsnMiniParticle;
17
18 class AliRsnMiniPair : public TObject {
19 public:
20
21    AliRsnMiniPair() : fDCA1(0), fDCA2(0), fMother(-1), fMotherPDG(0), fNSisters(-1) {Int_t i = 3; while (i--) fPmother[i] = 0.0;}
22   
23    Int_t          &Mother()    {return fMother;}
24    Int_t          &MotherPDG() {return fMotherPDG;}
25    Float_t        &PmotherX()  {return fPmother[0];}
26    Float_t        &PmotherY()  {return fPmother[1];}
27    Float_t        &PmotherZ()  {return fPmother[2];} 
28    void           Fill(AliRsnMiniParticle *p1, AliRsnMiniParticle *p2, Double_t m1, Double_t m2, Double_t refMass);
29    void           FillRef(Double_t mass);
30    void           InvertP(Bool_t first);
31
32    Int_t          ID(Bool_t mc) const {if (mc) return 1; else return 0;}
33
34    TLorentzVector &P1 (Bool_t mc) {return fP1 [ID(mc)];}
35    TLorentzVector &P2 (Bool_t mc) {return fP2 [ID(mc)];}
36    TLorentzVector &Sum(Bool_t mc) {return fSum[ID(mc)];}
37    TLorentzVector &Ref(Bool_t mc) {return fRef[ID(mc)];}
38
39    Double_t        Pt(Bool_t mc)             const  {return fSum[ID(mc)].Pt();}
40    Double_t        Pz(Bool_t mc)             const  {return fSum[ID(mc)].Pz();}
41    Double_t        Eta(Bool_t mc)            const  {return fSum[ID(mc)].Eta();}
42    Double_t        InvMass(Bool_t mc)        const  {return fSum[ID(mc)].M();}
43    Double_t        InvMassRes()              const;
44    Double_t        InvMassDiff()             const;
45    Double_t        Mt(Bool_t mc)             const  {return fRef[ID(mc)].Mt();}
46    Double_t        Y(Bool_t mc)              const  {return fRef[ID(mc)].Rapidity();}
47    Double_t        PtRatio(Bool_t mc)        const;
48    Double_t        DipAngle(Bool_t mc)       const;
49    Double_t        CosThetaStar(Bool_t mc);
50    Double_t        DaughterPt(Int_t daughterId, Bool_t mc);
51    Double_t        DaughterDCA(Int_t daughterId); 
52    Double_t        DCAProduct();                                                   
53    void            DaughterPxPyPz(Int_t daughterId, Bool_t mc, Double_t *pxpypz); 
54    Short_t         NSisters()  {return fNSisters;}
55
56  private:
57    
58    TLorentzVector fP1 [2];    // 1st daughter momentum
59    TLorentzVector fP2 [2];    // 2nd daughter momentum
60    TLorentzVector fSum[2];    // sum of momenta
61    TLorentzVector fRef[2];    // same as 'fSum' but with nominal resonance mass
62    
63    Double_t       fDCA1;      // 1st daughter DCA
64    Double_t       fDCA2;      // 2nd daughter DCA 
65    
66    Int_t          fMother;    // label of mothers (when common)
67    Int_t          fMotherPDG; // PDG code of mother (when common)
68    Short_t        fNSisters;  // total number of mother's daughters in the MC stack
69    Float_t        fPmother[3];// MC momentum of the pair corresponding mother
70    
71    ClassDef(AliRsnMiniPair,3)
72      };
73
74 #endif