ROOT logo
void AddTaskFlowHigherOrdersAllPID(Int_t triggerSelectionString=AliVEvent::kMB | AliVEvent::kCentral | AliVEvent::kSemiCentral,
                                   Float_t centrMin=0.,
                                   Float_t centrMax=100.,
                                   Float_t etamin=-0.8,
                                   Float_t etamax=0.8,
                                   Float_t EtaGap=0,
                                   TString fileNameBase="output",
                                   TString uniqueStr="",
                                   Int_t AODfilterBitRP = 768,
                                   Int_t AODfilterBitPOI = 768,
                                   Int_t charge=0,
                                   Bool_t doQA=kTRUE,
                                   Bool_t doPIDQA=kFALSE,
                                   Bool_t isPID = kFALSE,
                                   Bool_t is2011 = kTRUE,
                                   AliPID::EParticleType particleType=AliPID::kPion,
                                   AliFlowTrackCuts::PIDsource sourcePID=AliFlowTrackCuts::kTOFbayesian) {
  // Define the range for eta subevents (for SP method)
  Double_t minA = -0.8;//
  Double_t maxA = 0.8;//
  Double_t minB = -0.8;//
  Double_t maxB = 0.8;//

  if(EtaGap!=0 && EtaGap<=1){
      minA = -0.8;
      maxA = -EtaGap/2;
      minB = EtaGap/2;
      maxB = 0.8;
  }
   
  // AFTERBURNER
  Bool_t useAfterBurner=kFALSE;
  Double_t v1=0.0;
  Double_t v2=0.0;
  Double_t v3=0.0;
  Double_t v4=0.0;
  Int_t numberOfTrackClones=0; //non-flow

  // Define a range of the detector to exclude
  Bool_t ExcludeRegion = kFALSE;
  Double_t excludeEtaMin = -0.;
  Double_t excludeEtaMax = 0.;
  Double_t excludePhiMin = 0.;
  Double_t excludePhiMax = 0.;

  // use physics selection class
  Bool_t  UsePhysicsSelection = kTRUE;

  // QA
//  Bool_t runQAtask=kFALSE;
//  Bool_t FillQAntuple=kFALSE;
//  Bool_t DoQAcorrelations=kFALSE;

  // RUN SETTINGS
  // Flow analysis method can be:(set to kTRUE or kFALSE)
  Bool_t SP       = kTRUE;  // scalar product method (similar to eventplane method)
  Bool_t QC       = kTRUE;  // cumulants using Q vectors
  
  Bool_t METHODS[] = {SP,QC};

  // Boolean to use/not use weights for the Q vector
  Bool_t WEIGHTS[] = {kFALSE,kFALSE,kFALSE}; //Phi, v'(pt), v'(eta)

  // SETTING THE CUTS

  //---------Data selection----------
  //kMC, kGlobal, kESD_TPConly, kESD_SPDtracklet
  AliFlowTrackCuts::trackParameterType rptype = AliFlowTrackCuts::kTPCstandalone;
  AliFlowTrackCuts::trackParameterType poitype = AliFlowTrackCuts::kTPCstandalone;

  //---------Parameter mixing--------
  //kPure - no mixing, kTrackWithMCkine, kTrackWithMCPID, kTrackWithMCpt
  AliFlowTrackCuts::trackParameterMix rpmix = AliFlowTrackCuts::kPure;
  AliFlowTrackCuts::trackParameterMix poimix = AliFlowTrackCuts::kPure;


  const char* rptypestr = AliFlowTrackCuts::GetParamTypeName(rptype);
  const char* poitypestr = AliFlowTrackCuts::GetParamTypeName(poitype);

  //===========================================================================
  // EVENTS CUTS:
  AliFlowEventCuts* cutsEvent = new AliFlowEventCuts("event cuts");
  cutsEvent->SetUsedDataset(is2011);
  cutsEvent->SetCentralityPercentileRange(centrMin,centrMax);
  cutsEvent->SetCentralityPercentileMethod(AliFlowEventCuts::kV0);
//  cutsEvent->SetRefMultMethod(AliFlowEventCuts::kVZERO);
  //cutsEvent->SetCentralityPercentileMethod(AliFlowEventCuts::kSPD1tracklets);
  //cutsEvent->SetNContributorsRange(2);
  cutsEvent->SetPrimaryVertexZrange(-10.,10.);
  cutsEvent->SetQA(doQA);
  cutsEvent->SetCutTPCmultiplicityOutliers();


  // RP TRACK CUTS:
//  AliFlowTrackCuts* cutsRP2 = AliFlowTrackCuts::GetStandardVZEROOnlyTrackCuts();
  AliFlowTrackCuts* cutsRP = new AliFlowTrackCuts("TPConlyRP");
  cutsRP->SetParamType(rptype);
  cutsRP->SetParamMix(rpmix);
  cutsRP->SetPtRange(0.2,5.);
  cutsRP->SetEtaRange(etamin,etamax);
  cutsRP->SetMinNClustersTPC(70);
//  cutsRP->SetMinChi2PerClusterTPC(0.1);//
 // cutsRP->SetMaxChi2PerClusterTPC(4.0);//
  cutsRP->SetMaxDCAToVertexXY(3.0);
  cutsRP->SetMaxDCAToVertexZ(3.0);
  cutsRP->SetAcceptKinkDaughters(kFALSE);
  cutsRP->SetMinimalTPCdedx(-1e10);
  cutsRP->SetAODfilterBit(AODfilterBitRP);    
  cutsRP->SetQA(doQA);

  // POI TRACK CUTS:
  AliFlowTrackCuts* cutsPOI = new AliFlowTrackCuts("TPConlyPOI");
  cutsPOI->GetBayesianResponse()->ForceOldDedx(); // for 2010 data to use old TPC PID Response instead of the official one
  cutsPOI->SetParamType(poitype);
  cutsPOI->SetParamMix(poimix);
  cutsPOI->SetPtRange(0.2,5.);//
  cutsPOI->SetEtaRange(etamin,etamax);
  //cutsPOI->SetRequireCharge(kTRUE);
  //cutsPOI->SetPID(PdgRP);
  cutsPOI->SetMinNClustersTPC(70);
 // cutsPOI->SetMinChi2PerClusterTPC(0.1); //
 // cutsPOI->SetMaxChi2PerClusterTPC(4.0); //
//  cutsPOI->SetRequireITSRefit(kTRUE);
//  cutsPOI->SetRequireTPCRefit(kTRUE);
//  cutsPOI->SetMinNClustersITS(2);
  //cutsPOI->SetMaxChi2PerClusterITS(1.e+09);
  cutsPOI->SetMaxDCAToVertexXY(3.0);
  cutsPOI->SetMaxDCAToVertexZ(3.0);
  //cutsPOI->SetDCAToVertex2D(kTRUE);
  //cutsPOI->SetMaxNsigmaToVertex(1.e+10);
  //cutsPOI->SetRequireSigmaToVertex(kFALSE);
  cutsPOI->SetAcceptKinkDaughters(kFALSE);
  if(isPID) cutsPOI->SetPID(particleType, sourcePID);//particleType, sourcePID
  if (charge!=0) cutsPOI->SetCharge(charge);
  //cutsPOI->SetAllowTOFmismatch(kFALSE);
  cutsPOI->SetRequireStrictTOFTPCagreement(kTRUE);
  //iexample: francesco's tunig TPC Bethe Bloch for data:
  //cutsPOI->GetESDpid().GetTPCResponse().SetBetheBlochParameters(4.36414e-02,1.75977e+01,1.14385e-08,2.27907e+00,3.36699e+00);
  //cutsPOI->GetESDpid().GetTPCResponse().SetMip(49);
  cutsPOI->SetMinimalTPCdedx(-1e10);
  cutsPOI->SetAODfilterBit(AODfilterBitPOI);
 // cutsPOI->SetAODfilterBit(768);  
  cutsPOI->SetQA(doQA);
  cutsPOI->SetPriors((centrMin+centrMax)*0.5); // set priors and PID as a function of the centrality

//  Int_t sourcePID = 2;
//  Int_t particleType = 2; //2 or 3 or 4 for kPion, kKaon and kProton 
 
  TString outputSlotName[] = {"","","",""};

  for(int harmonic=2;harmonic<6;harmonic++){  //for v3,v4 and v5
    outputSlotName[harmonic-2]+=uniqueStr;
    outputSlotName[harmonic-2]+=Form("%i",harmonic);
    outputSlotName[harmonic-2]+=cutsRP->GetName();
    outputSlotName[harmonic-2]+="_";
    outputSlotName[harmonic-2]+=cutsPOI->GetName();
    outputSlotName[harmonic-2]+=Form("_%.0f-",centrMin);
    outputSlotName[harmonic-2]+=Form("%.0f_",centrMax);
    if(isPID){
      outputSlotName[harmonic-2]+=AliFlowTrackCuts::PIDsourceName(sourcePID);//sourcePID
      outputSlotName[harmonic-2]+="_";
      outputSlotName[harmonic-2]+=AliPID::ParticleName(particleType);//particleType
    }
    else{
      outputSlotName[harmonic-2]+="AllCharged";
    }
    if (charge<0) outputSlotName[harmonic-2]+="-";
    if (charge>0) outputSlotName[harmonic-2]+="+";
  }
/*
  TString QASlotName;

//QA

    QASlotName+="qa";
    QASlotName+=Form("%i",harmonic);
    QASlotName+="_";
    QASlotName+=Form("_%.0f-",centrMin);
    QASlotName+=Form("%.0f_",centrMax);
    if(isPID){
      QASlotName+=AliFlowTrackCuts::PIDsourceName(sourcePID);//sourcePID
      QASlotName+="_";
      QASlotName+=AliPID::ParticleName(particleType);//particleType
    }
    else{
      QASlotName+="AllCharged";
    }
    if (charge<0) QASlotName+="-";
    if (charge>0) QASlotName+="+";
*/

  TString fileName(fileNameBase);
  fileName.Append(".root");

  Bool_t useWeights  = WEIGHTS[0] || WEIGHTS[1] || WEIGHTS[2];
  if (useWeights) cout<<"Weights are used"<<endl;
  else cout<<"Weights are not used"<<endl;
  
  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    Error("AddTaskFlowEvent", "No analysis manager to connect to.");
    return NULL;
  }
  
  // Check the analysis type using the event handlers connected to the analysis
  // manager. The availability of MC handler can also be checked here.
  //==============================================================================
  if (!mgr->GetInputEventHandler()) {
    ::Error("AddTaskFlowEvent", "This task requires an input event handler");
    return NULL;
  }  

  // Open external input files
  //===========================================================================
  //weights: 
  TFile *weightsFile = NULL;
  TList *weightsList = NULL;

  if(useWeights) {
    //open the file with the weights:
    weightsFile = TFile::Open("weights.root","READ");
    if(weightsFile) {
      //access the list which holds the histos with weigths:
      weightsList = (TList*)weightsFile->Get("weights");
    }
    else {
      cout<<" WARNING: the file <weights.root> with weights from the previous run was not available."<<endl;
      break;
    } 
  }
   
  // Create the flow event task, add it to the manager.
  //===========================================================================
  AliAnalysisTaskFlowEvent *taskFE[4];
  for(int i=0;i<4;i++){
  if(useAfterBurner){ 
      taskFE[i] = new AliAnalysisTaskFlowEvent(Form("TaskFlowEvent_%s",outputSlotName[i].Data()),"",doQA,1);
      taskFE[i]->SetFlow(v1,v2,v3,v4); 
      taskFE[i]->SetNonFlowNumberOfTrackClones(numberOfTrackClones);
      taskFE[i]->SetAfterburnerOn();
      taskFE[i]->SelectCollisionCandidates(triggerSelectionString);
  } 
  else{
      taskFE[i] = new AliAnalysisTaskFlowEvent(Form("TaskFlowEvent_%s",outputSlotName[i].Data()),"",doQA); 
      taskFE[i]->SelectCollisionCandidates(triggerSelectionString);
  }
  if (ExcludeRegion) {
      taskFE[i]->DefineDeadZone(excludeEtaMin, excludeEtaMax, excludePhiMin, excludePhiMax); 
  }
  taskFE[i]->SetSubeventEtaRange(minA, maxA, minB, maxB);
  if (UsePhysicsSelection) {
    taskFE[i]->SelectCollisionCandidates(AliVEvent::kMB);
    cout<<"Using Physics Selection"<<endl;
  }
  mgr->AddTask(taskFE[i]);
 
  // Pass cuts for RPs and POIs to the task:
  taskFE[i]->SetCutsEvent(cutsEvent);
  taskFE[i]->SetCutsRP(cutsRP);
  taskFE[i]->SetCutsPOI(cutsPOI);
  if (cutsRP->GetParamType()==AliFlowTrackCuts::kVZERO)
  { 
    //TODO: since this is set in a static object all analyses in an analysis train
    //will be affected.
    taskFE[i]->SetHistWeightvsPhiMin(0.);
    taskFE[i]->SetHistWeightvsPhiMax(200.);
  }
  }
  // Create the analysis tasks, add them to the manager.
  //===========================================================================
  AliAnalysisTaskScalarProduct *taskSP[4];
  AliAnalysisTaskQCumulants *taskQC[4];
  AliAnalysisTaskPIDqa *taskPIDQA[4];

  for(int i=0;i<4;i++){
  if (SP){
    taskSP[i] = new AliAnalysisTaskScalarProduct(Form("TaskScalarProduct_%s",outputSlotName[i].Data()),WEIGHTS[0]);
    taskSP[i]->SetHarmonic(i+2);
    taskSP[i]->SelectCollisionCandidates(triggerSelectionString);
    taskSP[i]->SetRelDiffMsub(1.0);
    taskSP[i]->SetApplyCorrectionForNUA(kTRUE);
    mgr->AddTask(taskSP[i]);
  }
  if (QC){
    taskQC[i] = new AliAnalysisTaskQCumulants(Form("TaskQCumulants_%s",outputSlotName[i].Data()),useWeights);
    taskQC[i]->SelectCollisionCandidates(triggerSelectionString);
    taskQC[i]->SetUsePhiWeights(WEIGHTS[0]); 
    taskQC[i]->SetUsePtWeights(WEIGHTS[1]);
    taskQC[i]->SetUseEtaWeights(WEIGHTS[2]); 
    taskQC[i]->SetCalculateCumulantsVsM(kFALSE);
    taskQC[i]->SetnBinsMult(10000);
    taskQC[i]->SetMinMult(0.);
    taskQC[i]->SetMaxMult(10000.);
    taskQC[i]->SetHarmonic(i+2);
    taskQC[i]->SetApplyCorrectionForNUA(kFALSE);
    taskQC[i]->SetFillMultipleControlHistograms(kFALSE);     
    mgr->AddTask(taskQC[i]);
  }
  }
//  if(doPIDQA){
//     gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
//     gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDqa.C");    
//     taskPIDQA = new AliAnalysisTaskPIDqa(Form("TaskPIDQA_%s",QASlotName.Data()));
//     taskPIDQA->SelectCollisionCandidates(triggerSelectionString);
//     AddTaskPIDResponse(kFALSE);
 //    AddTaskPIDqa();     
//     mgr->AddTask(taskPIDQA);

     
//  }

  // Create the output container for the data produced by the task
  // Connect to the input and output containers
  //===========================================================================
  AliAnalysisDataContainer *cinput1[4];
  AliAnalysisDataContainer *coutputFE[4];
  AliAnalysisDataContainer* coutputFEQA[4];
  AliAnalysisDataContainer* coutput_QA[4];
  for(int i=0; i<4; i++) {
//    TString output_QA = fileName;
//    output_QA = ":FlowEventQA"
    cinput1[i] = mgr->GetCommonInputContainer();
    
    coutputFE[i] = mgr->CreateContainer(Form("FlowEventSimple_%s",outputSlotName[i].Data()),AliFlowEventSimple::Class()/*AliVEvent::Class()*/,AliAnalysisManager::kExchangeContainer);
//    coutput_QA[i] = mgr->CreateContainer(Form("FlowEventSimpleQA_%s",outputSlotName[i].Data()),TList::Class(),AliAnalysisManager::kOutputContainer,output_QA);
    mgr->ConnectInput(taskFE[i],0,cinput1[i]); 
    mgr->ConnectOutput(taskFE[i],1,coutputFE[i]);
//    mgr->ConnectOutput(taskFE[i],2,coutput_QA[i]);
    
    if (taskFE[i]->GetQAOn()) {
      TString outputQA = fileName;
      outputQA += ":QA";
      coutputFEQA[i] = mgr->CreateContainer(Form("QA_%s",outputSlotName[i].Data()), TList/*AliVEvent*/::Class(),AliAnalysisManager::kOutputContainer,outputQA);
  //  mgr->ConnectInput(taskPIDQA[i],0,cinput1[i]);  
    mgr->ConnectOutput(taskFE[i],2,coutputFEQA[i]);
    }
  }
  // Create the output containers for the data produced by the analysis tasks
  // Connect to the input and output containers
  //===========================================================================
  AliAnalysisDataContainer *cinputWeights[4];
  AliAnalysisDataContainer *coutputSP[4]; 
  AliAnalysisDataContainer *coutputQC[4]; 
  AliAnalysisDataContainer *coutputQA[4];
  for(int i=0;i<4;i++) {
    if (useWeights) {    
      cinputWeights[i] = mgr->CreateContainer(Form("Weights_%s",outputSlotName[i].Data()),TList::Class(),AliAnalysisManager::kInputContainer); 
    }
    
    if(SP) {
      TString outputSP = fileName;
      outputSP += ":outputSPanalysis";
      outputSP+= rptypestr;
      coutputSP[i] = mgr->CreateContainer(Form("SP_%s",outputSlotName[i].Data()), 
					  TList::Class(),AliAnalysisManager::kOutputContainer,outputSP); 
      mgr->ConnectInput(taskSP[i],0,coutputFE[i]); 
      mgr->ConnectOutput(taskSP[i],1,coutputSP[i]); 
      if (WEIGHTS[0]) {
	mgr->ConnectInput(taskSP[i],1,cinputWeights[i]);
	cinputWeights[i]->SetData(weightsList);
      }
    }
    
    if(QC) {
      TString outputQC = fileName;
      outputQC += ":outputQCanalysis";
      outputQC+= rptypestr;
      
      coutputQC[i] = mgr->CreateContainer(Form("QC_%s",outputSlotName[i].Data()), 
					  TList::Class(),AliAnalysisManager::kOutputContainer,outputQC); 
      mgr->ConnectInput(taskQC[i],0,coutputFE[i]); 
      mgr->ConnectOutput(taskQC[i],1,coutputQC[i]);
      if (useWeights) {
	mgr->ConnectInput(taskQC[i],1,cinputWeights[i]);
	cinputWeights[i]->SetData(weightsList);
      }
    }
/*     if(doPIDQA){
      TString outputPIDQA = fileName;
      outputPIDQA +=":outputQAanalysis";
   //  // cInputFEQA[i] = mgr->CreateContainer(i);
      coutputQA[i] = mgr->CreateContainer(Form("PIDQA_%s",outputSlotName[i].Data()),TList::Class(),AliAnalysisManager::kOutputContainer,outputPIDQA);
      mgr->ConnectInput(taskPIDQA[i],0,mgr->GetCommonInputContainer());
    //  mgr->ConnectInput(taskPIDQA[i],0,cInputFEQA[i]);
      mgr->ConnectOutput(taskPIDQA[i],1,coutputQA[i]);
   }*/
  }
 

}


 AddTaskFlowHigherOrdersAllPID.C:1
 AddTaskFlowHigherOrdersAllPID.C:2
 AddTaskFlowHigherOrdersAllPID.C:3
 AddTaskFlowHigherOrdersAllPID.C:4
 AddTaskFlowHigherOrdersAllPID.C:5
 AddTaskFlowHigherOrdersAllPID.C:6
 AddTaskFlowHigherOrdersAllPID.C:7
 AddTaskFlowHigherOrdersAllPID.C:8
 AddTaskFlowHigherOrdersAllPID.C:9
 AddTaskFlowHigherOrdersAllPID.C:10
 AddTaskFlowHigherOrdersAllPID.C:11
 AddTaskFlowHigherOrdersAllPID.C:12
 AddTaskFlowHigherOrdersAllPID.C:13
 AddTaskFlowHigherOrdersAllPID.C:14
 AddTaskFlowHigherOrdersAllPID.C:15
 AddTaskFlowHigherOrdersAllPID.C:16
 AddTaskFlowHigherOrdersAllPID.C:17
 AddTaskFlowHigherOrdersAllPID.C:18
 AddTaskFlowHigherOrdersAllPID.C:19
 AddTaskFlowHigherOrdersAllPID.C:20
 AddTaskFlowHigherOrdersAllPID.C:21
 AddTaskFlowHigherOrdersAllPID.C:22
 AddTaskFlowHigherOrdersAllPID.C:23
 AddTaskFlowHigherOrdersAllPID.C:24
 AddTaskFlowHigherOrdersAllPID.C:25
 AddTaskFlowHigherOrdersAllPID.C:26
 AddTaskFlowHigherOrdersAllPID.C:27
 AddTaskFlowHigherOrdersAllPID.C:28
 AddTaskFlowHigherOrdersAllPID.C:29
 AddTaskFlowHigherOrdersAllPID.C:30
 AddTaskFlowHigherOrdersAllPID.C:31
 AddTaskFlowHigherOrdersAllPID.C:32
 AddTaskFlowHigherOrdersAllPID.C:33
 AddTaskFlowHigherOrdersAllPID.C:34
 AddTaskFlowHigherOrdersAllPID.C:35
 AddTaskFlowHigherOrdersAllPID.C:36
 AddTaskFlowHigherOrdersAllPID.C:37
 AddTaskFlowHigherOrdersAllPID.C:38
 AddTaskFlowHigherOrdersAllPID.C:39
 AddTaskFlowHigherOrdersAllPID.C:40
 AddTaskFlowHigherOrdersAllPID.C:41
 AddTaskFlowHigherOrdersAllPID.C:42
 AddTaskFlowHigherOrdersAllPID.C:43
 AddTaskFlowHigherOrdersAllPID.C:44
 AddTaskFlowHigherOrdersAllPID.C:45
 AddTaskFlowHigherOrdersAllPID.C:46
 AddTaskFlowHigherOrdersAllPID.C:47
 AddTaskFlowHigherOrdersAllPID.C:48
 AddTaskFlowHigherOrdersAllPID.C:49
 AddTaskFlowHigherOrdersAllPID.C:50
 AddTaskFlowHigherOrdersAllPID.C:51
 AddTaskFlowHigherOrdersAllPID.C:52
 AddTaskFlowHigherOrdersAllPID.C:53
 AddTaskFlowHigherOrdersAllPID.C:54
 AddTaskFlowHigherOrdersAllPID.C:55
 AddTaskFlowHigherOrdersAllPID.C:56
 AddTaskFlowHigherOrdersAllPID.C:57
 AddTaskFlowHigherOrdersAllPID.C:58
 AddTaskFlowHigherOrdersAllPID.C:59
 AddTaskFlowHigherOrdersAllPID.C:60
 AddTaskFlowHigherOrdersAllPID.C:61
 AddTaskFlowHigherOrdersAllPID.C:62
 AddTaskFlowHigherOrdersAllPID.C:63
 AddTaskFlowHigherOrdersAllPID.C:64
 AddTaskFlowHigherOrdersAllPID.C:65
 AddTaskFlowHigherOrdersAllPID.C:66
 AddTaskFlowHigherOrdersAllPID.C:67
 AddTaskFlowHigherOrdersAllPID.C:68
 AddTaskFlowHigherOrdersAllPID.C:69
 AddTaskFlowHigherOrdersAllPID.C:70
 AddTaskFlowHigherOrdersAllPID.C:71
 AddTaskFlowHigherOrdersAllPID.C:72
 AddTaskFlowHigherOrdersAllPID.C:73
 AddTaskFlowHigherOrdersAllPID.C:74
 AddTaskFlowHigherOrdersAllPID.C:75
 AddTaskFlowHigherOrdersAllPID.C:76
 AddTaskFlowHigherOrdersAllPID.C:77
 AddTaskFlowHigherOrdersAllPID.C:78
 AddTaskFlowHigherOrdersAllPID.C:79
 AddTaskFlowHigherOrdersAllPID.C:80
 AddTaskFlowHigherOrdersAllPID.C:81
 AddTaskFlowHigherOrdersAllPID.C:82
 AddTaskFlowHigherOrdersAllPID.C:83
 AddTaskFlowHigherOrdersAllPID.C:84
 AddTaskFlowHigherOrdersAllPID.C:85
 AddTaskFlowHigherOrdersAllPID.C:86
 AddTaskFlowHigherOrdersAllPID.C:87
 AddTaskFlowHigherOrdersAllPID.C:88
 AddTaskFlowHigherOrdersAllPID.C:89
 AddTaskFlowHigherOrdersAllPID.C:90
 AddTaskFlowHigherOrdersAllPID.C:91
 AddTaskFlowHigherOrdersAllPID.C:92
 AddTaskFlowHigherOrdersAllPID.C:93
 AddTaskFlowHigherOrdersAllPID.C:94
 AddTaskFlowHigherOrdersAllPID.C:95
 AddTaskFlowHigherOrdersAllPID.C:96
 AddTaskFlowHigherOrdersAllPID.C:97
 AddTaskFlowHigherOrdersAllPID.C:98
 AddTaskFlowHigherOrdersAllPID.C:99
 AddTaskFlowHigherOrdersAllPID.C:100
 AddTaskFlowHigherOrdersAllPID.C:101
 AddTaskFlowHigherOrdersAllPID.C:102
 AddTaskFlowHigherOrdersAllPID.C:103
 AddTaskFlowHigherOrdersAllPID.C:104
 AddTaskFlowHigherOrdersAllPID.C:105
 AddTaskFlowHigherOrdersAllPID.C:106
 AddTaskFlowHigherOrdersAllPID.C:107
 AddTaskFlowHigherOrdersAllPID.C:108
 AddTaskFlowHigherOrdersAllPID.C:109
 AddTaskFlowHigherOrdersAllPID.C:110
 AddTaskFlowHigherOrdersAllPID.C:111
 AddTaskFlowHigherOrdersAllPID.C:112
 AddTaskFlowHigherOrdersAllPID.C:113
 AddTaskFlowHigherOrdersAllPID.C:114
 AddTaskFlowHigherOrdersAllPID.C:115
 AddTaskFlowHigherOrdersAllPID.C:116
 AddTaskFlowHigherOrdersAllPID.C:117
 AddTaskFlowHigherOrdersAllPID.C:118
 AddTaskFlowHigherOrdersAllPID.C:119
 AddTaskFlowHigherOrdersAllPID.C:120
 AddTaskFlowHigherOrdersAllPID.C:121
 AddTaskFlowHigherOrdersAllPID.C:122
 AddTaskFlowHigherOrdersAllPID.C:123
 AddTaskFlowHigherOrdersAllPID.C:124
 AddTaskFlowHigherOrdersAllPID.C:125
 AddTaskFlowHigherOrdersAllPID.C:126
 AddTaskFlowHigherOrdersAllPID.C:127
 AddTaskFlowHigherOrdersAllPID.C:128
 AddTaskFlowHigherOrdersAllPID.C:129
 AddTaskFlowHigherOrdersAllPID.C:130
 AddTaskFlowHigherOrdersAllPID.C:131
 AddTaskFlowHigherOrdersAllPID.C:132
 AddTaskFlowHigherOrdersAllPID.C:133
 AddTaskFlowHigherOrdersAllPID.C:134
 AddTaskFlowHigherOrdersAllPID.C:135
 AddTaskFlowHigherOrdersAllPID.C:136
 AddTaskFlowHigherOrdersAllPID.C:137
 AddTaskFlowHigherOrdersAllPID.C:138
 AddTaskFlowHigherOrdersAllPID.C:139
 AddTaskFlowHigherOrdersAllPID.C:140
 AddTaskFlowHigherOrdersAllPID.C:141
 AddTaskFlowHigherOrdersAllPID.C:142
 AddTaskFlowHigherOrdersAllPID.C:143
 AddTaskFlowHigherOrdersAllPID.C:144
 AddTaskFlowHigherOrdersAllPID.C:145
 AddTaskFlowHigherOrdersAllPID.C:146
 AddTaskFlowHigherOrdersAllPID.C:147
 AddTaskFlowHigherOrdersAllPID.C:148
 AddTaskFlowHigherOrdersAllPID.C:149
 AddTaskFlowHigherOrdersAllPID.C:150
 AddTaskFlowHigherOrdersAllPID.C:151
 AddTaskFlowHigherOrdersAllPID.C:152
 AddTaskFlowHigherOrdersAllPID.C:153
 AddTaskFlowHigherOrdersAllPID.C:154
 AddTaskFlowHigherOrdersAllPID.C:155
 AddTaskFlowHigherOrdersAllPID.C:156
 AddTaskFlowHigherOrdersAllPID.C:157
 AddTaskFlowHigherOrdersAllPID.C:158
 AddTaskFlowHigherOrdersAllPID.C:159
 AddTaskFlowHigherOrdersAllPID.C:160
 AddTaskFlowHigherOrdersAllPID.C:161
 AddTaskFlowHigherOrdersAllPID.C:162
 AddTaskFlowHigherOrdersAllPID.C:163
 AddTaskFlowHigherOrdersAllPID.C:164
 AddTaskFlowHigherOrdersAllPID.C:165
 AddTaskFlowHigherOrdersAllPID.C:166
 AddTaskFlowHigherOrdersAllPID.C:167
 AddTaskFlowHigherOrdersAllPID.C:168
 AddTaskFlowHigherOrdersAllPID.C:169
 AddTaskFlowHigherOrdersAllPID.C:170
 AddTaskFlowHigherOrdersAllPID.C:171
 AddTaskFlowHigherOrdersAllPID.C:172
 AddTaskFlowHigherOrdersAllPID.C:173
 AddTaskFlowHigherOrdersAllPID.C:174
 AddTaskFlowHigherOrdersAllPID.C:175
 AddTaskFlowHigherOrdersAllPID.C:176
 AddTaskFlowHigherOrdersAllPID.C:177
 AddTaskFlowHigherOrdersAllPID.C:178
 AddTaskFlowHigherOrdersAllPID.C:179
 AddTaskFlowHigherOrdersAllPID.C:180
 AddTaskFlowHigherOrdersAllPID.C:181
 AddTaskFlowHigherOrdersAllPID.C:182
 AddTaskFlowHigherOrdersAllPID.C:183
 AddTaskFlowHigherOrdersAllPID.C:184
 AddTaskFlowHigherOrdersAllPID.C:185
 AddTaskFlowHigherOrdersAllPID.C:186
 AddTaskFlowHigherOrdersAllPID.C:187
 AddTaskFlowHigherOrdersAllPID.C:188
 AddTaskFlowHigherOrdersAllPID.C:189
 AddTaskFlowHigherOrdersAllPID.C:190
 AddTaskFlowHigherOrdersAllPID.C:191
 AddTaskFlowHigherOrdersAllPID.C:192
 AddTaskFlowHigherOrdersAllPID.C:193
 AddTaskFlowHigherOrdersAllPID.C:194
 AddTaskFlowHigherOrdersAllPID.C:195
 AddTaskFlowHigherOrdersAllPID.C:196
 AddTaskFlowHigherOrdersAllPID.C:197
 AddTaskFlowHigherOrdersAllPID.C:198
 AddTaskFlowHigherOrdersAllPID.C:199
 AddTaskFlowHigherOrdersAllPID.C:200
 AddTaskFlowHigherOrdersAllPID.C:201
 AddTaskFlowHigherOrdersAllPID.C:202
 AddTaskFlowHigherOrdersAllPID.C:203
 AddTaskFlowHigherOrdersAllPID.C:204
 AddTaskFlowHigherOrdersAllPID.C:205
 AddTaskFlowHigherOrdersAllPID.C:206
 AddTaskFlowHigherOrdersAllPID.C:207
 AddTaskFlowHigherOrdersAllPID.C:208
 AddTaskFlowHigherOrdersAllPID.C:209
 AddTaskFlowHigherOrdersAllPID.C:210
 AddTaskFlowHigherOrdersAllPID.C:211
 AddTaskFlowHigherOrdersAllPID.C:212
 AddTaskFlowHigherOrdersAllPID.C:213
 AddTaskFlowHigherOrdersAllPID.C:214
 AddTaskFlowHigherOrdersAllPID.C:215
 AddTaskFlowHigherOrdersAllPID.C:216
 AddTaskFlowHigherOrdersAllPID.C:217
 AddTaskFlowHigherOrdersAllPID.C:218
 AddTaskFlowHigherOrdersAllPID.C:219
 AddTaskFlowHigherOrdersAllPID.C:220
 AddTaskFlowHigherOrdersAllPID.C:221
 AddTaskFlowHigherOrdersAllPID.C:222
 AddTaskFlowHigherOrdersAllPID.C:223
 AddTaskFlowHigherOrdersAllPID.C:224
 AddTaskFlowHigherOrdersAllPID.C:225
 AddTaskFlowHigherOrdersAllPID.C:226
 AddTaskFlowHigherOrdersAllPID.C:227
 AddTaskFlowHigherOrdersAllPID.C:228
 AddTaskFlowHigherOrdersAllPID.C:229
 AddTaskFlowHigherOrdersAllPID.C:230
 AddTaskFlowHigherOrdersAllPID.C:231
 AddTaskFlowHigherOrdersAllPID.C:232
 AddTaskFlowHigherOrdersAllPID.C:233
 AddTaskFlowHigherOrdersAllPID.C:234
 AddTaskFlowHigherOrdersAllPID.C:235
 AddTaskFlowHigherOrdersAllPID.C:236
 AddTaskFlowHigherOrdersAllPID.C:237
 AddTaskFlowHigherOrdersAllPID.C:238
 AddTaskFlowHigherOrdersAllPID.C:239
 AddTaskFlowHigherOrdersAllPID.C:240
 AddTaskFlowHigherOrdersAllPID.C:241
 AddTaskFlowHigherOrdersAllPID.C:242
 AddTaskFlowHigherOrdersAllPID.C:243
 AddTaskFlowHigherOrdersAllPID.C:244
 AddTaskFlowHigherOrdersAllPID.C:245
 AddTaskFlowHigherOrdersAllPID.C:246
 AddTaskFlowHigherOrdersAllPID.C:247
 AddTaskFlowHigherOrdersAllPID.C:248
 AddTaskFlowHigherOrdersAllPID.C:249
 AddTaskFlowHigherOrdersAllPID.C:250
 AddTaskFlowHigherOrdersAllPID.C:251
 AddTaskFlowHigherOrdersAllPID.C:252
 AddTaskFlowHigherOrdersAllPID.C:253
 AddTaskFlowHigherOrdersAllPID.C:254
 AddTaskFlowHigherOrdersAllPID.C:255
 AddTaskFlowHigherOrdersAllPID.C:256
 AddTaskFlowHigherOrdersAllPID.C:257
 AddTaskFlowHigherOrdersAllPID.C:258
 AddTaskFlowHigherOrdersAllPID.C:259
 AddTaskFlowHigherOrdersAllPID.C:260
 AddTaskFlowHigherOrdersAllPID.C:261
 AddTaskFlowHigherOrdersAllPID.C:262
 AddTaskFlowHigherOrdersAllPID.C:263
 AddTaskFlowHigherOrdersAllPID.C:264
 AddTaskFlowHigherOrdersAllPID.C:265
 AddTaskFlowHigherOrdersAllPID.C:266
 AddTaskFlowHigherOrdersAllPID.C:267
 AddTaskFlowHigherOrdersAllPID.C:268
 AddTaskFlowHigherOrdersAllPID.C:269
 AddTaskFlowHigherOrdersAllPID.C:270
 AddTaskFlowHigherOrdersAllPID.C:271
 AddTaskFlowHigherOrdersAllPID.C:272
 AddTaskFlowHigherOrdersAllPID.C:273
 AddTaskFlowHigherOrdersAllPID.C:274
 AddTaskFlowHigherOrdersAllPID.C:275
 AddTaskFlowHigherOrdersAllPID.C:276
 AddTaskFlowHigherOrdersAllPID.C:277
 AddTaskFlowHigherOrdersAllPID.C:278
 AddTaskFlowHigherOrdersAllPID.C:279
 AddTaskFlowHigherOrdersAllPID.C:280
 AddTaskFlowHigherOrdersAllPID.C:281
 AddTaskFlowHigherOrdersAllPID.C:282
 AddTaskFlowHigherOrdersAllPID.C:283
 AddTaskFlowHigherOrdersAllPID.C:284
 AddTaskFlowHigherOrdersAllPID.C:285
 AddTaskFlowHigherOrdersAllPID.C:286
 AddTaskFlowHigherOrdersAllPID.C:287
 AddTaskFlowHigherOrdersAllPID.C:288
 AddTaskFlowHigherOrdersAllPID.C:289
 AddTaskFlowHigherOrdersAllPID.C:290
 AddTaskFlowHigherOrdersAllPID.C:291
 AddTaskFlowHigherOrdersAllPID.C:292
 AddTaskFlowHigherOrdersAllPID.C:293
 AddTaskFlowHigherOrdersAllPID.C:294
 AddTaskFlowHigherOrdersAllPID.C:295
 AddTaskFlowHigherOrdersAllPID.C:296
 AddTaskFlowHigherOrdersAllPID.C:297
 AddTaskFlowHigherOrdersAllPID.C:298
 AddTaskFlowHigherOrdersAllPID.C:299
 AddTaskFlowHigherOrdersAllPID.C:300
 AddTaskFlowHigherOrdersAllPID.C:301
 AddTaskFlowHigherOrdersAllPID.C:302
 AddTaskFlowHigherOrdersAllPID.C:303
 AddTaskFlowHigherOrdersAllPID.C:304
 AddTaskFlowHigherOrdersAllPID.C:305
 AddTaskFlowHigherOrdersAllPID.C:306
 AddTaskFlowHigherOrdersAllPID.C:307
 AddTaskFlowHigherOrdersAllPID.C:308
 AddTaskFlowHigherOrdersAllPID.C:309
 AddTaskFlowHigherOrdersAllPID.C:310
 AddTaskFlowHigherOrdersAllPID.C:311
 AddTaskFlowHigherOrdersAllPID.C:312
 AddTaskFlowHigherOrdersAllPID.C:313
 AddTaskFlowHigherOrdersAllPID.C:314
 AddTaskFlowHigherOrdersAllPID.C:315
 AddTaskFlowHigherOrdersAllPID.C:316
 AddTaskFlowHigherOrdersAllPID.C:317
 AddTaskFlowHigherOrdersAllPID.C:318
 AddTaskFlowHigherOrdersAllPID.C:319
 AddTaskFlowHigherOrdersAllPID.C:320
 AddTaskFlowHigherOrdersAllPID.C:321
 AddTaskFlowHigherOrdersAllPID.C:322
 AddTaskFlowHigherOrdersAllPID.C:323
 AddTaskFlowHigherOrdersAllPID.C:324
 AddTaskFlowHigherOrdersAllPID.C:325
 AddTaskFlowHigherOrdersAllPID.C:326
 AddTaskFlowHigherOrdersAllPID.C:327
 AddTaskFlowHigherOrdersAllPID.C:328
 AddTaskFlowHigherOrdersAllPID.C:329
 AddTaskFlowHigherOrdersAllPID.C:330
 AddTaskFlowHigherOrdersAllPID.C:331
 AddTaskFlowHigherOrdersAllPID.C:332
 AddTaskFlowHigherOrdersAllPID.C:333
 AddTaskFlowHigherOrdersAllPID.C:334
 AddTaskFlowHigherOrdersAllPID.C:335
 AddTaskFlowHigherOrdersAllPID.C:336
 AddTaskFlowHigherOrdersAllPID.C:337
 AddTaskFlowHigherOrdersAllPID.C:338
 AddTaskFlowHigherOrdersAllPID.C:339
 AddTaskFlowHigherOrdersAllPID.C:340
 AddTaskFlowHigherOrdersAllPID.C:341
 AddTaskFlowHigherOrdersAllPID.C:342
 AddTaskFlowHigherOrdersAllPID.C:343
 AddTaskFlowHigherOrdersAllPID.C:344
 AddTaskFlowHigherOrdersAllPID.C:345
 AddTaskFlowHigherOrdersAllPID.C:346
 AddTaskFlowHigherOrdersAllPID.C:347
 AddTaskFlowHigherOrdersAllPID.C:348
 AddTaskFlowHigherOrdersAllPID.C:349
 AddTaskFlowHigherOrdersAllPID.C:350
 AddTaskFlowHigherOrdersAllPID.C:351
 AddTaskFlowHigherOrdersAllPID.C:352
 AddTaskFlowHigherOrdersAllPID.C:353
 AddTaskFlowHigherOrdersAllPID.C:354
 AddTaskFlowHigherOrdersAllPID.C:355
 AddTaskFlowHigherOrdersAllPID.C:356
 AddTaskFlowHigherOrdersAllPID.C:357
 AddTaskFlowHigherOrdersAllPID.C:358
 AddTaskFlowHigherOrdersAllPID.C:359
 AddTaskFlowHigherOrdersAllPID.C:360
 AddTaskFlowHigherOrdersAllPID.C:361
 AddTaskFlowHigherOrdersAllPID.C:362
 AddTaskFlowHigherOrdersAllPID.C:363
 AddTaskFlowHigherOrdersAllPID.C:364
 AddTaskFlowHigherOrdersAllPID.C:365
 AddTaskFlowHigherOrdersAllPID.C:366
 AddTaskFlowHigherOrdersAllPID.C:367
 AddTaskFlowHigherOrdersAllPID.C:368
 AddTaskFlowHigherOrdersAllPID.C:369
 AddTaskFlowHigherOrdersAllPID.C:370
 AddTaskFlowHigherOrdersAllPID.C:371
 AddTaskFlowHigherOrdersAllPID.C:372
 AddTaskFlowHigherOrdersAllPID.C:373
 AddTaskFlowHigherOrdersAllPID.C:374
 AddTaskFlowHigherOrdersAllPID.C:375
 AddTaskFlowHigherOrdersAllPID.C:376
 AddTaskFlowHigherOrdersAllPID.C:377
 AddTaskFlowHigherOrdersAllPID.C:378
 AddTaskFlowHigherOrdersAllPID.C:379
 AddTaskFlowHigherOrdersAllPID.C:380
 AddTaskFlowHigherOrdersAllPID.C:381
 AddTaskFlowHigherOrdersAllPID.C:382
 AddTaskFlowHigherOrdersAllPID.C:383
 AddTaskFlowHigherOrdersAllPID.C:384
 AddTaskFlowHigherOrdersAllPID.C:385
 AddTaskFlowHigherOrdersAllPID.C:386
 AddTaskFlowHigherOrdersAllPID.C:387
 AddTaskFlowHigherOrdersAllPID.C:388
 AddTaskFlowHigherOrdersAllPID.C:389
 AddTaskFlowHigherOrdersAllPID.C:390
 AddTaskFlowHigherOrdersAllPID.C:391
 AddTaskFlowHigherOrdersAllPID.C:392
 AddTaskFlowHigherOrdersAllPID.C:393
 AddTaskFlowHigherOrdersAllPID.C:394
 AddTaskFlowHigherOrdersAllPID.C:395