]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG2/RESONANCES/AliRsnPair.h
Update
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnPair.h
index 8323a2cccd8a2c9621f86718644e02a72965b646..f95c99131f92c9d5bbdcb380528055b7e7804516 100644 (file)
 #ifndef ALIRSNPAIR_H
 #define ALIRSNPAIR_H
 
-#include "TH1.h"
-#include "TH2.h"
-#include "TList.h"
+#include "TNamed.h"
+#include "TClonesArray.h"
 
 #include "AliRsnDaughter.h"
 #include "AliRsnPairDef.h"
-#include "AliRsnEventBuffer.h"
+#include "AliRsnMother.h"
+#include "AliRsnCutManager.h"
 #include "AliRsnEvent.h"
-#include "AliRsnCutMgr.h"
-#include "AliRsnHistoDef.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,
-        kTruePairs,
-        kPairTypes
-    };
-
-    enum EOutputType
-    {
-      kInvMass = 0,
-      kInvMassResolution,
-      kOutputTypes
-    };
-
-
-    AliRsnPair (EPairType type = kRealisticPID, AliRsnPairDef *def = 0, Int_t mixNum = 1);
+    AliRsnPair(const char *name = "default", AliRsnPairDef *def = 0);
+    AliRsnPair(const AliRsnPair &copy);
+    AliRsnPair& operator=(const AliRsnPair&);
     ~AliRsnPair();
 
-    void    Init();
-    void    Print();
-    void    ProcessPair(AliRsnEventBuffer *buf);
-    void    SetCutMgr(AliRsnCutMgr* theValue) { fCutMgr = theValue; }
-    void    AddFunction(AliRsnFunction *fcn);
-    TList*  GenerateHistograms(TString prefix = "");
-    void    GenerateHistograms(TString prefix, TList *tgt);
-
-    TString GetPairTypeName(EPairType type);
-    TString GetPairName();
-    TString GetPairHistName(AliRsnFunction *fcn, TString text = "");
-    TString GetPairHistTitle(AliRsnFunction *fcn, TString text="");
+    void    SetOnlyTrue(Bool_t onlyTrue = kTRUE) {fOnlyTrue = onlyTrue;}
+    void    SetCheckDecay(Bool_t check = kTRUE)  {fCheckDecay = check;}
 
-  private:
-  
-    AliRsnPair (const AliRsnPair &copy) : TObject(copy),
-         fIsMixed(kFALSE),fUseMC(kFALSE),fIsLikeSign(kFALSE),fMixNum(1),
-         fPairDef(0x0),fPairType(kPairTypes),fTypePID(AliRsnDaughter::kRealistic),
-         fCutMgr(0x0),fFunctions("AliRsnFunction",0) {}
-    AliRsnPair& operator=(const AliRsnPair&) {return *this;}
+    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);
 
-    void           SetUp(EPairType type);  // sets up all flags
-    void           SetAllFlags(AliRsnDaughter::EPIDMethod pidType,Bool_t isMix, Bool_t useMC);
-    AliRsnEvent*   FindEventByEventCut(AliRsnEventBuffer *buf,Int_t & num);
-    void           LoopPair(AliRsnEvent *ev1,TArrayI *a1,AliRsnEvent *ev2,TArrayI *a2);
+  protected:
 
-    void           FillHistogram(EOutputType type,AliRsnPairParticle*pairPart);
-    void           FillEffMass(EOutputType type,AliRsnPairParticle*pairPart);
-    void           FillResolution(EOutputType type,AliRsnPairParticle*pairPart);
+    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
 
-    TString        GetOutputTypeName(EOutputType type);
-    TString        GetOutputTypeTitle(EOutputType type);
-    
-    Bool_t         CutPass(AliRsnDaughter *d);
-    Bool_t         CutPass(AliRsnPairParticle *p);
-    Bool_t         CutPass(AliRsnEvent *e);
+    AliRsnPairDef    *fPairDef;         //  pair definition (particles, charges)
+    AliRsnCutManager  fCutManager;      //  collection of all cuts
+    AliRsnMother      fMother;          //  mother candidate (to avoid creating it continuously)
     
-    // flags & integer data
-    Bool_t         fIsMixed;                 // doing event-mixing ?
-    Bool_t         fUseMC;                   // using MC inv. mass ?
-    Bool_t         fIsLikeSign;              // is a like-sign pair ?
-    Int_t          fMixNum;                  // number of mixed events
-    
-    // work management
-    AliRsnPairDef              *fPairDef;                // pair definition (particles, charges)
-    EPairType                   fPairType;               // pair type (PID + mixing or not)
-    AliRsnDaughter::EPIDMethod  fTypePID;                // pid type variable for single track
-    AliRsnCutMgr               *fCutMgr;                 // cut manager
-    TClonesArray                fFunctions;              // functions
+  private:
 
-    ClassDef (AliRsnPair, 1)
+    ClassDef(AliRsnPair, 2)
 };
 
 #endif
+