ROOT logo
#ifndef ALIRSNLOOPPAIR_H
#define ALIRSNLOOPPAIR_H

//
// Class to combine pairs of daughters.
// See general definition inf mother class AliRsnLoop
// This is the only implementation which takes into account mixing objects.
//

#include "AliRsnLoop.h"

class TList;
class AliRsnEvent;
class AliRsnPairDef;

class AliRsnLoopPair : public AliRsnLoop {
public:

   AliRsnLoopPair(const char *name = "default", AliRsnPairDef *def = 0, Bool_t isMixed = kFALSE);
   AliRsnLoopPair(const AliRsnLoopPair &copy);
   AliRsnLoopPair &operator=(const AliRsnLoopPair &copy);
   ~AliRsnLoopPair();

   // getters
   Bool_t         IsTrueMC()     const {return fTrueMC;}
   Bool_t         IsOnlyTrue()   const {return fOnlyTrue;}
   Bool_t         IsCheckDecay() const {return fCheckDecay;}
   AliRsnPairDef *GetPairDef()         {return fPairDef;}
   AliRsnCutSet  *GetPairCuts()        {return fPairCuts;}
   AliRsnMother  *GetMother()          {return &fMother;}

   // setters (not for all members)
   void           SetPairCuts(AliRsnCutSet *cuts)      {fPairCuts = cuts;}
   void           SetTrueMC(Bool_t yn = kTRUE)         {fTrueMC = yn;}
   void           SetOnlyTrue(Bool_t onlyTrue = kTRUE) {fOnlyTrue = onlyTrue;}
   void           SetMCRefInfo(Bool_t b = kTRUE)       {fUseMCRef = b;}
   void           SetCheckDecay(Bool_t check = kTRUE)  {fCheckDecay = check;}
   void           SetListID(Int_t i, Int_t val)        {if (i==0||i==1) fListID[i] = val;}
   void           SetRangeY(Double_t range)            {fRangeY = range;}
   void           SetRangeDCAproduct(Double_t range)   {fRangeDCAproduct = range;}

   // methods
   Bool_t         IsTrueMother();
   virtual void   Print(Option_t *opt = "") const;
   virtual Bool_t Init(const char *prefix, TList *list);
   virtual Int_t  DoLoop(AliRsnEvent *main, AliRsnDaughterSelector *smain, AliRsnEvent *mix = 0, AliRsnDaughterSelector *smix = 0);

protected:

   Bool_t AssignMotherAndDaughters   (AliRsnEvent *event, Int_t ipart);
   Bool_t AssignMotherAndDaughtersESD(AliRsnEvent *event, Int_t ipart);
   Bool_t AssignMotherAndDaughtersAOD(AliRsnEvent *event, Int_t ipart);
   Int_t  LoopTrueMC(AliRsnEvent *event);

   Bool_t            fTrueMC;          //  if this flag is TRUE, scan the MC for all true resonances from MC
   Bool_t            fOnlyTrue;        //  select true pairs only?
   Bool_t            fUseMCRef;        //  uses MC ref instead of REC
   Bool_t            fCheckDecay;      //  is the decay channel correct in a true pair?
   Int_t             fListID[2];       //  indexes of the two entry lists to be used
   Double_t          fRangeY;          //  range in rapidity (serves always)
   Double_t          fRangeDCAproduct; //  range in the daughters's DCA product

   AliRsnPairDef    *fPairDef;         //  pair definition
   AliRsnCutSet     *fPairCuts;        //  collection of all cuts
   AliRsnMother      fMother;          //! mother candidate (to avoid creating it continuously)
   AliRsnDaughter    fDaughter[2];     //! daughter candidates

private:

   ClassDef(AliRsnLoopPair, 5)
};

#endif

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