2 // *** Class AliRsnPair ***
6 // authors: A. Pulvirenti (email: alberto.pulvirenti@ct.infn.it)
7 // M. Vala (email: martin.vala@cern.ch)
17 #include "TClonesArray.h"
19 #include "AliRsnDaughter.h"
20 #include "AliRsnPairDef.h"
21 #include "AliRsnPairParticle.h"
22 #include "AliRsnEvent.h"
23 #include "AliRsnCutMgr.h"
24 #include "AliRsnPIDIndex.h"
28 class AliRsnPair : public TObject
34 kNoPID = 0, kNoPIDMix,
35 kRealisticPID, kRealisticPIDMix,
36 kPerfectPID, kPerfectPIDMix,
40 AliRsnPair(EPairType type = kRealisticPID, AliRsnPairDef *def = 0);
43 void Print(Option_t *option = "") const;
44 void LoopPair(AliRsnPIDIndex *pidIndex1, AliRsnEvent *ev1, AliRsnPIDIndex *pidIndex2 = 0, AliRsnEvent *ev2 = 0);
45 void LoopPair(TArrayI *a1, TArrayI *a2, AliRsnEvent *ev1, AliRsnEvent *ev2 = 0);
46 void SetCutMgr(AliRsnCutMgr* theValue) { fCutMgr = theValue; }
47 void AddFunction(AliRsnFunction *fcn);
48 TList* GenerateHistograms(TString prefix = "");
49 void GenerateHistograms(TString prefix, TList *tgt);
51 Bool_t IsMixed() {return fIsMixed;}
52 Bool_t IsPairEqual() {if (fPIDMethod == AliRsnDaughter::kNoPID) return (fPairDef->IsLikeSign());
53 else return (fPairDef->IsLikeSign() && fPairDef->HasEqualTypes());}
55 TString GetPairTypeName(EPairType type) const;
56 TString GetPairName() const;
57 TString GetPairHistName(AliRsnFunction *fcn, TString text = "") const;
58 TString GetPairHistTitle(AliRsnFunction *fcn, TString text = "") const;
62 AliRsnPair (const AliRsnPair ©) : TObject(copy),
63 fIsMixed(kFALSE),fPairType(kPairTypes),fPIDMethod(AliRsnDaughter::kRealistic),
64 fPairDef(0x0),fCutMgr(0x0),fFunctions("AliRsnFunction",0),fTrack1(),fTrack2(),fPairParticle() {}
65 AliRsnPair& operator=(const AliRsnPair&) {return *this;}
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 fIsMixed; // doing event-mixing ?
75 EPairType fPairType; // pair type (PID + mixing or not)
76 AliRsnDaughter::EPIDMethod fPIDMethod; // pid type variable for single track
78 AliRsnPairDef *fPairDef; // pair definition (particles, charges)
79 AliRsnCutMgr *fCutMgr; // cut manager
80 TClonesArray fFunctions; // functions
81 AliRsnDaughter fTrack1; // track #1 (external loop)
82 AliRsnDaughter fTrack2; // track #2 (internal loop)
83 AliRsnPairParticle fPairParticle; // track pair
85 ClassDef (AliRsnPair, 2)