]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/RESONANCES/macros/mini/AddTaskSigmaStar.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / mini / AddTaskSigmaStar.C
CommitLineData
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 20enum ERsnCollType_t { kPP=0,
21 kPPb,
22 kPbPb};
23
24enum pairYCutSet { kPairDefault,
25 kNegative,
26 kCentral
27 };
28
29enum eventCutSet { kOld = -1,
30 kEvtDefault, //=0
31 kNoPileUpCut, //=1
32 kPileUpMV, //=2
33 kPileUpSPD3, //=3
34 kDefaultVtx8, //=4
35 kDefaultVtx5 //=5
36 };
37
38enum 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
44AliRsnMiniAnalysisTask *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,
e0b8b81a 53 Float_t piPIDCut = 3.0,
54 Float_t pPIDCut = 3.0,
b897ea8d 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
e0b8b81a 171 TString taskName = Form("SigmaStar%s%s_%.1f_%d_%.1f_%.1f_%.2f_%.4f_%.2f_%.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);
8ac16a85 181 else if(collSyst==kPbPb) task->UseESDTriggerMask(AliVEvent::kMB | AliVEvent::kCentral | AliVEvent::kSemiCentral);
c09cb973 182
183
84a2dbef 184 if(collSyst==kPPb)
185 task->SelectCollisionCandidates(triggerMask); //
186 else if ( collSyst == kPP )
187 task->SelectCollisionCandidates(AliVEvent::kMB); //
188 else
189 task->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kCentral | AliVEvent::kSemiCentral);
c09cb973 190
8ac16a85 191
192
b897ea8d 193 if ( collSyst == kPP )
194 task->UseMultiplicity("QUALITY");
84a2dbef 195 else if(collSyst==kPPb)
196 task->UseCentrality("V0A");
b897ea8d 197 else
198 task->UseCentrality("V0M");
199
200 // set event mixing options
201 task->UseContinuousMix();
202 //task->UseBinnedMix();
203 task->SetNMix(nmix);
204 task->SetMaxDiffVz(maxDiffVzMix);
205 task->SetMaxDiffMult(maxDiffMultMix);
206
207 if (! (collSyst==kPP) ) task->SetMaxDiffAngle(maxDiffAngleMixDeg*TMath::DegToRad()); //set angle diff in rad
208 ::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)));
209
210 mgr->AddTask(task);
211
212 //
213 // -- EVENT CUTS (same for all configs) ---------------------------------------------------------
214 //
215 // cut on primary vertex:
216 // - 2nd argument --> |Vz| range
217 // - 3rd argument --> minimum required number of contributors
218 // - 4th argument --> tells if TPC stand-alone vertexes must be accepted
219
220 AliRsnCutPrimaryVertex *cutVertex = new AliRsnCutPrimaryVertex("cutVertex", cutV, 0, kFALSE);
221 if ( collSyst == kPP ) cutVertex->SetCheckPileUp(kTRUE); // set the check for pileup
222
c09cb973 223 if (collSyst==kPPb) {
224 //set check for pileup in 2013
225 AliRsnCutEventUtils *cutEventUtils = new AliRsnCutEventUtils("cutEventUtils", rmFirstEvtChunk, rejectPileUp);
226 cutEventUtils->SetUseVertexSelection2013pA(useVtxCut2013pA);
227 ::Info("AddTaskSigmaStar", Form(":::::::::::::::::: Vertex cut as pA 2013: %s", (useVtxCut2013pA?"ON":"OFF")));
228 if (useMVPileUpSelection){
229 cutEventUtils->SetUseMVPlpSelection(useMVPileUpSelection);
230 cutEventUtils->SetMinPlpContribMV(MinPlpContribMV);
231 cutEventUtils->SetMinPlpContribSPD(MinPlpContribSPD);
232 ::Info("AddTaskSigmaStar", Form("Multiple-vtx Pile-up rejection settings: MinPlpContribMV = %i, MinPlpContribSPD = %i",
233 MinPlpContribMV, MinPlpContribSPD));
234 } else {
235 cutEventUtils->SetMinPlpContribSPD(MinPlpContribSPD);
236 ::Info("AddTaskSigmaStar", Form("SPD Pile-up rejection settings: MinPlpContribSPD = %i", MinPlpContribSPD));
237 }
238 ::Info("AddTaskSigmaStar", Form(":::::::::::::::::: Pile-up rejection mode: %s", (rejectPileUp?"ON":"OFF")));
239 ::Info("AddTaskSigmaStar", Form("::::::::::::: Remove first event in chunk: %s", (rmFirstEvtChunk?"ON":"OFF")));
b897ea8d 240 }
b897ea8d 241
242 // define and fill cut set for event cut
243 AliRsnCutSet *eventCuts = new AliRsnCutSet("eventCuts", AliRsnTarget::kEvent);
c09cb973 244 if (collSyst==kPPb) eventCuts->AddCut(cutEventUtils);
245 else eventCuts->AddCut(cutVertex);
b897ea8d 246 eventCuts->SetCutScheme(cutVertex->GetName());
247 // set cuts in task
248 task->SetEventCuts(eventCuts);
249
250 //
251 // -- EVENT-ONLY COMPUTATIONS -------------------------------------------------------------------
252 //
253 //vertex
254 Int_t vtxID = task->CreateValue(AliRsnMiniValue::kVz, kFALSE);
255 AliRsnMiniOutput *outVtx = task->CreateOutput("eventVtx", "HIST", "EVENT");
256 outVtx->AddAxis(vtxID, 400, -20.0, 20.0);
257
258 //multiplicity or centrality
259 Int_t multID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE);
260 AliRsnMiniOutput *outMult = task->CreateOutput("eventMult", "HIST", "EVENT");
261 if (collSyst==kPP)
262 outMult->AddAxis(multID, 400, 0.0, 400.0);
263 else
264 outMult->AddAxis(multID, 100, 0.0, 100.0);
265
266 //event plane (only for PbPb)
267 Int_t planeID = task->CreateValue(AliRsnMiniValue::kPlaneAngle, kFALSE);
268 AliRsnMiniOutput *outPlane = 0x0; //task->CreateOutput("eventPlane", "HIST", "EVENT");
269 if ( collSyst==kPbPb ){
270 outPlane = task->CreateOutput("eventPlane", "HIST", "EVENT");
271 outPlane->AddAxis(planeID, 180, 0.0, TMath::Pi());
272 }
273
84a2dbef 274
b897ea8d 275 //
276 // -- PAIR CUTS (common to all resonances) ------------------------------------------------------
277 //
278 AliRsnCutMiniPair *cutY = new AliRsnCutMiniPair("cutRapidity", AliRsnCutMiniPair::kRapidityRange);
279 cutY->SetRangeD(minYlab, maxYlab);
280
281 AliRsnCutSet *cutsPair = new AliRsnCutSet("pairCuts", AliRsnTarget::kMother);
282 cutsPair->AddCut(cutY);
283 cutsPair->SetCutScheme(cutY->GetName());
284
285 //
286 // -- CONFIG ANALYSIS --------------------------------------------------------------------------
287 gROOT->LoadMacro("$ALICE_ROOT/PWGLF/RESONANCES/macros/mini/ConfigSigmaStar.C");
288 if (isMC) {
289 Printf("========================== MC analysis - PID cuts not used");
290
291 } else
292 Printf("========================== DATA analysis - PID cuts used");
c09cb973 293
b897ea8d 294 if (!ConfigSigmaStar(task, collSyst, isMC, piPIDCut, pPIDCut, aodFilterBit, trackDCAcut, massTol, lambdaDCA, lambdaCosPoinAn, lambdaDaughDCA, NTPCcluster, "", cutsPair)) return 0x0;
295
296 //
297 // -- CONTAINERS --------------------------------------------------------------------------------
298 //
299 TString outputFileName = AliAnalysisManager::GetCommonFileName();
300 // outputFileName += ":Rsn";
301 Printf("AddTaskSigmaStar - Set OutputFileName : \n %s\n", outputFileName.Data() );
302
33131d21 303
e0b8b81a 304 AliAnalysisDataContainer *output = mgr->CreateContainer(Form("RsnOut_%s_%.1f_%d_%.1f_%.1f_%.2f_%.4f_%.2f_%.2f_%.1f",
33131d21 305 outNameSuffix.Data(),cutV,NTPCcluster,piPIDCut,pPIDCut,
306 trackDCAcut,massTol,lambdaDCA,lambdaCosPoinAn,lambdaDaughDCA),
b897ea8d 307 TList::Class(),
308 AliAnalysisManager::kOutputContainer,
309 outputFileName);
33131d21 310
b897ea8d 311 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
312 mgr->ConnectOutput(task, 1, output);
313
314 return task;
315}