2 // Creates an AliRsnPairMgr containing all invmass spectra
3 // for the PHI --> K+ K- resonance:
10 // When required, PDG code of phi is 333
12 // In order to allow analysis customization, some user-defined parameters
13 // are listed at the beginning of this macro, to define some details like
14 // the number of event mixing to do, and what PID to be used.
15 // Since they are many, they are hard-coded in the macro and the user should
16 // take care of them when launching it for an analysis.
17 // Moreover, here some cuts are defined, which are very general: if a user
18 // wants to add more specific cuts, he should take a look to the "CUTS" section
21 // The idea of this macro is to be loaded and launched from another
22 // upper-level macro which prepares the AnalysisTask object to run it,
23 // which is defined in "CreateAnalysisManager.C" macro in this directory
26 AliRsnPairMgr* CreatePairsPhi(const char *name = "PHI")
28 AliRsnPairMgr *pairMgr = new AliRsnPairMgr(name);
30 // ========== USER CUSTOMIZATION VARIABLES ==========
33 Int_t nMixEvents = 10;
34 Bool_t boolUseNoPID = kTRUE;
35 Bool_t boolUseRealisticPID = kTRUE;
36 Bool_t boolUsePerfectPID = kTRUE;
38 // ======= END USER CUSTOMIZATION VARIABLES =========
40 // =========== DEFINE PAIRS ==============
42 // decay tree definitions
43 // for a PHI resonance (PDG = 333) decaying into K+ K-
44 // and for related like-sign pairs
45 AliRsnPairDef *defUnlike = new AliRsnPairDef(AliRsnPID::kKaon, '+', AliRsnPID::kKaon, '-', iResPDG);
46 AliRsnPairDef *defLikePP = new AliRsnPairDef(AliRsnPID::kKaon, '+', AliRsnPID::kKaon, '+', iResPDG);
47 AliRsnPairDef *defLikeMM = new AliRsnPairDef(AliRsnPID::kKaon, '-', AliRsnPID::kKaon, '-', iResPDG);
50 AliRsnPair *pairUnlike_NoPID_Signal = new AliRsnPair(AliRsnPair::kNoPID, defUnlike);
51 AliRsnPair *pairUnlike_NoPID_True = new AliRsnPair(AliRsnPair::kNoPID, defUnlike);
52 AliRsnPair *pairUnlike_NoPID_Mix = new AliRsnPair(AliRsnPair::kNoPIDMix, defUnlike);
53 AliRsnPair *pairLikePP_NoPID = new AliRsnPair(AliRsnPair::kNoPID, defLikePP);
54 AliRsnPair *pairLikeMM_NoPID = new AliRsnPair(AliRsnPair::kNoPID, defLikeMM);
58 AliRsnPair *pairUnlike_PerfectPID_Signal = new AliRsnPair(AliRsnPair::kPerfectPID, defUnlike);
59 AliRsnPair *pairUnlike_PerfectPID_True = new AliRsnPair(AliRsnPair::kPerfectPID, defUnlike);
60 AliRsnPair *pairUnlike_PerfectPID_Mix = new AliRsnPair(AliRsnPair::kPerfectPIDMix, defUnlike);
61 AliRsnPair *pairLikePP_PerfectPID = new AliRsnPair(AliRsnPair::kPerfectPID, defLikePP);
62 AliRsnPair *pairLikeMM_PerfectPID = new AliRsnPair(AliRsnPair::kPerfectPID, defLikeMM);
66 AliRsnPair *pairUnlike_RealisticPID_Signal = new AliRsnPair(AliRsnPair::kRealisticPID, defUnlike);
67 AliRsnPair *pairUnlike_RealisticPID_True = new AliRsnPair(AliRsnPair::kRealisticPID, defUnlike);
68 AliRsnPair *pairUnlike_RealisticPID_Mix = new AliRsnPair(AliRsnPair::kRealisticPIDMix, defUnlike);
69 AliRsnPair *pairLikePP_RealisticPID = new AliRsnPair(AliRsnPair::kRealisticPID, defLikePP);
70 AliRsnPair *pairLikeMM_RealisticPID = new AliRsnPair(AliRsnPair::kRealisticPID, defLikeMM);
73 // =========== END DEFINE PAIRS ==============
75 // =========== CUTS ==============
78 // - defined in 'AddRsnAnalysisTask.C' for single-step analysis
81 // - true daughters of a phi resonance (only for true pairs histogram)
82 AliRsnCut *cutTruePair = new AliRsnCut("cutTrue", "cutTrue", AliRsnCut::kIsTruePair, iResPDG);
84 // cut set definition for true pairs
85 AliRsnCutSet *cutSetPairTrue = new AliRsnCutSet("truePairs");
86 cutSetPairTrue->AddCut(cutTruePair);
87 cutSetPairTrue->SetCutScheme("cutTrue");
89 // define cut manager for true pairs
90 AliRsnCutMgr *cutMgrTrue = new AliRsnCutMgr("true", "True pairs");
91 cutMgrTrue->SetCutSet(AliRsnCut::kPair, cutSetPairTrue);
93 // add cuts to pair analysis
94 pairUnlike_NoPID_True->SetCutMgr(cutMgrTrue);
95 pairUnlike_PerfectPID_True->SetCutMgr(cutMgrTrue);
96 pairUnlike_RealisticPID_True->SetCutMgr(cutMgrTrue);
98 // =========== END CUTS ==============
100 // =========== FUNCTIONS ==============
102 // define histogram templates
103 AliRsnHistoDef *hdIM = new AliRsnHistoDef(800, 0.0, 2.0); // invmass
104 AliRsnHistoDef *hdRES = new AliRsnHistoDef(200, -10.0, 10.0); // resolution
107 AliRsnFunction *fcnIM = new AliRsnFunction(AliRsnFunction::kInvMass, hdIM); // invmass
108 AliRsnFunction *fcnRES = new AliRsnFunction(AliRsnFunction::kResolution, hdRES); // IM resolution
110 // uncomment these lines when doing analysis in momentum bins
111 // in this case, take care of the dimension and values in the template array
112 Double_t mom[7] = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 10.0};
113 fcnIM->SetBinningCut(AliRsnCut::kTransMomentum, 7, mom);
114 fcnRES->SetBinningCut(AliRsnCut::kTransMomentum, 7, mom);
116 pairUnlike_NoPID_Signal->AddFunction(fcnIM);
117 pairUnlike_NoPID_True->AddFunction(fcnIM);
118 pairUnlike_NoPID_Mix->AddFunction(fcnIM);
119 pairLikePP_NoPID->AddFunction(fcnIM);
120 pairLikeMM_NoPID->AddFunction(fcnIM);
122 pairUnlike_PerfectPID_Signal->AddFunction(fcnIM);
123 pairUnlike_PerfectPID_True->AddFunction(fcnIM);
124 pairUnlike_PerfectPID_Mix->AddFunction(fcnIM);
125 pairLikePP_PerfectPID->AddFunction(fcnIM);
126 pairLikeMM_PerfectPID->AddFunction(fcnIM);
128 pairUnlike_RealisticPID_Signal->AddFunction(fcnIM);
129 pairUnlike_RealisticPID_True->AddFunction(fcnIM);
130 pairUnlike_RealisticPID_Mix->AddFunction(fcnIM);
131 pairLikePP_RealisticPID->AddFunction(fcnIM);
132 pairLikeMM_RealisticPID->AddFunction(fcnIM);
134 pairUnlike_NoPID_Signal->AddFunction(fcnRES);
135 pairUnlike_PerfectPID_Signal->AddFunction(fcnRES);
136 pairUnlike_RealisticPID_Signal->AddFunction(fcnRES);
138 // =========== END FUNCTIONS =============
141 pairMgr->AddPair(pairUnlike_NoPID_Signal);
142 pairMgr->AddPair(pairUnlike_NoPID_True);
143 pairMgr->AddPair(pairUnlike_NoPID_Mix);
144 pairMgr->AddPair(pairLikePP_NoPID);
145 pairMgr->AddPair(pairLikeMM_NoPID);
148 if (boolUsePerfectPID) {
149 pairMgr->AddPair(pairUnlike_PerfectPID_Signal);
150 pairMgr->AddPair(pairUnlike_PerfectPID_True);
151 pairMgr->AddPair(pairUnlike_PerfectPID_Mix);
152 pairMgr->AddPair(pairLikePP_PerfectPID);
153 pairMgr->AddPair(pairLikeMM_PerfectPID);
156 if (boolUseRealisticPID) {
157 pairMgr->AddPair(pairUnlike_RealisticPID_Signal);
158 pairMgr->AddPair(pairUnlike_RealisticPID_True);
159 pairMgr->AddPair(pairUnlike_RealisticPID_Mix);
160 pairMgr->AddPair(pairLikePP_RealisticPID);
161 pairMgr->AddPair(pairLikeMM_RealisticPID);