5 Bool_t SFT_gbAvoidExec;
6 Bool_t SFT_gbExtraEventCut;
7 TString SFT_gbCentMethod;
8 Int_t SFT_gbCentPerMin,SFT_gbCentPerMax;
12 Bool_t SFT_gbHomemade;
14 Int_t SFT_gbMinNClsTPC;
16 Double_t SFT_gbMaxChi2PerNClsTPC;
17 Double_t SFT_gbMinXRowsOverNClsFTPC;
18 Double_t SFT_gbMinEta;
19 Double_t SFT_gbMaxEta;
21 Double_t SFT_gbMinImpactParameterXY;
22 Double_t SFT_gbMaxNSigmaPID;
23 Double_t SFT_gbMaxRapidity;
24 Double_t SFT_gbMaxDCAdaughters;
25 Double_t SFT_gbMinCosinePointingAngleXY;
28 Double_t SFT_gbMinRadXY;
29 Double_t SFT_gbMaxDecayLength;
30 Double_t SFT_gbMaxProductIPXY;
36 Int_t SFT_gbRFPFilterBit;
37 Double_t SFT_gbRFPminPt;
38 Double_t SFT_gbRFPmaxPt;
39 Double_t SFT_gbRFPminEta;
40 Double_t SFT_gbRFPmaxEta;
41 Double_t SFT_gbRFPTPCsignal;
42 Double_t SFT_gbRFPmaxIPxy;
43 Double_t SFT_gbRFPmaxIPz;
44 Int_t SFT_gbRFPTPCncls;
47 Bool_t SFT_gbSkipSelection;
48 Bool_t SFT_gbSkipFlow;
50 Bool_t SFT_gbFlowPackage;
51 Bool_t SFT_gbShrinkFP;
54 Bool_t SFT_gbSPVZEhalf;
57 TString SFT_gbVZEload;
60 Bool_t SFT_gbVZEpdisk;
61 Int_t SFT_gbV0CRingMin;
62 Int_t SFT_gbV0CRingMax;
63 Int_t SFT_gbV0ARingMin;
64 Int_t SFT_gbV0ARingMax;
66 Bool_t SFT_gbUntagDaughter;
67 Int_t SFT_gbPostMatched;
68 Bool_t SFT_gbVertexZcut;
70 void AddTaskFlowStrange(TString configFile, TString alienaddress,
71 Int_t VZECm=0, Int_t VZECM=3, Int_t VZEAm=0, Int_t VZEAM=3) {
72 Int_t ret = gSystem->Exec( Form("alien_cp %s/%s .",alienaddress.Data(),configFile.Data()) );
73 printf("FlowStrange copying from grid %d\n",ret);
74 AddTaskFlowStrange(configFile,VZECm,VZECM,VZEAm,VZEAM);
76 void AddTaskFlowStrange(TString configFile,
77 Int_t VZECm=0, Int_t VZECM=3, Int_t VZEAm=0, Int_t VZEAM=3) {
78 SFT_ReadConfig(configFile);
79 SFT_gbV0CRingMin = VZECm;
80 SFT_gbV0CRingMax = VZECM;
81 SFT_gbV0ARingMin = VZEAm;
82 SFT_gbV0ARingMax = VZEAM;
83 SFT_gbSuffix = Form("%s%d%d%d%d", SFT_gbSuffix.Data(),
84 SFT_gbV0CRingMin, SFT_gbV0CRingMax, SFT_gbV0ARingMin, SFT_gbV0ARingMax);
86 int centMin[9] = {00,05,10,20,30,40,50,60,70};
87 int centMax[9] = {05,10,20,30,40,50,60,70,80};
91 centMin[0]=10; centMax[0]=30;
92 centMin[1]=30; centMax[1]=50;
93 centMin[2]=0; centMax[2]=100;
94 } else if(SFT_gbRunPA) {
96 centMin[0]=00; centMax[0]=20;
97 centMin[1]=20; centMax[1]=40;
98 centMin[2]=40; centMax[2]=60;
99 centMin[3]=60; centMax[3]=80;
102 TString antSuffix = SFT_gbSuffix;
103 for(int cc=0; cc!=ncent; ++cc) {
104 SFT_gbCentPerMin = centMin[cc];
105 SFT_gbCentPerMax = centMax[cc];
106 SFT_gbSuffix = Form("%s%d%d",antSuffix.Data(),SFT_gbCentPerMin,SFT_gbCentPerMax);
107 AddTaskFlowStrange();
110 AddTaskFlowStrange();
113 void AddTaskFlowStrange() {
116 TString fileName = AliAnalysisManager::GetCommonFileName();
117 fileName.ReplaceAll(".root","");
118 SFT_gbStamp = SFT_gbFolder + SFT_gbSuffix;
120 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
121 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
123 //-----------------STRANGE TASK----------------------------
124 AliAnalysisTaskFlowStrange *taskSel = new AliAnalysisTaskFlowStrange(Form("FS_%s",SFT_gbStamp.Data()) );
125 taskSel->SelectCollisionCandidates(SFT_gbTrigger);
126 taskSel->SetReadESD(SFT_gbReadESD);
127 taskSel->SetPostMatched(SFT_gbPostMatched);
128 taskSel->SetReadMC(SFT_gbReadMC);
129 taskSel->SetAvoidExec(SFT_gbAvoidExec);
130 taskSel->SetSkipSelection(SFT_gbSkipSelection);
131 taskSel->SetSkipFlow(SFT_gbSkipFlow);
132 taskSel->SetExtraEventRejection(SFT_gbExtraEventCut);
133 taskSel->SetCentralityRange(SFT_gbCentMethod,SFT_gbCentPerMin,SFT_gbCentPerMax);
134 if(SFT_gbRunPP) taskSel->Setpp();
135 if(SFT_gbRunPA) taskSel->SetpA();
136 taskSel->SetDebug(SFT_gbDebug);
137 taskSel->SetK0L0(SFT_gbSpecie);
138 taskSel->SetOnline( SFT_gbOnline );
139 taskSel->SetMass( SFT_MassBins(SFT_gbSpecie),
140 SFT_MinMass(SFT_gbSpecie),
141 SFT_MaxMass(SFT_gbSpecie) );
143 taskSel->SetWhichPsi(SFT_gbWhichPsi);
144 taskSel->SetRFPFilterBit(SFT_gbRFPFilterBit);
145 taskSel->SetRFPMinPt(SFT_gbRFPminPt);
146 taskSel->SetRFPMaxPt(SFT_gbRFPmaxPt);
147 taskSel->SetRFPMinEta(SFT_gbRFPminEta);
148 taskSel->SetRFPMaxEta(SFT_gbRFPmaxEta);
149 taskSel->SetRFPTPCSignal(SFT_gbRFPTPCsignal);
150 taskSel->SetRFPMaxIPxy(SFT_gbRFPmaxIPxy);
151 taskSel->SetRFPMaxIPz(SFT_gbRFPmaxIPz);
152 taskSel->SetRFPMinTPCCls(SFT_gbRFPTPCncls);
154 taskSel->SetDauUnTagProcedure(SFT_gbUntagDaughter);
155 taskSel->SetVertexZcut(SFT_gbVertexZcut);
157 taskSel->SetDauMinNClsTPC(SFT_gbMinNClsTPC);
158 taskSel->SetDauMinXRows(SFT_gbMinXRows);
159 taskSel->SetDauMaxChi2PerNClsTPC(SFT_gbMaxChi2PerNClsTPC);
160 taskSel->SetDauMinXRowsOverNClsFTPC(SFT_gbMinXRowsOverNClsFTPC);
161 taskSel->SetDauMinEta(SFT_gbMinEta);
162 taskSel->SetDauMaxEta(SFT_gbMaxEta);
163 taskSel->SetDauMinPt(SFT_gbMinPt);
164 taskSel->SetDauMinImpactParameterXY(SFT_gbMinImpactParameterXY);
165 taskSel->SetDauMaxNSigmaPID(SFT_gbMaxNSigmaPID);
167 taskSel->SetMaxRapidity(SFT_gbMaxRapidity);
168 taskSel->SetMaxDCAdaughters(SFT_gbMaxDCAdaughters);
169 taskSel->SetMinCosinePointingAngleXY(SFT_gbMinCosinePointingAngleXY);
170 taskSel->SetMinQt(SFT_gbMinQt,SFT_gbQtPie);
171 taskSel->SetMinRadXY(SFT_gbMinRadXY);
172 taskSel->SetMaxDecayLength(SFT_gbMaxDecayLength);
173 taskSel->SetMaxProductIPXY(SFT_gbMaxProductIPXY);
174 taskSel->SetMinEta(SFT_gbMinEta);
175 taskSel->SetMaxEta(SFT_gbMaxEta);
176 taskSel->SetMinPt(SFT_gbMinPt);
177 taskSel->SetUseFlowPackage(SFT_gbFlowPackage);
179 taskSel->SetQAlevel(SFT_gbQA);
180 if(SFT_gbVZEload.Length()>4) {
181 TFile *ocalib = TFile::Open(SFT_gbVZEload);
182 if(ocalib->IsOpen()) {
183 TList *vzero = ocalib->Get("VZECALIB");
184 taskSel->LoadVZEResponse(vzero,SFT_gbVZEmb,SFT_gbVZEpdisk);
186 printf("ADDTASKFLOWSTRANGE COULD NOT OPEN %s. NO VZE CALIBRATION LOADED!\n",SFT_gbVZEload.Data());
189 printf("Loading %d %d %d %d as VZE configuration\n",SFT_gbV0CRingMin, SFT_gbV0CRingMax, SFT_gbV0ARingMin, SFT_gbV0ARingMax);
190 taskSel->SetRFPVZERingRange( SFT_gbV0CRingMin, SFT_gbV0CRingMax, SFT_gbV0ARingMin, SFT_gbV0ARingMax );
191 taskSel->SetStoreVZEResponse(SFT_gbVZEsave);
193 AliAnalysisDataContainer *cOutHist = mgr->CreateContainer(Form("FS_OH_%s",SFT_gbStamp.Data()),
195 AliAnalysisManager::kOutputContainer,
196 Form("%s.root:Selector_%s",fileName.Data(),
197 SFT_gbFolder.Data()));
198 AliAnalysisDataContainer *exc_TPC = mgr->CreateContainer( Form("FS_TPC_%s",SFT_gbStamp.Data()),
199 AliFlowEventSimple::Class(),
200 AliAnalysisManager::kExchangeContainer );
201 AliAnalysisDataContainer *exc_VZE = mgr->CreateContainer( Form("FS_VZE_%s",SFT_gbStamp.Data()),
202 AliFlowEventSimple::Class(),
203 AliAnalysisManager::kExchangeContainer );
204 mgr->AddTask(taskSel);
205 mgr->ConnectInput (taskSel,0,cinput1);
206 mgr->ConnectOutput(taskSel,1,cOutHist);
207 mgr->ConnectOutput(taskSel,2,exc_TPC);
208 mgr->ConnectOutput(taskSel,3,exc_VZE);
210 if(!SFT_gbFlowPackage) return;
211 if( (!SFT_gbQCTPC) && (!SFT_gbSPVZE) && (!SFT_gbSPTPC) ) return;
212 //-------------------FLOWPACKAGE TASKS----------------------------
213 AliFlowTrackSimpleCuts *filter[20], *filterhf[20][2]; // MASS BANDS
214 int mbs = SFT_MassBands(SFT_gbSpecie);
215 if(SFT_gbPostMatched) mbs = 1;
216 for(int mb=0; mb!=mbs; ++mb) {
217 filter[mb] = new AliFlowTrackSimpleCuts( Form("Filter_MB%d",mb) );
218 filter[mb]->SetEtaMin( -0.8 ); filter[mb]->SetEtaMax( +0.8 );
219 Double_t minmass = SFT_MassBandLowEdge(SFT_gbSpecie,mb);
220 Double_t maxmass = SFT_MassBandLowEdge(SFT_gbSpecie,mb+1);
221 if(SFT_gbPostMatched) maxmass = SFT_MassBandLowEdge(SFT_gbSpecie,SFT_MassBands(SFT_gbSpecie));
222 filter[mb]->SetMassMin( minmass ); filter[mb]->SetMassMax( maxmass );
223 //half window for POIs
224 filterhf[mb][0] = new AliFlowTrackSimpleCuts( Form("Filterhf0_MB%d",mb) );
225 filterhf[mb][0]->SetEtaMin( +0.0 ); filterhf[mb][0]->SetEtaMax( +0.8 );
226 filterhf[mb][0]->SetMassMin( minmass ); filterhf[mb][0]->SetMassMax( maxmass );
227 filterhf[mb][1] = new AliFlowTrackSimpleCuts( Form("Filterhf1_MB%d",mb) );
228 filterhf[mb][1]->SetEtaMin( -0.8 ); filterhf[mb][1]->SetEtaMax( -0.0 );
229 filterhf[mb][1]->SetMassMin( minmass ); filterhf[mb][1]->SetMassMax( maxmass );
231 SFT_AddQCmethod( Form("QCTPCMB%d",mb), exc_TPC, filter[mb]); // QC TPC
234 SFT_AddSPmethod( Form("SPTPCMB%d",mb), exc_TPC, filterhf[mb][0], "Qa" ); // SP TPC Qa
235 SFT_AddSPmethod( Form("SPTPCMB%d",mb), exc_TPC, filterhf[mb][1], "Qb" ); // SP TPC Qb
236 SFT_AddSPmethod( Form("SPTPC2MB%d",mb), exc_TPC, filterhf[mb][0], "Qa", 0.2 ); // SP TPC Qa
237 SFT_AddSPmethod( Form("SPTPC2MB%d",mb), exc_TPC, filterhf[mb][1], "Qb", 0.2 ); // SP TPC Qb
238 SFT_AddSPmethod( Form("SPTPC4MB%d",mb), exc_TPC, filterhf[mb][0], "Qa", 0.4 ); // SP TPC Qa
239 SFT_AddSPmethod( Form("SPTPC4MB%d",mb), exc_TPC, filterhf[mb][1], "Qb", 0.4 ); // SP TPC Qb
242 if(SFT_gbSPVZEhalf) {
243 SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filterhf[mb][0], "Qa", 1.0 ); // SP VZE Qa
244 SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filterhf[mb][1], "Qb", 1.0 ); // SP VZE Qa
246 SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filter[mb], "Qa", 1.0 ); // SP VZE Qa
247 SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filter[mb], "Qb", 1.0 ); // SP VZE Qa
252 void SFT_AddQCmethod(char *name, AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL) {
253 TString fileName = AliAnalysisManager::GetCommonFileName();
254 TString myFolder = Form("%sv%d",SFT_gbFolder.Data(),SFT_gbHarmonic);
255 TString myName = Form("%sv%d_%s",name,SFT_gbHarmonic,SFT_gbSuffix.Data());
256 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
257 AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myName.Data()),
258 AliFlowEventSimple::Class(),
259 AliAnalysisManager::kExchangeContainer );
260 AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myName.Data()),
262 mgr->AddTask(tskFilter);
263 mgr->ConnectInput( tskFilter,0,flowEvent);
264 mgr->ConnectOutput(tskFilter,1,flowEvent2);
265 AliAnalysisDataContainer *outQC = mgr->CreateContainer( myName.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,
266 Form("%s:FlowStrange_QC_%s",fileName.Data(),myFolder.Data()) );
267 AliAnalysisTaskQCumulants *tskQC = new AliAnalysisTaskQCumulants( Form("TaskQCumulants_%s",myName.Data()),kFALSE );
268 tskQC->SetApplyCorrectionForNUA(kTRUE);
269 tskQC->SetHarmonic(SFT_gbHarmonic);
270 tskQC->SetBookOnlyBasicCCH(SFT_gbShrinkFP);
272 mgr->ConnectInput( tskQC,0,flowEvent2);
273 mgr->ConnectOutput(tskQC,1,outQC);
275 void SFT_AddSPmethod(char *name, AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL, char *Qvector, Double_t gap=0.0) {
276 TString fileName = AliAnalysisManager::GetCommonFileName();
277 TString myFolder = Form("%sv%d",SFT_gbFolder.Data(),SFT_gbHarmonic);
278 TString myNameSP = Form("%sv%d%s_%s",name,SFT_gbHarmonic,Qvector,SFT_gbSuffix.Data());
279 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
280 AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myNameSP.Data()),
281 AliFlowEventSimple::Class(),
282 AliAnalysisManager::kExchangeContainer );
283 AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myNameSP.Data()),
285 tskFilter->SetSubeventEtaRange( -5.0, -gap, +gap, +5.0 );
286 mgr->AddTask(tskFilter);
287 mgr->ConnectInput( tskFilter,0,flowEvent);
288 mgr->ConnectOutput(tskFilter,1,flowEvent2);
289 AliAnalysisDataContainer *outSP = mgr->CreateContainer( myNameSP.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,
290 Form("%s:FlowStrange_SP_%s",fileName.Data(),myFolder.Data()) );
291 AliAnalysisTaskScalarProduct *tskSP = new AliAnalysisTaskScalarProduct( Form("TaskScalarProduct_%s",myNameSP.Data()),kFALSE);
292 tskSP->SetApplyCorrectionForNUA(kTRUE);
293 tskSP->SetHarmonic(SFT_gbHarmonic);
294 tskSP->SetTotalQvector(Qvector);
295 tskSP->SetBookOnlyBasicCCH(SFT_gbShrinkFP);
297 mgr->ConnectInput( tskSP,0,flowEvent2);
298 mgr->ConnectOutput(tskSP,1,outSP);
300 double SFT_MassBandLowEdge( int nv0, int mb ) {
301 if(nv0>10&&mb==0) return -5;
302 if(nv0>10&&mb==1) return +5;
305 double lowEdge[14]={0.398, 0.420, 0.444, 0.468, 0.486,
306 0.490, 0.494, 0.498, 0.502, 0.506,
307 0.524, 0.548, 0.572, 0.598};
310 double lowEdge[13]={1.084, 1.094, 1.104, 1.110, 1.114,
311 1.116, 1.118, 1.122, 1.128, 1.138,
312 1.148, 1.158, 1.168};
317 int SFT_MassBands( int nv0 ) {
329 int SFT_MassBins( int nv0 ) {
339 if(nv0>10) bins=100;//CHARGED
342 double SFT_MinMass( int nv0 ) {
343 return SFT_MassBandLowEdge( nv0, 0 );
345 double SFT_MaxMass( int nv0 ) {
346 return SFT_MassBandLowEdge( nv0, SFT_MassBands(nv0) );
348 void SFT_PrintConfig() {
349 printf("***********************************\n");
350 printf("* STRANGE FLOW TASK CONFIGURATION *\n");
351 printf("* SUFFIX %8s *\n", SFT_gbSuffix.Data() );
352 printf("* TRIGGER %8d *\n", SFT_gbTrigger );
353 printf("* RUNPP %3d *\n", SFT_gbRunPP );
354 printf("* RUNPA %3d *\n", SFT_gbRunPA );
355 printf("* AVOIDEXEC %3d *\n", SFT_gbAvoidExec );
356 printf("* ESD %3d *\n", SFT_gbReadESD );
357 printf("* MC %3d *\n", SFT_gbReadMC );
358 printf("* POSTMATCHED %3d *\n", SFT_gbPostMatched );
359 printf("* EXTRAEVENTCUT %3d *\n", SFT_gbExtraEventCut );
360 printf("* CENTMETHOD %8s *\n", SFT_gbCentMethod.Data() );
361 printf("* CENTPERMIN %3d *\n", SFT_gbCentPerMin );
362 printf("* CENTPERMAX %3d *\n", SFT_gbCentPerMax );
363 printf("* VERTEXZ %3d *\n", SFT_gbVertexZcut );
364 printf("* SPECIE %3d *\n", SFT_gbSpecie );
365 printf("* HOMEMADE %3d *\n", SFT_gbHomemade );
366 printf("* ONLINE %3d *\n", SFT_gbOnline );
367 printf("* MINNCLSTTPC %3d *\n", SFT_gbMinNClsTPC );
368 printf("* MINXROWS %3d *\n", SFT_gbMinXRows );
369 printf("* MAXCHI2NCLSTPC %+9.6f *\n", SFT_gbMaxChi2PerNClsTPC );
370 printf("* MINXROWSNFCLSTPC %+9.6f *\n", SFT_gbMinXRowsOverNClsFTPC );
371 printf("* MINETA %+9.6f *\n", SFT_gbMinEta );
372 printf("* MAXETA %+9.6f *\n", SFT_gbMaxEta );
373 printf("* MINPT %+9.6f *\n", SFT_gbMinPt );
374 printf("* UNTAG %+9.6f *\n", SFT_gbUntagDaughter );
375 printf("* MIND0XY %+9.6f *\n", SFT_gbMinImpactParameterXY );
376 printf("* MAXSIGMAPID %+9.6f *\n", SFT_gbMaxNSigmaPID );
377 printf("* MAXY %+9.6f *\n", SFT_gbMaxRapidity );
378 printf("* MAXDCA %+9.6f *\n", SFT_gbMaxDCAdaughters );
379 printf("* MINCTP %+9.6f *\n", SFT_gbMinCosinePointingAngleXY );
380 printf("* MINQT %+9.6f *\n", SFT_gbMinQt );
381 printf("* QTPIE %+9.6f *\n", SFT_gbQtPie );
382 printf("* MINRADXY %+9.6f *\n", SFT_gbMinRadXY );
383 printf("* MAXDL %+9.6f *\n", SFT_gbMaxDecayLength );
384 printf("* D0D0XY %+9.6f *\n", SFT_gbMaxProductIPXY );
385 printf("* DEBUG %3d *\n", SFT_gbDebug );
386 printf("* QA %3d *\n", SFT_gbQA );
387 printf("* SKIPSELECTION %3d *\n", SFT_gbSkipSelection );
388 printf("* SKIPFLOW %3d *\n", SFT_gbSkipFlow );
389 printf("* USEFP %3d *\n", SFT_gbFlowPackage );
390 printf("* SPVZE %3d *\n", SFT_gbSPVZE );
391 printf("* SPVZEHALF %3d *\n", SFT_gbSPVZEhalf );
392 printf("* SPTPC %3d *\n", SFT_gbSPTPC );
393 printf("* QCTPC %3d *\n", SFT_gbQCTPC );
394 printf("* SHRINKFP %3d *\n", SFT_gbShrinkFP );
395 printf("* RFFILTERBIT %3d *\n", SFT_gbRFPFilterBit );
396 printf("* RFMINPT %+9.6f *\n", SFT_gbRFPminPt );
397 printf("* RFMAXPT %+9.6f *\n", SFT_gbRFPmaxPt );
398 printf("* RFMINETA %+9.6f *\n", SFT_gbRFPminEta );
399 printf("* RFMAXETA %+9.6f *\n", SFT_gbRFPmaxEta );
400 printf("* RFTPCSIGNAL %+9.6f *\n", SFT_gbRFPTPCsignal );
401 printf("* RFMAXIPXY %+9.6f *\n", SFT_gbRFPmaxIPxy );
402 printf("* RFMAXIPZ %+9.6f *\n", SFT_gbRFPmaxIPz );
403 printf("* RFTPCNCLS %3d *\n", SFT_gbRFPTPCncls );
404 printf("* VZELOAD %8s *\n", SFT_gbVZEload.Data() );
405 printf("* VZELINEAR %3d *\n", SFT_gbVZEmb );
406 printf("* VZEPERDISK %3d *\n", SFT_gbVZEpdisk );
407 printf("* VZESAVE %3d *\n", SFT_gbVZEsave );
408 printf("***********************************\n");
410 void SFT_ReadConfig(TString ipf) {
412 printf("Reading %s\n",ipf.Data());
413 ifstream input(ipf.Data());
419 for(;input.good();) {
423 } else if(!varname.CompareTo("SUFFIX")) {
424 input >> SFT_gbSuffix;
425 } else if(!varname.CompareTo("TRIGGER")) {
426 input >> SFT_gbTrigger;
427 } else if(!varname.CompareTo("RUNPP")) {
428 input >> SFT_gbRunPP;
429 } else if(!varname.CompareTo("RUNPA")) {
430 input >> SFT_gbRunPA;
431 } else if(!varname.CompareTo("AVOIDEXEC")) {
432 input >> SFT_gbAvoidExec;
433 } else if(!varname.CompareTo("ESD")) {
434 input >> SFT_gbReadESD;
435 } else if(!varname.CompareTo("MC")) {
436 input >> SFT_gbReadMC;
437 } else if(!varname.CompareTo("EXTRAEVENTCUT")) {
438 input >> SFT_gbExtraEventCut;
439 } else if(!varname.CompareTo("CENTMETHOD")) {
440 input >> SFT_gbCentMethod;
441 } else if(!varname.CompareTo("CENTPERMIN")) {
442 input >> SFT_gbCentPerMin;
443 } else if(!varname.CompareTo("CENTPERMAX")) {
444 input >> SFT_gbCentPerMax;
445 } else if(!varname.CompareTo("SPECIE")) {
446 input >> SFT_gbSpecie;
447 } else if(!varname.CompareTo("HOMEMADE")) {
448 input >> SFT_gbHomemade;
449 } else if(!varname.CompareTo("ONLINE")) {
450 input >> SFT_gbOnline;
451 } else if(!varname.CompareTo("MINNCLSTTPC")) {
452 input >> SFT_gbMinNClsTPC;
453 } else if(!varname.CompareTo("MINXROWS")) {
454 input >> SFT_gbMinXRows;
455 } else if(!varname.CompareTo("MAXCHI2NCLSTPC")) {
456 input >> SFT_gbMaxChi2PerNClsTPC;
457 } else if(!varname.CompareTo("MINXROWSNFCLSTPC")) {
458 input >> SFT_gbMinXRowsOverNClsFTPC;
459 } else if(!varname.CompareTo("MINETA")) {
460 input >> SFT_gbMinEta;
461 } else if(!varname.CompareTo("MAXETA")) {
462 input >> SFT_gbMaxEta;
463 } else if(!varname.CompareTo("MINPT")) {
464 input >> SFT_gbMinPt;
465 } else if(!varname.CompareTo("MIND0XY")) {
466 input >> SFT_gbMinImpactParameterXY;
467 } else if(!varname.CompareTo("MAXSIGMAPID")) {
468 input >> SFT_gbMaxNSigmaPID;
469 } else if(!varname.CompareTo("MAXY")) {
470 input >> SFT_gbMaxRapidity;
471 } else if(!varname.CompareTo("MAXDCA")) {
472 input >> SFT_gbMaxDCAdaughters;
473 } else if(!varname.CompareTo("MINCTP")) {
474 input >> SFT_gbMinCosinePointingAngleXY;
475 } else if(!varname.CompareTo("MINQT")) {
476 input >> SFT_gbMinQt;
477 } else if(!varname.CompareTo("QTPIE")) {
478 input >> SFT_gbQtPie;
479 } else if(!varname.CompareTo("MINRADXY")) {
480 input >> SFT_gbMinRadXY;
481 } else if(!varname.CompareTo("MAXDL")) {
482 input >> SFT_gbMaxDecayLength;
483 } else if(!varname.CompareTo("D0D0XY")) {
484 input >> SFT_gbMaxProductIPXY;
485 } else if(!varname.CompareTo("DEBUG")) {
486 input >> SFT_gbDebug;
487 } else if(!varname.CompareTo("QA")) {
489 } else if(!varname.CompareTo("SKIPSELECTION")) {
490 input >> SFT_gbSkipSelection;
491 } else if(!varname.CompareTo("SKIPFLOW")) {
492 input >> SFT_gbSkipFlow;
493 } else if(!varname.CompareTo("USEFP")) {
494 input >> SFT_gbFlowPackage;
495 } else if(!varname.CompareTo("SPVZE")) {
496 input >> SFT_gbSPVZE;
497 } else if(!varname.CompareTo("SPTPC")) {
498 input >> SFT_gbSPTPC;
499 } else if(!varname.CompareTo("SPVZEHALF")) {
500 input >> SFT_gbSPVZEhalf;
501 } else if(!varname.CompareTo("QCTPC")) {
502 input >> SFT_gbQCTPC;
503 } else if(!varname.CompareTo("SHRINKFP")) {
504 input >> SFT_gbShrinkFP;
505 } else if(!varname.CompareTo("RFFILTERBIT")) {
506 input >> SFT_gbRFPFilterBit;
507 } else if(!varname.CompareTo("RFMINPT")) {
508 input >> SFT_gbRFPminPt;
509 } else if(!varname.CompareTo("RFMAXPT")) {
510 input >> SFT_gbRFPmaxPt;
511 } else if(!varname.CompareTo("RFMINETA")) {
512 input >> SFT_gbRFPminEta;
513 } else if(!varname.CompareTo("RFMAXETA")) {
514 input >> SFT_gbRFPmaxEta;
515 } else if(!varname.CompareTo("RFTPCSIGNAL")) {
516 input >> SFT_gbRFPTPCsignal;
517 } else if(!varname.CompareTo("RFMAXIPXY")) {
518 input >> SFT_gbRFPmaxIPxy;
519 } else if(!varname.CompareTo("RFMAXIPZ")) {
520 input >> SFT_gbRFPmaxIPz;
521 } else if(!varname.CompareTo("RFTPCNCLS")) {
522 input >> SFT_gbRFPTPCncls;
523 } else if(!varname.CompareTo("VZELOAD")) {
524 input >> SFT_gbVZEload;
525 } else if(!varname.CompareTo("VZELINEAR")) {
526 input >> SFT_gbVZEmb;
527 } else if(!varname.CompareTo("VZEPERDISK")) {
528 input >> SFT_gbVZEpdisk;
529 } else if(!varname.CompareTo("VZESAVE")) {
530 input >> SFT_gbVZEsave;
531 } else if(!varname.CompareTo("ALLCC")) {
532 input >> SFT_gbAllCC;
533 } else if(!varname.CompareTo("UNTAG")) {
534 input >> SFT_gbUntagDaughter;
535 } else if(!varname.CompareTo("POSTMATCHED")) {
536 input >> SFT_gbPostMatched;
537 } else if(!varname.CompareTo("VERTEXZ")) {
538 input >> SFT_gbVertexZcut;
540 printf("I dont understand %s\n",varname.Data());
544 void SFT_ResetVars() {
550 SFT_gbExtraEventCut=0;
551 SFT_gbCentMethod="V0MTRK";
553 SFT_gbCentPerMax=100;
561 SFT_gbMaxChi2PerNClsTPC=4.0;
562 SFT_gbMinXRowsOverNClsFTPC=0.8;
566 SFT_gbMinImpactParameterXY=0.1;
567 SFT_gbMaxNSigmaPID=3.0;
568 SFT_gbMaxRapidity=0.5;
569 SFT_gbMaxDCAdaughters=1.0;
570 SFT_gbMinCosinePointingAngleXY=0.998;
574 SFT_gbMaxDecayLength=3.0;
575 SFT_gbMaxProductIPXY=0.0;
578 SFT_gbFolder="FlowStrange";
579 SFT_gbSuffix="NOTFOUND";
580 SFT_gbRFPFilterBit=1;
583 SFT_gbRFPminEta=-0.8;
584 SFT_gbRFPmaxEta=+0.8;
585 SFT_gbRFPTPCsignal=10;
586 SFT_gbRFPmaxIPxy=2.4;
590 SFT_gbSkipSelection=0;
595 SFT_gbSPVZEhalf=kFALSE;
603 SFT_gbUntagDaughter=kTRUE;
604 SFT_gbPostMatched=kFALSE;
605 SFT_gbShrinkFP=kTRUE;
606 SFT_gbVertexZcut=10.0;