]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/FLOW/macros/AddTaskFlowStrange.C
Merge branch 'master' into TRDdev
[u/mrichter/AliRoot.git] / PWGCF / FLOW / macros / AddTaskFlowStrange.C
CommitLineData
ad90d46d 1UInt_t SFT_gbTrigger;
2Bool_t SFT_gbReadESD;
3Bool_t SFT_gbReadMC;
4Int_t SFT_gbMatchMC;
5Bool_t SFT_gbAvoidExec;
6c0d2d67 6Bool_t SFT_gbSkipCentrality;
ad90d46d 7Bool_t SFT_gbExtraEventCut;
8TString SFT_gbCentMethod;
9Int_t SFT_gbCentPerMin,SFT_gbCentPerMax;
10Bool_t SFT_gbRunPP;
11Bool_t SFT_gbRunPA;
12Int_t SFT_gbSpecie;
13Bool_t SFT_gbHomemade;
14Bool_t SFT_gbOnline;
15Int_t SFT_gbMinNClsTPC;
52476a4c 16Int_t SFT_gbMinNClsITS;
ad90d46d 17Int_t SFT_gbMinXRows;
18Double_t SFT_gbMaxChi2PerNClsTPC;
19Double_t SFT_gbMinXRowsOverNClsFTPC;
20Double_t SFT_gbMinEta;
21Double_t SFT_gbMaxEta;
22Double_t SFT_gbMinPt;
23Double_t SFT_gbMinImpactParameterXY;
24Double_t SFT_gbMaxNSigmaPID;
25Double_t SFT_gbMaxRapidity;
26Double_t SFT_gbMaxDCAdaughters;
27Double_t SFT_gbMinCosinePointingAngleXY;
52476a4c 28Double_t SFT_gbPIDPt;
ad90d46d 29Double_t SFT_gbMinQt;
30Bool_t SFT_gbQtPie;
31Double_t SFT_gbMinRadXY;
32Double_t SFT_gbMaxDecayLength;
33Double_t SFT_gbMaxProductIPXY;
34Int_t SFT_gbDebug;
35Int_t SFT_gbQA;
36TString SFT_gbFolder;
37TString SFT_gbSuffix;
38TString SFT_gbStamp;
39Int_t SFT_gbRFPFilterBit;
40Double_t SFT_gbRFPminPt;
41Double_t SFT_gbRFPmaxPt;
6c0d2d67 42Double_t SFT_gbRFPAminEta;
43Double_t SFT_gbRFPAmaxEta;
44Double_t SFT_gbRFPCminEta;
45Double_t SFT_gbRFPCmaxEta;
ad90d46d 46Double_t SFT_gbRFPTPCsignal;
47Double_t SFT_gbRFPmaxIPxy;
48Double_t SFT_gbRFPmaxIPz;
49Int_t SFT_gbRFPTPCncls;
6c0d2d67 50Bool_t SFT_gbAddPitoMCRP;
ad90d46d 51Bool_t SFT_gbAllCC;
52Bool_t SFT_gbSkipSelection;
52476a4c 53Bool_t SFT_gbSkipVn;
ad90d46d 54Int_t SFT_gbWhichPsi;
55Bool_t SFT_gbFlowPackage;
56Bool_t SFT_gbShrinkFP;
57Bool_t SFT_gbSPVZE;
58Bool_t SFT_gbSPTPC;
59Bool_t SFT_gbSPVZEhalf;
60Bool_t SFT_gbQCTPC;
c41a93af 61Bool_t SFT_gbMCEP;
ad90d46d 62Int_t SFT_gbHarmonic;
63TString SFT_gbVZEload;
64Bool_t SFT_gbVZEsave;
65Bool_t SFT_gbVZEmb;
66Bool_t SFT_gbVZEpdisk;
67Int_t SFT_gbV0CRingMin;
68Int_t SFT_gbV0CRingMax;
69Int_t SFT_gbV0ARingMin;
70Int_t SFT_gbV0ARingMax;
dba835f0 71Int_t SFT_gbDauITS0On;
72Int_t SFT_gbDauITS1On;
73Int_t SFT_gbDauITS2On;
74Int_t SFT_gbDauITS3On;
75Int_t SFT_gbDauITS4On;
76Int_t SFT_gbDauITS5On;
52476a4c 77Bool_t SFT_gbDauSPDany;
78Bool_t SFT_gbDauITSrefit;
ad90d46d 79
80Bool_t SFT_gbUntagDaughter;
512ced40 81Int_t SFT_gbPostMatched;
c41a93af 82Double_t SFT_gbVertexZcut;
ad90d46d 83
6c0d2d67 84void AddTaskFlowStrange(TString configFile, TString alienaddress, Bool_t skipTerminate=kFALSE) {
ad90d46d 85 Int_t ret = gSystem->Exec( Form("alien_cp %s/%s .",alienaddress.Data(),configFile.Data()) );
86 printf("FlowStrange copying from grid %d\n",ret);
6c0d2d67 87 AddTaskFlowStrange(configFile,skipTerminate);
ad90d46d 88}
6c0d2d67 89void AddTaskFlowStrange(TString configFile, Bool_t skipTerminate=kFALSE) {
ad90d46d 90 SFT_ReadConfig(configFile);
ad90d46d 91 if(SFT_gbAllCC) {
52476a4c 92 int centMin[8] = {00,05,10,20,30,40,50,60};
93 int ncent=7;
ad90d46d 94 if(SFT_gbRunPP) {
95 ncent=3;
52476a4c 96 centMin[0]=00;
97 centMin[1]=20;
98 centMin[2]=40;
99 centMin[3]=60;
ad90d46d 100 } else if(SFT_gbRunPA) {
52476a4c 101 ncent=3;
102 centMin[0]=00;
103 centMin[1]=20;
104 centMin[2]=40;
105 centMin[3]=60;
ad90d46d 106 }
107 TString antSuffix = SFT_gbSuffix;
108 for(int cc=0; cc!=ncent; ++cc) {
109 SFT_gbCentPerMin = centMin[cc];
52476a4c 110 SFT_gbCentPerMax = centMin[cc+1];
6c0d2d67 111 SFT_gbSuffix = Form("%s%02d%02d",antSuffix.Data(),SFT_gbCentPerMin,SFT_gbCentPerMax);
112 AddTaskFlowStrange(skipTerminate);
ad90d46d 113 }
114 } else {
6c0d2d67 115 AddTaskFlowStrange(skipTerminate);
ad90d46d 116 }
117}
6c0d2d67 118void AddTaskFlowStrange(Bool_t skipTerminate) {
ad90d46d 119 SFT_PrintConfig();
120
121 TString fileName = AliAnalysisManager::GetCommonFileName();
122 fileName.ReplaceAll(".root","");
123 SFT_gbStamp = SFT_gbFolder + SFT_gbSuffix;
124
125 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
126 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
127
128 //-----------------STRANGE TASK----------------------------
129 AliAnalysisTaskFlowStrange *taskSel = new AliAnalysisTaskFlowStrange(Form("FS_%s",SFT_gbStamp.Data()) );
130 taskSel->SelectCollisionCandidates(SFT_gbTrigger);
131 taskSel->SetReadESD(SFT_gbReadESD);
512ced40 132 taskSel->SetPostMatched(SFT_gbPostMatched);
ad90d46d 133 taskSel->SetReadMC(SFT_gbReadMC);
134 taskSel->SetAvoidExec(SFT_gbAvoidExec);
6c0d2d67 135 taskSel->SetSkipCentralitySelection(SFT_gbSkipCentrality);
ad90d46d 136 taskSel->SetSkipSelection(SFT_gbSkipSelection);
52476a4c 137 taskSel->SetSkipVn(SFT_gbSkipVn);
ad90d46d 138 taskSel->SetExtraEventRejection(SFT_gbExtraEventCut);
139 taskSel->SetCentralityRange(SFT_gbCentMethod,SFT_gbCentPerMin,SFT_gbCentPerMax);
6c0d2d67 140 taskSel->SetSkipTerminate(skipTerminate);
52476a4c 141 taskSel->SetHarmonic(SFT_gbHarmonic);
142 Int_t npt = 24;
143 Double_t ptbin[25] = { 0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8,
144 2.0, 2.2, 2.4, 2.8, 3.2, 3.6, 4.0, 4.5, 5.0, 6.0,
145 8.0, 10., 12., 16., 20.};
146 taskSel->SetPtEdges(npt,ptbin);
ad90d46d 147 if(SFT_gbRunPP) taskSel->Setpp();
148 if(SFT_gbRunPA) taskSel->SetpA();
149 taskSel->SetDebug(SFT_gbDebug);
150 taskSel->SetK0L0(SFT_gbSpecie);
151 taskSel->SetOnline( SFT_gbOnline );
152 taskSel->SetMass( SFT_MassBins(SFT_gbSpecie),
153 SFT_MinMass(SFT_gbSpecie),
154 SFT_MaxMass(SFT_gbSpecie) );
155
156 taskSel->SetWhichPsi(SFT_gbWhichPsi);
157 taskSel->SetRFPFilterBit(SFT_gbRFPFilterBit);
158 taskSel->SetRFPMinPt(SFT_gbRFPminPt);
159 taskSel->SetRFPMaxPt(SFT_gbRFPmaxPt);
6c0d2d67 160 taskSel->SetRFPAMinEta(SFT_gbRFPAminEta);
161 taskSel->SetRFPAMaxEta(SFT_gbRFPAmaxEta);
162 taskSel->SetRFPCMinEta(SFT_gbRFPCminEta);
163 taskSel->SetRFPCMaxEta(SFT_gbRFPCmaxEta);
ad90d46d 164 taskSel->SetRFPTPCSignal(SFT_gbRFPTPCsignal);
165 taskSel->SetRFPMaxIPxy(SFT_gbRFPmaxIPxy);
166 taskSel->SetRFPMaxIPz(SFT_gbRFPmaxIPz);
167 taskSel->SetRFPMinTPCCls(SFT_gbRFPTPCncls);
168
6c0d2d67 169 taskSel->SetAddPiToMCReactionPlane(SFT_gbAddPitoMCRP);
ad90d46d 170 taskSel->SetDauUnTagProcedure(SFT_gbUntagDaughter);
512ced40 171 taskSel->SetVertexZcut(SFT_gbVertexZcut);
ad90d46d 172
173 taskSel->SetDauMinNClsTPC(SFT_gbMinNClsTPC);
52476a4c 174 taskSel->SetDauMinNClsITS(SFT_gbMinNClsITS);
ad90d46d 175 taskSel->SetDauMinXRows(SFT_gbMinXRows);
176 taskSel->SetDauMaxChi2PerNClsTPC(SFT_gbMaxChi2PerNClsTPC);
177 taskSel->SetDauMinXRowsOverNClsFTPC(SFT_gbMinXRowsOverNClsFTPC);
178 taskSel->SetDauMinEta(SFT_gbMinEta);
179 taskSel->SetDauMaxEta(SFT_gbMaxEta);
180 taskSel->SetDauMinPt(SFT_gbMinPt);
181 taskSel->SetDauMinImpactParameterXY(SFT_gbMinImpactParameterXY);
182 taskSel->SetDauMaxNSigmaPID(SFT_gbMaxNSigmaPID);
dba835f0 183 taskSel->SetDauITSLayer(0,SFT_gbDauITS0On);
184 taskSel->SetDauITSLayer(1,SFT_gbDauITS1On);
185 taskSel->SetDauITSLayer(2,SFT_gbDauITS2On);
186 taskSel->SetDauITSLayer(3,SFT_gbDauITS3On);
187 taskSel->SetDauITSLayer(4,SFT_gbDauITS4On);
188 taskSel->SetDauITSLayer(5,SFT_gbDauITS5On);
52476a4c 189 taskSel->SetDauSPDRequireAny(SFT_gbDauSPDany);
190 taskSel->SetDauITSrefit(SFT_gbDauITSrefit);
ad90d46d 191
192 taskSel->SetMaxRapidity(SFT_gbMaxRapidity);
193 taskSel->SetMaxDCAdaughters(SFT_gbMaxDCAdaughters);
194 taskSel->SetMinCosinePointingAngleXY(SFT_gbMinCosinePointingAngleXY);
195 taskSel->SetMinQt(SFT_gbMinQt,SFT_gbQtPie);
52476a4c 196 taskSel->SetStopPIDAtPt(SFT_gbPIDPt);
ad90d46d 197 taskSel->SetMinRadXY(SFT_gbMinRadXY);
198 taskSel->SetMaxDecayLength(SFT_gbMaxDecayLength);
199 taskSel->SetMaxProductIPXY(SFT_gbMaxProductIPXY);
200 taskSel->SetMinEta(SFT_gbMinEta);
201 taskSel->SetMaxEta(SFT_gbMaxEta);
202 taskSel->SetMinPt(SFT_gbMinPt);
203 taskSel->SetUseFlowPackage(SFT_gbFlowPackage);
204
205 taskSel->SetQAlevel(SFT_gbQA);
206 if(SFT_gbVZEload.Length()>4) {
207 TFile *ocalib = TFile::Open(SFT_gbVZEload);
208 if(ocalib->IsOpen()) {
209 TList *vzero = ocalib->Get("VZECALIB");
210 taskSel->LoadVZEResponse(vzero,SFT_gbVZEmb,SFT_gbVZEpdisk);
211 } else {
212 printf("ADDTASKFLOWSTRANGE COULD NOT OPEN %s. NO VZE CALIBRATION LOADED!\n",SFT_gbVZEload.Data());
213 }
214 }
215 printf("Loading %d %d %d %d as VZE configuration\n",SFT_gbV0CRingMin, SFT_gbV0CRingMax, SFT_gbV0ARingMin, SFT_gbV0ARingMax);
216 taskSel->SetRFPVZERingRange( SFT_gbV0CRingMin, SFT_gbV0CRingMax, SFT_gbV0ARingMin, SFT_gbV0ARingMax );
217 taskSel->SetStoreVZEResponse(SFT_gbVZEsave);
218
219 AliAnalysisDataContainer *cOutHist = mgr->CreateContainer(Form("FS_OH_%s",SFT_gbStamp.Data()),
220 TList::Class(),
221 AliAnalysisManager::kOutputContainer,
222 Form("%s.root:Selector_%s",fileName.Data(),
223 SFT_gbFolder.Data()));
224 AliAnalysisDataContainer *exc_TPC = mgr->CreateContainer( Form("FS_TPC_%s",SFT_gbStamp.Data()),
225 AliFlowEventSimple::Class(),
226 AliAnalysisManager::kExchangeContainer );
227 AliAnalysisDataContainer *exc_VZE = mgr->CreateContainer( Form("FS_VZE_%s",SFT_gbStamp.Data()),
228 AliFlowEventSimple::Class(),
229 AliAnalysisManager::kExchangeContainer );
230 mgr->AddTask(taskSel);
231 mgr->ConnectInput (taskSel,0,cinput1);
232 mgr->ConnectOutput(taskSel,1,cOutHist);
233 mgr->ConnectOutput(taskSel,2,exc_TPC);
234 mgr->ConnectOutput(taskSel,3,exc_VZE);
235
236 if(!SFT_gbFlowPackage) return;
237 if( (!SFT_gbQCTPC) && (!SFT_gbSPVZE) && (!SFT_gbSPTPC) ) return;
238 //-------------------FLOWPACKAGE TASKS----------------------------
239 AliFlowTrackSimpleCuts *filter[20], *filterhf[20][2]; // MASS BANDS
512ced40
RAB
240 int mbs = SFT_MassBands(SFT_gbSpecie);
241 if(SFT_gbPostMatched) mbs = 1;
242 for(int mb=0; mb!=mbs; ++mb) {
ad90d46d 243 filter[mb] = new AliFlowTrackSimpleCuts( Form("Filter_MB%d",mb) );
244 filter[mb]->SetEtaMin( -0.8 ); filter[mb]->SetEtaMax( +0.8 );
512ced40
RAB
245 Double_t minmass = SFT_MassBandLowEdge(SFT_gbSpecie,mb);
246 Double_t maxmass = SFT_MassBandLowEdge(SFT_gbSpecie,mb+1);
247 if(SFT_gbPostMatched) maxmass = SFT_MassBandLowEdge(SFT_gbSpecie,SFT_MassBands(SFT_gbSpecie));
248 filter[mb]->SetMassMin( minmass ); filter[mb]->SetMassMax( maxmass );
ad90d46d 249 //half window for POIs
250 filterhf[mb][0] = new AliFlowTrackSimpleCuts( Form("Filterhf0_MB%d",mb) );
251 filterhf[mb][0]->SetEtaMin( +0.0 ); filterhf[mb][0]->SetEtaMax( +0.8 );
512ced40 252 filterhf[mb][0]->SetMassMin( minmass ); filterhf[mb][0]->SetMassMax( maxmass );
ad90d46d 253 filterhf[mb][1] = new AliFlowTrackSimpleCuts( Form("Filterhf1_MB%d",mb) );
254 filterhf[mb][1]->SetEtaMin( -0.8 ); filterhf[mb][1]->SetEtaMax( -0.0 );
512ced40 255 filterhf[mb][1]->SetMassMin( minmass ); filterhf[mb][1]->SetMassMax( maxmass );
ad90d46d 256 if(SFT_gbQCTPC) {
257 SFT_AddQCmethod( Form("QCTPCMB%d",mb), exc_TPC, filter[mb]); // QC TPC
258 }
259 if(SFT_gbSPTPC) {
260 SFT_AddSPmethod( Form("SPTPCMB%d",mb), exc_TPC, filterhf[mb][0], "Qa" ); // SP TPC Qa
261 SFT_AddSPmethod( Form("SPTPCMB%d",mb), exc_TPC, filterhf[mb][1], "Qb" ); // SP TPC Qb
262 SFT_AddSPmethod( Form("SPTPC2MB%d",mb), exc_TPC, filterhf[mb][0], "Qa", 0.2 ); // SP TPC Qa
263 SFT_AddSPmethod( Form("SPTPC2MB%d",mb), exc_TPC, filterhf[mb][1], "Qb", 0.2 ); // SP TPC Qb
264 SFT_AddSPmethod( Form("SPTPC4MB%d",mb), exc_TPC, filterhf[mb][0], "Qa", 0.4 ); // SP TPC Qa
265 SFT_AddSPmethod( Form("SPTPC4MB%d",mb), exc_TPC, filterhf[mb][1], "Qb", 0.4 ); // SP TPC Qb
266 }
c41a93af 267 if(SFT_gbMCEP) {
268 SFT_AddMCEPmethod( Form("MCEPMB%d",mb), exc_TPC, filter[mb]); // MCEP TPC
269 }
ad90d46d 270 if(SFT_gbSPVZE) {
271 if(SFT_gbSPVZEhalf) {
272 SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filterhf[mb][0], "Qa", 1.0 ); // SP VZE Qa
273 SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filterhf[mb][1], "Qb", 1.0 ); // SP VZE Qa
274 } else {
275 SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filter[mb], "Qa", 1.0 ); // SP VZE Qa
276 SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filter[mb], "Qb", 1.0 ); // SP VZE Qa
277 }
278 }
279 }
280}
c41a93af 281void SFT_AddMCEPmethod(char *name, AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL) {
282 TString fileName = AliAnalysisManager::GetCommonFileName();
283 TString myFolder = Form("%sv%d",SFT_gbFolder.Data(),SFT_gbHarmonic);
284 TString myName = Form("%sv%d_%s",name,SFT_gbHarmonic,SFT_gbSuffix.Data());
285 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
286 AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myName.Data()),
287 AliFlowEventSimple::Class(),
288 AliAnalysisManager::kExchangeContainer );
289 AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myName.Data()),
290 NULL, cutsPOI);
291 mgr->AddTask(tskFilter);
292 mgr->ConnectInput( tskFilter,0,flowEvent);
293 mgr->ConnectOutput(tskFilter,1,flowEvent2);
294 AliAnalysisDataContainer *outQC = mgr->CreateContainer( myName.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,
295 Form("%s:FlowStrange_MCEP_%s",fileName.Data(),myFolder.Data()) );
296 AliAnalysisTaskMCEventPlane *tskQC = new AliAnalysisTaskMCEventPlane( Form("TaskMCEP_%s",myName.Data()) );
297 tskQC->SetHarmonic(SFT_gbHarmonic);
298 mgr->AddTask(tskQC);
299 mgr->ConnectInput( tskQC,0,flowEvent2);
300 mgr->ConnectOutput(tskQC,1,outQC);
301}
ad90d46d 302void SFT_AddQCmethod(char *name, AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL) {
303 TString fileName = AliAnalysisManager::GetCommonFileName();
304 TString myFolder = Form("%sv%d",SFT_gbFolder.Data(),SFT_gbHarmonic);
305 TString myName = Form("%sv%d_%s",name,SFT_gbHarmonic,SFT_gbSuffix.Data());
306 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
307 AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myName.Data()),
308 AliFlowEventSimple::Class(),
309 AliAnalysisManager::kExchangeContainer );
310 AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myName.Data()),
311 NULL, cutsPOI);
312 mgr->AddTask(tskFilter);
313 mgr->ConnectInput( tskFilter,0,flowEvent);
314 mgr->ConnectOutput(tskFilter,1,flowEvent2);
315 AliAnalysisDataContainer *outQC = mgr->CreateContainer( myName.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,
316 Form("%s:FlowStrange_QC_%s",fileName.Data(),myFolder.Data()) );
317 AliAnalysisTaskQCumulants *tskQC = new AliAnalysisTaskQCumulants( Form("TaskQCumulants_%s",myName.Data()),kFALSE );
318 tskQC->SetApplyCorrectionForNUA(kTRUE);
319 tskQC->SetHarmonic(SFT_gbHarmonic);
320 tskQC->SetBookOnlyBasicCCH(SFT_gbShrinkFP);
321 mgr->AddTask(tskQC);
322 mgr->ConnectInput( tskQC,0,flowEvent2);
323 mgr->ConnectOutput(tskQC,1,outQC);
324}
325void SFT_AddSPmethod(char *name, AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL, char *Qvector, Double_t gap=0.0) {
326 TString fileName = AliAnalysisManager::GetCommonFileName();
327 TString myFolder = Form("%sv%d",SFT_gbFolder.Data(),SFT_gbHarmonic);
328 TString myNameSP = Form("%sv%d%s_%s",name,SFT_gbHarmonic,Qvector,SFT_gbSuffix.Data());
329 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
330 AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myNameSP.Data()),
331 AliFlowEventSimple::Class(),
332 AliAnalysisManager::kExchangeContainer );
333 AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myNameSP.Data()),
334 NULL, cutsPOI);
335 tskFilter->SetSubeventEtaRange( -5.0, -gap, +gap, +5.0 );
336 mgr->AddTask(tskFilter);
337 mgr->ConnectInput( tskFilter,0,flowEvent);
338 mgr->ConnectOutput(tskFilter,1,flowEvent2);
339 AliAnalysisDataContainer *outSP = mgr->CreateContainer( myNameSP.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,
340 Form("%s:FlowStrange_SP_%s",fileName.Data(),myFolder.Data()) );
341 AliAnalysisTaskScalarProduct *tskSP = new AliAnalysisTaskScalarProduct( Form("TaskScalarProduct_%s",myNameSP.Data()),kFALSE);
342 tskSP->SetApplyCorrectionForNUA(kTRUE);
343 tskSP->SetHarmonic(SFT_gbHarmonic);
344 tskSP->SetTotalQvector(Qvector);
345 tskSP->SetBookOnlyBasicCCH(SFT_gbShrinkFP);
346 mgr->AddTask(tskSP);
347 mgr->ConnectInput( tskSP,0,flowEvent2);
348 mgr->ConnectOutput(tskSP,1,outSP);
349}
350double SFT_MassBandLowEdge( int nv0, int mb ) {
512ced40
RAB
351 if(nv0>10&&mb==0) return -5;
352 if(nv0>10&&mb==1) return +5;
ad90d46d 353 switch(nv0) {
354 case(0):
355 double lowEdge[14]={0.398, 0.420, 0.444, 0.468, 0.486,
356 0.490, 0.494, 0.498, 0.502, 0.506,
357 0.524, 0.548, 0.572, 0.598};
358 break;
359 default:
360 double lowEdge[13]={1.084, 1.094, 1.104, 1.110, 1.114,
361 1.116, 1.118, 1.122, 1.128, 1.138,
362 1.148, 1.158, 1.168};
363 break;
364 }
ad90d46d 365 return lowEdge[mb];
366}
367int SFT_MassBands( int nv0 ) {
368 int bands=1;
369 switch(nv0) {
370 case(0):
371 bands = 13;
372 break;
373 default:
374 bands = 12;
375 }
376 if(nv0>10) bands=1;
377 return bands;
378}
379int SFT_MassBins( int nv0 ) {
380 int bins=100;
381 switch(nv0) {
382 case(0)://kZERO
383 bins=100;
384 break;
385 default://LAMBDA
386 bins=84;
387 break;
388 }
389 if(nv0>10) bins=100;//CHARGED
390 return bins;
391}
392double SFT_MinMass( int nv0 ) {
393 return SFT_MassBandLowEdge( nv0, 0 );
394}
395double SFT_MaxMass( int nv0 ) {
396 return SFT_MassBandLowEdge( nv0, SFT_MassBands(nv0) );
397}
398void SFT_PrintConfig() {
399 printf("***********************************\n");
400 printf("* STRANGE FLOW TASK CONFIGURATION *\n");
6c0d2d67 401 printf("* SUFFIX %s *\n", SFT_gbSuffix.Data() );
402 printf("* TRIGGER %d *\n", SFT_gbTrigger );
403 printf("* RUNPP %d *\n", SFT_gbRunPP );
404 printf("* RUNPA %d *\n", SFT_gbRunPA );
405 printf("* AVOIDEXEC %d *\n", SFT_gbAvoidExec );
406 printf("* SKIPCENTRALITY %d *\n", SFT_gbSkipCentrality );
407 printf("* ESD %d *\n", SFT_gbReadESD );
408 printf("* MC %d *\n", SFT_gbReadMC );
52476a4c 409 printf("* HARMONIC %d *\n", SFT_gbHarmonic );
6c0d2d67 410 printf("* ADDPITOMCEP %d *\n", SFT_gbAddPitoMCRP );
411 printf("* POSTMATCHED %d *\n", SFT_gbPostMatched );
412 printf("* EXTRAEVENTCUT %d *\n", SFT_gbExtraEventCut );
413 printf("* CENTMETHOD %s *\n", SFT_gbCentMethod.Data() );
414 printf("* CENTPERMIN %d *\n", SFT_gbCentPerMin );
415 printf("* CENTPERMAX %d *\n", SFT_gbCentPerMax );
416 printf("* VERTEXZ %f *\n", SFT_gbVertexZcut );
417 printf("* SPECIE %d *\n", SFT_gbSpecie );
418 printf("* HOMEMADE %d *\n", SFT_gbHomemade );
419 printf("* ONLINE %d *\n", SFT_gbOnline );
420 printf("* MINNCLSTTPC %d *\n", SFT_gbMinNClsTPC );
52476a4c 421 printf("* MINNCLSITS %d *\n", SFT_gbMinNClsITS );
6c0d2d67 422 printf("* MINXROWS %d *\n", SFT_gbMinXRows );
423 printf("* MAXCHI2NCLSTPC %f *\n", SFT_gbMaxChi2PerNClsTPC );
424 printf("* MINXROWSNFCLSTPC %f *\n", SFT_gbMinXRowsOverNClsFTPC );
425 printf("* MINETA %f *\n", SFT_gbMinEta );
426 printf("* MAXETA %f *\n", SFT_gbMaxEta );
427 printf("* MINPT %f *\n", SFT_gbMinPt );
428 printf("* UNTAG %f *\n", SFT_gbUntagDaughter );
429 printf("* MIND0XY %f *\n", SFT_gbMinImpactParameterXY );
430 printf("* MAXSIGMAPID %f *\n", SFT_gbMaxNSigmaPID );
431 printf("* MAXY %f *\n", SFT_gbMaxRapidity );
432 printf("* MAXDCA %f *\n", SFT_gbMaxDCAdaughters );
433 printf("* MINCTP %f *\n", SFT_gbMinCosinePointingAngleXY );
434 printf("* MINQT %f *\n", SFT_gbMinQt );
435 printf("* QTPIE %f *\n", SFT_gbQtPie );
52476a4c 436 printf("* STOPPID %f *\n", SFT_gbPIDPt );
6c0d2d67 437 printf("* MINRADXY %f *\n", SFT_gbMinRadXY );
438 printf("* MAXDL %f *\n", SFT_gbMaxDecayLength );
439 printf("* D0D0XY %f *\n", SFT_gbMaxProductIPXY );
440 printf("* DEBUG %d *\n", SFT_gbDebug );
441 printf("* QA %d *\n", SFT_gbQA );
442 printf("* SKIPSELECTION %d *\n", SFT_gbSkipSelection );
52476a4c 443 printf("* SKIPVN %d *\n", SFT_gbSkipVn );
6c0d2d67 444 printf("* USEFP %d *\n", SFT_gbFlowPackage );
445 printf("* SPVZE %d *\n", SFT_gbSPVZE );
446 printf("* SPVZEHALF %d *\n", SFT_gbSPVZEhalf );
447 printf("* SPTPC %d *\n", SFT_gbSPTPC );
448 printf("* QCTPC %d *\n", SFT_gbQCTPC );
449 printf("* MCEP %d *\n", SFT_gbMCEP );
450 printf("* SHRINKFP %d *\n", SFT_gbShrinkFP );
451 printf("* RFFILTERBIT %d *\n", SFT_gbRFPFilterBit );
452 printf("* RFMINPT %f *\n", SFT_gbRFPminPt );
453 printf("* RFMAXPT %f *\n", SFT_gbRFPmaxPt );
454 printf("* RFCMINETA %f *\n", SFT_gbRFPCminEta );
455 printf("* RFCMAXETA %f *\n", SFT_gbRFPCmaxEta );
456 printf("* RFAMINETA %f *\n", SFT_gbRFPAminEta );
457 printf("* RFAMAXETA %f *\n", SFT_gbRFPAmaxEta );
458 printf("* RFTPCSIGNAL %f *\n", SFT_gbRFPTPCsignal );
459 printf("* RFMAXIPXY %f *\n", SFT_gbRFPmaxIPxy );
460 printf("* RFMAXIPZ %f *\n", SFT_gbRFPmaxIPz );
461 printf("* RFTPCNCLS %d *\n", SFT_gbRFPTPCncls );
462 printf("* RFVZEC_RingMin %d *\n", SFT_gbV0CRingMin );
463 printf("* RFVZEC_RingMax %d *\n", SFT_gbV0CRingMax );
464 printf("* RFVZEA_RingMin %d *\n", SFT_gbV0ARingMin );
465 printf("* RFVZEA_RingMax %d *\n", SFT_gbV0ARingMax );
466 printf("* WHICHPSI %d *\n", SFT_gbWhichPsi );
467 printf("* VZELOAD %s *\n", SFT_gbVZEload.Data() );
468 printf("* VZELINEAR %d *\n", SFT_gbVZEmb );
469 printf("* VZEPERDISK %d *\n", SFT_gbVZEpdisk );
470 printf("* VZESAVE %d *\n", SFT_gbVZEsave );
471 printf("* DAUITS0 %d *\n", SFT_gbDauITS0On );
472 printf("* DAUITS1 %d *\n", SFT_gbDauITS1On );
473 printf("* DAUITS2 %d *\n", SFT_gbDauITS2On );
474 printf("* DAUITS3 %d *\n", SFT_gbDauITS3On );
475 printf("* DAUITS4 %d *\n", SFT_gbDauITS4On );
476 printf("* DAUITS5 %d *\n", SFT_gbDauITS5On );
52476a4c 477 printf("* DAUSPDANY %d *\n", SFT_gbDauSPDany );
478 printf("* DAUITSrefit %d *\n", SFT_gbDauITSrefit );
ad90d46d 479 printf("***********************************\n");
480}
481void SFT_ReadConfig(TString ipf) {
482 SFT_ResetVars();
483 printf("Reading %s\n",ipf.Data());
484 ifstream input(ipf.Data());
485 TString varname;
486 Double_t vardouble;
487 Int_t varint;
488 UInt_t varuint;
489 Bool_t varbool;
490 for(;input.good();) {
491 input >> varname;
492 if(!input.good()) {
493 break;
494 } else if(!varname.CompareTo("SUFFIX")) {
495 input >> SFT_gbSuffix;
496 } else if(!varname.CompareTo("TRIGGER")) {
497 input >> SFT_gbTrigger;
498 } else if(!varname.CompareTo("RUNPP")) {
499 input >> SFT_gbRunPP;
500 } else if(!varname.CompareTo("RUNPA")) {
501 input >> SFT_gbRunPA;
502 } else if(!varname.CompareTo("AVOIDEXEC")) {
503 input >> SFT_gbAvoidExec;
6c0d2d67 504 } else if(!varname.CompareTo("SKIPCENTRALITY")) {
505 input >> SFT_gbSkipCentrality;
ad90d46d 506 } else if(!varname.CompareTo("ESD")) {
507 input >> SFT_gbReadESD;
508 } else if(!varname.CompareTo("MC")) {
509 input >> SFT_gbReadMC;
510 } else if(!varname.CompareTo("EXTRAEVENTCUT")) {
511 input >> SFT_gbExtraEventCut;
512 } else if(!varname.CompareTo("CENTMETHOD")) {
513 input >> SFT_gbCentMethod;
514 } else if(!varname.CompareTo("CENTPERMIN")) {
515 input >> SFT_gbCentPerMin;
516 } else if(!varname.CompareTo("CENTPERMAX")) {
517 input >> SFT_gbCentPerMax;
518 } else if(!varname.CompareTo("SPECIE")) {
519 input >> SFT_gbSpecie;
520 } else if(!varname.CompareTo("HOMEMADE")) {
521 input >> SFT_gbHomemade;
522 } else if(!varname.CompareTo("ONLINE")) {
523 input >> SFT_gbOnline;
524 } else if(!varname.CompareTo("MINNCLSTTPC")) {
525 input >> SFT_gbMinNClsTPC;
52476a4c 526 } else if(!varname.CompareTo("MINNCLSITS")) {
527 input >> SFT_gbMinNClsITS;
ad90d46d 528 } else if(!varname.CompareTo("MINXROWS")) {
529 input >> SFT_gbMinXRows;
530 } else if(!varname.CompareTo("MAXCHI2NCLSTPC")) {
531 input >> SFT_gbMaxChi2PerNClsTPC;
532 } else if(!varname.CompareTo("MINXROWSNFCLSTPC")) {
533 input >> SFT_gbMinXRowsOverNClsFTPC;
534 } else if(!varname.CompareTo("MINETA")) {
535 input >> SFT_gbMinEta;
536 } else if(!varname.CompareTo("MAXETA")) {
537 input >> SFT_gbMaxEta;
538 } else if(!varname.CompareTo("MINPT")) {
539 input >> SFT_gbMinPt;
540 } else if(!varname.CompareTo("MIND0XY")) {
541 input >> SFT_gbMinImpactParameterXY;
542 } else if(!varname.CompareTo("MAXSIGMAPID")) {
543 input >> SFT_gbMaxNSigmaPID;
544 } else if(!varname.CompareTo("MAXY")) {
545 input >> SFT_gbMaxRapidity;
546 } else if(!varname.CompareTo("MAXDCA")) {
547 input >> SFT_gbMaxDCAdaughters;
548 } else if(!varname.CompareTo("MINCTP")) {
549 input >> SFT_gbMinCosinePointingAngleXY;
550 } else if(!varname.CompareTo("MINQT")) {
551 input >> SFT_gbMinQt;
552 } else if(!varname.CompareTo("QTPIE")) {
553 input >> SFT_gbQtPie;
52476a4c 554 } else if(!varname.CompareTo("STOPPID")) {
555 input >> SFT_gbPIDPt;
ad90d46d 556 } else if(!varname.CompareTo("MINRADXY")) {
557 input >> SFT_gbMinRadXY;
558 } else if(!varname.CompareTo("MAXDL")) {
559 input >> SFT_gbMaxDecayLength;
560 } else if(!varname.CompareTo("D0D0XY")) {
561 input >> SFT_gbMaxProductIPXY;
562 } else if(!varname.CompareTo("DEBUG")) {
563 input >> SFT_gbDebug;
564 } else if(!varname.CompareTo("QA")) {
565 input >> SFT_gbQA;
566 } else if(!varname.CompareTo("SKIPSELECTION")) {
567 input >> SFT_gbSkipSelection;
52476a4c 568 } else if(!varname.CompareTo("SKIPVN")) {
569 input >> SFT_gbSkipVn;
ad90d46d 570 } else if(!varname.CompareTo("USEFP")) {
571 input >> SFT_gbFlowPackage;
572 } else if(!varname.CompareTo("SPVZE")) {
573 input >> SFT_gbSPVZE;
574 } else if(!varname.CompareTo("SPTPC")) {
575 input >> SFT_gbSPTPC;
576 } else if(!varname.CompareTo("SPVZEHALF")) {
577 input >> SFT_gbSPVZEhalf;
578 } else if(!varname.CompareTo("QCTPC")) {
579 input >> SFT_gbQCTPC;
c41a93af 580 } else if(!varname.CompareTo("MCEP")) {
581 input >> SFT_gbMCEP;
6c0d2d67 582 } else if(!varname.CompareTo("ADDPITOMCEP")) {
583 input >> SFT_gbAddPitoMCRP;
ad90d46d 584 } else if(!varname.CompareTo("SHRINKFP")) {
512ced40 585 input >> SFT_gbShrinkFP;
ad90d46d 586 } else if(!varname.CompareTo("RFFILTERBIT")) {
587 input >> SFT_gbRFPFilterBit;
588 } else if(!varname.CompareTo("RFMINPT")) {
589 input >> SFT_gbRFPminPt;
590 } else if(!varname.CompareTo("RFMAXPT")) {
591 input >> SFT_gbRFPmaxPt;
6c0d2d67 592 } else if(!varname.CompareTo("RFCMINETA")) {
593 input >> SFT_gbRFPCminEta;
594 } else if(!varname.CompareTo("RFCMAXETA")) {
595 input >> SFT_gbRFPCmaxEta;
596 } else if(!varname.CompareTo("RFAMINETA")) {
597 input >> SFT_gbRFPAminEta;
598 } else if(!varname.CompareTo("RFAMAXETA")) {
599 input >> SFT_gbRFPAmaxEta;
ad90d46d 600 } else if(!varname.CompareTo("RFTPCSIGNAL")) {
601 input >> SFT_gbRFPTPCsignal;
602 } else if(!varname.CompareTo("RFMAXIPXY")) {
603 input >> SFT_gbRFPmaxIPxy;
604 } else if(!varname.CompareTo("RFMAXIPZ")) {
605 input >> SFT_gbRFPmaxIPz;
606 } else if(!varname.CompareTo("RFTPCNCLS")) {
607 input >> SFT_gbRFPTPCncls;
608 } else if(!varname.CompareTo("VZELOAD")) {
609 input >> SFT_gbVZEload;
610 } else if(!varname.CompareTo("VZELINEAR")) {
611 input >> SFT_gbVZEmb;
612 } else if(!varname.CompareTo("VZEPERDISK")) {
613 input >> SFT_gbVZEpdisk;
614 } else if(!varname.CompareTo("VZESAVE")) {
615 input >> SFT_gbVZEsave;
616 } else if(!varname.CompareTo("ALLCC")) {
617 input >> SFT_gbAllCC;
618 } else if(!varname.CompareTo("UNTAG")) {
619 input >> SFT_gbUntagDaughter;
512ced40
RAB
620 } else if(!varname.CompareTo("POSTMATCHED")) {
621 input >> SFT_gbPostMatched;
622 } else if(!varname.CompareTo("VERTEXZ")) {
623 input >> SFT_gbVertexZcut;
c41a93af 624 } else if(!varname.CompareTo("WHICHPSI")) {
625 input >> SFT_gbWhichPsi;
dba835f0 626 } else if(!varname.CompareTo("DAUITS0")) {
627 input >> SFT_gbDauITS0On;
628 } else if(!varname.CompareTo("DAUITS1")) {
629 input >> SFT_gbDauITS1On;
630 } else if(!varname.CompareTo("DAUITS2")) {
631 input >> SFT_gbDauITS2On;
632 } else if(!varname.CompareTo("DAUITS3")) {
633 input >> SFT_gbDauITS3On;
634 } else if(!varname.CompareTo("DAUITS4")) {
635 input >> SFT_gbDauITS4On;
636 } else if(!varname.CompareTo("DAUITS5")) {
637 input >> SFT_gbDauITS5On;
52476a4c 638 } else if(!varname.CompareTo("DAUSPDANY")) {
639 input >> SFT_gbDauSPDany;
640 } else if(!varname.CompareTo("DAUITSREFIT")) {
641 input >> SFT_gbDauITSrefit;
6c0d2d67 642 } else if(!varname.CompareTo("RFVZEC_RingMin")) {
643 input >> SFT_gbV0CRingMin;
644 } else if(!varname.CompareTo("RFVZEC_RingMax")) {
645 input >> SFT_gbV0CRingMax;
646 } else if(!varname.CompareTo("RFVZEA_RingMin")) {
647 input >> SFT_gbV0ARingMin;
648 } else if(!varname.CompareTo("RFVZEA_RingMax")) {
649 input >> SFT_gbV0ARingMax;
52476a4c 650 } else if(!varname.CompareTo("HARMONIC")) {
651 input >> SFT_gbHarmonic;
ad90d46d 652 } else {
653 printf("I dont understand %s\n",varname.Data());
654 }
655 }
656}
657void SFT_ResetVars() {
658 SFT_gbTrigger=1;
659 SFT_gbReadESD=0;
660 SFT_gbReadMC=0;
661 SFT_gbMatchMC=0;
662 SFT_gbAvoidExec=0;
663 SFT_gbExtraEventCut=0;
664 SFT_gbCentMethod="V0MTRK";
665 SFT_gbCentPerMin=0;
666 SFT_gbCentPerMax=100;
667 SFT_gbRunPP=0;
668 SFT_gbRunPA=0;
669 SFT_gbSpecie=0;
670 SFT_gbHomemade=0;
671 SFT_gbOnline=0;
672 SFT_gbMinNClsTPC=70;
52476a4c 673 SFT_gbMinNClsITS=-1;
ad90d46d 674 SFT_gbMinXRows=70;
675 SFT_gbMaxChi2PerNClsTPC=4.0;
676 SFT_gbMinXRowsOverNClsFTPC=0.8;
677 SFT_gbMinEta=-0.8;
678 SFT_gbMaxEta=+0.8;
679 SFT_gbMinPt=0.1;
680 SFT_gbMinImpactParameterXY=0.1;
681 SFT_gbMaxNSigmaPID=3.0;
682 SFT_gbMaxRapidity=0.5;
683 SFT_gbMaxDCAdaughters=1.0;
684 SFT_gbMinCosinePointingAngleXY=0.998;
685 SFT_gbMinQt=0.2;
686 SFT_gbQtPie=kTRUE;
52476a4c 687 SFT_gbPIDPt=3.0;
ad90d46d 688 SFT_gbMinRadXY=5.0;
689 SFT_gbMaxDecayLength=3.0;
690 SFT_gbMaxProductIPXY=0.0;
691 SFT_gbDebug=0;
692 SFT_gbQA=0;
693 SFT_gbFolder="FlowStrange";
694 SFT_gbSuffix="NOTFOUND";
695 SFT_gbRFPFilterBit=1;
696 SFT_gbRFPminPt=0.2;
697 SFT_gbRFPmaxPt=5.0;
6c0d2d67 698 SFT_gbRFPCminEta=-0.8;
699 SFT_gbRFPCmaxEta=0.0;
700 SFT_gbRFPAminEta=0.0;
701 SFT_gbRFPAmaxEta=+0.8;
ad90d46d 702 SFT_gbRFPTPCsignal=10;
703 SFT_gbRFPmaxIPxy=2.4;
704 SFT_gbRFPmaxIPz=3.2;
705 SFT_gbRFPTPCncls=70;
6c0d2d67 706 SFT_gbV0CRingMin=0;
707 SFT_gbV0CRingMax=3;
708 SFT_gbV0ARingMin=0;
709 SFT_gbV0ARingMax=3;
ad90d46d 710 SFT_gbAllCC=0;
711 SFT_gbSkipSelection=0;
52476a4c 712 SFT_gbSkipVn=0;
713 SFT_gbWhichPsi=1;
ad90d46d 714 SFT_gbFlowPackage=0;
715 SFT_gbSPVZE=0;
716 SFT_gbSPVZEhalf=kFALSE;
717 SFT_gbSPTPC=0;
718 SFT_gbQCTPC=0;
c41a93af 719 SFT_gbMCEP=0;
ad90d46d 720 SFT_gbHarmonic=2;
721 SFT_gbVZEload="no";
722 SFT_gbVZEsave=0;
723 SFT_gbVZEmb=0;
724 SFT_gbVZEpdisk=0;
725 SFT_gbUntagDaughter=kTRUE;
512ced40 726 SFT_gbPostMatched=kFALSE;
ad90d46d 727 SFT_gbShrinkFP=kTRUE;
512ced40 728 SFT_gbVertexZcut=10.0;
dba835f0 729 SFT_gbDauITS0On=-1;
730 SFT_gbDauITS1On=-1;
731 SFT_gbDauITS2On=-1;
732 SFT_gbDauITS3On=-1;
733 SFT_gbDauITS4On=-1;
734 SFT_gbDauITS5On=-1;
6c0d2d67 735 SFT_gbSkipCentrality=kFALSE;
736 SFT_gbAddPitoMCRP=kFALSE;
52476a4c 737 SFT_gbDauSPDany=kFALSE;
738 SFT_gbDauITSrefit=kFALSE;
ad90d46d 739}