]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG2/RESONANCES/AliRsnPair.h
Update
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnPair.h
index 9b752837fb9d8f8c963fc2a9c5482052d19c7fe5..f95c99131f92c9d5bbdcb380528055b7e7804516 100644 (file)
 #ifndef ALIRSNPAIR_H
 #define ALIRSNPAIR_H
 
-#include "TH1.h"
-#include "TH2.h"
-#include "TList.h"
-#include "TArrayI.h"
+#include "TNamed.h"
 #include "TClonesArray.h"
 
 #include "AliRsnDaughter.h"
 #include "AliRsnPairDef.h"
-#include "AliRsnPairParticle.h"
+#include "AliRsnMother.h"
+#include "AliRsnCutManager.h"
 #include "AliRsnEvent.h"
-#include "AliRsnCutMgr.h"
-#include "AliRsnPIDIndex.h"
 
+class TH1;
+class TH2;
+class TList;
+class TArrayI;
+
+class AliRsnCutSet;
 class AliRsnFunction;
+class AliRsnValue;
 
-class AliRsnPair : public TObject
+class AliRsnPair : public TNamed
 {
   public:
 
-    enum EPairType
-    {
-      kNoPID = 0,    kNoPIDMix,
-      kRealisticPID, kRealisticPIDMix,
-      kPerfectPID,   kPerfectPIDMix,
-      kPairTypes
-    };
-
-    AliRsnPair(EPairType type = kRealisticPID, AliRsnPairDef *def = 0);
+    AliRsnPair(const char *name = "default", AliRsnPairDef *def = 0);
+    AliRsnPair(const AliRsnPair &copy);
+    AliRsnPair& operator=(const AliRsnPair&);
     ~AliRsnPair();
 
-    void    Print(Option_t *option = "") const;
-    void    LoopPair(AliRsnPIDIndex *pidIndex1, AliRsnEvent *ev1, AliRsnPIDIndex *pidIndex2 = 0, AliRsnEvent *ev2 = 0);
-    void    LoopPair(TArrayI *a1, TArrayI *a2, AliRsnEvent *ev1, AliRsnEvent *ev2 = 0);
-    void    SetCutMgr(AliRsnCutMgr* theValue) { fCutMgr = theValue; }
-    void    AddFunction(AliRsnFunction *fcn);
-    TList*  GenerateHistograms(TString prefix = "");
-    void    GenerateHistograms(TString prefix, TList *tgt);
-
-    Bool_t  IsMixed() {return fIsMixed;}
-    Bool_t  IsPairEqual() {if (fPIDMethod == AliRsnDaughter::kNoPID) return (fPairDef->IsLikeSign());
-                           else return (fPairDef->IsLikeSign() && fPairDef->HasEqualTypes());}
-
-    TString GetPairTypeName(EPairType type) const;
-    TString GetPairName() const;
-    TString GetPairHistName(AliRsnFunction *fcn, TString text = "") const;
-    TString GetPairHistTitle(AliRsnFunction *fcn, TString text = "") const;
+    void    SetOnlyTrue(Bool_t onlyTrue = kTRUE) {fOnlyTrue = onlyTrue;}
+    void    SetCheckDecay(Bool_t check = kTRUE)  {fCheckDecay = check;}
 
+    void    Print(Option_t *option = "") const;
+    void    SetMixed(Bool_t doit = kTRUE) {fIsMixed = doit;}
+    Bool_t  IsMixed() const {return fIsMixed;}
+    
+    AliRsnCutManager* GetCutManager() {return &fCutManager;}
+    AliRsnMother*     GetMother() {return &fMother;}
+    AliRsnPairDef*    GetPairDef() {return fPairDef;}
+    Bool_t            Fill(AliRsnDaughter *d0, AliRsnDaughter *d1);
+    Int_t             GetCount() const {return fCount;}
+    void              ResetCount() {fCount = 0;}
+    
+    virtual void      Compute();
+    virtual void      Init(const char *prefix, TList *list);
+
+  protected:
+
+    Bool_t            fOnlyTrue;        //  select true pairs only?
+    Bool_t            fCheckDecay;      //  is the decay channel correct in a true pair?
+    Bool_t            fIsMixed;         //  is this an event-mixing?
+    Int_t             fCount;           //  counter incremented for each added pair
+
+    AliRsnPairDef    *fPairDef;         //  pair definition (particles, charges)
+    AliRsnCutManager  fCutManager;      //  collection of all cuts
+    AliRsnMother      fMother;          //  mother candidate (to avoid creating it continuously)
+    
   private:
 
-    AliRsnPair (const AliRsnPair &copy) : TObject(copy),
-      fIsMixed(kFALSE),fPairType(kPairTypes),fPIDMethod(AliRsnDaughter::kRealistic),
-      fPairDef(0x0),fCutMgr(0x0),fFunctions("AliRsnFunction",0),fTrack1(),fTrack2(),fPairParticle() {}
-    AliRsnPair& operator=(const AliRsnPair&) {return *this;}
-
-    void     SetUp(EPairType type);
-    void     SetAllFlags(AliRsnDaughter::EPIDMethod pid, Bool_t mix) {fPIDMethod = pid; fIsMixed = mix;}
-
-    Bool_t   CutPass(AliRsnDaughter *d);
-    Bool_t   CutPass(AliRsnPairParticle *p);
-    Bool_t   CutPass(AliRsnEvent *e);
-
-    Bool_t                      fIsMixed;        // doing event-mixing ?
-    EPairType                   fPairType;       // pair type (PID + mixing or not)
-    AliRsnDaughter::EPIDMethod  fPIDMethod;      // pid type variable for single track
-
-    AliRsnPairDef              *fPairDef;        // pair definition (particles, charges)
-    AliRsnCutMgr               *fCutMgr;         // cut manager
-    TClonesArray                fFunctions;      // functions
-    AliRsnDaughter              fTrack1;         // track #1 (external loop)
-    AliRsnDaughter              fTrack2;         // track #2 (internal loop)
-    AliRsnPairParticle          fPairParticle;   // track pair
-
-    ClassDef (AliRsnPair, 2)
+    ClassDef(AliRsnPair, 2)
 };
 
 #endif
+