ROOT logo
#ifndef ALIRSNMINIPAIR_H
#define ALIRSNMINIPAIR_H

//
// This object is used as lightweight temporary container
// of all information needed from any input object and
// useful for resonance analysis.
//

#include <TObject.h>
#include <TLorentzVector.h>
#include "TClonesArray.h"
#include "AliRsnListOutput.h"

class AliRsnListOutput;
class AliRsnMiniParticle;

class AliRsnMiniPair : public TObject {
public:

   AliRsnMiniPair() : fDCA1(0), fDCA2(0), fMother(-1), fMotherPDG(0), fNSisters(-1), fIsFromB(kFALSE), fIsQuarkFound(kFALSE) {Int_t i = 3; while (i--) fPmother[i] = 0.0;}
  
   Int_t          &Mother()    {return fMother;}
   Int_t          &MotherPDG() {return fMotherPDG;}
   Bool_t         &IsFromB()      {return fIsFromB;}
   Bool_t         &IsQuarkFound() {return fIsQuarkFound;}
   Float_t        &PmotherX()  {return fPmother[0];}
   Float_t        &PmotherY()  {return fPmother[1];}
   Float_t        &PmotherZ()  {return fPmother[2];} 
   void           Fill(AliRsnMiniParticle *p1, AliRsnMiniParticle *p2, Double_t m1, Double_t m2, Double_t refMass);
   void           FillRef(Double_t mass);
   void           InvertP(Bool_t first);

   Int_t          ID(Bool_t mc) const {if (mc) return 1; else return 0;}

   TLorentzVector &P1 (Bool_t mc) {return fP1 [ID(mc)];}
   TLorentzVector &P2 (Bool_t mc) {return fP2 [ID(mc)];}
   TLorentzVector &Sum(Bool_t mc) {return fSum[ID(mc)];}
   TLorentzVector &Ref(Bool_t mc) {return fRef[ID(mc)];}

   Double_t        Pt(Bool_t mc)             const  {return fSum[ID(mc)].Pt();}
   Double_t        Pz(Bool_t mc)             const  {return fSum[ID(mc)].Pz();}
   Double_t        Eta(Bool_t mc)            const  {return fSum[ID(mc)].Eta();}
   Double_t        InvMass(Bool_t mc)        const  {return fSum[ID(mc)].M();}
   Double_t        InvMassRes()              const;
   Double_t        InvMassDiff()             const;
   Double_t        Mt(Bool_t mc)             const  {return fRef[ID(mc)].Mt();}
   Double_t        Y(Bool_t mc)              const  {return fRef[ID(mc)].Rapidity();}
   Double_t        PtRatio(Bool_t mc)        const;
   Double_t        DipAngle(Bool_t mc)       const;
   Double_t        CosThetaStar(Bool_t mc);
   Double_t        DaughterPt(Int_t daughterId, Bool_t mc);
   Double_t        DaughterDCA(Int_t daughterId); 
   Double_t        DCAProduct();                                                   
   void            DaughterPxPyPz(Int_t daughterId, Bool_t mc, Double_t *pxpypz); 
   Short_t         NSisters()  {return fNSisters;}

 private:
   
   TLorentzVector fP1 [2];    // 1st daughter momentum
   TLorentzVector fP2 [2];    // 2nd daughter momentum
   TLorentzVector fSum[2];    // sum of momenta
   TLorentzVector fRef[2];    // same as 'fSum' but with nominal resonance mass
   
   Double_t       fDCA1;      // 1st daughter DCA
   Double_t       fDCA2;      // 2nd daughter DCA 
   
   Int_t          fMother;    // label of mothers (when common)
   Int_t          fMotherPDG; // PDG code of mother (when common)
   Short_t        fNSisters;  // total number of mother's daughters in the MC stack
   Bool_t         fIsFromB;	      // is the particle from B meson flag	
   Bool_t         fIsQuarkFound;      // is the particle from a quark flag (used to reject or accept Hijing event)
   Float_t        fPmother[3];// MC momentum of the pair corresponding mother
   
   ClassDef(AliRsnMiniPair,4)
     };

#endif
 AliRsnMiniPair.h:1
 AliRsnMiniPair.h:2
 AliRsnMiniPair.h:3
 AliRsnMiniPair.h:4
 AliRsnMiniPair.h:5
 AliRsnMiniPair.h:6
 AliRsnMiniPair.h:7
 AliRsnMiniPair.h:8
 AliRsnMiniPair.h:9
 AliRsnMiniPair.h:10
 AliRsnMiniPair.h:11
 AliRsnMiniPair.h:12
 AliRsnMiniPair.h:13
 AliRsnMiniPair.h:14
 AliRsnMiniPair.h:15
 AliRsnMiniPair.h:16
 AliRsnMiniPair.h:17
 AliRsnMiniPair.h:18
 AliRsnMiniPair.h:19
 AliRsnMiniPair.h:20
 AliRsnMiniPair.h:21
 AliRsnMiniPair.h:22
 AliRsnMiniPair.h:23
 AliRsnMiniPair.h:24
 AliRsnMiniPair.h:25
 AliRsnMiniPair.h:26
 AliRsnMiniPair.h:27
 AliRsnMiniPair.h:28
 AliRsnMiniPair.h:29
 AliRsnMiniPair.h:30
 AliRsnMiniPair.h:31
 AliRsnMiniPair.h:32
 AliRsnMiniPair.h:33
 AliRsnMiniPair.h:34
 AliRsnMiniPair.h:35
 AliRsnMiniPair.h:36
 AliRsnMiniPair.h:37
 AliRsnMiniPair.h:38
 AliRsnMiniPair.h:39
 AliRsnMiniPair.h:40
 AliRsnMiniPair.h:41
 AliRsnMiniPair.h:42
 AliRsnMiniPair.h:43
 AliRsnMiniPair.h:44
 AliRsnMiniPair.h:45
 AliRsnMiniPair.h:46
 AliRsnMiniPair.h:47
 AliRsnMiniPair.h:48
 AliRsnMiniPair.h:49
 AliRsnMiniPair.h:50
 AliRsnMiniPair.h:51
 AliRsnMiniPair.h:52
 AliRsnMiniPair.h:53
 AliRsnMiniPair.h:54
 AliRsnMiniPair.h:55
 AliRsnMiniPair.h:56
 AliRsnMiniPair.h:57
 AliRsnMiniPair.h:58
 AliRsnMiniPair.h:59
 AliRsnMiniPair.h:60
 AliRsnMiniPair.h:61
 AliRsnMiniPair.h:62
 AliRsnMiniPair.h:63
 AliRsnMiniPair.h:64
 AliRsnMiniPair.h:65
 AliRsnMiniPair.h:66
 AliRsnMiniPair.h:67
 AliRsnMiniPair.h:68
 AliRsnMiniPair.h:69
 AliRsnMiniPair.h:70
 AliRsnMiniPair.h:71
 AliRsnMiniPair.h:72
 AliRsnMiniPair.h:73
 AliRsnMiniPair.h:74
 AliRsnMiniPair.h:75
 AliRsnMiniPair.h:76
 AliRsnMiniPair.h:77
 AliRsnMiniPair.h:78