]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGCF/FLOW/macros/AddTaskFlowStrange.C
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGCF / FLOW / macros / AddTaskFlowStrange.C
index 040dacc8a8870274a0f2ed7ff8379344ca98ad3b..adb22c62fc174195d52f1eb7237b10fa49518f9e 100644 (file)
-UInt_t SFT_gbTrigger;\r
-Bool_t SFT_gbReadESD;\r
-Bool_t SFT_gbReadMC;\r
-Int_t SFT_gbMatchMC;\r
-Bool_t SFT_gbAvoidExec;\r
-Bool_t SFT_gbExtraEventCut=kFALSE;\r
-TString SFT_gbCentMethod;\r
-Int_t SFT_gbCentPerMin,SFT_gbCentPerMax;\r
-Bool_t SFT_gbRunPP;\r
-Bool_t SFT_gbRunPA;\r
-Int_t SFT_gbSpecie;\r
-Bool_t SFT_gbHomemade;\r
-Bool_t SFT_gbOnline;\r
-Int_t SFT_gbMinNClsTPC;\r
-Int_t SFT_gbMinXRows;\r
-Double_t SFT_gbMaxChi2PerNClsTPC;\r
-Double_t SFT_gbMinXRowsOverNClsFTPC;\r
-Double_t SFT_gbMinEta;\r
-Double_t SFT_gbMaxEta;\r
-Double_t SFT_gbMinPt;\r
-Double_t SFT_gbMinImpactParameterXY;\r
-Double_t SFT_gbMaxNSigmaPID;\r
-Double_t SFT_gbMaxRapidity;\r
-Double_t SFT_gbMaxDCAdaughters;\r
-Double_t SFT_gbMinCosinePointingAngleXY;\r
-Double_t SFT_gbMinQt;\r
-Bool_t   SFT_gbQtPie=kTRUE;\r
-Double_t SFT_gbMinRadXY;\r
-Double_t SFT_gbMaxDecayLength;\r
-Double_t SFT_gbMaxProductIPXY;\r
-Int_t SFT_gbDebug;\r
-Int_t SFT_gbQA;\r
-TString SFT_gbFolder;\r
-TString SFT_gbSuffix;\r
-TString SFT_gbStamp;\r
-Int_t SFT_gbRFPFilterBit;\r
-Double_t SFT_gbRFPminPt;\r
-Double_t SFT_gbRFPmaxPt;\r
-Double_t SFT_gbRFPminEta;\r
-Double_t SFT_gbRFPmaxEta;\r
-Double_t SFT_gbRFPTPCsignal;\r
-Double_t SFT_gbRFPmaxIPxy;\r
-Double_t SFT_gbRFPmaxIPz;\r
-Int_t SFT_gbRFPTPCncls;\r
-\r
-Bool_t SFT_gbAllCC;\r
-Bool_t SFT_gbSkipSelection;\r
-Bool_t SFT_gbSkipFlow;\r
-Int_t SFT_gbWhichPsi;\r
-Bool_t SFT_gbFlowPackage;\r
-Bool_t SFT_gbSPVZE;\r
-Bool_t SFT_gbSPTPC;\r
-Bool_t SFT_gbQCTPC;\r
-Int_t SFT_gbHarmonic;\r
-TString SFT_gbVZEload;\r
-Bool_t SFT_gbVZEsave;\r
-Bool_t SFT_gbVZEmb;\r
-\r
-void AddTaskFlowStrange(TString configFile, TString alienaddress) {\r
-  Int_t ret = gSystem->Exec( Form("alien_cp %s/%s .",alienaddress.Data(),configFile.Data()) );\r
-  printf("FlowStrange copying from grid %d\n",ret);\r
-  AddTaskFlowStrange(configFile);\r
-}\r
-void AddTaskFlowStrange(TString configFile) {\r
-  SFT_ReadConfig(configFile);\r
-  if(SFT_gbAllCC) {\r
-    int centMin[9] = {00,05,10,20,30,40,50,60,70};\r
-    int centMax[9] = {05,10,20,30,40,50,60,70,80};\r
-    int ncent=9;\r
-    if(SFT_gbRunPP) {\r
-      ncent=3;\r
-      centMin[0]=10; centMax[0]=30;\r
-      centMin[1]=30; centMax[1]=50;\r
-      centMin[2]=0; centMax[2]=100;\r
-    } else if(SFT_gbRunPA) {\r
-      ncent=4;\r
-      centMin[0]=00; centMax[0]=20;\r
-      centMin[1]=20; centMax[1]=40;\r
-      centMin[2]=40; centMax[2]=60;\r
-      centMin[3]=60; centMax[3]=80;\r
-    } else {\r
-    }\r
-    TString antSuffix = SFT_gbSuffix;\r
-    for(int cc=0; cc!=ncent; ++cc) {\r
-      SFT_gbCentPerMin = centMin[cc];\r
-      SFT_gbCentPerMax = centMax[cc];\r
-      SFT_gbSuffix = Form("%s%d%d",antSuffix.Data(),SFT_gbCentPerMin,SFT_gbCentPerMax);\r
-      AddTaskFlowStrange();\r
-    }\r
-  } else {\r
-    AddTaskFlowStrange();\r
-  }\r
-}\r
-void AddTaskFlowStrange() {\r
-  SFT_PrintConfig();\r
-\r
-  TString fileName = AliAnalysisManager::GetCommonFileName();\r
-  fileName.ReplaceAll(".root","");\r
-  SFT_gbStamp = SFT_gbFolder + SFT_gbSuffix;\r
-\r
-  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
-  AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();\r
-\r
-  //-----------------STRANGE TASK----------------------------\r
-  AliAnalysisTaskFlowStrange *taskSel = new AliAnalysisTaskFlowStrange(Form("FS_%s",SFT_gbStamp.Data()) );\r
-  taskSel->SelectCollisionCandidates(SFT_gbTrigger);\r
-  taskSel->SetReadESD(SFT_gbReadESD);\r
-  taskSel->SetReadMC(SFT_gbReadMC);\r
-  taskSel->SetAvoidExec(SFT_gbAvoidExec);\r
-  taskSel->SetSkipSelection(SFT_gbSkipSelection);\r
-  taskSel->SetSkipFlow(SFT_gbSkipFlow);\r
-  taskSel->SetExtraEventRejection(SFT_gbExtraEventCut);\r
-  taskSel->SetCentralityRange(SFT_gbCentMethod,SFT_gbCentPerMin,SFT_gbCentPerMax);\r
-  if(SFT_gbRunPP) taskSel->Setpp();\r
-  if(SFT_gbRunPA) taskSel->SetpA();\r
-  taskSel->SetDebug(SFT_gbDebug);\r
-  taskSel->SetK0L0(SFT_gbSpecie);\r
-  taskSel->SetOnline( SFT_gbOnline );\r
-  taskSel->SetMass( SFT_MassBins(SFT_gbSpecie),\r
-                    SFT_MinMass(SFT_gbSpecie),\r
-                    SFT_MaxMass(SFT_gbSpecie) );\r
-\r
-  taskSel->SetWhichPsi(SFT_gbWhichPsi);\r
-  taskSel->SetRFPFilterBit(SFT_gbRFPFilterBit);\r
-  taskSel->SetRFPMinPt(SFT_gbRFPminPt);\r
-  taskSel->SetRFPMaxPt(SFT_gbRFPmaxPt);\r
-  taskSel->SetRFPMinEta(SFT_gbRFPminEta);\r
-  taskSel->SetRFPMaxEta(SFT_gbRFPmaxEta);\r
-  taskSel->SetRFPTPCSignal(SFT_gbRFPTPCsignal);\r
-  taskSel->SetRFPMaxIPxy(SFT_gbRFPmaxIPxy);\r
-  taskSel->SetRFPMaxIPz(SFT_gbRFPmaxIPz);\r
-  taskSel->SetRFPMinTPCCls(SFT_gbRFPTPCncls);\r
-\r
-  taskSel->SetDauMinNClsTPC(SFT_gbMinNClsTPC);\r
-  taskSel->SetDauMaxChi2PerNClsTPC(SFT_gbMaxChi2PerNClsTPC);\r
-  taskSel->SetDauMinXRowsOverNClsFTPC(SFT_gbMinXRowsOverNClsFTPC);\r
-  taskSel->SetDauMinEta(SFT_gbMinEta);\r
-  taskSel->SetDauMaxEta(SFT_gbMaxEta);\r
-  taskSel->SetDauMinPt(SFT_gbMinPt);\r
-  taskSel->SetDauMinImpactParameterXY(SFT_gbMinImpactParameterXY);\r
-  taskSel->SetDauMaxNSigmaPID(SFT_gbMaxNSigmaPID);\r
-\r
-  taskSel->SetMaxRapidity(SFT_gbMaxRapidity);\r
-  taskSel->SetMaxDCAdaughters(SFT_gbMaxDCAdaughters);\r
-  taskSel->SetMinCosinePointingAngleXY(SFT_gbMinCosinePointingAngleXY);\r
-  taskSel->SetMinQt(SFT_gbMinQt,SFT_gbQtPie);\r
-  taskSel->SetMinRadXY(SFT_gbMinRadXY);\r
-  taskSel->SetMaxDecayLength(SFT_gbMaxDecayLength);\r
-  taskSel->SetMaxProductIPXY(SFT_gbMaxProductIPXY);\r
-  taskSel->SetMinEta(SFT_gbMinEta);\r
-  taskSel->SetMaxEta(SFT_gbMaxEta);\r
-  taskSel->SetMinPt(SFT_gbMinPt);\r
-  taskSel->SetUseFlowPackage(SFT_gbFlowPackage);\r
-\r
-  taskSel->SetQAlevel(SFT_gbQA);\r
-  if(SFT_gbVZEload.Length()>4) {\r
-    TFile *ocalib = TFile::Open(SFT_gbVZEload);\r
-    if(ocalib->IsOpen()) {\r
-      TList *vzero = ocalib->Get("VZECALIB");\r
-      taskSel->LoadVZEResponse(vzero,SFT_gbVZEmb);\r
-    } else {\r
-      printf("ADDTASKFLOWSTRANGE COULD NOT OPEN %s. NO VZE CALIBRATION LOADED!\n",SFT_gbVZEload.Data());\r
-    }\r
-  }\r
-\r
-  taskSel->SetStoreVZEResponse(SFT_gbVZEsave);\r
-  AliAnalysisDataContainer *cOutHist = mgr->CreateContainer(Form("FS_OH_%s",SFT_gbStamp.Data()),\r
-                                                           TList::Class(),\r
-                                                           AliAnalysisManager::kOutputContainer,\r
-                                                           Form("%s.root:Selector_%s",fileName.Data(),\r
-                                                                SFT_gbFolder.Data()));\r
-  AliAnalysisDataContainer *exc_TPC = mgr->CreateContainer( Form("FS_TPC_%s",SFT_gbStamp.Data()),\r
-                                                            AliFlowEventSimple::Class(),\r
-                                                            AliAnalysisManager::kExchangeContainer );\r
-  AliAnalysisDataContainer *exc_VZE = mgr->CreateContainer( Form("FS_VZE_%s",SFT_gbStamp.Data()),\r
-                                                            AliFlowEventSimple::Class(),\r
-                                                            AliAnalysisManager::kExchangeContainer );\r
-  mgr->AddTask(taskSel);\r
-  mgr->ConnectInput (taskSel,0,cinput1);\r
-  mgr->ConnectOutput(taskSel,1,cOutHist);\r
-  mgr->ConnectOutput(taskSel,2,exc_TPC);\r
-  mgr->ConnectOutput(taskSel,3,exc_VZE);\r
-\r
-  if(!SFT_gbFlowPackage) return;\r
-  if( (!SFT_gbQCTPC) && (!SFT_gbSPVZE) && (!SFT_gbSPTPC) ) return;\r
-  //-------------------FLOWPACKAGE TASKS----------------------------\r
-  AliFlowTrackSimpleCuts *filter[20], *filterhf[20][2]; // MASS BANDS\r
-  for(int mb=0; mb!=SFT_MassBands(SFT_gbSpecie); ++mb) {\r
-    filter[mb] = new AliFlowTrackSimpleCuts( Form("Filter_MB%d",mb) );\r
-    filter[mb]->SetEtaMin( -0.8 ); filter[mb]->SetEtaMax( +0.8 );\r
-    filter[mb]->SetMassMin( SFT_MassBandLowEdge(SFT_gbSpecie,mb) ); filter[mb]->SetMassMax( SFT_MassBandLowEdge(SFT_gbSpecie,mb+1) );\r
-    //half window for POIs\r
-    filterhf[mb][0] = new AliFlowTrackSimpleCuts( Form("Filterhf0_MB%d",mb) );\r
-    filterhf[mb][0]->SetEtaMin( +0.0 ); filterhf[mb][0]->SetEtaMax( +0.8 );\r
-    filterhf[mb][0]->SetMassMin( SFT_MassBandLowEdge(SFT_gbSpecie,mb) ); filterhf[mb][0]->SetMassMax( SFT_MassBandLowEdge(SFT_gbSpecie,mb+1) );\r
-    filterhf[mb][1] = new AliFlowTrackSimpleCuts( Form("Filterhf1_MB%d",mb) );\r
-    filterhf[mb][1]->SetEtaMin( -0.8 ); filterhf[mb][1]->SetEtaMax( -0.0 );\r
-    filterhf[mb][1]->SetMassMin( SFT_MassBandLowEdge(SFT_gbSpecie,mb) ); filterhf[mb][1]->SetMassMax( SFT_MassBandLowEdge(SFT_gbSpecie,mb+1) );\r
-    if(SFT_gbQCTPC) {\r
-      SFT_AddQCmethod( Form("QCTPCMB%d",mb), exc_TPC, filter[mb]); // QC TPC\r
-    }\r
-    if(SFT_gbSPTPC) {\r
-      SFT_AddSPmethod( Form("SPTPCMB%d",mb), exc_TPC, filterhf[mb][0], "Qa" ); // SP TPC Qa\r
-      SFT_AddSPmethod( Form("SPTPCMB%d",mb), exc_TPC, filterhf[mb][1], "Qb" ); // SP TPC Qb\r
-      SFT_AddSPmethod( Form("SPTPC2MB%d",mb), exc_TPC, filterhf[mb][0], "Qa", 0.2 ); // SP TPC Qa\r
-      SFT_AddSPmethod( Form("SPTPC2MB%d",mb), exc_TPC, filterhf[mb][1], "Qb", 0.2 ); // SP TPC Qb\r
-      SFT_AddSPmethod( Form("SPTPC4MB%d",mb), exc_TPC, filterhf[mb][0], "Qa", 0.4 ); // SP TPC Qa\r
-      SFT_AddSPmethod( Form("SPTPC4MB%d",mb), exc_TPC, filterhf[mb][1], "Qb", 0.4 ); // SP TPC Qb\r
-    }\r
-    if(SFT_gbSPVZE) {\r
-      SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filter[mb], "Qa" ); // SP VZE Qa\r
-      SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filter[mb], "Qb" ); // SP VZE Qa\r
-    }\r
-  }\r
-}\r
-void SFT_AddQCmethod(char *name, AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL) {\r
-  TString fileName = AliAnalysisManager::GetCommonFileName();\r
-  TString myFolder = Form("%sv%d",SFT_gbFolder.Data(),SFT_gbHarmonic);\r
-  TString myName = Form("%sv%d_%s",name,SFT_gbHarmonic,SFT_gbSuffix.Data());\r
-  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
-  AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myName.Data()),\r
-                                                               AliFlowEventSimple::Class(),\r
-                                                               AliAnalysisManager::kExchangeContainer );\r
-  AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myName.Data()),\r
-                                                                    NULL, cutsPOI);\r
-  mgr->AddTask(tskFilter);\r
-  mgr->ConnectInput( tskFilter,0,flowEvent);\r
-  mgr->ConnectOutput(tskFilter,1,flowEvent2);\r
-  AliAnalysisDataContainer *outQC = mgr->CreateContainer( myName.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,\r
-                                                          Form("%s:FlowStrange_QC_%s",fileName.Data(),myFolder.Data()) );\r
-  AliAnalysisTaskQCumulants *tskQC = new AliAnalysisTaskQCumulants( Form("TaskQCumulants_%s",myName.Data()),kFALSE );\r
-  tskQC->SetApplyCorrectionForNUA(kTRUE);\r
-  tskQC->SetHarmonic(SFT_gbHarmonic);\r
-  tskQC->SetBookOnlyBasicCCH(kTRUE);\r
-  mgr->AddTask(tskQC);\r
-  mgr->ConnectInput( tskQC,0,flowEvent2);\r
-  mgr->ConnectOutput(tskQC,1,outQC);\r
-}\r
-void SFT_AddSPmethod(char *name, AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL, char *Qvector, Double_t gap=0.0) {\r
-  TString fileName = AliAnalysisManager::GetCommonFileName();\r
-  TString myFolder = Form("%sv%d",SFT_gbFolder.Data(),SFT_gbHarmonic);\r
-  TString myNameSP = Form("%sv%d%s_%s",name,SFT_gbHarmonic,Qvector,SFT_gbSuffix.Data());\r
-  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
-  AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myNameSP.Data()),\r
-                                                               AliFlowEventSimple::Class(),\r
-                                                               AliAnalysisManager::kExchangeContainer );\r
-  AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myNameSP.Data()),\r
-                                                                    NULL, cutsPOI);\r
-  tskFilter->SetSubeventEtaRange( -5.0, -gap, +gap, +5.0 );\r
-  mgr->AddTask(tskFilter);\r
-  mgr->ConnectInput( tskFilter,0,flowEvent);\r
-  mgr->ConnectOutput(tskFilter,1,flowEvent2);\r
-  AliAnalysisDataContainer *outSP = mgr->CreateContainer( myNameSP.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,\r
-                                                          Form("%s:FlowStrange_SP_%s",fileName.Data(),myFolder.Data()) );\r
-  AliAnalysisTaskScalarProduct *tskSP = new AliAnalysisTaskScalarProduct( Form("TaskScalarProduct_%s",myNameSP.Data()),kFALSE);\r
-  tskSP->SetApplyCorrectionForNUA(kTRUE);\r
-  tskSP->SetHarmonic(SFT_gbHarmonic);\r
-  tskSP->SetTotalQvector(Qvector);\r
-  //tskSP->SetBookOnlyBasicCCH(kTRUE);\r
-  tskSP->SetBookOnlyBasicCCH(kFALSE);\r
-  mgr->AddTask(tskSP);\r
-  mgr->ConnectInput( tskSP,0,flowEvent2);\r
-  mgr->ConnectOutput(tskSP,1,outSP);\r
-}\r
-double SFT_MassBandLowEdge( int nv0, int mb ) {\r
-  switch(nv0) {\r
-  case(0):\r
-    double lowEdge[14]={0.398, 0.420, 0.444, 0.468, 0.486,\r
-                         0.490, 0.494, 0.498, 0.502, 0.506, \r
-                         0.524, 0.548, 0.572, 0.598};\r
-    break;\r
-  default:\r
-    double lowEdge[13]={1.084, 1.094, 1.104, 1.110, 1.114,\r
-                       1.116, 1.118, 1.122, 1.128, 1.138,\r
-                       1.148, 1.158, 1.168};\r
-    break;\r
-  }\r
-  if(nv0>10&&mb==0) return -5;\r
-  if(nv0>10&&mb==1) return +5;\r
-  return lowEdge[mb];\r
-}\r
-int SFT_MassBands( int nv0 ) {\r
-  int bands=1;\r
-  switch(nv0) {\r
-  case(0):\r
-    bands = 13;\r
-    break;\r
-  default:\r
-    bands = 12;\r
-  }\r
-  if(nv0>10) bands=1;\r
-  return bands;\r
-}\r
-int SFT_MassBins( int nv0 ) {\r
-  int bins=100;\r
-  switch(nv0) {\r
-  case(0)://kZERO\r
-    bins=100;\r
-    break;\r
-  default://LAMBDA\r
-    bins=84;\r
-    break;\r
-  }\r
-  if(nv0>10) bins=100;//CHARGED\r
-  return bins;\r
-}\r
-double SFT_MinMass( int nv0 ) {\r
-  return SFT_MassBandLowEdge( nv0, 0 );\r
-}\r
-double SFT_MaxMass( int nv0 ) {\r
-  return SFT_MassBandLowEdge( nv0, SFT_MassBands(nv0) );\r
-}\r
-void SFT_PrintConfig() {\r
-  printf("***********************************\n");\r
-  printf("* STRANGE FLOW TASK CONFIGURATION *\n");\r
-  printf("* SUFFIX  %8s                *\n", SFT_gbSuffix.Data() );\r
-  printf("* TRIGGER  %8d               *\n", SFT_gbTrigger );\r
-  printf("* RUNPP  %3d                      *\n", SFT_gbRunPP );\r
-  printf("* RUNPA  %3d                      *\n", SFT_gbRunPA );\r
-  printf("* AVOIDEXEC  %3d                  *\n", SFT_gbAvoidExec );\r
-  printf("* ESD  %3d                        *\n", SFT_gbReadESD );\r
-  printf("* MC  %3d                         *\n", SFT_gbReadMC );\r
-  printf("* EXTRAEVENTCUT  %3d              *\n", SFT_gbExtraEventCut );\r
-  printf("* CENTMETHOD  %8s                 *\n", SFT_gbCentMethod.Data() );\r
-  printf("* CENTPERMIN  %3d                 *\n", SFT_gbCentPerMin );\r
-  printf("* CENTPERMAX  %3d                 *\n", SFT_gbCentPerMax );\r
-  printf("* SPECIE  %3d                     *\n", SFT_gbSpecie );\r
-  printf("* HOMEMADE  %3d                   *\n", SFT_gbHomemade );\r
-  printf("* ONLINE  %3d                     *\n", SFT_gbOnline );\r
-  printf("* MINNCLSTTPC  %3d                *\n", SFT_gbMinNClsTPC );\r
-  printf("* MINXROWS  %3d                   *\n", SFT_gbMinXRows );\r
-  printf("* MAXCHI2NCLSTPC  %+9.6f      *\n", SFT_gbMaxChi2PerNClsTPC );\r
-  printf("* MINXROWSNFCLSTPC  %+9.6f    *\n", SFT_gbMinXRowsOverNClsFTPC );\r
-  printf("* MINETA  %+9.6f              *\n", SFT_gbMinEta );\r
-  printf("* MAXETA  %+9.6f              *\n", SFT_gbMaxEta );\r
-  printf("* MINPT  %+9.6f               *\n", SFT_gbMinPt );\r
-  printf("* MIND0XY  %+9.6f             *\n", SFT_gbMinImpactParameterXY );\r
-  printf("* MAXSIGMAPID  %+9.6f         *\n", SFT_gbMaxNSigmaPID );\r
-  printf("* MAXY  %+9.6f                *\n", SFT_gbMaxRapidity );\r
-  printf("* MAXDCA  %+9.6f              *\n", SFT_gbMaxDCAdaughters );\r
-  printf("* MINCTP  %+9.6f              *\n", SFT_gbMinCosinePointingAngleXY );\r
-  printf("* MINQT  %+9.6f               *\n", SFT_gbMinQt );\r
-  printf("* QTPIE  %+9.6f               *\n", SFT_gbQtPie );\r
-  printf("* MINRADXY  %+9.6f            *\n", SFT_gbMinRadXY );\r
-  printf("* MAXDL  %+9.6f               *\n", SFT_gbMaxDecayLength );\r
-  printf("* D0D0XY  %+9.6f              *\n", SFT_gbMaxProductIPXY );\r
-  printf("* DEBUG  %3d                      *\n", SFT_gbDebug );\r
-  printf("* QA  %3d                         *\n", SFT_gbQA );\r
-  printf("* SKIPSELECTION  %3d              *\n", SFT_gbSkipSelection );\r
-  printf("* SKIPFLOW  %3d                   *\n", SFT_gbSkipFlow );\r
-  printf("* USEFP  %3d                      *\n", SFT_gbFlowPackage );\r
-  printf("* SPVZE  %3d                      *\n", SFT_gbSPVZE );\r
-  printf("* SPTPC  %3d                      *\n", SFT_gbSPTPC );\r
-  printf("* QCTPC  %3d                      *\n", SFT_gbQCTPC );\r
-  printf("* RFFILTERBIT  %3d                *\n", SFT_gbRFPFilterBit );\r
-  printf("* RFMINPT  %+9.6f             *\n", SFT_gbRFPminPt );\r
-  printf("* RFMAXPT  %+9.6f             *\n", SFT_gbRFPmaxPt );\r
-  printf("* RFMINETA  %+9.6f            *\n", SFT_gbRFPminEta );\r
-  printf("* RFMAXETA  %+9.6f            *\n", SFT_gbRFPmaxEta );\r
-  printf("* RFTPCSIGNAL  %+9.6f         *\n", SFT_gbRFPTPCsignal );\r
-  printf("* RFMAXIPXY  %+9.6f           *\n", SFT_gbRFPmaxIPxy );\r
-  printf("* RFMAXIPZ  %+9.6f            *\n", SFT_gbRFPmaxIPz );\r
-  printf("* RFTPCNCLS  %3d                  *\n", SFT_gbRFPTPCncls );\r
-  printf("* VZELOAD  %8s            *\n", SFT_gbVZEload.Data() );\r
-  printf("* VZELINEAR  %3d                  *\n", SFT_gbVZEmb );\r
-  printf("* VZESAVE  %3d                    *\n", SFT_gbVZEsave );\r
-  printf("***********************************\n");\r
-}\r
-void SFT_ReadConfig(TString ipf) {\r
-  SFT_ResetVars();\r
-  printf("Reading %s\n",ipf.Data());\r
-  ifstream input(ipf.Data());\r
-  TString varname;\r
-  Double_t vardouble;\r
-  Int_t varint;\r
-  UInt_t varuint;\r
-  Bool_t varbool;\r
-  for(;input.good();) {\r
-    input >> varname;\r
-    if(!input.good()) {\r
-      break;\r
-    } else if(!varname.CompareTo("SUFFIX")) {\r
-      input >> SFT_gbSuffix;\r
-    } else if(!varname.CompareTo("TRIGGER")) {\r
-      input >> SFT_gbTrigger;\r
-    } else if(!varname.CompareTo("RUNPP")) {\r
-      input >> SFT_gbRunPP;\r
-    } else if(!varname.CompareTo("RUNPA")) {\r
-      input >> SFT_gbRunPA;\r
-    } else if(!varname.CompareTo("AVOIDEXEC")) {\r
-      input >> SFT_gbAvoidExec;\r
-    } else if(!varname.CompareTo("ESD")) {\r
-      input >> SFT_gbReadESD;\r
-    } else if(!varname.CompareTo("MC")) {\r
-      input >> SFT_gbReadMC;\r
-    } else if(!varname.CompareTo("EXTRAEVENTCUT")) {\r
-      input >> SFT_gbExtraEventCut;\r
-    } else if(!varname.CompareTo("CENTMETHOD")) {\r
-      input >> SFT_gbCentMethod;\r
-    } else if(!varname.CompareTo("CENTPERMIN")) {\r
-      input >> SFT_gbCentPerMin;\r
-    } else if(!varname.CompareTo("CENTPERMAX")) {\r
-      input >> SFT_gbCentPerMax;\r
-    } else if(!varname.CompareTo("SPECIE")) {\r
-      input >> SFT_gbSpecie;\r
-    } else if(!varname.CompareTo("HOMEMADE")) {\r
-      input >> SFT_gbHomemade;\r
-    } else if(!varname.CompareTo("ONLINE")) {\r
-      input >> SFT_gbOnline;\r
-    } else if(!varname.CompareTo("MINNCLSTTPC")) {\r
-      input >> SFT_gbMinNClsTPC;\r
-    } else if(!varname.CompareTo("MINXROWS")) {\r
-      input >> SFT_gbMinXRows;\r
-    } else if(!varname.CompareTo("MAXCHI2NCLSTPC")) {\r
-      input >> SFT_gbMaxChi2PerNClsTPC;\r
-    } else if(!varname.CompareTo("MINXROWSNFCLSTPC")) {\r
-      input >> SFT_gbMinXRowsOverNClsFTPC;\r
-    } else if(!varname.CompareTo("MINETA")) {\r
-      input >> SFT_gbMinEta;\r
-    } else if(!varname.CompareTo("MAXETA")) {\r
-      input >> SFT_gbMaxEta;\r
-    } else if(!varname.CompareTo("MINPT")) {\r
-      input >> SFT_gbMinPt;\r
-    } else if(!varname.CompareTo("MIND0XY")) {\r
-      input >> SFT_gbMinImpactParameterXY;\r
-    } else if(!varname.CompareTo("MAXSIGMAPID")) {\r
-      input >> SFT_gbMaxNSigmaPID;\r
-    } else if(!varname.CompareTo("MAXY")) {\r
-      input >> SFT_gbMaxRapidity;\r
-    } else if(!varname.CompareTo("MAXDCA")) {\r
-      input >> SFT_gbMaxDCAdaughters;\r
-    } else if(!varname.CompareTo("MINCTP")) {\r
-      input >> SFT_gbMinCosinePointingAngleXY;\r
-    } else if(!varname.CompareTo("MINQT")) {\r
-      input >> SFT_gbMinQt;\r
-    } else if(!varname.CompareTo("QTPIE")) {\r
-      input >> SFT_gbQtPie;\r
-    } else if(!varname.CompareTo("MINRADXY")) {\r
-      input >> SFT_gbMinRadXY;\r
-    } else if(!varname.CompareTo("MAXDL")) {\r
-      input >> SFT_gbMaxDecayLength;\r
-    } else if(!varname.CompareTo("D0D0XY")) {\r
-      input >> SFT_gbMaxProductIPXY;\r
-    } else if(!varname.CompareTo("DEBUG")) {\r
-      input >> SFT_gbDebug;\r
-    } else if(!varname.CompareTo("QA")) {\r
-      input >> SFT_gbQA;\r
-    } else if(!varname.CompareTo("SKIPSELECTION")) {\r
-      input >> SFT_gbSkipSelection;\r
-    } else if(!varname.CompareTo("SKIPFLOW")) {\r
-      input >> SFT_gbSkipFlow;\r
-    } else if(!varname.CompareTo("USEFP")) {\r
-      input >> SFT_gbFlowPackage;\r
-    } else if(!varname.CompareTo("SPVZE")) {\r
-      input >> SFT_gbSPVZE;\r
-    } else if(!varname.CompareTo("SPTPC")) {\r
-      input >> SFT_gbSPTPC;\r
-    } else if(!varname.CompareTo("QCTPC")) {\r
-      input >> SFT_gbQCTPC;\r
-    } else if(!varname.CompareTo("RFFILTERBIT")) {\r
-      input >> SFT_gbRFPFilterBit;\r
-    } else if(!varname.CompareTo("RFMINPT")) {\r
-      input >> SFT_gbRFPminPt;\r
-    } else if(!varname.CompareTo("RFMAXPT")) {\r
-      input >> SFT_gbRFPmaxPt;\r
-    } else if(!varname.CompareTo("RFMINETA")) {\r
-      input >> SFT_gbRFPminEta;\r
-    } else if(!varname.CompareTo("RFMAXETA")) {\r
-      input >> SFT_gbRFPmaxEta;\r
-    } else if(!varname.CompareTo("RFTPCSIGNAL")) {\r
-      input >> SFT_gbRFPTPCsignal;\r
-    } else if(!varname.CompareTo("RFMAXIPXY")) {\r
-      input >> SFT_gbRFPmaxIPxy;\r
-    } else if(!varname.CompareTo("RFMAXIPZ")) {\r
-      input >> SFT_gbRFPmaxIPz;\r
-    } else if(!varname.CompareTo("RFTPCNCLS")) {\r
-      input >> SFT_gbRFPTPCncls;\r
-    } else if(!varname.CompareTo("VZELOAD")) {\r
-      input >> SFT_gbVZEload;\r
-    } else if(!varname.CompareTo("VZELINEAR")) {\r
-      input >> SFT_gbVZEmb;\r
-    } else if(!varname.CompareTo("VZESAVE")) {\r
-      input >> SFT_gbVZEsave;\r
-    } else if(!varname.CompareTo("ALLCC")) {\r
-      input >> SFT_gbAllCC;\r
-    } else {\r
-      printf("I dont understand %s\n",varname.Data());\r
-    }\r
-  }\r
-}\r
-void SFT_ResetVars() {\r
-  SFT_gbTrigger=1;\r
-  SFT_gbReadESD=0;\r
-  SFT_gbReadMC=0;\r
-  SFT_gbMatchMC=0;\r
-  SFT_gbAvoidExec=0;\r
-  SFT_gbExtraEventCut=0;\r
-  SFT_gbCentMethod="V0MTRK";\r
-  SFT_gbCentPerMin=0;\r
-  SFT_gbCentPerMax=100;\r
-  SFT_gbRunPP=0;\r
-  SFT_gbRunPA=0;\r
-  SFT_gbSpecie=0;\r
-  SFT_gbHomemade=0;\r
-  SFT_gbOnline=0;\r
-  SFT_gbMinNClsTPC=70;\r
-  SFT_gbMinXRows=0;\r
-  SFT_gbMaxChi2PerNClsTPC=4.0;\r
-  SFT_gbMinXRowsOverNClsFTPC=0.8;\r
-  SFT_gbMinEta=-0.8;\r
-  SFT_gbMaxEta=+0.8;\r
-  SFT_gbMinPt=0.1;\r
-  SFT_gbMinImpactParameterXY=0.1;\r
-  SFT_gbMaxNSigmaPID=3.0;\r
-  SFT_gbMaxRapidity=0.5;\r
-  SFT_gbMaxDCAdaughters=1.0;\r
-  SFT_gbMinCosinePointingAngleXY=0.998;\r
-  SFT_gbMinQt=0.2;\r
-  SFT_gbQtPie=kTRUE;\r
-  SFT_gbMinRadXY=5.0;\r
-  SFT_gbMaxDecayLength=3.0;\r
-  SFT_gbMaxProductIPXY=0.0;\r
-  SFT_gbDebug=0;\r
-  SFT_gbQA=0;\r
-  SFT_gbFolder="FlowStrange";\r
-  SFT_gbSuffix="kze";\r
-  SFT_gbRFPFilterBit=1;\r
-  SFT_gbRFPminPt=0.2;\r
-  SFT_gbRFPmaxPt=5.0;\r
-  SFT_gbRFPminEta=-0.8;\r
-  SFT_gbRFPmaxEta=+0.8;\r
-  SFT_gbRFPTPCsignal=10;\r
-  SFT_gbRFPmaxIPxy=2.4;\r
-  SFT_gbRFPmaxIPz=3.2;\r
-  SFT_gbRFPTPCncls=70;\r
-  SFT_gbAllCC=0;\r
-  SFT_gbSkipSelection=0;\r
-  SFT_gbSkipFlow=0;\r
-  SFT_gbWhichPsi=2;\r
-  SFT_gbFlowPackage=0;\r
-  SFT_gbSPVZE=0;\r
-  SFT_gbSPTPC=0;\r
-  SFT_gbQCTPC=0;\r
-  SFT_gbHarmonic=2;\r
-  SFT_gbVZEload="";\r
-  SFT_gbVZEsave=0;\r
-  SFT_gbVZEmb=0;\r
-}\r
+UInt_t SFT_gbTrigger;
+Bool_t SFT_gbReadESD;
+Bool_t SFT_gbReadMC;
+Int_t SFT_gbMatchMC;
+Bool_t SFT_gbAvoidExec;
+Bool_t SFT_gbExtraEventCut;
+TString SFT_gbCentMethod;
+Int_t SFT_gbCentPerMin,SFT_gbCentPerMax;
+Bool_t SFT_gbRunPP;
+Bool_t SFT_gbRunPA;
+Int_t SFT_gbSpecie;
+Bool_t SFT_gbHomemade;
+Bool_t SFT_gbOnline;
+Int_t SFT_gbMinNClsTPC;
+Int_t SFT_gbMinXRows;
+Double_t SFT_gbMaxChi2PerNClsTPC;
+Double_t SFT_gbMinXRowsOverNClsFTPC;
+Double_t SFT_gbMinEta;
+Double_t SFT_gbMaxEta;
+Double_t SFT_gbMinPt;
+Double_t SFT_gbMinImpactParameterXY;
+Double_t SFT_gbMaxNSigmaPID;
+Double_t SFT_gbMaxRapidity;
+Double_t SFT_gbMaxDCAdaughters;
+Double_t SFT_gbMinCosinePointingAngleXY;
+Double_t SFT_gbMinQt;
+Bool_t   SFT_gbQtPie;
+Double_t SFT_gbMinRadXY;
+Double_t SFT_gbMaxDecayLength;
+Double_t SFT_gbMaxProductIPXY;
+Int_t SFT_gbDebug;
+Int_t SFT_gbQA;
+TString SFT_gbFolder;
+TString SFT_gbSuffix;
+TString SFT_gbStamp;
+Int_t SFT_gbRFPFilterBit;
+Double_t SFT_gbRFPminPt;
+Double_t SFT_gbRFPmaxPt;
+Double_t SFT_gbRFPminEta;
+Double_t SFT_gbRFPmaxEta;
+Double_t SFT_gbRFPTPCsignal;
+Double_t SFT_gbRFPmaxIPxy;
+Double_t SFT_gbRFPmaxIPz;
+Int_t SFT_gbRFPTPCncls;
+
+Bool_t SFT_gbAllCC;
+Bool_t SFT_gbSkipSelection;
+Bool_t SFT_gbSkipFlow;
+Int_t SFT_gbWhichPsi;
+Bool_t SFT_gbFlowPackage;
+Bool_t SFT_gbShrinkFP;
+Bool_t SFT_gbSPVZE;
+Bool_t SFT_gbSPTPC;
+Bool_t SFT_gbSPVZEhalf;
+Bool_t SFT_gbQCTPC;
+Bool_t SFT_gbMCEP;
+Int_t SFT_gbHarmonic;
+TString SFT_gbVZEload;
+Bool_t SFT_gbVZEsave;
+Bool_t SFT_gbVZEmb;
+Bool_t SFT_gbVZEpdisk;
+Int_t SFT_gbV0CRingMin;
+Int_t SFT_gbV0CRingMax;
+Int_t SFT_gbV0ARingMin;
+Int_t SFT_gbV0ARingMax;
+
+Bool_t SFT_gbUntagDaughter;
+Int_t SFT_gbPostMatched;
+Double_t SFT_gbVertexZcut;
+
+void AddTaskFlowStrange(TString configFile, TString alienaddress,
+                       Int_t VZECm=0, Int_t VZECM=3, Int_t VZEAm=0, Int_t VZEAM=3) {
+  Int_t ret = gSystem->Exec( Form("alien_cp %s/%s .",alienaddress.Data(),configFile.Data()) );
+  printf("FlowStrange copying from grid %d\n",ret);
+  AddTaskFlowStrange(configFile,VZECm,VZECM,VZEAm,VZEAM);
+}
+void AddTaskFlowStrange(TString configFile,
+                       Int_t VZECm=0, Int_t VZECM=3, Int_t VZEAm=0, Int_t VZEAM=3) {
+  SFT_ReadConfig(configFile);
+  SFT_gbV0CRingMin = VZECm;
+  SFT_gbV0CRingMax = VZECM;
+  SFT_gbV0ARingMin = VZEAm;
+  SFT_gbV0ARingMax = VZEAM;
+  SFT_gbSuffix = Form("%s%d%d%d%d", SFT_gbSuffix.Data(),
+                     SFT_gbV0CRingMin, SFT_gbV0CRingMax, SFT_gbV0ARingMin, SFT_gbV0ARingMax);
+  if(SFT_gbAllCC) {
+    int centMin[9] = {00,05,10,20,30,40,50,60,70};
+    int centMax[9] = {05,10,20,30,40,50,60,70,80};
+    int ncent=9;
+    if(SFT_gbRunPP) {
+      ncent=3;
+      centMin[0]=10; centMax[0]=30;
+      centMin[1]=30; centMax[1]=50;
+      centMin[2]=0; centMax[2]=100;
+    } else if(SFT_gbRunPA) {
+      ncent=4;
+      centMin[0]=00; centMax[0]=20;
+      centMin[1]=20; centMax[1]=40;
+      centMin[2]=40; centMax[2]=60;
+      centMin[3]=60; centMax[3]=80;
+    } else {
+    }
+    TString antSuffix = SFT_gbSuffix;
+    for(int cc=0; cc!=ncent; ++cc) {
+      SFT_gbCentPerMin = centMin[cc];
+      SFT_gbCentPerMax = centMax[cc];
+      SFT_gbSuffix = Form("%s%d%d",antSuffix.Data(),SFT_gbCentPerMin,SFT_gbCentPerMax);
+      AddTaskFlowStrange();
+    }
+  } else {
+    AddTaskFlowStrange();
+  }
+}
+void AddTaskFlowStrange() {
+  SFT_PrintConfig();
+
+  TString fileName = AliAnalysisManager::GetCommonFileName();
+  fileName.ReplaceAll(".root","");
+  SFT_gbStamp = SFT_gbFolder + SFT_gbSuffix;
+
+  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+  AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
+
+  //-----------------STRANGE TASK----------------------------
+  AliAnalysisTaskFlowStrange *taskSel = new AliAnalysisTaskFlowStrange(Form("FS_%s",SFT_gbStamp.Data()) );
+  taskSel->SelectCollisionCandidates(SFT_gbTrigger);
+  taskSel->SetReadESD(SFT_gbReadESD);
+  taskSel->SetPostMatched(SFT_gbPostMatched);
+  taskSel->SetReadMC(SFT_gbReadMC);
+  taskSel->SetAvoidExec(SFT_gbAvoidExec);
+  taskSel->SetSkipSelection(SFT_gbSkipSelection);
+  taskSel->SetSkipFlow(SFT_gbSkipFlow);
+  taskSel->SetExtraEventRejection(SFT_gbExtraEventCut);
+  taskSel->SetCentralityRange(SFT_gbCentMethod,SFT_gbCentPerMin,SFT_gbCentPerMax);
+  if(SFT_gbRunPP) taskSel->Setpp();
+  if(SFT_gbRunPA) taskSel->SetpA();
+  taskSel->SetDebug(SFT_gbDebug);
+  taskSel->SetK0L0(SFT_gbSpecie);
+  taskSel->SetOnline( SFT_gbOnline );
+  taskSel->SetMass( SFT_MassBins(SFT_gbSpecie),
+                    SFT_MinMass(SFT_gbSpecie),
+                    SFT_MaxMass(SFT_gbSpecie) );
+
+  taskSel->SetWhichPsi(SFT_gbWhichPsi);
+  taskSel->SetRFPFilterBit(SFT_gbRFPFilterBit);
+  taskSel->SetRFPMinPt(SFT_gbRFPminPt);
+  taskSel->SetRFPMaxPt(SFT_gbRFPmaxPt);
+  taskSel->SetRFPMinEta(SFT_gbRFPminEta);
+  taskSel->SetRFPMaxEta(SFT_gbRFPmaxEta);
+  taskSel->SetRFPTPCSignal(SFT_gbRFPTPCsignal);
+  taskSel->SetRFPMaxIPxy(SFT_gbRFPmaxIPxy);
+  taskSel->SetRFPMaxIPz(SFT_gbRFPmaxIPz);
+  taskSel->SetRFPMinTPCCls(SFT_gbRFPTPCncls);
+
+  taskSel->SetDauUnTagProcedure(SFT_gbUntagDaughter);
+  taskSel->SetVertexZcut(SFT_gbVertexZcut);
+
+  taskSel->SetDauMinNClsTPC(SFT_gbMinNClsTPC);
+  taskSel->SetDauMinXRows(SFT_gbMinXRows);
+  taskSel->SetDauMaxChi2PerNClsTPC(SFT_gbMaxChi2PerNClsTPC);
+  taskSel->SetDauMinXRowsOverNClsFTPC(SFT_gbMinXRowsOverNClsFTPC);
+  taskSel->SetDauMinEta(SFT_gbMinEta);
+  taskSel->SetDauMaxEta(SFT_gbMaxEta);
+  taskSel->SetDauMinPt(SFT_gbMinPt);
+  taskSel->SetDauMinImpactParameterXY(SFT_gbMinImpactParameterXY);
+  taskSel->SetDauMaxNSigmaPID(SFT_gbMaxNSigmaPID);
+
+  taskSel->SetMaxRapidity(SFT_gbMaxRapidity);
+  taskSel->SetMaxDCAdaughters(SFT_gbMaxDCAdaughters);
+  taskSel->SetMinCosinePointingAngleXY(SFT_gbMinCosinePointingAngleXY);
+  taskSel->SetMinQt(SFT_gbMinQt,SFT_gbQtPie);
+  taskSel->SetMinRadXY(SFT_gbMinRadXY);
+  taskSel->SetMaxDecayLength(SFT_gbMaxDecayLength);
+  taskSel->SetMaxProductIPXY(SFT_gbMaxProductIPXY);
+  taskSel->SetMinEta(SFT_gbMinEta);
+  taskSel->SetMaxEta(SFT_gbMaxEta);
+  taskSel->SetMinPt(SFT_gbMinPt);
+  taskSel->SetUseFlowPackage(SFT_gbFlowPackage);
+
+  taskSel->SetQAlevel(SFT_gbQA);
+  if(SFT_gbVZEload.Length()>4) {
+    TFile *ocalib = TFile::Open(SFT_gbVZEload);
+    if(ocalib->IsOpen()) {
+      TList *vzero = ocalib->Get("VZECALIB");
+      taskSel->LoadVZEResponse(vzero,SFT_gbVZEmb,SFT_gbVZEpdisk);
+    } else {
+      printf("ADDTASKFLOWSTRANGE COULD NOT OPEN %s. NO VZE CALIBRATION LOADED!\n",SFT_gbVZEload.Data());
+    }
+  }
+  printf("Loading %d %d %d %d as VZE configuration\n",SFT_gbV0CRingMin, SFT_gbV0CRingMax, SFT_gbV0ARingMin, SFT_gbV0ARingMax);
+  taskSel->SetRFPVZERingRange( SFT_gbV0CRingMin, SFT_gbV0CRingMax, SFT_gbV0ARingMin, SFT_gbV0ARingMax );
+  taskSel->SetStoreVZEResponse(SFT_gbVZEsave);
+
+  AliAnalysisDataContainer *cOutHist = mgr->CreateContainer(Form("FS_OH_%s",SFT_gbStamp.Data()),
+                                                           TList::Class(),
+                                                           AliAnalysisManager::kOutputContainer,
+                                                           Form("%s.root:Selector_%s",fileName.Data(),
+                                                                SFT_gbFolder.Data()));
+  AliAnalysisDataContainer *exc_TPC = mgr->CreateContainer( Form("FS_TPC_%s",SFT_gbStamp.Data()),
+                                                            AliFlowEventSimple::Class(),
+                                                            AliAnalysisManager::kExchangeContainer );
+  AliAnalysisDataContainer *exc_VZE = mgr->CreateContainer( Form("FS_VZE_%s",SFT_gbStamp.Data()),
+                                                            AliFlowEventSimple::Class(),
+                                                            AliAnalysisManager::kExchangeContainer );
+  mgr->AddTask(taskSel);
+  mgr->ConnectInput (taskSel,0,cinput1);
+  mgr->ConnectOutput(taskSel,1,cOutHist);
+  mgr->ConnectOutput(taskSel,2,exc_TPC);
+  mgr->ConnectOutput(taskSel,3,exc_VZE);
+
+  if(!SFT_gbFlowPackage) return;
+  if( (!SFT_gbQCTPC) && (!SFT_gbSPVZE) && (!SFT_gbSPTPC) ) return;
+  //-------------------FLOWPACKAGE TASKS----------------------------
+  AliFlowTrackSimpleCuts *filter[20], *filterhf[20][2]; // MASS BANDS
+  int mbs = SFT_MassBands(SFT_gbSpecie);
+  if(SFT_gbPostMatched) mbs = 1;
+  for(int mb=0; mb!=mbs; ++mb) {
+    filter[mb] = new AliFlowTrackSimpleCuts( Form("Filter_MB%d",mb) );
+    filter[mb]->SetEtaMin( -0.8 ); filter[mb]->SetEtaMax( +0.8 );
+    Double_t minmass = SFT_MassBandLowEdge(SFT_gbSpecie,mb);
+    Double_t maxmass = SFT_MassBandLowEdge(SFT_gbSpecie,mb+1);
+    if(SFT_gbPostMatched) maxmass = SFT_MassBandLowEdge(SFT_gbSpecie,SFT_MassBands(SFT_gbSpecie));
+    filter[mb]->SetMassMin( minmass ); filter[mb]->SetMassMax( maxmass );
+    //half window for POIs
+    filterhf[mb][0] = new AliFlowTrackSimpleCuts( Form("Filterhf0_MB%d",mb) );
+    filterhf[mb][0]->SetEtaMin( +0.0 ); filterhf[mb][0]->SetEtaMax( +0.8 );
+    filterhf[mb][0]->SetMassMin( minmass ); filterhf[mb][0]->SetMassMax( maxmass );
+    filterhf[mb][1] = new AliFlowTrackSimpleCuts( Form("Filterhf1_MB%d",mb) );
+    filterhf[mb][1]->SetEtaMin( -0.8 ); filterhf[mb][1]->SetEtaMax( -0.0 );
+    filterhf[mb][1]->SetMassMin( minmass ); filterhf[mb][1]->SetMassMax( maxmass );
+    if(SFT_gbQCTPC) {
+      SFT_AddQCmethod( Form("QCTPCMB%d",mb), exc_TPC, filter[mb]); // QC TPC
+    }
+    if(SFT_gbSPTPC) {
+      SFT_AddSPmethod( Form("SPTPCMB%d",mb), exc_TPC, filterhf[mb][0], "Qa" ); // SP TPC Qa
+      SFT_AddSPmethod( Form("SPTPCMB%d",mb), exc_TPC, filterhf[mb][1], "Qb" ); // SP TPC Qb
+      SFT_AddSPmethod( Form("SPTPC2MB%d",mb), exc_TPC, filterhf[mb][0], "Qa", 0.2 ); // SP TPC Qa
+      SFT_AddSPmethod( Form("SPTPC2MB%d",mb), exc_TPC, filterhf[mb][1], "Qb", 0.2 ); // SP TPC Qb
+      SFT_AddSPmethod( Form("SPTPC4MB%d",mb), exc_TPC, filterhf[mb][0], "Qa", 0.4 ); // SP TPC Qa
+      SFT_AddSPmethod( Form("SPTPC4MB%d",mb), exc_TPC, filterhf[mb][1], "Qb", 0.4 ); // SP TPC Qb
+    }
+    if(SFT_gbMCEP) {
+      SFT_AddMCEPmethod( Form("MCEPMB%d",mb), exc_TPC, filter[mb]); // MCEP TPC
+    }
+    if(SFT_gbSPVZE) {
+      if(SFT_gbSPVZEhalf) {
+       SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filterhf[mb][0], "Qa", 1.0 ); // SP VZE Qa
+       SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filterhf[mb][1], "Qb", 1.0 ); // SP VZE Qa
+      } else {
+       SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filter[mb], "Qa", 1.0 ); // SP VZE Qa
+       SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filter[mb], "Qb", 1.0 ); // SP VZE Qa
+      }
+    }
+  }
+}
+void SFT_AddMCEPmethod(char *name, AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL) {
+  TString fileName = AliAnalysisManager::GetCommonFileName();
+  TString myFolder = Form("%sv%d",SFT_gbFolder.Data(),SFT_gbHarmonic);
+  TString myName = Form("%sv%d_%s",name,SFT_gbHarmonic,SFT_gbSuffix.Data());
+  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+  AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myName.Data()),
+                                                               AliFlowEventSimple::Class(),
+                                                               AliAnalysisManager::kExchangeContainer );
+  AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myName.Data()),
+                                                                    NULL, cutsPOI);
+  mgr->AddTask(tskFilter);
+  mgr->ConnectInput( tskFilter,0,flowEvent);
+  mgr->ConnectOutput(tskFilter,1,flowEvent2);
+  AliAnalysisDataContainer *outQC = mgr->CreateContainer( myName.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,
+                                                          Form("%s:FlowStrange_MCEP_%s",fileName.Data(),myFolder.Data()) );
+  AliAnalysisTaskMCEventPlane *tskQC = new AliAnalysisTaskMCEventPlane( Form("TaskMCEP_%s",myName.Data()) );
+  tskQC->SetHarmonic(SFT_gbHarmonic);
+  mgr->AddTask(tskQC);
+  mgr->ConnectInput( tskQC,0,flowEvent2);
+  mgr->ConnectOutput(tskQC,1,outQC);
+}
+void SFT_AddQCmethod(char *name, AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL) {
+  TString fileName = AliAnalysisManager::GetCommonFileName();
+  TString myFolder = Form("%sv%d",SFT_gbFolder.Data(),SFT_gbHarmonic);
+  TString myName = Form("%sv%d_%s",name,SFT_gbHarmonic,SFT_gbSuffix.Data());
+  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+  AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myName.Data()),
+                                                               AliFlowEventSimple::Class(),
+                                                               AliAnalysisManager::kExchangeContainer );
+  AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myName.Data()),
+                                                                    NULL, cutsPOI);
+  mgr->AddTask(tskFilter);
+  mgr->ConnectInput( tskFilter,0,flowEvent);
+  mgr->ConnectOutput(tskFilter,1,flowEvent2);
+  AliAnalysisDataContainer *outQC = mgr->CreateContainer( myName.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,
+                                                          Form("%s:FlowStrange_QC_%s",fileName.Data(),myFolder.Data()) );
+  AliAnalysisTaskQCumulants *tskQC = new AliAnalysisTaskQCumulants( Form("TaskQCumulants_%s",myName.Data()),kFALSE );
+  tskQC->SetApplyCorrectionForNUA(kTRUE);
+  tskQC->SetHarmonic(SFT_gbHarmonic);
+  tskQC->SetBookOnlyBasicCCH(SFT_gbShrinkFP);
+  mgr->AddTask(tskQC);
+  mgr->ConnectInput( tskQC,0,flowEvent2);
+  mgr->ConnectOutput(tskQC,1,outQC);
+}
+void SFT_AddSPmethod(char *name, AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL, char *Qvector, Double_t gap=0.0) {
+  TString fileName = AliAnalysisManager::GetCommonFileName();
+  TString myFolder = Form("%sv%d",SFT_gbFolder.Data(),SFT_gbHarmonic);
+  TString myNameSP = Form("%sv%d%s_%s",name,SFT_gbHarmonic,Qvector,SFT_gbSuffix.Data());
+  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+  AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myNameSP.Data()),
+                                                               AliFlowEventSimple::Class(),
+                                                               AliAnalysisManager::kExchangeContainer );
+  AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myNameSP.Data()),
+                                                                    NULL, cutsPOI);
+  tskFilter->SetSubeventEtaRange( -5.0, -gap, +gap, +5.0 );
+  mgr->AddTask(tskFilter);
+  mgr->ConnectInput( tskFilter,0,flowEvent);
+  mgr->ConnectOutput(tskFilter,1,flowEvent2);
+  AliAnalysisDataContainer *outSP = mgr->CreateContainer( myNameSP.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,
+                                                          Form("%s:FlowStrange_SP_%s",fileName.Data(),myFolder.Data()) );
+  AliAnalysisTaskScalarProduct *tskSP = new AliAnalysisTaskScalarProduct( Form("TaskScalarProduct_%s",myNameSP.Data()),kFALSE);
+  tskSP->SetApplyCorrectionForNUA(kTRUE);
+  tskSP->SetHarmonic(SFT_gbHarmonic);
+  tskSP->SetTotalQvector(Qvector);
+  tskSP->SetBookOnlyBasicCCH(SFT_gbShrinkFP);
+  mgr->AddTask(tskSP);
+  mgr->ConnectInput( tskSP,0,flowEvent2);
+  mgr->ConnectOutput(tskSP,1,outSP);
+}
+double SFT_MassBandLowEdge( int nv0, int mb ) {
+  if(nv0>10&&mb==0) return -5;
+  if(nv0>10&&mb==1) return +5;
+  switch(nv0) {
+  case(0):
+    double lowEdge[14]={0.398, 0.420, 0.444, 0.468, 0.486,
+                         0.490, 0.494, 0.498, 0.502, 0.506, 
+                         0.524, 0.548, 0.572, 0.598};
+    break;
+  default:
+    double lowEdge[13]={1.084, 1.094, 1.104, 1.110, 1.114,
+                       1.116, 1.118, 1.122, 1.128, 1.138,
+                       1.148, 1.158, 1.168};
+    break;
+  }
+  return lowEdge[mb];
+}
+int SFT_MassBands( int nv0 ) {
+  int bands=1;
+  switch(nv0) {
+  case(0):
+    bands = 13;
+    break;
+  default:
+    bands = 12;
+  }
+  if(nv0>10) bands=1;
+  return bands;
+}
+int SFT_MassBins( int nv0 ) {
+  int bins=100;
+  switch(nv0) {
+  case(0)://kZERO
+    bins=100;
+    break;
+  default://LAMBDA
+    bins=84;
+    break;
+  }
+  if(nv0>10) bins=100;//CHARGED
+  return bins;
+}
+double SFT_MinMass( int nv0 ) {
+  return SFT_MassBandLowEdge( nv0, 0 );
+}
+double SFT_MaxMass( int nv0 ) {
+  return SFT_MassBandLowEdge( nv0, SFT_MassBands(nv0) );
+}
+void SFT_PrintConfig() {
+  printf("***********************************\n");
+  printf("* STRANGE FLOW TASK CONFIGURATION *\n");
+  printf("* SUFFIX  %8s                *\n", SFT_gbSuffix.Data() );
+  printf("* TRIGGER  %8d               *\n", SFT_gbTrigger );
+  printf("* RUNPP  %3d                      *\n", SFT_gbRunPP );
+  printf("* RUNPA  %3d                      *\n", SFT_gbRunPA );
+  printf("* AVOIDEXEC  %3d                  *\n", SFT_gbAvoidExec );
+  printf("* ESD  %3d                        *\n", SFT_gbReadESD );
+  printf("* MC  %3d                         *\n", SFT_gbReadMC );
+  printf("* POSTMATCHED  %3d                *\n", SFT_gbPostMatched );
+  printf("* EXTRAEVENTCUT  %3d              *\n", SFT_gbExtraEventCut );
+  printf("* CENTMETHOD  %8s                 *\n", SFT_gbCentMethod.Data() );
+  printf("* CENTPERMIN  %3d                 *\n", SFT_gbCentPerMin );
+  printf("* CENTPERMAX  %3d                 *\n", SFT_gbCentPerMax );
+  printf("* VERTEXZ  %+9.6f             *\n", SFT_gbVertexZcut );
+  printf("* SPECIE  %3d                     *\n", SFT_gbSpecie );
+  printf("* HOMEMADE  %3d                   *\n", SFT_gbHomemade );
+  printf("* ONLINE  %3d                     *\n", SFT_gbOnline );
+  printf("* MINNCLSTTPC  %3d                *\n", SFT_gbMinNClsTPC );
+  printf("* MINXROWS  %3d                   *\n", SFT_gbMinXRows );
+  printf("* MAXCHI2NCLSTPC  %+9.6f      *\n", SFT_gbMaxChi2PerNClsTPC );
+  printf("* MINXROWSNFCLSTPC  %+9.6f    *\n", SFT_gbMinXRowsOverNClsFTPC );
+  printf("* MINETA  %+9.6f              *\n", SFT_gbMinEta );
+  printf("* MAXETA  %+9.6f              *\n", SFT_gbMaxEta );
+  printf("* MINPT  %+9.6f               *\n", SFT_gbMinPt );
+  printf("* UNTAG  %+9.6f               *\n", SFT_gbUntagDaughter );
+  printf("* MIND0XY  %+9.6f             *\n", SFT_gbMinImpactParameterXY );
+  printf("* MAXSIGMAPID  %+9.6f         *\n", SFT_gbMaxNSigmaPID );
+  printf("* MAXY  %+9.6f                *\n", SFT_gbMaxRapidity );
+  printf("* MAXDCA  %+9.6f              *\n", SFT_gbMaxDCAdaughters );
+  printf("* MINCTP  %+9.6f              *\n", SFT_gbMinCosinePointingAngleXY );
+  printf("* MINQT  %+9.6f               *\n", SFT_gbMinQt );
+  printf("* QTPIE  %+9.6f               *\n", SFT_gbQtPie );
+  printf("* MINRADXY  %+9.6f            *\n", SFT_gbMinRadXY );
+  printf("* MAXDL  %+9.6f               *\n", SFT_gbMaxDecayLength );
+  printf("* D0D0XY  %+9.6f              *\n", SFT_gbMaxProductIPXY );
+  printf("* DEBUG  %3d                      *\n", SFT_gbDebug );
+  printf("* QA  %3d                         *\n", SFT_gbQA );
+  printf("* SKIPSELECTION  %3d              *\n", SFT_gbSkipSelection );
+  printf("* SKIPFLOW  %3d                   *\n", SFT_gbSkipFlow );
+  printf("* USEFP  %3d                      *\n", SFT_gbFlowPackage );
+  printf("* SPVZE  %3d                      *\n", SFT_gbSPVZE );
+  printf("* SPVZEHALF  %3d                  *\n", SFT_gbSPVZEhalf );
+  printf("* SPTPC  %3d                      *\n", SFT_gbSPTPC );
+  printf("* QCTPC  %3d                      *\n", SFT_gbQCTPC );
+  printf("* MCEP  %3d                       *\n", SFT_gbMCEP );
+  printf("* SHRINKFP  %3d                   *\n", SFT_gbShrinkFP );
+  printf("* RFFILTERBIT  %3d                *\n", SFT_gbRFPFilterBit );
+  printf("* RFMINPT  %+9.6f             *\n", SFT_gbRFPminPt );
+  printf("* RFMAXPT  %+9.6f             *\n", SFT_gbRFPmaxPt );
+  printf("* RFMINETA  %+9.6f            *\n", SFT_gbRFPminEta );
+  printf("* RFMAXETA  %+9.6f            *\n", SFT_gbRFPmaxEta );
+  printf("* RFTPCSIGNAL  %+9.6f         *\n", SFT_gbRFPTPCsignal );
+  printf("* RFMAXIPXY  %+9.6f           *\n", SFT_gbRFPmaxIPxy );
+  printf("* RFMAXIPZ  %+9.6f            *\n", SFT_gbRFPmaxIPz );
+  printf("* RFTPCNCLS  %3d                  *\n", SFT_gbRFPTPCncls );
+  printf("* WHICHPSI  %3d                   *\n", SFT_gbWhichPsi );
+  printf("* VZELOAD  %8s            *\n", SFT_gbVZEload.Data() );
+  printf("* VZELINEAR  %3d                  *\n", SFT_gbVZEmb );
+  printf("* VZEPERDISK  %3d                 *\n", SFT_gbVZEpdisk );
+  printf("* VZESAVE  %3d                    *\n", SFT_gbVZEsave );
+  printf("***********************************\n");
+}
+void SFT_ReadConfig(TString ipf) {
+  SFT_ResetVars();
+  printf("Reading %s\n",ipf.Data());
+  ifstream input(ipf.Data());
+  TString varname;
+  Double_t vardouble;
+  Int_t varint;
+  UInt_t varuint;
+  Bool_t varbool;
+  for(;input.good();) {
+    input >> varname;
+    if(!input.good()) {
+      break;
+    } else if(!varname.CompareTo("SUFFIX")) {
+      input >> SFT_gbSuffix;
+    } else if(!varname.CompareTo("TRIGGER")) {
+      input >> SFT_gbTrigger;
+    } else if(!varname.CompareTo("RUNPP")) {
+      input >> SFT_gbRunPP;
+    } else if(!varname.CompareTo("RUNPA")) {
+      input >> SFT_gbRunPA;
+    } else if(!varname.CompareTo("AVOIDEXEC")) {
+      input >> SFT_gbAvoidExec;
+    } else if(!varname.CompareTo("ESD")) {
+      input >> SFT_gbReadESD;
+    } else if(!varname.CompareTo("MC")) {
+      input >> SFT_gbReadMC;
+    } else if(!varname.CompareTo("EXTRAEVENTCUT")) {
+      input >> SFT_gbExtraEventCut;
+    } else if(!varname.CompareTo("CENTMETHOD")) {
+      input >> SFT_gbCentMethod;
+    } else if(!varname.CompareTo("CENTPERMIN")) {
+      input >> SFT_gbCentPerMin;
+    } else if(!varname.CompareTo("CENTPERMAX")) {
+      input >> SFT_gbCentPerMax;
+    } else if(!varname.CompareTo("SPECIE")) {
+      input >> SFT_gbSpecie;
+    } else if(!varname.CompareTo("HOMEMADE")) {
+      input >> SFT_gbHomemade;
+    } else if(!varname.CompareTo("ONLINE")) {
+      input >> SFT_gbOnline;
+    } else if(!varname.CompareTo("MINNCLSTTPC")) {
+      input >> SFT_gbMinNClsTPC;
+    } else if(!varname.CompareTo("MINXROWS")) {
+      input >> SFT_gbMinXRows;
+    } else if(!varname.CompareTo("MAXCHI2NCLSTPC")) {
+      input >> SFT_gbMaxChi2PerNClsTPC;
+    } else if(!varname.CompareTo("MINXROWSNFCLSTPC")) {
+      input >> SFT_gbMinXRowsOverNClsFTPC;
+    } else if(!varname.CompareTo("MINETA")) {
+      input >> SFT_gbMinEta;
+    } else if(!varname.CompareTo("MAXETA")) {
+      input >> SFT_gbMaxEta;
+    } else if(!varname.CompareTo("MINPT")) {
+      input >> SFT_gbMinPt;
+    } else if(!varname.CompareTo("MIND0XY")) {
+      input >> SFT_gbMinImpactParameterXY;
+    } else if(!varname.CompareTo("MAXSIGMAPID")) {
+      input >> SFT_gbMaxNSigmaPID;
+    } else if(!varname.CompareTo("MAXY")) {
+      input >> SFT_gbMaxRapidity;
+    } else if(!varname.CompareTo("MAXDCA")) {
+      input >> SFT_gbMaxDCAdaughters;
+    } else if(!varname.CompareTo("MINCTP")) {
+      input >> SFT_gbMinCosinePointingAngleXY;
+    } else if(!varname.CompareTo("MINQT")) {
+      input >> SFT_gbMinQt;
+    } else if(!varname.CompareTo("QTPIE")) {
+      input >> SFT_gbQtPie;
+    } else if(!varname.CompareTo("MINRADXY")) {
+      input >> SFT_gbMinRadXY;
+    } else if(!varname.CompareTo("MAXDL")) {
+      input >> SFT_gbMaxDecayLength;
+    } else if(!varname.CompareTo("D0D0XY")) {
+      input >> SFT_gbMaxProductIPXY;
+    } else if(!varname.CompareTo("DEBUG")) {
+      input >> SFT_gbDebug;
+    } else if(!varname.CompareTo("QA")) {
+      input >> SFT_gbQA;
+    } else if(!varname.CompareTo("SKIPSELECTION")) {
+      input >> SFT_gbSkipSelection;
+    } else if(!varname.CompareTo("SKIPFLOW")) {
+      input >> SFT_gbSkipFlow;
+    } else if(!varname.CompareTo("USEFP")) {
+      input >> SFT_gbFlowPackage;
+    } else if(!varname.CompareTo("SPVZE")) {
+      input >> SFT_gbSPVZE;
+    } else if(!varname.CompareTo("SPTPC")) {
+      input >> SFT_gbSPTPC;
+    } else if(!varname.CompareTo("SPVZEHALF")) {      
+      input >> SFT_gbSPVZEhalf;
+    } else if(!varname.CompareTo("QCTPC")) {
+      input >> SFT_gbQCTPC;
+    } else if(!varname.CompareTo("MCEP")) {
+      input >> SFT_gbMCEP;
+    } else if(!varname.CompareTo("SHRINKFP")) {
+      input >> SFT_gbShrinkFP;
+    } else if(!varname.CompareTo("RFFILTERBIT")) {
+      input >> SFT_gbRFPFilterBit;
+    } else if(!varname.CompareTo("RFMINPT")) {
+      input >> SFT_gbRFPminPt;
+    } else if(!varname.CompareTo("RFMAXPT")) {
+      input >> SFT_gbRFPmaxPt;
+    } else if(!varname.CompareTo("RFMINETA")) {
+      input >> SFT_gbRFPminEta;
+    } else if(!varname.CompareTo("RFMAXETA")) {
+      input >> SFT_gbRFPmaxEta;
+    } else if(!varname.CompareTo("RFTPCSIGNAL")) {
+      input >> SFT_gbRFPTPCsignal;
+    } else if(!varname.CompareTo("RFMAXIPXY")) {
+      input >> SFT_gbRFPmaxIPxy;
+    } else if(!varname.CompareTo("RFMAXIPZ")) {
+      input >> SFT_gbRFPmaxIPz;
+    } else if(!varname.CompareTo("RFTPCNCLS")) {
+      input >> SFT_gbRFPTPCncls;
+    } else if(!varname.CompareTo("VZELOAD")) {
+      input >> SFT_gbVZEload;
+    } else if(!varname.CompareTo("VZELINEAR")) {
+      input >> SFT_gbVZEmb;
+    } else if(!varname.CompareTo("VZEPERDISK")) {
+      input >> SFT_gbVZEpdisk;
+    } else if(!varname.CompareTo("VZESAVE")) {
+      input >> SFT_gbVZEsave;
+    } else if(!varname.CompareTo("ALLCC")) {
+      input >> SFT_gbAllCC;
+    } else if(!varname.CompareTo("UNTAG")) {
+      input >> SFT_gbUntagDaughter;
+    } else if(!varname.CompareTo("POSTMATCHED")) {
+      input >> SFT_gbPostMatched;
+    } else if(!varname.CompareTo("VERTEXZ")) {
+      input >> SFT_gbVertexZcut;
+    } else if(!varname.CompareTo("WHICHPSI")) {
+      input >> SFT_gbWhichPsi;
+    } else {
+      printf("I dont understand %s\n",varname.Data());
+    }
+  }
+}
+void SFT_ResetVars() {
+  SFT_gbTrigger=1;
+  SFT_gbReadESD=0;
+  SFT_gbReadMC=0;
+  SFT_gbMatchMC=0;
+  SFT_gbAvoidExec=0;
+  SFT_gbExtraEventCut=0;
+  SFT_gbCentMethod="V0MTRK";
+  SFT_gbCentPerMin=0;
+  SFT_gbCentPerMax=100;
+  SFT_gbRunPP=0;
+  SFT_gbRunPA=0;
+  SFT_gbSpecie=0;
+  SFT_gbHomemade=0;
+  SFT_gbOnline=0;
+  SFT_gbMinNClsTPC=70;
+  SFT_gbMinXRows=70;
+  SFT_gbMaxChi2PerNClsTPC=4.0;
+  SFT_gbMinXRowsOverNClsFTPC=0.8;
+  SFT_gbMinEta=-0.8;
+  SFT_gbMaxEta=+0.8;
+  SFT_gbMinPt=0.1;
+  SFT_gbMinImpactParameterXY=0.1;
+  SFT_gbMaxNSigmaPID=3.0;
+  SFT_gbMaxRapidity=0.5;
+  SFT_gbMaxDCAdaughters=1.0;
+  SFT_gbMinCosinePointingAngleXY=0.998;
+  SFT_gbMinQt=0.2;
+  SFT_gbQtPie=kTRUE;
+  SFT_gbMinRadXY=5.0;
+  SFT_gbMaxDecayLength=3.0;
+  SFT_gbMaxProductIPXY=0.0;
+  SFT_gbDebug=0;
+  SFT_gbQA=0;
+  SFT_gbFolder="FlowStrange";
+  SFT_gbSuffix="NOTFOUND";
+  SFT_gbRFPFilterBit=1;
+  SFT_gbRFPminPt=0.2;
+  SFT_gbRFPmaxPt=5.0;
+  SFT_gbRFPminEta=-0.8;
+  SFT_gbRFPmaxEta=+0.8;
+  SFT_gbRFPTPCsignal=10;
+  SFT_gbRFPmaxIPxy=2.4;
+  SFT_gbRFPmaxIPz=3.2;
+  SFT_gbRFPTPCncls=70;
+  SFT_gbAllCC=0;
+  SFT_gbSkipSelection=0;
+  SFT_gbSkipFlow=0;
+  SFT_gbWhichPsi=2;
+  SFT_gbFlowPackage=0;
+  SFT_gbSPVZE=0;
+  SFT_gbSPVZEhalf=kFALSE;
+  SFT_gbSPTPC=0;
+  SFT_gbQCTPC=0;
+  SFT_gbMCEP=0;
+  SFT_gbHarmonic=2;
+  SFT_gbVZEload="no";
+  SFT_gbVZEsave=0;
+  SFT_gbVZEmb=0;
+  SFT_gbVZEpdisk=0;
+  SFT_gbUntagDaughter=kTRUE;
+  SFT_gbPostMatched=kFALSE;
+  SFT_gbShrinkFP=kTRUE;
+  SFT_gbVertexZcut=10.0;
+}