]>
Commit | Line | Data |
---|---|---|
b897ea8d | 1 | /*************************************************************************** |
2 | // Modified by Enrico Fragiacomo - 15/01/2014 | |
3 | // Based on AddAnalysisTaskRsnMini | |
4 | // pPb specific settings from AddTaskKStarPPB.C | |
5 | // | |
6 | // Macro to configure the SigmaStar analysis task | |
7 | // It calls all configs desired by the user, by means | |
8 | // of the boolean switches defined in the first lines. | |
9 | // --- | |
10 | // Inputs: | |
11 | // 1) flag to know if running on MC or data | |
12 | // 2) collision system, whether pp, pPb or PbPb | |
13 | // -- | |
14 | // Returns: | |
15 | // kTRUE --> initialization successful | |
16 | // kFALSE --> initialization failed (some config gave errors) | |
17 | // | |
18 | ****************************************************************************/ | |
c09cb973 | 19 | |
b897ea8d | 20 | enum ERsnCollType_t { kPP=0, |
21 | kPPb, | |
22 | kPbPb}; | |
23 | ||
24 | enum pairYCutSet { kPairDefault, | |
25 | kNegative, | |
26 | kCentral | |
27 | }; | |
28 | ||
29 | enum eventCutSet { kOld = -1, | |
30 | kEvtDefault, //=0 | |
31 | kNoPileUpCut, //=1 | |
32 | kPileUpMV, //=2 | |
33 | kPileUpSPD3, //=3 | |
34 | kDefaultVtx8, //=4 | |
35 | kDefaultVtx5 //=5 | |
36 | }; | |
37 | ||
38 | enum eventMixConfig { kDisabled = -1, | |
39 | kMixDefault,//=0 //10 events, Dvz = 1cm, DC = 10 | |
40 | k5Evts, //=1 //5 events, Dvz = 1cm, DC = 10 | |
41 | k5Cent, //=2 //10 events, Dvz = 1cm, DC = 5 | |
42 | }; | |
43 | ||
44 | AliRsnMiniAnalysisTask *AddTaskSigmaStar | |
45 | ( | |
46 | Bool_t isMC, | |
47 | Int_t collSyst, | |
48 | Float_t cutV = 10.0, | |
49 | Int_t evtCutSetID = 0, | |
50 | Int_t pairCutSetID = 0, | |
51 | Int_t mixingConfigID = 0, | |
52 | Int_t aodFilterBit = 5, | |
53 | Int_t piPIDCut = 3.0, | |
54 | Int_t pPIDCut = 3.0, | |
55 | Float_t trackDCAcut = 7.0, | |
56 | Float_t massTol = 0.01, | |
57 | Float_t lambdaDCA = 0.3, | |
58 | Float_t lambdaCosPoinAn = 0.97, | |
59 | Float_t lambdaDaughDCA = 0.5, | |
60 | Int_t NTPCcluster = 70, | |
61 | Float_t maxDiffVzMix = 1.0, | |
62 | Float_t maxDiffMultMix = 10.0, | |
63 | Float_t maxDiffAngleMixDeg = 20.0, | |
64 | Int_t aodN = 68, | |
65 | TString outNameSuffix = "Sigma1385" | |
66 | ) | |
67 | { | |
68 | ||
69 | //------------------------------------------- | |
70 | // event cuts | |
71 | // Note that some default values refer to pPb data 2013 | |
72 | // settings from AddTaskKStarPPB.C by Francesca Bellini | |
73 | //------------------------------------------- | |
74 | UInt_t triggerMask = AliVEvent::kINT7; | |
75 | Bool_t rmFirstEvtChunk = kTRUE; //needed for pA 2013 | |
76 | Bool_t rejectPileUp = kTRUE; //best if used, for pA 2013 | |
77 | Int_t MinPlpContribSPD = 5; //default value if used | |
78 | Bool_t useMVPileUpSelection = kFALSE; // | |
79 | Int_t MinPlpContribMV = 5; //default value if used | |
80 | Bool_t useVtxCut2013pA = kTRUE; //default use recommended 2013 pA vtx selection | |
81 | Double_t vtxZcut = 10.0; //cm, default cut on vtx z | |
82 | ||
83 | if (evtCutSetID==eventCutSet::kOld) { | |
84 | triggerMask = AliVEvent::kAnyINT; | |
85 | rmFirstEvtChunk = kFALSE; | |
86 | rejectPileUp = kFALSE; | |
87 | useVtxCut2013pA = kFALSE; | |
88 | } | |
89 | ||
90 | if (evtCutSetID==eventCutSet::kNoPileUpCut) { | |
91 | rmFirstEvtChunk = kTRUE; | |
92 | rejectPileUp = kFALSE; | |
93 | } | |
94 | ||
95 | if (evtCutSetID==eventCutSet::kPileUpMV) { | |
96 | useMVPileUpSelection = kTRUE; | |
97 | MinPlpContribSPD = 3; | |
98 | //MinPlpContribMV = 5; //already set as default | |
99 | } | |
100 | ||
101 | if (evtCutSetID==eventCutSet::kPileUpSPD3) { | |
102 | MinPlpContribSPD = 3; | |
103 | } | |
104 | ||
105 | if (evtCutSetID==eventCutSet::kDefaultVtx8){ | |
106 | vtxZcut = 8.0; //cm | |
107 | } | |
108 | ||
109 | if (evtCutSetID==eventCutSet::kDefaultVtx5){ | |
110 | vtxZcut = 5.0; //cm | |
111 | } | |
112 | ||
113 | //------------------------------------------- | |
114 | //pair cuts | |
115 | //------------------------------------------- | |
116 | Double_t minYlab = -0.5; | |
117 | Double_t maxYlab = 0.5; | |
118 | ||
c09cb973 | 119 | if( collSyst==kPPb ) { |
b897ea8d | 120 | if (pairCutSetID==pairYCutSet::kPairDefault) { //0<y_cm<0.5 |
121 | minYlab = -0.465; maxYlab = 0.035; | |
122 | } | |
123 | ||
124 | if (pairCutSetID==pairYCutSet::kNegative) { //-0.5<y_cm<0.0 | |
125 | minYlab = -0.965; maxYlab = -0.465; | |
126 | } | |
127 | ||
128 | if (pairCutSetID==pairYCutSet::kCentral) { //|y_cm|<0.3 | |
129 | minYlab = -0.765; maxYlab = -0.165; | |
130 | } | |
131 | } | |
132 | ::Info("AddTaskSigmaStar", Form("Min rapidity = %6.3f, Max rapidity = %6.3f", minYlab, maxYlab) ); | |
133 | ||
134 | //------------------------------------------- | |
135 | //mixing settings | |
136 | //------------------------------------------- | |
137 | ||
138 | Int_t nmix = 0; | |
139 | Float_t maxDiffVzMix = 1.0; | |
140 | Float_t maxDiffMultMix = 10.0; | |
141 | ||
142 | if (mixingConfigID == eventMixConfig::kMixDefault) { | |
143 | nmix = 10; | |
144 | } | |
145 | ||
146 | if (mixingConfigID == eventMixConfig::k5Evts) { | |
147 | nmix = 5; | |
148 | } | |
149 | ||
150 | if (mixingConfigID == eventMixConfig::k5Cent) { | |
151 | maxDiffMultMix = 5; | |
152 | } | |
153 | ||
154 | // | |
155 | // -- INITIALIZATION ---------------------------------------------------------------------------- | |
156 | // retrieve analysis manager | |
157 | // | |
158 | ||
159 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
160 | if (!mgr) { | |
161 | ::Error("AddTaskSigmaStar", "No analysis manager to connect to."); | |
162 | return NULL; | |
163 | } | |
164 | ||
165 | // create the task and configure | |
166 | TString collSystName; | |
167 | if(collSyst==kPP) collSystName="pp"; | |
168 | else if(collSyst==kPPb) collSystName="pPb"; | |
169 | else collSystName="PbPb"; | |
170 | ||
33131d21 | 171 | TString taskName = Form("SigmaStar%s%s_%.1f_%d_%d_%d_%.2f_%.2f_%.1f_%.2f_%.1f", |
b897ea8d | 172 | collSystName.Data(), (isMC ? "MC" : "Data"),cutV,NTPCcluster,piPIDCut,pPIDCut,trackDCAcut,massTol,lambdaDCA,lambdaCosPoinAn,lambdaDaughDCA); |
173 | ||
174 | AliRsnMiniAnalysisTask *task = new AliRsnMiniAnalysisTask(taskName.Data(), isMC); | |
175 | if (!isMC && (collSyst==kPP) ){ | |
176 | Printf(Form("========== SETTING USE CENTRALITY PATCH AOD049 : %s", (aodN==49)? "yes" : "no")); | |
177 | task->SetUseCentralityPatch(aodN==49); | |
178 | } | |
179 | ||
c09cb973 | 180 | if(collSyst==kPPb) task->UseESDTriggerMask(triggerMask); |
181 | ||
182 | ||
84a2dbef | 183 | if(collSyst==kPPb) |
184 | task->SelectCollisionCandidates(triggerMask); // | |
185 | else if ( collSyst == kPP ) | |
186 | task->SelectCollisionCandidates(AliVEvent::kMB); // | |
187 | else | |
188 | task->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kCentral | AliVEvent::kSemiCentral); | |
c09cb973 | 189 | |
190 | ||
b897ea8d | 191 | if ( collSyst == kPP ) |
192 | task->UseMultiplicity("QUALITY"); | |
84a2dbef | 193 | else if(collSyst==kPPb) |
194 | task->UseCentrality("V0A"); | |
b897ea8d | 195 | else |
196 | task->UseCentrality("V0M"); | |
197 | ||
198 | // set event mixing options | |
199 | task->UseContinuousMix(); | |
200 | //task->UseBinnedMix(); | |
201 | task->SetNMix(nmix); | |
202 | task->SetMaxDiffVz(maxDiffVzMix); | |
203 | task->SetMaxDiffMult(maxDiffMultMix); | |
204 | ||
205 | if (! (collSyst==kPP) ) task->SetMaxDiffAngle(maxDiffAngleMixDeg*TMath::DegToRad()); //set angle diff in rad | |
206 | ::Info("AddTaskSigmaStar", Form("Event mixing configuration: \n events to mix = %i \n max diff. vtxZ = cm %5.3f \n max diff multi = %5.3f \n max diff EP angle = %5.3f deg", nmix, maxDiffVzMix, maxDiffMultMix, ( !collSyst ? 0.0 : maxDiffAngleMixDeg))); | |
207 | ||
208 | mgr->AddTask(task); | |
209 | ||
210 | // | |
211 | // -- EVENT CUTS (same for all configs) --------------------------------------------------------- | |
212 | // | |
213 | // cut on primary vertex: | |
214 | // - 2nd argument --> |Vz| range | |
215 | // - 3rd argument --> minimum required number of contributors | |
216 | // - 4th argument --> tells if TPC stand-alone vertexes must be accepted | |
217 | ||
218 | AliRsnCutPrimaryVertex *cutVertex = new AliRsnCutPrimaryVertex("cutVertex", cutV, 0, kFALSE); | |
219 | if ( collSyst == kPP ) cutVertex->SetCheckPileUp(kTRUE); // set the check for pileup | |
220 | ||
c09cb973 | 221 | if (collSyst==kPPb) { |
222 | //set check for pileup in 2013 | |
223 | AliRsnCutEventUtils *cutEventUtils = new AliRsnCutEventUtils("cutEventUtils", rmFirstEvtChunk, rejectPileUp); | |
224 | cutEventUtils->SetUseVertexSelection2013pA(useVtxCut2013pA); | |
225 | ::Info("AddTaskSigmaStar", Form(":::::::::::::::::: Vertex cut as pA 2013: %s", (useVtxCut2013pA?"ON":"OFF"))); | |
226 | if (useMVPileUpSelection){ | |
227 | cutEventUtils->SetUseMVPlpSelection(useMVPileUpSelection); | |
228 | cutEventUtils->SetMinPlpContribMV(MinPlpContribMV); | |
229 | cutEventUtils->SetMinPlpContribSPD(MinPlpContribSPD); | |
230 | ::Info("AddTaskSigmaStar", Form("Multiple-vtx Pile-up rejection settings: MinPlpContribMV = %i, MinPlpContribSPD = %i", | |
231 | MinPlpContribMV, MinPlpContribSPD)); | |
232 | } else { | |
233 | cutEventUtils->SetMinPlpContribSPD(MinPlpContribSPD); | |
234 | ::Info("AddTaskSigmaStar", Form("SPD Pile-up rejection settings: MinPlpContribSPD = %i", MinPlpContribSPD)); | |
235 | } | |
236 | ::Info("AddTaskSigmaStar", Form(":::::::::::::::::: Pile-up rejection mode: %s", (rejectPileUp?"ON":"OFF"))); | |
237 | ::Info("AddTaskSigmaStar", Form("::::::::::::: Remove first event in chunk: %s", (rmFirstEvtChunk?"ON":"OFF"))); | |
b897ea8d | 238 | } |
b897ea8d | 239 | |
240 | // define and fill cut set for event cut | |
241 | AliRsnCutSet *eventCuts = new AliRsnCutSet("eventCuts", AliRsnTarget::kEvent); | |
c09cb973 | 242 | if (collSyst==kPPb) eventCuts->AddCut(cutEventUtils); |
243 | else eventCuts->AddCut(cutVertex); | |
b897ea8d | 244 | eventCuts->SetCutScheme(cutVertex->GetName()); |
245 | // set cuts in task | |
246 | task->SetEventCuts(eventCuts); | |
247 | ||
248 | // | |
249 | // -- EVENT-ONLY COMPUTATIONS ------------------------------------------------------------------- | |
250 | // | |
251 | //vertex | |
252 | Int_t vtxID = task->CreateValue(AliRsnMiniValue::kVz, kFALSE); | |
253 | AliRsnMiniOutput *outVtx = task->CreateOutput("eventVtx", "HIST", "EVENT"); | |
254 | outVtx->AddAxis(vtxID, 400, -20.0, 20.0); | |
255 | ||
256 | //multiplicity or centrality | |
257 | Int_t multID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE); | |
258 | AliRsnMiniOutput *outMult = task->CreateOutput("eventMult", "HIST", "EVENT"); | |
259 | if (collSyst==kPP) | |
260 | outMult->AddAxis(multID, 400, 0.0, 400.0); | |
261 | else | |
262 | outMult->AddAxis(multID, 100, 0.0, 100.0); | |
263 | ||
264 | //event plane (only for PbPb) | |
265 | Int_t planeID = task->CreateValue(AliRsnMiniValue::kPlaneAngle, kFALSE); | |
266 | AliRsnMiniOutput *outPlane = 0x0; //task->CreateOutput("eventPlane", "HIST", "EVENT"); | |
267 | if ( collSyst==kPbPb ){ | |
268 | outPlane = task->CreateOutput("eventPlane", "HIST", "EVENT"); | |
269 | outPlane->AddAxis(planeID, 180, 0.0, TMath::Pi()); | |
270 | } | |
271 | ||
84a2dbef | 272 | |
b897ea8d | 273 | // |
274 | // -- PAIR CUTS (common to all resonances) ------------------------------------------------------ | |
275 | // | |
276 | AliRsnCutMiniPair *cutY = new AliRsnCutMiniPair("cutRapidity", AliRsnCutMiniPair::kRapidityRange); | |
277 | cutY->SetRangeD(minYlab, maxYlab); | |
278 | ||
279 | AliRsnCutSet *cutsPair = new AliRsnCutSet("pairCuts", AliRsnTarget::kMother); | |
280 | cutsPair->AddCut(cutY); | |
281 | cutsPair->SetCutScheme(cutY->GetName()); | |
282 | ||
283 | // | |
284 | // -- CONFIG ANALYSIS -------------------------------------------------------------------------- | |
285 | gROOT->LoadMacro("$ALICE_ROOT/PWGLF/RESONANCES/macros/mini/ConfigSigmaStar.C"); | |
286 | if (isMC) { | |
287 | Printf("========================== MC analysis - PID cuts not used"); | |
288 | ||
289 | } else | |
290 | Printf("========================== DATA analysis - PID cuts used"); | |
c09cb973 | 291 | |
b897ea8d | 292 | if (!ConfigSigmaStar(task, collSyst, isMC, piPIDCut, pPIDCut, aodFilterBit, trackDCAcut, massTol, lambdaDCA, lambdaCosPoinAn, lambdaDaughDCA, NTPCcluster, "", cutsPair)) return 0x0; |
293 | ||
294 | // | |
295 | // -- CONTAINERS -------------------------------------------------------------------------------- | |
296 | // | |
297 | TString outputFileName = AliAnalysisManager::GetCommonFileName(); | |
298 | // outputFileName += ":Rsn"; | |
299 | Printf("AddTaskSigmaStar - Set OutputFileName : \n %s\n", outputFileName.Data() ); | |
300 | ||
33131d21 | 301 | |
302 | AliAnalysisDataContainer *output = mgr->CreateContainer(Form("RsnOut_%s_%.1f_%d_%d_%d_%.2f_%.2f_%.1f_%.2f_%.1f", | |
303 | outNameSuffix.Data(),cutV,NTPCcluster,piPIDCut,pPIDCut, | |
304 | trackDCAcut,massTol,lambdaDCA,lambdaCosPoinAn,lambdaDaughDCA), | |
b897ea8d | 305 | TList::Class(), |
306 | AliAnalysisManager::kOutputContainer, | |
307 | outputFileName); | |
33131d21 | 308 | |
b897ea8d | 309 | mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer()); |
310 | mgr->ConnectOutput(task, 1, output); | |
311 | ||
312 | return task; | |
313 | } |