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