ROOT logo
//AddTask macro for higher harmonic flow analysis with QC method only.

class AliAnalysisDataContainer;
class AliFlowTrackCuts;
class AliFlowEventCuts;


void AddTaskPIDFlowQC(Int_t triggerSelectionString=AliVEvent::kMB,
                                   Float_t etamin=-0.8,
                                   Float_t etamax=0.8,
                                   TString fileNameBase="AnalysisResults",
                                   TString uniqueStr="Pion_02",
                                   Int_t AODfilterBitRP = 272,
                                   Int_t AODfilterBitPOI = 272,
                                   Int_t charge=0,
                                   Int_t MinTPCdedx = 10,
                                   Int_t ncentrality = 6,
                                   Bool_t doQA=kTRUE,
                                   Bool_t isPID = kTRUE,
                                   Bool_t is2011 = kFALSE,
                                   AliPID::EParticleType particleType=AliPID::kPion,
                                   AliFlowTrackCuts::PIDsource sourcePID=AliFlowTrackCuts::kTOFbayesian) {

// 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.;
    
int centrMin[9] = {0,5,10,20,30,40,50,60,70};
int centrMax[9] = {5,10,20,30,40,50,60,70,80};
const int ncentr = ncentrality;
    
    
//---------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[ncentr];
AliFlowTrackCuts* cutsRP[ncentr];
AliFlowTrackCuts* cutsPOI[ncentr];
TString outputSlotName[ncentr][4];
TString suffixName[ncentr];
    
for(int icentr=0;icentr<ncentr;icentr++){
    cutsEvent[icentr] = new AliFlowEventCuts(Form("eventcuts_%d",icentr));
    cutsEvent[icentr]->SetLHC11h(is2011);
    cutsEvent[icentr]->SetCentralityPercentileRange(centrMin[icentr],centrMax[icentr]);
    cutsEvent[icentr]->SetCentralityPercentileMethod(AliFlowEventCuts::kV0);
    //  cutsEvent->SetRefMultMethod(AliFlowEventCuts::kVZERO);
    //cutsEvent->SetCentralityPercentileMethod(AliFlowEventCuts::kSPD1tracklets);
    //cutsEvent->SetNContributorsRange(2);
    cutsEvent[icentr]->SetPrimaryVertexZrange(-10.,10.);
    cutsEvent[icentr]->SetQA(doQA);
    cutsEvent[icentr]->SetCutTPCmultiplicityOutliers();
    
    
    // RP TRACK CUTS:
    cutsRP[icentr] = new AliFlowTrackCuts(Form("TPConlyRP_%d",icentr));
   // cutsRP[icentr]->SetParamType(rptype);
   // cutsRP[icentr]->SetParamMix(rpmix);
    cutsRP[icentr]->SetPtRange(0.2,5.);
    cutsRP[icentr]->SetEtaRange(etamin,etamax);
    cutsRP[icentr]->SetMinNClustersTPC(70);
    //  cutsRP->SetMinChi2PerClusterTPC(0.1);//
    // cutsRP->SetMaxChi2PerClusterTPC(4.0);//
    cutsRP[icentr]->SetMaxDCAToVertexXY(3.0);
    cutsRP[icentr]->SetMaxDCAToVertexZ(3.0);
    cutsRP[icentr]->SetAcceptKinkDaughters(kFALSE);
    cutsRP[icentr]->SetMinimalTPCdedx(MinTPCdedx);
    cutsRP[icentr]->SetAODfilterBit(AODfilterBitRP);
    cutsRP[icentr]->SetQA(doQA);

    
    //POIs for QC method
    //===========================================================================
    AliFlowTrackCuts  *QC_POI[ncentr];
    //half window for POIs
    //=======================QC POI Cuts
    QC_POI[icentr] = DefinePOIcuts(icentr);

    QC_POI[icentr]->GetBayesianResponse()->ForceOldDedx(); // for 2010 data to use old TPC PID Response instead of the official one
   // QC_POI[icentr]->SetParamType(poitype);
   // QC_POI[icentr]->SetParamMix(poimix);
    QC_POI[icentr]->SetPtRange(0.2,5.);//
    QC_POI[icentr]->SetMinNClustersTPC(70);
    QC_POI[icentr]->SetEtaRange( etamin,etamax );
  
    // QC_POI[icentr]->SetMinChi2PerClusterTPC(0.1); //
    // QC_POI[icentr]->SetMaxChi2PerClusterTPC(4.0); //
    //  QC_POI[icentr]->SetRequireITSRefit(kTRUE);
    //  QC_POI[icentr]->SetRequireTPCRefit(kTRUE);
    //  QC_POI[icentr]->SetMinNClustersITS(2);
    //  QC_POI[icentr]->SetMaxChi2PerClusterITS(1.e+09);
    QC_POI[icentr]->SetMaxDCAToVertexXY(3.0);
    QC_POI[icentr]->SetMaxDCAToVertexZ(3.0);
    //QC_POI[icentr]->SetDCAToVertex2D(kTRUE);
    //QC_POI[icentr]->SetMaxNsigmaToVertex(1.e+10);
    //QC_POI[icentr]->SetRequireSigmaToVertex(kFALSE);
    QC_POI[icentr]->SetAcceptKinkDaughters(kFALSE);
    if(isPID) QC_POI[icentr]->SetPID(particleType, sourcePID);//particleType, sourcePID
    if (charge!=0) QC_POI[icentr]->SetCharge(charge);
    //QC_POI[icentr]->SetAllowTOFmismatch(kFALSE);
    QC_POI[icentr]->SetRequireStrictTOFTPCagreement(kTRUE);
    QC_POI[icentr]->SetMinimalTPCdedx(MinTPCdedx);
    QC_POI[icentr]->SetAODfilterBit(AODfilterBitPOI);
    QC_POI[icentr]->SetQA(doQA);
    QC_POI[icentr]->SetPriors((centrMin[icentr]+centrMax[icentr])*0.5);




    //=====================================================================
 
    suffixName[icentr] = "highharmflow";
    suffixName[icentr] += Form("%i_", centrMin[icentr]);
    suffixName[icentr] += Form("%i_", centrMax[icentr]);

    if(isPID){
        suffixName[icentr]+=AliFlowTrackCuts::PIDsourceName(sourcePID);
        suffixName[icentr]+="_";
        suffixName[icentr]+=AliPID::ParticleName(particleType);//particleType
    }
    else{
        suffixName[icentr]+="AllCharged";
    }
    if (charge<0) suffixName[icentr]+="-";
    if (charge>0) suffixName[icentr]+="+";


    for(int harmonic=2;harmonic<6;harmonic++){  //for v2,v3,v4 and v5
        outputSlotName[icentr][harmonic-2] = "";
        outputSlotName[icentr][harmonic-2]+=uniqueStr;
        outputSlotName[icentr][harmonic-2]+=Form("_v%i_",harmonic);
        outputSlotName[icentr][harmonic-2]+=cutsRP[icentr]->GetName();
        outputSlotName[icentr][harmonic-2]+="_";
        outputSlotName[icentr][harmonic-2]+=QC_POI[icentr]->GetName();
        outputSlotName[icentr][harmonic-2]+=Form("_%i-",centrMin[icentr]);
        outputSlotName[icentr][harmonic-2]+=Form("%i_",centrMax[icentr]);
        
        
        if(isPID){
            outputSlotName[icentr][harmonic-2]+=AliFlowTrackCuts::PIDsourceName(sourcePID);//sourcePID
            outputSlotName[icentr][harmonic-2]+="_";
            outputSlotName[icentr][harmonic-2]+=AliPID::ParticleName(particleType);//particleType
        }
        else{
            outputSlotName[icentr][harmonic-2]+="AllCharged";
        }
        if (charge<0) outputSlotName[icentr][harmonic-2]+="-";
        if (charge>0) outputSlotName[icentr][harmonic-2]+="+";
    }
}


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


    
//====================================FLOWPACKAGE TASKS=========================//
AliAnalysisDataContainer *cinput1[ncentr];
AliAnalysisDataContainer *coutputFE[ncentr];
AliAnalysisDataContainer* coutputFEQA[ncentr];
AliAnalysisTaskFlowEvent *taskFE[ncentr];


AliAnalysisDataContainer *coutputQC[ncentr][4];
AliAnalysisTaskQCumulants *taskQC[ncentr][4];

TString outputQA[ncentr];

for (int icentr=0; icentr<ncentr; icentr++) {
        
    // 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;
    }

    taskFE[icentr] = new AliAnalysisTaskFlowEvent(Form("TaskFlowEvent_%s",suffixName[icentr].Data()),"",doQA);
    taskFE[icentr]->SelectCollisionCandidates(triggerSelectionString);
    mgr->AddTask(taskFE[icentr]);

    // Pass cuts for RPs and POIs to the task:
    taskFE[icentr]->SetCutsEvent(cutsEvent[icentr]);
    taskFE[icentr]->SetCutsRP(cutsRP[icentr]);
    taskFE[icentr]->SetCutsPOI(QC_POI[icentr]);
    if (cutsRP[icentr]->GetParamType()==AliFlowTrackCuts::kVZERO)
    {
        //TODO: since this is set in a static object all analyses in an analysis train
        //will be affected.
        taskFE[icentr]->SetHistWeightvsPhiMin(0.);
        taskFE[icentr]->SetHistWeightvsPhiMax(200.);
    }
    
    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
    
    cinput1[icentr] = mgr->GetCommonInputContainer();
    
    coutputFE[icentr] = mgr->CreateContainer(Form("FlowEvent_%s",suffixName[icentr].Data()),AliFlowEventSimple::Class(),AliAnalysisManager::kExchangeContainer);

    mgr->ConnectInput(taskFE[icentr],0,cinput1[icentr]);
    mgr->ConnectOutput(taskFE[icentr],1,coutputFE[icentr]);
    //==========================================================

    for(int harm=2;harm<6;harm++){
        
        taskQC[icentr][harm-2] = new AliAnalysisTaskQCumulants(Form("TaskQCumulants_%s",outputSlotName[icentr][harm-2].Data()),kFALSE);
        taskQC[icentr][harm-2]->SelectCollisionCandidates(triggerSelectionString);
      //  taskQC[icentr][harm-2]->SetUsePhiWeights(WEIGHTS[0]);
      //  taskQC[icentr][harm-2]->SetUsePtWeights(WEIGHTS[1]);
      //  taskQC[icentr][harm-2]->SetUseEtaWeights(WEIGHTS[2]);
        taskQC[icentr][harm-2]->SetCalculateCumulantsVsM(kFALSE);
        taskQC[icentr][harm-2]->SetnBinsMult(10000);
        taskQC[icentr][harm-2]->SetMinMult(0.);
        taskQC[icentr][harm-2]->SetMaxMult(10000.);
        taskQC[icentr][harm-2]->SetHarmonic(harm);
        taskQC[icentr][harm-2]->SetApplyCorrectionForNUA(kFALSE);
        taskQC[icentr][harm-2]->SetFillMultipleControlHistograms(kFALSE);
        mgr->AddTask(taskQC[icentr][harm-2]);

        TString outputQC = fileName;
        outputQC += ":outputQCanalysis";
        outputQC+= rptypestr;
        
        coutputQC[icentr][harm-2] = mgr->CreateContainer(Form("QC_%s",outputSlotName[icentr][harm-2].Data()),
                                            TList::Class(),AliAnalysisManager::kOutputContainer,outputQC);
        mgr->ConnectInput(taskQC[icentr][harm-2],0,coutputFE[icentr]);
        mgr->ConnectOutput(taskQC[icentr][harm-2],1,coutputQC[icentr][harm-2]);

    }


    if (taskFE[icentr]->GetQAOn()) {
        outputQA[icentr] = fileName;
        outputQA[icentr] += ":QA";
        coutputFEQA[icentr] = mgr->CreateContainer(Form("QA_%s",suffixName[icentr].Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputQA[icentr]);
        mgr->ConnectOutput(taskFE[icentr],2,coutputFEQA[icentr]);
    }


}

}

//===========================================================================

AliFlowEventCuts* DefinecutsEvent(Int_t icentr){
    AliFlowEventCuts* cutsEvent = new AliFlowEventCuts(Form("eventcuts_%d",icentr));
    return cutsEvent;
}
AliFlowTrackCuts* DefineRPcuts(Int_t icentr){
    AliFlowTrackCuts* cutsRP = new AliFlowTrackCuts(Form("TPConlyRP_%d",icentr));
    return cutsRP;
}
AliFlowTrackCuts* DefinePOIcuts(Int_t icentr){
    AliFlowTrackCuts* cutsPOI = new AliFlowTrackCuts(Form("TPConlyPOI_%d",icentr));
    return cutsPOI;
}





 AddTaskPIDFlowQC.C:1
 AddTaskPIDFlowQC.C:2
 AddTaskPIDFlowQC.C:3
 AddTaskPIDFlowQC.C:4
 AddTaskPIDFlowQC.C:5
 AddTaskPIDFlowQC.C:6
 AddTaskPIDFlowQC.C:7
 AddTaskPIDFlowQC.C:8
 AddTaskPIDFlowQC.C:9
 AddTaskPIDFlowQC.C:10
 AddTaskPIDFlowQC.C:11
 AddTaskPIDFlowQC.C:12
 AddTaskPIDFlowQC.C:13
 AddTaskPIDFlowQC.C:14
 AddTaskPIDFlowQC.C:15
 AddTaskPIDFlowQC.C:16
 AddTaskPIDFlowQC.C:17
 AddTaskPIDFlowQC.C:18
 AddTaskPIDFlowQC.C:19
 AddTaskPIDFlowQC.C:20
 AddTaskPIDFlowQC.C:21
 AddTaskPIDFlowQC.C:22
 AddTaskPIDFlowQC.C:23
 AddTaskPIDFlowQC.C:24
 AddTaskPIDFlowQC.C:25
 AddTaskPIDFlowQC.C:26
 AddTaskPIDFlowQC.C:27
 AddTaskPIDFlowQC.C:28
 AddTaskPIDFlowQC.C:29
 AddTaskPIDFlowQC.C:30
 AddTaskPIDFlowQC.C:31
 AddTaskPIDFlowQC.C:32
 AddTaskPIDFlowQC.C:33
 AddTaskPIDFlowQC.C:34
 AddTaskPIDFlowQC.C:35
 AddTaskPIDFlowQC.C:36
 AddTaskPIDFlowQC.C:37
 AddTaskPIDFlowQC.C:38
 AddTaskPIDFlowQC.C:39
 AddTaskPIDFlowQC.C:40
 AddTaskPIDFlowQC.C:41
 AddTaskPIDFlowQC.C:42
 AddTaskPIDFlowQC.C:43
 AddTaskPIDFlowQC.C:44
 AddTaskPIDFlowQC.C:45
 AddTaskPIDFlowQC.C:46
 AddTaskPIDFlowQC.C:47
 AddTaskPIDFlowQC.C:48
 AddTaskPIDFlowQC.C:49
 AddTaskPIDFlowQC.C:50
 AddTaskPIDFlowQC.C:51
 AddTaskPIDFlowQC.C:52
 AddTaskPIDFlowQC.C:53
 AddTaskPIDFlowQC.C:54
 AddTaskPIDFlowQC.C:55
 AddTaskPIDFlowQC.C:56
 AddTaskPIDFlowQC.C:57
 AddTaskPIDFlowQC.C:58
 AddTaskPIDFlowQC.C:59
 AddTaskPIDFlowQC.C:60
 AddTaskPIDFlowQC.C:61
 AddTaskPIDFlowQC.C:62
 AddTaskPIDFlowQC.C:63
 AddTaskPIDFlowQC.C:64
 AddTaskPIDFlowQC.C:65
 AddTaskPIDFlowQC.C:66
 AddTaskPIDFlowQC.C:67
 AddTaskPIDFlowQC.C:68
 AddTaskPIDFlowQC.C:69
 AddTaskPIDFlowQC.C:70
 AddTaskPIDFlowQC.C:71
 AddTaskPIDFlowQC.C:72
 AddTaskPIDFlowQC.C:73
 AddTaskPIDFlowQC.C:74
 AddTaskPIDFlowQC.C:75
 AddTaskPIDFlowQC.C:76
 AddTaskPIDFlowQC.C:77
 AddTaskPIDFlowQC.C:78
 AddTaskPIDFlowQC.C:79
 AddTaskPIDFlowQC.C:80
 AddTaskPIDFlowQC.C:81
 AddTaskPIDFlowQC.C:82
 AddTaskPIDFlowQC.C:83
 AddTaskPIDFlowQC.C:84
 AddTaskPIDFlowQC.C:85
 AddTaskPIDFlowQC.C:86
 AddTaskPIDFlowQC.C:87
 AddTaskPIDFlowQC.C:88
 AddTaskPIDFlowQC.C:89
 AddTaskPIDFlowQC.C:90
 AddTaskPIDFlowQC.C:91
 AddTaskPIDFlowQC.C:92
 AddTaskPIDFlowQC.C:93
 AddTaskPIDFlowQC.C:94
 AddTaskPIDFlowQC.C:95
 AddTaskPIDFlowQC.C:96
 AddTaskPIDFlowQC.C:97
 AddTaskPIDFlowQC.C:98
 AddTaskPIDFlowQC.C:99
 AddTaskPIDFlowQC.C:100
 AddTaskPIDFlowQC.C:101
 AddTaskPIDFlowQC.C:102
 AddTaskPIDFlowQC.C:103
 AddTaskPIDFlowQC.C:104
 AddTaskPIDFlowQC.C:105
 AddTaskPIDFlowQC.C:106
 AddTaskPIDFlowQC.C:107
 AddTaskPIDFlowQC.C:108
 AddTaskPIDFlowQC.C:109
 AddTaskPIDFlowQC.C:110
 AddTaskPIDFlowQC.C:111
 AddTaskPIDFlowQC.C:112
 AddTaskPIDFlowQC.C:113
 AddTaskPIDFlowQC.C:114
 AddTaskPIDFlowQC.C:115
 AddTaskPIDFlowQC.C:116
 AddTaskPIDFlowQC.C:117
 AddTaskPIDFlowQC.C:118
 AddTaskPIDFlowQC.C:119
 AddTaskPIDFlowQC.C:120
 AddTaskPIDFlowQC.C:121
 AddTaskPIDFlowQC.C:122
 AddTaskPIDFlowQC.C:123
 AddTaskPIDFlowQC.C:124
 AddTaskPIDFlowQC.C:125
 AddTaskPIDFlowQC.C:126
 AddTaskPIDFlowQC.C:127
 AddTaskPIDFlowQC.C:128
 AddTaskPIDFlowQC.C:129
 AddTaskPIDFlowQC.C:130
 AddTaskPIDFlowQC.C:131
 AddTaskPIDFlowQC.C:132
 AddTaskPIDFlowQC.C:133
 AddTaskPIDFlowQC.C:134
 AddTaskPIDFlowQC.C:135
 AddTaskPIDFlowQC.C:136
 AddTaskPIDFlowQC.C:137
 AddTaskPIDFlowQC.C:138
 AddTaskPIDFlowQC.C:139
 AddTaskPIDFlowQC.C:140
 AddTaskPIDFlowQC.C:141
 AddTaskPIDFlowQC.C:142
 AddTaskPIDFlowQC.C:143
 AddTaskPIDFlowQC.C:144
 AddTaskPIDFlowQC.C:145
 AddTaskPIDFlowQC.C:146
 AddTaskPIDFlowQC.C:147
 AddTaskPIDFlowQC.C:148
 AddTaskPIDFlowQC.C:149
 AddTaskPIDFlowQC.C:150
 AddTaskPIDFlowQC.C:151
 AddTaskPIDFlowQC.C:152
 AddTaskPIDFlowQC.C:153
 AddTaskPIDFlowQC.C:154
 AddTaskPIDFlowQC.C:155
 AddTaskPIDFlowQC.C:156
 AddTaskPIDFlowQC.C:157
 AddTaskPIDFlowQC.C:158
 AddTaskPIDFlowQC.C:159
 AddTaskPIDFlowQC.C:160
 AddTaskPIDFlowQC.C:161
 AddTaskPIDFlowQC.C:162
 AddTaskPIDFlowQC.C:163
 AddTaskPIDFlowQC.C:164
 AddTaskPIDFlowQC.C:165
 AddTaskPIDFlowQC.C:166
 AddTaskPIDFlowQC.C:167
 AddTaskPIDFlowQC.C:168
 AddTaskPIDFlowQC.C:169
 AddTaskPIDFlowQC.C:170
 AddTaskPIDFlowQC.C:171
 AddTaskPIDFlowQC.C:172
 AddTaskPIDFlowQC.C:173
 AddTaskPIDFlowQC.C:174
 AddTaskPIDFlowQC.C:175
 AddTaskPIDFlowQC.C:176
 AddTaskPIDFlowQC.C:177
 AddTaskPIDFlowQC.C:178
 AddTaskPIDFlowQC.C:179
 AddTaskPIDFlowQC.C:180
 AddTaskPIDFlowQC.C:181
 AddTaskPIDFlowQC.C:182
 AddTaskPIDFlowQC.C:183
 AddTaskPIDFlowQC.C:184
 AddTaskPIDFlowQC.C:185
 AddTaskPIDFlowQC.C:186
 AddTaskPIDFlowQC.C:187
 AddTaskPIDFlowQC.C:188
 AddTaskPIDFlowQC.C:189
 AddTaskPIDFlowQC.C:190
 AddTaskPIDFlowQC.C:191
 AddTaskPIDFlowQC.C:192
 AddTaskPIDFlowQC.C:193
 AddTaskPIDFlowQC.C:194
 AddTaskPIDFlowQC.C:195
 AddTaskPIDFlowQC.C:196
 AddTaskPIDFlowQC.C:197
 AddTaskPIDFlowQC.C:198
 AddTaskPIDFlowQC.C:199
 AddTaskPIDFlowQC.C:200
 AddTaskPIDFlowQC.C:201
 AddTaskPIDFlowQC.C:202
 AddTaskPIDFlowQC.C:203
 AddTaskPIDFlowQC.C:204
 AddTaskPIDFlowQC.C:205
 AddTaskPIDFlowQC.C:206
 AddTaskPIDFlowQC.C:207
 AddTaskPIDFlowQC.C:208
 AddTaskPIDFlowQC.C:209
 AddTaskPIDFlowQC.C:210
 AddTaskPIDFlowQC.C:211
 AddTaskPIDFlowQC.C:212
 AddTaskPIDFlowQC.C:213
 AddTaskPIDFlowQC.C:214
 AddTaskPIDFlowQC.C:215
 AddTaskPIDFlowQC.C:216
 AddTaskPIDFlowQC.C:217
 AddTaskPIDFlowQC.C:218
 AddTaskPIDFlowQC.C:219
 AddTaskPIDFlowQC.C:220
 AddTaskPIDFlowQC.C:221
 AddTaskPIDFlowQC.C:222
 AddTaskPIDFlowQC.C:223
 AddTaskPIDFlowQC.C:224
 AddTaskPIDFlowQC.C:225
 AddTaskPIDFlowQC.C:226
 AddTaskPIDFlowQC.C:227
 AddTaskPIDFlowQC.C:228
 AddTaskPIDFlowQC.C:229
 AddTaskPIDFlowQC.C:230
 AddTaskPIDFlowQC.C:231
 AddTaskPIDFlowQC.C:232
 AddTaskPIDFlowQC.C:233
 AddTaskPIDFlowQC.C:234
 AddTaskPIDFlowQC.C:235
 AddTaskPIDFlowQC.C:236
 AddTaskPIDFlowQC.C:237
 AddTaskPIDFlowQC.C:238
 AddTaskPIDFlowQC.C:239
 AddTaskPIDFlowQC.C:240
 AddTaskPIDFlowQC.C:241
 AddTaskPIDFlowQC.C:242
 AddTaskPIDFlowQC.C:243
 AddTaskPIDFlowQC.C:244
 AddTaskPIDFlowQC.C:245
 AddTaskPIDFlowQC.C:246
 AddTaskPIDFlowQC.C:247
 AddTaskPIDFlowQC.C:248
 AddTaskPIDFlowQC.C:249
 AddTaskPIDFlowQC.C:250
 AddTaskPIDFlowQC.C:251
 AddTaskPIDFlowQC.C:252
 AddTaskPIDFlowQC.C:253
 AddTaskPIDFlowQC.C:254
 AddTaskPIDFlowQC.C:255
 AddTaskPIDFlowQC.C:256
 AddTaskPIDFlowQC.C:257
 AddTaskPIDFlowQC.C:258
 AddTaskPIDFlowQC.C:259
 AddTaskPIDFlowQC.C:260
 AddTaskPIDFlowQC.C:261
 AddTaskPIDFlowQC.C:262
 AddTaskPIDFlowQC.C:263
 AddTaskPIDFlowQC.C:264
 AddTaskPIDFlowQC.C:265
 AddTaskPIDFlowQC.C:266
 AddTaskPIDFlowQC.C:267
 AddTaskPIDFlowQC.C:268
 AddTaskPIDFlowQC.C:269
 AddTaskPIDFlowQC.C:270
 AddTaskPIDFlowQC.C:271
 AddTaskPIDFlowQC.C:272
 AddTaskPIDFlowQC.C:273
 AddTaskPIDFlowQC.C:274
 AddTaskPIDFlowQC.C:275
 AddTaskPIDFlowQC.C:276
 AddTaskPIDFlowQC.C:277
 AddTaskPIDFlowQC.C:278
 AddTaskPIDFlowQC.C:279
 AddTaskPIDFlowQC.C:280
 AddTaskPIDFlowQC.C:281
 AddTaskPIDFlowQC.C:282
 AddTaskPIDFlowQC.C:283
 AddTaskPIDFlowQC.C:284
 AddTaskPIDFlowQC.C:285
 AddTaskPIDFlowQC.C:286
 AddTaskPIDFlowQC.C:287
 AddTaskPIDFlowQC.C:288
 AddTaskPIDFlowQC.C:289