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, nMixEvents);
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, nMixEvents);
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, nMixEvents);
69 AliRsnPair *pairLikePP_RealisticPID = new AliRsnPair(AliRsnPair::kRealisticPID, defLikePP);
70 AliRsnPair *pairLikeMM_RealisticPID = new AliRsnPair(AliRsnPair::kRealisticPID, defLikeMM);
73 // =========== END DEFINE PAIRS ==============
75 // =========== CUTS ==============
77 // cuts on single tracks:
78 // - pt between 0.2 and 10000.0 GeV/c
79 // - eta between -0.9 and 0.9 (ALICE acceptance)
81 AliRsnCut *cutDr = new AliRsnCut("cutDr", "", AliRsnCut::kRadialImpactParam, 0.0, 1.0);
82 AliRsnCut *cutPtMCPart = new AliRsnCut("cutPtMCPart", "cutPtMCPart", AliRsnCut::kTransMomentumMC, 0.2, 10000.0);
83 AliRsnCut *cutEtaMCPart = new AliRsnCut("cutMcEta", "cutMcEta", AliRsnCut::kEtaMC, -0.9, 0.9);
86 // - true daughters of a phi resonance (only for true pairs histogram)
87 AliRsnCut *cutTruePair = new AliRsnCut("cutTrue", "cutTrue", AliRsnCut::kIsTruePair, iResPDG);
89 // cut set definition for single particles
90 AliRsnCutSet *cutSetParticle = new AliRsnCutSet("partCut");
91 cutSetParticle->AddCut(cutPtMCPart);
92 cutSetParticle->AddCut(cutEtaMCPart);
93 cutSetParticle->AddCut(cutDr);
94 cutSetParticle->SetCutScheme("cutPtMCPart&cutMcEta&cutDr");
96 // cut set definition for true pairs
97 AliRsnCutSet *cutSetPairTrue = new AliRsnCutSet("truePairs");
98 cutSetPairTrue->AddCut(cutTruePair);
99 cutSetPairTrue->SetCutScheme("cutTrue");
101 // define cut manager for all histos but true pairs
102 AliRsnCutMgr *cutMgr = new AliRsnCutMgr("standard", "Standard cuts");
103 cutMgr->SetCutSet(AliRsnCut::kParticle, cutSetParticle);
105 // define cut manager for true pairs
106 AliRsnCutMgr *cutMgrTrue = new AliRsnCutMgr("true", "True pairs");
107 cutMgrTrue->SetCutSet(AliRsnCut::kParticle, cutSetParticle);
108 cutMgrTrue->SetCutSet(AliRsnCut::kPair, cutSetPairTrue);
110 // define cut for mixing
111 AliRsnCut *cutMult = new AliRsnCut("cutM", "", AliRsnCut::kMultiplicityDifference, 0, 10);
112 AliRsnCut *cutVz = new AliRsnCut("cutV", "", AliRsnCut::kVzDifference, 0.0, 3.0);
113 AliRsnCutSet *cutMixing = new AliRsnCutSet("");
114 cutMixing->AddCut(cutMult);
115 cutMixing->AddCut(cutVz);
116 cutMixing->SetCutScheme("cutM&cutV");
118 // add cuts to pair analysis
119 pairUnlike_NoPID_Signal->SetCutMgr(cutMgr);
120 pairUnlike_NoPID_True->SetCutMgr(cutMgrTrue);
121 pairUnlike_NoPID_Mix->SetCutMgr(cutMgr);
122 pairLikePP_NoPID->SetCutMgr(cutMgr);
123 pairLikeMM_NoPID->SetCutMgr(cutMgr);
125 pairUnlike_PerfectPID_Signal->SetCutMgr(cutMgr);
126 pairUnlike_PerfectPID_True->SetCutMgr(cutMgrTrue);
127 pairUnlike_PerfectPID_Mix->SetCutMgr(cutMgr);
128 pairLikePP_PerfectPID->SetCutMgr(cutMgr);
129 pairLikeMM_PerfectPID->SetCutMgr(cutMgr);
131 pairUnlike_RealisticPID_Signal->SetCutMgr(cutMgr);
132 pairUnlike_RealisticPID_True->SetCutMgr(cutMgrTrue);
133 pairUnlike_RealisticPID_Mix->SetCutMgr(cutMgr);
134 pairLikePP_RealisticPID->SetCutMgr(cutMgr);
135 pairLikeMM_RealisticPID->SetCutMgr(cutMgr);
137 pairUnlike_NoPID_Mix->SetMixingCut(cutMixing);
138 pairUnlike_PerfectPID_Mix->SetMixingCut(cutMixing);
139 pairUnlike_RealisticPID_Mix->SetMixingCut(cutMixing);
141 // =========== END CUTS ==============
143 // =========== FUNCTIONS ==============
145 // define histogram templates
146 AliRsnHistoDef *hdIM = new AliRsnHistoDef(800, 0.0, 2.0); // invmass
147 AliRsnHistoDef *hdRES = new AliRsnHistoDef(200, -10.0, 10.0); // resolution
148 AliRsnHistoDef *hdPt = new AliRsnHistoDef(10, 0.0, 10.0); // pt distribution
151 AliRsnFunction *fcnIM = new AliRsnFunction(AliRsnFunction::kInvMass, hdIM); // invmass
152 AliRsnFunction *fcnRES = new AliRsnFunction(AliRsnFunction::kResolution, hdRES); // IM resolution
153 AliRsnFunction *fcnPt = new AliRsnFunction(AliRsnFunction::kPtSpectrum, hdPt); // pt spectrum
155 // uncomment these lines when doing analysis in momentum bins
156 // in this case, take care of the dimension and values in the template array
157 Double_t mom[7] = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 10.0};
158 fcnIM->SetBinningCut(AliRsnCut::kTransMomentum, 7, mom);
159 fcnRES->SetBinningCut(AliRsnCut::kTransMomentum, 7, mom);
161 pairUnlike_NoPID_Signal->AddFunction(fcnIM);
162 pairUnlike_NoPID_True->AddFunction(fcnIM);
163 pairUnlike_NoPID_Mix->AddFunction(fcnIM);
164 pairLikePP_NoPID->AddFunction(fcnIM);
165 pairLikeMM_NoPID->AddFunction(fcnIM);
167 pairUnlike_PerfectPID_Signal->AddFunction(fcnIM);
168 pairUnlike_PerfectPID_True->AddFunction(fcnIM);
169 pairUnlike_PerfectPID_Mix->AddFunction(fcnIM);
170 pairLikePP_PerfectPID->AddFunction(fcnIM);
171 pairLikeMM_PerfectPID->AddFunction(fcnIM);
173 pairUnlike_RealisticPID_Signal->AddFunction(fcnIM);
174 pairUnlike_RealisticPID_True->AddFunction(fcnIM);
175 pairUnlike_RealisticPID_Mix->AddFunction(fcnIM);
176 pairLikePP_RealisticPID->AddFunction(fcnIM);
177 pairLikeMM_RealisticPID->AddFunction(fcnIM);
179 pairUnlike_NoPID_Signal->AddFunction(fcnRES);
180 pairUnlike_PerfectPID_Signal->AddFunction(fcnRES);
181 pairUnlike_RealisticPID_Signal->AddFunction(fcnRES);
183 pairUnlike_NoPID_True->AddFunction(fcnPt);
184 pairUnlike_PerfectPID_True->AddFunction(fcnPt);
185 pairUnlike_RealisticPID_True->AddFunction(fcnPt);
187 // =========== END FUNCTIONS =============
190 pairMgr->AddPair(pairUnlike_NoPID_Signal);
191 pairMgr->AddPair(pairUnlike_NoPID_True);
192 pairMgr->AddPair(pairUnlike_NoPID_Mix);
193 pairMgr->AddPair(pairLikePP_NoPID);
194 pairMgr->AddPair(pairLikeMM_NoPID);
197 if (boolUsePerfectPID) {
198 pairMgr->AddPair(pairUnlike_PerfectPID_Signal);
199 pairMgr->AddPair(pairUnlike_PerfectPID_True);
200 pairMgr->AddPair(pairUnlike_PerfectPID_Mix);
201 pairMgr->AddPair(pairLikePP_PerfectPID);
202 pairMgr->AddPair(pairLikeMM_PerfectPID);
205 if (boolUseRealisticPID) {
206 pairMgr->AddPair(pairUnlike_RealisticPID_Signal);
207 pairMgr->AddPair(pairUnlike_RealisticPID_True);
208 pairMgr->AddPair(pairUnlike_RealisticPID_Mix);
209 pairMgr->AddPair(pairLikePP_RealisticPID);
210 pairMgr->AddPair(pairLikeMM_RealisticPID);