ROOT logo
UInt_t SFT_gbTrigger;
Bool_t SFT_gbReadESD;
Bool_t SFT_gbReadMC;
Int_t SFT_gbMatchMC;
Bool_t SFT_gbAvoidExec;
Bool_t SFT_gbSkipCentrality;
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_gbMinNClsITS;
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_gbPIDPt;
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_gbRFPAminEta;
Double_t SFT_gbRFPAmaxEta;
Double_t SFT_gbRFPCminEta;
Double_t SFT_gbRFPCmaxEta;
Double_t SFT_gbRFPTPCsignal;
Double_t SFT_gbRFPmaxIPxy;
Double_t SFT_gbRFPmaxIPz;
Int_t SFT_gbRFPTPCncls;
Bool_t SFT_gbAddPitoMCRP;
Bool_t SFT_gbAllCC;
Bool_t SFT_gbSkipSelection;
Bool_t SFT_gbSkipVn;
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;
Int_t SFT_gbDauITS0On;
Int_t SFT_gbDauITS1On;
Int_t SFT_gbDauITS2On;
Int_t SFT_gbDauITS3On;
Int_t SFT_gbDauITS4On;
Int_t SFT_gbDauITS5On;
Bool_t SFT_gbDauSPDany;
Bool_t SFT_gbDauITSrefit;

Bool_t SFT_gbUntagDaughter;
Int_t SFT_gbPostMatched;
Double_t SFT_gbVertexZcut;

void AddTaskFlowStrange(TString configFile, TString alienaddress, Bool_t skipTerminate=kFALSE) {
  Int_t ret = gSystem->Exec( Form("alien_cp %s/%s .",alienaddress.Data(),configFile.Data()) );
  printf("FlowStrange copying from grid %d\n",ret);
  AddTaskFlowStrange(configFile,skipTerminate);
}
void AddTaskFlowStrange(TString configFile, Bool_t skipTerminate=kFALSE) {
  SFT_ReadConfig(configFile);
  if(SFT_gbAllCC) {
    int centMin[8] = {00,05,10,20,30,40,50,60};
    int ncent=7;
    if(SFT_gbRunPP) {
      ncent=3;
      centMin[0]=00;
      centMin[1]=20;
      centMin[2]=40;
      centMin[3]=60;
    } else if(SFT_gbRunPA) {
      ncent=3;
      centMin[0]=00;
      centMin[1]=20;
      centMin[2]=40;
      centMin[3]=60;
    }
    TString antSuffix = SFT_gbSuffix;
    for(int cc=0; cc!=ncent; ++cc) {
      SFT_gbCentPerMin = centMin[cc];
      SFT_gbCentPerMax = centMin[cc+1];
      SFT_gbSuffix = Form("%s%02d%02d",antSuffix.Data(),SFT_gbCentPerMin,SFT_gbCentPerMax);
      AddTaskFlowStrange(skipTerminate);
    }
  } else {
    AddTaskFlowStrange(skipTerminate);
  }
}
void AddTaskFlowStrange(Bool_t skipTerminate) {
  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->SetSkipCentralitySelection(SFT_gbSkipCentrality);
  taskSel->SetSkipSelection(SFT_gbSkipSelection);
  taskSel->SetSkipVn(SFT_gbSkipVn);
  taskSel->SetExtraEventRejection(SFT_gbExtraEventCut);
  taskSel->SetCentralityRange(SFT_gbCentMethod,SFT_gbCentPerMin,SFT_gbCentPerMax);
  taskSel->SetSkipTerminate(skipTerminate);
  taskSel->SetHarmonic(SFT_gbHarmonic);
  Int_t npt = 24;
  Double_t ptbin[25] = { 0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8,
                         2.0, 2.2, 2.4, 2.8, 3.2, 3.6, 4.0, 4.5, 5.0, 6.0,
                         8.0, 10., 12., 16., 20.};
  taskSel->SetPtEdges(npt,ptbin);
  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->SetRFPAMinEta(SFT_gbRFPAminEta);
  taskSel->SetRFPAMaxEta(SFT_gbRFPAmaxEta);
  taskSel->SetRFPCMinEta(SFT_gbRFPCminEta);
  taskSel->SetRFPCMaxEta(SFT_gbRFPCmaxEta);
  taskSel->SetRFPTPCSignal(SFT_gbRFPTPCsignal);
  taskSel->SetRFPMaxIPxy(SFT_gbRFPmaxIPxy);
  taskSel->SetRFPMaxIPz(SFT_gbRFPmaxIPz);
  taskSel->SetRFPMinTPCCls(SFT_gbRFPTPCncls);

  taskSel->SetAddPiToMCReactionPlane(SFT_gbAddPitoMCRP);
  taskSel->SetDauUnTagProcedure(SFT_gbUntagDaughter);
  taskSel->SetVertexZcut(SFT_gbVertexZcut);

  taskSel->SetDauMinNClsTPC(SFT_gbMinNClsTPC);
  taskSel->SetDauMinNClsITS(SFT_gbMinNClsITS);
  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->SetDauITSLayer(0,SFT_gbDauITS0On);
  taskSel->SetDauITSLayer(1,SFT_gbDauITS1On);
  taskSel->SetDauITSLayer(2,SFT_gbDauITS2On);
  taskSel->SetDauITSLayer(3,SFT_gbDauITS3On);
  taskSel->SetDauITSLayer(4,SFT_gbDauITS4On);
  taskSel->SetDauITSLayer(5,SFT_gbDauITS5On);
  taskSel->SetDauSPDRequireAny(SFT_gbDauSPDany);
  taskSel->SetDauITSrefit(SFT_gbDauITSrefit);

  taskSel->SetMaxRapidity(SFT_gbMaxRapidity);
  taskSel->SetMaxDCAdaughters(SFT_gbMaxDCAdaughters);
  taskSel->SetMinCosinePointingAngleXY(SFT_gbMinCosinePointingAngleXY);
  taskSel->SetMinQt(SFT_gbMinQt,SFT_gbQtPie);
  taskSel->SetStopPIDAtPt(SFT_gbPIDPt);
  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  %s *\n", SFT_gbSuffix.Data() );
  printf("* TRIGGER  %d *\n", SFT_gbTrigger );
  printf("* RUNPP  %d *\n", SFT_gbRunPP );
  printf("* RUNPA  %d *\n", SFT_gbRunPA );
  printf("* AVOIDEXEC  %d *\n", SFT_gbAvoidExec );
  printf("* SKIPCENTRALITY  %d *\n", SFT_gbSkipCentrality );
  printf("* ESD  %d *\n", SFT_gbReadESD );
  printf("* MC  %d *\n", SFT_gbReadMC );
  printf("* HARMONIC  %d *\n", SFT_gbHarmonic );
  printf("* ADDPITOMCEP  %d *\n", SFT_gbAddPitoMCRP );
  printf("* POSTMATCHED  %d *\n", SFT_gbPostMatched );
  printf("* EXTRAEVENTCUT  %d *\n", SFT_gbExtraEventCut );
  printf("* CENTMETHOD  %s *\n", SFT_gbCentMethod.Data() );
  printf("* CENTPERMIN  %d *\n", SFT_gbCentPerMin );
  printf("* CENTPERMAX  %d *\n", SFT_gbCentPerMax );
  printf("* VERTEXZ  %f *\n", SFT_gbVertexZcut );
  printf("* SPECIE  %d *\n", SFT_gbSpecie );
  printf("* HOMEMADE  %d *\n", SFT_gbHomemade );
  printf("* ONLINE  %d *\n", SFT_gbOnline );
  printf("* MINNCLSTTPC  %d *\n", SFT_gbMinNClsTPC );
  printf("* MINNCLSITS  %d *\n", SFT_gbMinNClsITS );
  printf("* MINXROWS  %d *\n", SFT_gbMinXRows );
  printf("* MAXCHI2NCLSTPC  %f *\n", SFT_gbMaxChi2PerNClsTPC );
  printf("* MINXROWSNFCLSTPC  %f *\n", SFT_gbMinXRowsOverNClsFTPC );
  printf("* MINETA  %f *\n", SFT_gbMinEta );
  printf("* MAXETA  %f *\n", SFT_gbMaxEta );
  printf("* MINPT  %f *\n", SFT_gbMinPt );
  printf("* UNTAG  %f *\n", SFT_gbUntagDaughter );
  printf("* MIND0XY  %f *\n", SFT_gbMinImpactParameterXY );
  printf("* MAXSIGMAPID  %f *\n", SFT_gbMaxNSigmaPID );
  printf("* MAXY  %f *\n", SFT_gbMaxRapidity );
  printf("* MAXDCA  %f *\n", SFT_gbMaxDCAdaughters );
  printf("* MINCTP  %f *\n", SFT_gbMinCosinePointingAngleXY );
  printf("* MINQT  %f *\n", SFT_gbMinQt );
  printf("* QTPIE  %f *\n", SFT_gbQtPie );
  printf("* STOPPID  %f *\n", SFT_gbPIDPt );
  printf("* MINRADXY  %f *\n", SFT_gbMinRadXY );
  printf("* MAXDL  %f *\n", SFT_gbMaxDecayLength );
  printf("* D0D0XY  %f *\n", SFT_gbMaxProductIPXY );
  printf("* DEBUG  %d *\n", SFT_gbDebug );
  printf("* QA  %d *\n", SFT_gbQA );
  printf("* SKIPSELECTION  %d *\n", SFT_gbSkipSelection );
  printf("* SKIPVN  %d *\n", SFT_gbSkipVn );
  printf("* USEFP  %d *\n", SFT_gbFlowPackage );
  printf("* SPVZE  %d *\n", SFT_gbSPVZE );
  printf("* SPVZEHALF  %d *\n", SFT_gbSPVZEhalf );
  printf("* SPTPC  %d *\n", SFT_gbSPTPC );
  printf("* QCTPC  %d *\n", SFT_gbQCTPC );
  printf("* MCEP  %d *\n", SFT_gbMCEP );
  printf("* SHRINKFP  %d *\n", SFT_gbShrinkFP );
  printf("* RFFILTERBIT  %d *\n", SFT_gbRFPFilterBit );
  printf("* RFMINPT  %f *\n", SFT_gbRFPminPt );
  printf("* RFMAXPT  %f *\n", SFT_gbRFPmaxPt );
  printf("* RFCMINETA  %f *\n", SFT_gbRFPCminEta );
  printf("* RFCMAXETA  %f *\n", SFT_gbRFPCmaxEta );
  printf("* RFAMINETA  %f *\n", SFT_gbRFPAminEta );
  printf("* RFAMAXETA  %f *\n", SFT_gbRFPAmaxEta );
  printf("* RFTPCSIGNAL  %f *\n", SFT_gbRFPTPCsignal );
  printf("* RFMAXIPXY  %f *\n", SFT_gbRFPmaxIPxy );
  printf("* RFMAXIPZ  %f *\n", SFT_gbRFPmaxIPz );
  printf("* RFTPCNCLS  %d *\n", SFT_gbRFPTPCncls );
  printf("* RFVZEC_RingMin  %d *\n", SFT_gbV0CRingMin );
  printf("* RFVZEC_RingMax  %d *\n", SFT_gbV0CRingMax );
  printf("* RFVZEA_RingMin  %d *\n", SFT_gbV0ARingMin );
  printf("* RFVZEA_RingMax  %d *\n", SFT_gbV0ARingMax );
  printf("* WHICHPSI  %d *\n", SFT_gbWhichPsi );
  printf("* VZELOAD  %s *\n", SFT_gbVZEload.Data() );
  printf("* VZELINEAR  %d *\n", SFT_gbVZEmb );
  printf("* VZEPERDISK  %d *\n", SFT_gbVZEpdisk );
  printf("* VZESAVE  %d *\n", SFT_gbVZEsave );
  printf("* DAUITS0  %d *\n", SFT_gbDauITS0On );
  printf("* DAUITS1  %d *\n", SFT_gbDauITS1On );
  printf("* DAUITS2  %d *\n", SFT_gbDauITS2On );
  printf("* DAUITS3  %d *\n", SFT_gbDauITS3On );
  printf("* DAUITS4  %d *\n", SFT_gbDauITS4On );
  printf("* DAUITS5  %d *\n", SFT_gbDauITS5On );
  printf("* DAUSPDANY  %d *\n", SFT_gbDauSPDany );
  printf("* DAUITSrefit  %d *\n", SFT_gbDauITSrefit );
  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("SKIPCENTRALITY")) {
      input >> SFT_gbSkipCentrality;
    } 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("MINNCLSITS")) {
      input >> SFT_gbMinNClsITS;
    } 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("STOPPID")) {
      input >> SFT_gbPIDPt;
    } 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("SKIPVN")) {
      input >> SFT_gbSkipVn;
    } 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("ADDPITOMCEP")) {
      input >> SFT_gbAddPitoMCRP;
    } 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("RFCMINETA")) {
      input >> SFT_gbRFPCminEta;
    } else if(!varname.CompareTo("RFCMAXETA")) {
      input >> SFT_gbRFPCmaxEta;
    } else if(!varname.CompareTo("RFAMINETA")) {
      input >> SFT_gbRFPAminEta;
    } else if(!varname.CompareTo("RFAMAXETA")) {
      input >> SFT_gbRFPAmaxEta;
    } 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 if(!varname.CompareTo("DAUITS0")) {
      input >> SFT_gbDauITS0On;
    } else if(!varname.CompareTo("DAUITS1")) {
      input >> SFT_gbDauITS1On;
    } else if(!varname.CompareTo("DAUITS2")) {
      input >> SFT_gbDauITS2On;
    } else if(!varname.CompareTo("DAUITS3")) {
      input >> SFT_gbDauITS3On;
    } else if(!varname.CompareTo("DAUITS4")) {
      input >> SFT_gbDauITS4On;
    } else if(!varname.CompareTo("DAUITS5")) {
      input >> SFT_gbDauITS5On;
    } else if(!varname.CompareTo("DAUSPDANY")) {
      input >> SFT_gbDauSPDany;
    } else if(!varname.CompareTo("DAUITSREFIT")) {
      input >> SFT_gbDauITSrefit;
    } else if(!varname.CompareTo("RFVZEC_RingMin")) {
      input >> SFT_gbV0CRingMin;
    } else if(!varname.CompareTo("RFVZEC_RingMax")) {
      input >> SFT_gbV0CRingMax;
    } else if(!varname.CompareTo("RFVZEA_RingMin")) {
      input >> SFT_gbV0ARingMin;
    } else if(!varname.CompareTo("RFVZEA_RingMax")) {
      input >> SFT_gbV0ARingMax;
    } else if(!varname.CompareTo("HARMONIC")) {
      input >> SFT_gbHarmonic;
    } 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_gbMinNClsITS=-1;
  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_gbPIDPt=3.0;
  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_gbRFPCminEta=-0.8;
  SFT_gbRFPCmaxEta=0.0;
  SFT_gbRFPAminEta=0.0;
  SFT_gbRFPAmaxEta=+0.8;
  SFT_gbRFPTPCsignal=10;
  SFT_gbRFPmaxIPxy=2.4;
  SFT_gbRFPmaxIPz=3.2;
  SFT_gbRFPTPCncls=70;
  SFT_gbV0CRingMin=0;
  SFT_gbV0CRingMax=3;
  SFT_gbV0ARingMin=0;
  SFT_gbV0ARingMax=3;
  SFT_gbAllCC=0;
  SFT_gbSkipSelection=0;
  SFT_gbSkipVn=0;
  SFT_gbWhichPsi=1;
  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;
  SFT_gbDauITS0On=-1;
  SFT_gbDauITS1On=-1;
  SFT_gbDauITS2On=-1;
  SFT_gbDauITS3On=-1;
  SFT_gbDauITS4On=-1;
  SFT_gbDauITS5On=-1;
  SFT_gbSkipCentrality=kFALSE;
  SFT_gbAddPitoMCRP=kFALSE;
  SFT_gbDauSPDany=kFALSE;
  SFT_gbDauITSrefit=kFALSE;
}
 AddTaskFlowStrange.C:1
 AddTaskFlowStrange.C:2
 AddTaskFlowStrange.C:3
 AddTaskFlowStrange.C:4
 AddTaskFlowStrange.C:5
 AddTaskFlowStrange.C:6
 AddTaskFlowStrange.C:7
 AddTaskFlowStrange.C:8
 AddTaskFlowStrange.C:9
 AddTaskFlowStrange.C:10
 AddTaskFlowStrange.C:11
 AddTaskFlowStrange.C:12
 AddTaskFlowStrange.C:13
 AddTaskFlowStrange.C:14
 AddTaskFlowStrange.C:15
 AddTaskFlowStrange.C:16
 AddTaskFlowStrange.C:17
 AddTaskFlowStrange.C:18
 AddTaskFlowStrange.C:19
 AddTaskFlowStrange.C:20
 AddTaskFlowStrange.C:21
 AddTaskFlowStrange.C:22
 AddTaskFlowStrange.C:23
 AddTaskFlowStrange.C:24
 AddTaskFlowStrange.C:25
 AddTaskFlowStrange.C:26
 AddTaskFlowStrange.C:27
 AddTaskFlowStrange.C:28
 AddTaskFlowStrange.C:29
 AddTaskFlowStrange.C:30
 AddTaskFlowStrange.C:31
 AddTaskFlowStrange.C:32
 AddTaskFlowStrange.C:33
 AddTaskFlowStrange.C:34
 AddTaskFlowStrange.C:35
 AddTaskFlowStrange.C:36
 AddTaskFlowStrange.C:37
 AddTaskFlowStrange.C:38
 AddTaskFlowStrange.C:39
 AddTaskFlowStrange.C:40
 AddTaskFlowStrange.C:41
 AddTaskFlowStrange.C:42
 AddTaskFlowStrange.C:43
 AddTaskFlowStrange.C:44
 AddTaskFlowStrange.C:45
 AddTaskFlowStrange.C:46
 AddTaskFlowStrange.C:47
 AddTaskFlowStrange.C:48
 AddTaskFlowStrange.C:49
 AddTaskFlowStrange.C:50
 AddTaskFlowStrange.C:51
 AddTaskFlowStrange.C:52
 AddTaskFlowStrange.C:53
 AddTaskFlowStrange.C:54
 AddTaskFlowStrange.C:55
 AddTaskFlowStrange.C:56
 AddTaskFlowStrange.C:57
 AddTaskFlowStrange.C:58
 AddTaskFlowStrange.C:59
 AddTaskFlowStrange.C:60
 AddTaskFlowStrange.C:61
 AddTaskFlowStrange.C:62
 AddTaskFlowStrange.C:63
 AddTaskFlowStrange.C:64
 AddTaskFlowStrange.C:65
 AddTaskFlowStrange.C:66
 AddTaskFlowStrange.C:67
 AddTaskFlowStrange.C:68
 AddTaskFlowStrange.C:69
 AddTaskFlowStrange.C:70
 AddTaskFlowStrange.C:71
 AddTaskFlowStrange.C:72
 AddTaskFlowStrange.C:73
 AddTaskFlowStrange.C:74
 AddTaskFlowStrange.C:75
 AddTaskFlowStrange.C:76
 AddTaskFlowStrange.C:77
 AddTaskFlowStrange.C:78
 AddTaskFlowStrange.C:79
 AddTaskFlowStrange.C:80
 AddTaskFlowStrange.C:81
 AddTaskFlowStrange.C:82
 AddTaskFlowStrange.C:83
 AddTaskFlowStrange.C:84
 AddTaskFlowStrange.C:85
 AddTaskFlowStrange.C:86
 AddTaskFlowStrange.C:87
 AddTaskFlowStrange.C:88
 AddTaskFlowStrange.C:89
 AddTaskFlowStrange.C:90
 AddTaskFlowStrange.C:91
 AddTaskFlowStrange.C:92
 AddTaskFlowStrange.C:93
 AddTaskFlowStrange.C:94
 AddTaskFlowStrange.C:95
 AddTaskFlowStrange.C:96
 AddTaskFlowStrange.C:97
 AddTaskFlowStrange.C:98
 AddTaskFlowStrange.C:99
 AddTaskFlowStrange.C:100
 AddTaskFlowStrange.C:101
 AddTaskFlowStrange.C:102
 AddTaskFlowStrange.C:103
 AddTaskFlowStrange.C:104
 AddTaskFlowStrange.C:105
 AddTaskFlowStrange.C:106
 AddTaskFlowStrange.C:107
 AddTaskFlowStrange.C:108
 AddTaskFlowStrange.C:109
 AddTaskFlowStrange.C:110
 AddTaskFlowStrange.C:111
 AddTaskFlowStrange.C:112
 AddTaskFlowStrange.C:113
 AddTaskFlowStrange.C:114
 AddTaskFlowStrange.C:115
 AddTaskFlowStrange.C:116
 AddTaskFlowStrange.C:117
 AddTaskFlowStrange.C:118
 AddTaskFlowStrange.C:119
 AddTaskFlowStrange.C:120
 AddTaskFlowStrange.C:121
 AddTaskFlowStrange.C:122
 AddTaskFlowStrange.C:123
 AddTaskFlowStrange.C:124
 AddTaskFlowStrange.C:125
 AddTaskFlowStrange.C:126
 AddTaskFlowStrange.C:127
 AddTaskFlowStrange.C:128
 AddTaskFlowStrange.C:129
 AddTaskFlowStrange.C:130
 AddTaskFlowStrange.C:131
 AddTaskFlowStrange.C:132
 AddTaskFlowStrange.C:133
 AddTaskFlowStrange.C:134
 AddTaskFlowStrange.C:135
 AddTaskFlowStrange.C:136
 AddTaskFlowStrange.C:137
 AddTaskFlowStrange.C:138
 AddTaskFlowStrange.C:139
 AddTaskFlowStrange.C:140
 AddTaskFlowStrange.C:141
 AddTaskFlowStrange.C:142
 AddTaskFlowStrange.C:143
 AddTaskFlowStrange.C:144
 AddTaskFlowStrange.C:145
 AddTaskFlowStrange.C:146
 AddTaskFlowStrange.C:147
 AddTaskFlowStrange.C:148
 AddTaskFlowStrange.C:149
 AddTaskFlowStrange.C:150
 AddTaskFlowStrange.C:151
 AddTaskFlowStrange.C:152
 AddTaskFlowStrange.C:153
 AddTaskFlowStrange.C:154
 AddTaskFlowStrange.C:155
 AddTaskFlowStrange.C:156
 AddTaskFlowStrange.C:157
 AddTaskFlowStrange.C:158
 AddTaskFlowStrange.C:159
 AddTaskFlowStrange.C:160
 AddTaskFlowStrange.C:161
 AddTaskFlowStrange.C:162
 AddTaskFlowStrange.C:163
 AddTaskFlowStrange.C:164
 AddTaskFlowStrange.C:165
 AddTaskFlowStrange.C:166
 AddTaskFlowStrange.C:167
 AddTaskFlowStrange.C:168
 AddTaskFlowStrange.C:169
 AddTaskFlowStrange.C:170
 AddTaskFlowStrange.C:171
 AddTaskFlowStrange.C:172
 AddTaskFlowStrange.C:173
 AddTaskFlowStrange.C:174
 AddTaskFlowStrange.C:175
 AddTaskFlowStrange.C:176
 AddTaskFlowStrange.C:177
 AddTaskFlowStrange.C:178
 AddTaskFlowStrange.C:179
 AddTaskFlowStrange.C:180
 AddTaskFlowStrange.C:181
 AddTaskFlowStrange.C:182
 AddTaskFlowStrange.C:183
 AddTaskFlowStrange.C:184
 AddTaskFlowStrange.C:185
 AddTaskFlowStrange.C:186
 AddTaskFlowStrange.C:187
 AddTaskFlowStrange.C:188
 AddTaskFlowStrange.C:189
 AddTaskFlowStrange.C:190
 AddTaskFlowStrange.C:191
 AddTaskFlowStrange.C:192
 AddTaskFlowStrange.C:193
 AddTaskFlowStrange.C:194
 AddTaskFlowStrange.C:195
 AddTaskFlowStrange.C:196
 AddTaskFlowStrange.C:197
 AddTaskFlowStrange.C:198
 AddTaskFlowStrange.C:199
 AddTaskFlowStrange.C:200
 AddTaskFlowStrange.C:201
 AddTaskFlowStrange.C:202
 AddTaskFlowStrange.C:203
 AddTaskFlowStrange.C:204
 AddTaskFlowStrange.C:205
 AddTaskFlowStrange.C:206
 AddTaskFlowStrange.C:207
 AddTaskFlowStrange.C:208
 AddTaskFlowStrange.C:209
 AddTaskFlowStrange.C:210
 AddTaskFlowStrange.C:211
 AddTaskFlowStrange.C:212
 AddTaskFlowStrange.C:213
 AddTaskFlowStrange.C:214
 AddTaskFlowStrange.C:215
 AddTaskFlowStrange.C:216
 AddTaskFlowStrange.C:217
 AddTaskFlowStrange.C:218
 AddTaskFlowStrange.C:219
 AddTaskFlowStrange.C:220
 AddTaskFlowStrange.C:221
 AddTaskFlowStrange.C:222
 AddTaskFlowStrange.C:223
 AddTaskFlowStrange.C:224
 AddTaskFlowStrange.C:225
 AddTaskFlowStrange.C:226
 AddTaskFlowStrange.C:227
 AddTaskFlowStrange.C:228
 AddTaskFlowStrange.C:229
 AddTaskFlowStrange.C:230
 AddTaskFlowStrange.C:231
 AddTaskFlowStrange.C:232
 AddTaskFlowStrange.C:233
 AddTaskFlowStrange.C:234
 AddTaskFlowStrange.C:235
 AddTaskFlowStrange.C:236
 AddTaskFlowStrange.C:237
 AddTaskFlowStrange.C:238
 AddTaskFlowStrange.C:239
 AddTaskFlowStrange.C:240
 AddTaskFlowStrange.C:241
 AddTaskFlowStrange.C:242
 AddTaskFlowStrange.C:243
 AddTaskFlowStrange.C:244
 AddTaskFlowStrange.C:245
 AddTaskFlowStrange.C:246
 AddTaskFlowStrange.C:247
 AddTaskFlowStrange.C:248
 AddTaskFlowStrange.C:249
 AddTaskFlowStrange.C:250
 AddTaskFlowStrange.C:251
 AddTaskFlowStrange.C:252
 AddTaskFlowStrange.C:253
 AddTaskFlowStrange.C:254
 AddTaskFlowStrange.C:255
 AddTaskFlowStrange.C:256
 AddTaskFlowStrange.C:257
 AddTaskFlowStrange.C:258
 AddTaskFlowStrange.C:259
 AddTaskFlowStrange.C:260
 AddTaskFlowStrange.C:261
 AddTaskFlowStrange.C:262
 AddTaskFlowStrange.C:263
 AddTaskFlowStrange.C:264
 AddTaskFlowStrange.C:265
 AddTaskFlowStrange.C:266
 AddTaskFlowStrange.C:267
 AddTaskFlowStrange.C:268
 AddTaskFlowStrange.C:269
 AddTaskFlowStrange.C:270
 AddTaskFlowStrange.C:271
 AddTaskFlowStrange.C:272
 AddTaskFlowStrange.C:273
 AddTaskFlowStrange.C:274
 AddTaskFlowStrange.C:275
 AddTaskFlowStrange.C:276
 AddTaskFlowStrange.C:277
 AddTaskFlowStrange.C:278
 AddTaskFlowStrange.C:279
 AddTaskFlowStrange.C:280
 AddTaskFlowStrange.C:281
 AddTaskFlowStrange.C:282
 AddTaskFlowStrange.C:283
 AddTaskFlowStrange.C:284
 AddTaskFlowStrange.C:285
 AddTaskFlowStrange.C:286
 AddTaskFlowStrange.C:287
 AddTaskFlowStrange.C:288
 AddTaskFlowStrange.C:289
 AddTaskFlowStrange.C:290
 AddTaskFlowStrange.C:291
 AddTaskFlowStrange.C:292
 AddTaskFlowStrange.C:293
 AddTaskFlowStrange.C:294
 AddTaskFlowStrange.C:295
 AddTaskFlowStrange.C:296
 AddTaskFlowStrange.C:297
 AddTaskFlowStrange.C:298
 AddTaskFlowStrange.C:299
 AddTaskFlowStrange.C:300
 AddTaskFlowStrange.C:301
 AddTaskFlowStrange.C:302
 AddTaskFlowStrange.C:303
 AddTaskFlowStrange.C:304
 AddTaskFlowStrange.C:305
 AddTaskFlowStrange.C:306
 AddTaskFlowStrange.C:307
 AddTaskFlowStrange.C:308
 AddTaskFlowStrange.C:309
 AddTaskFlowStrange.C:310
 AddTaskFlowStrange.C:311
 AddTaskFlowStrange.C:312
 AddTaskFlowStrange.C:313
 AddTaskFlowStrange.C:314
 AddTaskFlowStrange.C:315
 AddTaskFlowStrange.C:316
 AddTaskFlowStrange.C:317
 AddTaskFlowStrange.C:318
 AddTaskFlowStrange.C:319
 AddTaskFlowStrange.C:320
 AddTaskFlowStrange.C:321
 AddTaskFlowStrange.C:322
 AddTaskFlowStrange.C:323
 AddTaskFlowStrange.C:324
 AddTaskFlowStrange.C:325
 AddTaskFlowStrange.C:326
 AddTaskFlowStrange.C:327
 AddTaskFlowStrange.C:328
 AddTaskFlowStrange.C:329
 AddTaskFlowStrange.C:330
 AddTaskFlowStrange.C:331
 AddTaskFlowStrange.C:332
 AddTaskFlowStrange.C:333
 AddTaskFlowStrange.C:334
 AddTaskFlowStrange.C:335
 AddTaskFlowStrange.C:336
 AddTaskFlowStrange.C:337
 AddTaskFlowStrange.C:338
 AddTaskFlowStrange.C:339
 AddTaskFlowStrange.C:340
 AddTaskFlowStrange.C:341
 AddTaskFlowStrange.C:342
 AddTaskFlowStrange.C:343
 AddTaskFlowStrange.C:344
 AddTaskFlowStrange.C:345
 AddTaskFlowStrange.C:346
 AddTaskFlowStrange.C:347
 AddTaskFlowStrange.C:348
 AddTaskFlowStrange.C:349
 AddTaskFlowStrange.C:350
 AddTaskFlowStrange.C:351
 AddTaskFlowStrange.C:352
 AddTaskFlowStrange.C:353
 AddTaskFlowStrange.C:354
 AddTaskFlowStrange.C:355
 AddTaskFlowStrange.C:356
 AddTaskFlowStrange.C:357
 AddTaskFlowStrange.C:358
 AddTaskFlowStrange.C:359
 AddTaskFlowStrange.C:360
 AddTaskFlowStrange.C:361
 AddTaskFlowStrange.C:362
 AddTaskFlowStrange.C:363
 AddTaskFlowStrange.C:364
 AddTaskFlowStrange.C:365
 AddTaskFlowStrange.C:366
 AddTaskFlowStrange.C:367
 AddTaskFlowStrange.C:368
 AddTaskFlowStrange.C:369
 AddTaskFlowStrange.C:370
 AddTaskFlowStrange.C:371
 AddTaskFlowStrange.C:372
 AddTaskFlowStrange.C:373
 AddTaskFlowStrange.C:374
 AddTaskFlowStrange.C:375
 AddTaskFlowStrange.C:376
 AddTaskFlowStrange.C:377
 AddTaskFlowStrange.C:378
 AddTaskFlowStrange.C:379
 AddTaskFlowStrange.C:380
 AddTaskFlowStrange.C:381
 AddTaskFlowStrange.C:382
 AddTaskFlowStrange.C:383
 AddTaskFlowStrange.C:384
 AddTaskFlowStrange.C:385
 AddTaskFlowStrange.C:386
 AddTaskFlowStrange.C:387
 AddTaskFlowStrange.C:388
 AddTaskFlowStrange.C:389
 AddTaskFlowStrange.C:390
 AddTaskFlowStrange.C:391
 AddTaskFlowStrange.C:392
 AddTaskFlowStrange.C:393
 AddTaskFlowStrange.C:394
 AddTaskFlowStrange.C:395
 AddTaskFlowStrange.C:396
 AddTaskFlowStrange.C:397
 AddTaskFlowStrange.C:398
 AddTaskFlowStrange.C:399
 AddTaskFlowStrange.C:400
 AddTaskFlowStrange.C:401
 AddTaskFlowStrange.C:402
 AddTaskFlowStrange.C:403
 AddTaskFlowStrange.C:404
 AddTaskFlowStrange.C:405
 AddTaskFlowStrange.C:406
 AddTaskFlowStrange.C:407
 AddTaskFlowStrange.C:408
 AddTaskFlowStrange.C:409
 AddTaskFlowStrange.C:410
 AddTaskFlowStrange.C:411
 AddTaskFlowStrange.C:412
 AddTaskFlowStrange.C:413
 AddTaskFlowStrange.C:414
 AddTaskFlowStrange.C:415
 AddTaskFlowStrange.C:416
 AddTaskFlowStrange.C:417
 AddTaskFlowStrange.C:418
 AddTaskFlowStrange.C:419
 AddTaskFlowStrange.C:420
 AddTaskFlowStrange.C:421
 AddTaskFlowStrange.C:422
 AddTaskFlowStrange.C:423
 AddTaskFlowStrange.C:424
 AddTaskFlowStrange.C:425
 AddTaskFlowStrange.C:426
 AddTaskFlowStrange.C:427
 AddTaskFlowStrange.C:428
 AddTaskFlowStrange.C:429
 AddTaskFlowStrange.C:430
 AddTaskFlowStrange.C:431
 AddTaskFlowStrange.C:432
 AddTaskFlowStrange.C:433
 AddTaskFlowStrange.C:434
 AddTaskFlowStrange.C:435
 AddTaskFlowStrange.C:436
 AddTaskFlowStrange.C:437
 AddTaskFlowStrange.C:438
 AddTaskFlowStrange.C:439
 AddTaskFlowStrange.C:440
 AddTaskFlowStrange.C:441
 AddTaskFlowStrange.C:442
 AddTaskFlowStrange.C:443
 AddTaskFlowStrange.C:444
 AddTaskFlowStrange.C:445
 AddTaskFlowStrange.C:446
 AddTaskFlowStrange.C:447
 AddTaskFlowStrange.C:448
 AddTaskFlowStrange.C:449
 AddTaskFlowStrange.C:450
 AddTaskFlowStrange.C:451
 AddTaskFlowStrange.C:452
 AddTaskFlowStrange.C:453
 AddTaskFlowStrange.C:454
 AddTaskFlowStrange.C:455
 AddTaskFlowStrange.C:456
 AddTaskFlowStrange.C:457
 AddTaskFlowStrange.C:458
 AddTaskFlowStrange.C:459
 AddTaskFlowStrange.C:460
 AddTaskFlowStrange.C:461
 AddTaskFlowStrange.C:462
 AddTaskFlowStrange.C:463
 AddTaskFlowStrange.C:464
 AddTaskFlowStrange.C:465
 AddTaskFlowStrange.C:466
 AddTaskFlowStrange.C:467
 AddTaskFlowStrange.C:468
 AddTaskFlowStrange.C:469
 AddTaskFlowStrange.C:470
 AddTaskFlowStrange.C:471
 AddTaskFlowStrange.C:472
 AddTaskFlowStrange.C:473
 AddTaskFlowStrange.C:474
 AddTaskFlowStrange.C:475
 AddTaskFlowStrange.C:476
 AddTaskFlowStrange.C:477
 AddTaskFlowStrange.C:478
 AddTaskFlowStrange.C:479
 AddTaskFlowStrange.C:480
 AddTaskFlowStrange.C:481
 AddTaskFlowStrange.C:482
 AddTaskFlowStrange.C:483
 AddTaskFlowStrange.C:484
 AddTaskFlowStrange.C:485
 AddTaskFlowStrange.C:486
 AddTaskFlowStrange.C:487
 AddTaskFlowStrange.C:488
 AddTaskFlowStrange.C:489
 AddTaskFlowStrange.C:490
 AddTaskFlowStrange.C:491
 AddTaskFlowStrange.C:492
 AddTaskFlowStrange.C:493
 AddTaskFlowStrange.C:494
 AddTaskFlowStrange.C:495
 AddTaskFlowStrange.C:496
 AddTaskFlowStrange.C:497
 AddTaskFlowStrange.C:498
 AddTaskFlowStrange.C:499
 AddTaskFlowStrange.C:500
 AddTaskFlowStrange.C:501
 AddTaskFlowStrange.C:502
 AddTaskFlowStrange.C:503
 AddTaskFlowStrange.C:504
 AddTaskFlowStrange.C:505
 AddTaskFlowStrange.C:506
 AddTaskFlowStrange.C:507
 AddTaskFlowStrange.C:508
 AddTaskFlowStrange.C:509
 AddTaskFlowStrange.C:510
 AddTaskFlowStrange.C:511
 AddTaskFlowStrange.C:512
 AddTaskFlowStrange.C:513
 AddTaskFlowStrange.C:514
 AddTaskFlowStrange.C:515
 AddTaskFlowStrange.C:516
 AddTaskFlowStrange.C:517
 AddTaskFlowStrange.C:518
 AddTaskFlowStrange.C:519
 AddTaskFlowStrange.C:520
 AddTaskFlowStrange.C:521
 AddTaskFlowStrange.C:522
 AddTaskFlowStrange.C:523
 AddTaskFlowStrange.C:524
 AddTaskFlowStrange.C:525
 AddTaskFlowStrange.C:526
 AddTaskFlowStrange.C:527
 AddTaskFlowStrange.C:528
 AddTaskFlowStrange.C:529
 AddTaskFlowStrange.C:530
 AddTaskFlowStrange.C:531
 AddTaskFlowStrange.C:532
 AddTaskFlowStrange.C:533
 AddTaskFlowStrange.C:534
 AddTaskFlowStrange.C:535
 AddTaskFlowStrange.C:536
 AddTaskFlowStrange.C:537
 AddTaskFlowStrange.C:538
 AddTaskFlowStrange.C:539
 AddTaskFlowStrange.C:540
 AddTaskFlowStrange.C:541
 AddTaskFlowStrange.C:542
 AddTaskFlowStrange.C:543
 AddTaskFlowStrange.C:544
 AddTaskFlowStrange.C:545
 AddTaskFlowStrange.C:546
 AddTaskFlowStrange.C:547
 AddTaskFlowStrange.C:548
 AddTaskFlowStrange.C:549
 AddTaskFlowStrange.C:550
 AddTaskFlowStrange.C:551
 AddTaskFlowStrange.C:552
 AddTaskFlowStrange.C:553
 AddTaskFlowStrange.C:554
 AddTaskFlowStrange.C:555
 AddTaskFlowStrange.C:556
 AddTaskFlowStrange.C:557
 AddTaskFlowStrange.C:558
 AddTaskFlowStrange.C:559
 AddTaskFlowStrange.C:560
 AddTaskFlowStrange.C:561
 AddTaskFlowStrange.C:562
 AddTaskFlowStrange.C:563
 AddTaskFlowStrange.C:564
 AddTaskFlowStrange.C:565
 AddTaskFlowStrange.C:566
 AddTaskFlowStrange.C:567
 AddTaskFlowStrange.C:568
 AddTaskFlowStrange.C:569
 AddTaskFlowStrange.C:570
 AddTaskFlowStrange.C:571
 AddTaskFlowStrange.C:572
 AddTaskFlowStrange.C:573
 AddTaskFlowStrange.C:574
 AddTaskFlowStrange.C:575
 AddTaskFlowStrange.C:576
 AddTaskFlowStrange.C:577
 AddTaskFlowStrange.C:578
 AddTaskFlowStrange.C:579
 AddTaskFlowStrange.C:580
 AddTaskFlowStrange.C:581
 AddTaskFlowStrange.C:582
 AddTaskFlowStrange.C:583
 AddTaskFlowStrange.C:584
 AddTaskFlowStrange.C:585
 AddTaskFlowStrange.C:586
 AddTaskFlowStrange.C:587
 AddTaskFlowStrange.C:588
 AddTaskFlowStrange.C:589
 AddTaskFlowStrange.C:590
 AddTaskFlowStrange.C:591
 AddTaskFlowStrange.C:592
 AddTaskFlowStrange.C:593
 AddTaskFlowStrange.C:594
 AddTaskFlowStrange.C:595
 AddTaskFlowStrange.C:596
 AddTaskFlowStrange.C:597
 AddTaskFlowStrange.C:598
 AddTaskFlowStrange.C:599
 AddTaskFlowStrange.C:600
 AddTaskFlowStrange.C:601
 AddTaskFlowStrange.C:602
 AddTaskFlowStrange.C:603
 AddTaskFlowStrange.C:604
 AddTaskFlowStrange.C:605
 AddTaskFlowStrange.C:606
 AddTaskFlowStrange.C:607
 AddTaskFlowStrange.C:608
 AddTaskFlowStrange.C:609
 AddTaskFlowStrange.C:610
 AddTaskFlowStrange.C:611
 AddTaskFlowStrange.C:612
 AddTaskFlowStrange.C:613
 AddTaskFlowStrange.C:614
 AddTaskFlowStrange.C:615
 AddTaskFlowStrange.C:616
 AddTaskFlowStrange.C:617
 AddTaskFlowStrange.C:618
 AddTaskFlowStrange.C:619
 AddTaskFlowStrange.C:620
 AddTaskFlowStrange.C:621
 AddTaskFlowStrange.C:622
 AddTaskFlowStrange.C:623
 AddTaskFlowStrange.C:624
 AddTaskFlowStrange.C:625
 AddTaskFlowStrange.C:626
 AddTaskFlowStrange.C:627
 AddTaskFlowStrange.C:628
 AddTaskFlowStrange.C:629
 AddTaskFlowStrange.C:630
 AddTaskFlowStrange.C:631
 AddTaskFlowStrange.C:632
 AddTaskFlowStrange.C:633
 AddTaskFlowStrange.C:634
 AddTaskFlowStrange.C:635
 AddTaskFlowStrange.C:636
 AddTaskFlowStrange.C:637
 AddTaskFlowStrange.C:638
 AddTaskFlowStrange.C:639
 AddTaskFlowStrange.C:640
 AddTaskFlowStrange.C:641
 AddTaskFlowStrange.C:642
 AddTaskFlowStrange.C:643
 AddTaskFlowStrange.C:644
 AddTaskFlowStrange.C:645
 AddTaskFlowStrange.C:646
 AddTaskFlowStrange.C:647
 AddTaskFlowStrange.C:648
 AddTaskFlowStrange.C:649
 AddTaskFlowStrange.C:650
 AddTaskFlowStrange.C:651
 AddTaskFlowStrange.C:652
 AddTaskFlowStrange.C:653
 AddTaskFlowStrange.C:654
 AddTaskFlowStrange.C:655
 AddTaskFlowStrange.C:656
 AddTaskFlowStrange.C:657
 AddTaskFlowStrange.C:658
 AddTaskFlowStrange.C:659
 AddTaskFlowStrange.C:660
 AddTaskFlowStrange.C:661
 AddTaskFlowStrange.C:662
 AddTaskFlowStrange.C:663
 AddTaskFlowStrange.C:664
 AddTaskFlowStrange.C:665
 AddTaskFlowStrange.C:666
 AddTaskFlowStrange.C:667
 AddTaskFlowStrange.C:668
 AddTaskFlowStrange.C:669
 AddTaskFlowStrange.C:670
 AddTaskFlowStrange.C:671
 AddTaskFlowStrange.C:672
 AddTaskFlowStrange.C:673
 AddTaskFlowStrange.C:674
 AddTaskFlowStrange.C:675
 AddTaskFlowStrange.C:676
 AddTaskFlowStrange.C:677
 AddTaskFlowStrange.C:678
 AddTaskFlowStrange.C:679
 AddTaskFlowStrange.C:680
 AddTaskFlowStrange.C:681
 AddTaskFlowStrange.C:682
 AddTaskFlowStrange.C:683
 AddTaskFlowStrange.C:684
 AddTaskFlowStrange.C:685
 AddTaskFlowStrange.C:686
 AddTaskFlowStrange.C:687
 AddTaskFlowStrange.C:688
 AddTaskFlowStrange.C:689
 AddTaskFlowStrange.C:690
 AddTaskFlowStrange.C:691
 AddTaskFlowStrange.C:692
 AddTaskFlowStrange.C:693
 AddTaskFlowStrange.C:694
 AddTaskFlowStrange.C:695
 AddTaskFlowStrange.C:696
 AddTaskFlowStrange.C:697
 AddTaskFlowStrange.C:698
 AddTaskFlowStrange.C:699
 AddTaskFlowStrange.C:700
 AddTaskFlowStrange.C:701
 AddTaskFlowStrange.C:702
 AddTaskFlowStrange.C:703
 AddTaskFlowStrange.C:704
 AddTaskFlowStrange.C:705
 AddTaskFlowStrange.C:706
 AddTaskFlowStrange.C:707
 AddTaskFlowStrange.C:708
 AddTaskFlowStrange.C:709
 AddTaskFlowStrange.C:710
 AddTaskFlowStrange.C:711
 AddTaskFlowStrange.C:712
 AddTaskFlowStrange.C:713
 AddTaskFlowStrange.C:714
 AddTaskFlowStrange.C:715
 AddTaskFlowStrange.C:716
 AddTaskFlowStrange.C:717
 AddTaskFlowStrange.C:718
 AddTaskFlowStrange.C:719
 AddTaskFlowStrange.C:720
 AddTaskFlowStrange.C:721
 AddTaskFlowStrange.C:722
 AddTaskFlowStrange.C:723
 AddTaskFlowStrange.C:724
 AddTaskFlowStrange.C:725
 AddTaskFlowStrange.C:726
 AddTaskFlowStrange.C:727
 AddTaskFlowStrange.C:728
 AddTaskFlowStrange.C:729
 AddTaskFlowStrange.C:730
 AddTaskFlowStrange.C:731
 AddTaskFlowStrange.C:732
 AddTaskFlowStrange.C:733
 AddTaskFlowStrange.C:734
 AddTaskFlowStrange.C:735
 AddTaskFlowStrange.C:736
 AddTaskFlowStrange.C:737
 AddTaskFlowStrange.C:738
 AddTaskFlowStrange.C:739
 AddTaskFlowStrange.C:740