2 // *** Class AliRsnPair ***
6 // authors: A. Pulvirenti (email: alberto.pulvirenti@ct.infn.it)
7 // M. Vala (email: martin.vala@cern.ch)
13 #include "TClonesArray.h"
15 #include "AliRsnDaughter.h"
16 #include "AliRsnPairDef.h"
17 #include "AliRsnPairParticle.h"
29 class AliRsnPair : public TObject
34 kNoPID = 0, kNoPIDMix,
35 kRealisticPID, kRealisticPIDMix,
36 kPerfectPID, kPerfectPIDMix,
40 AliRsnPair(EPairType type = kRealisticPID, AliRsnPairDef *def = 0);
41 AliRsnPair(const AliRsnPair ©);
42 AliRsnPair& operator=(const AliRsnPair&);
45 void SetOnlyTrue(Bool_t onlyTrue = kTRUE) {fOnlyTrue = onlyTrue;}
47 void Print(Option_t *option = "") const;
48 void LoopPair(AliRsnPIDIndex*const pidIndex1, AliRsnEvent*const ev1, AliRsnPIDIndex*const pidIndex2 = 0, AliRsnEvent* ev2 = 0);
49 void LoopPair(TArrayI *a1, TArrayI *a2, AliRsnEvent *ev1, AliRsnEvent *ev2 = 0);
50 void SetCutMgr(AliRsnCutMgr* const mgr) { fCutMgr = mgr; }
51 void AddFunction(AliRsnFunction*const fcn);
52 TList* GenerateHistograms(TString prefix = "", TList *list=0);
54 Bool_t IsMixed() const {return fIsMixed;}
55 Bool_t IsPairEqual() const {
56 if (fPIDMethod == AliRsnDaughter::kNoPID) return (fPairDef->IsLikeSign());
57 else return (fPairDef->IsLikeSign() && fPairDef->HasEqualTypes());
60 TString GetPairTypeName(EPairType type) const;
61 TString GetPairName() const;
62 TString GetPairHistName(AliRsnFunction *const fcn, TString text = "") const;
63 TString GetPairHistTitle(AliRsnFunction *const fcn, TString text = "") const;
67 void SetUp(EPairType type);
68 void SetAllFlags(AliRsnDaughter::EPIDMethod pid, Bool_t mix) {fPIDMethod = pid; fIsMixed = mix;}
70 Bool_t CutPass(AliRsnDaughter *d);
71 Bool_t CutPass(AliRsnPairParticle *p);
72 Bool_t CutPass(AliRsnEvent *e);
74 Bool_t fOnlyTrue; // select true pairs only?
75 Bool_t fIsMixed; // doing event-mixing ?
76 EPairType fPairType; // pair type (PID + mixing or not)
77 AliRsnDaughter::EPIDMethod fPIDMethod; // pid type variable for single track
79 AliRsnPairDef *fPairDef; // pair definition (particles, charges)
80 AliRsnCutMgr *fCutMgr; // cut manager
81 TClonesArray fFunctions; // functions
82 AliRsnDaughter fTrack1; // track #1 (external loop)
83 AliRsnDaughter fTrack2; // track #2 (internal loop)
84 AliRsnPairParticle fPairParticle; // track pair
86 ClassDef(AliRsnPair, 2)