ROOT logo
///////////////////////////////////////////////////////////////////
//                                                               //
// AddTaskFlowTPCEMCalQCSP macro                                 //
// Author: Andrea Dubla, Utrecht University, 2012                //
//                                                               //
///////////////////////////////////////////////////////////////////
class AliAnalysisDataContainer;
class AliFlowTrackCuts;
class AliFlowTrackSimpleCuts;
class AliFlowEventCuts;
class AliFlowEventSimpleCuts;
class AliAnalysisDataContainer;
class AliHFEextraCuts;

AliAnalysisTaskFlowTPCEMCalQCSP*  AddTaskFlowTPCEMCalQCSP(
                                                          TString uniqueID = "",
                                                          Float_t centrMin ,
                                                          Float_t centrMax ,
                                                          Double_t InvmassCut,
                                                          Double_t pTCut,
                                                          Int_t Trigger,
                                                          Bool_t multCorrcut,
                                                          Double_t minTPC,
                                                          Double_t maxTPC,
                                                          Double_t minEovP,
                                                          Double_t maxEovP,
                                                          Double_t minM20,
                                                          Double_t maxM20,
                                                          Double_t minM02,
                                                          Double_t maxM02,
                                                          Double_t Dispersion,
                                                          Int_t minTPCCluster,
                                                          AliHFEextraCuts::ITSPixel_t pixel,
                                                          Bool_t Weight = kFALSE,
                                                          Bool_t withmultetacorrection=kFALSE,
                                                          Bool_t NUA = kTRUE,
                                                          Bool_t PhotonicElectronDCA = kFALSE,
                                                          Int_t TPCClusterforAsso = 80,
                                                          Bool_t AssoITSref = kTRUE,
                                                          Double_t ptminassocut = 0.3,
                                                          Bool_t purity = kTRUE,
                                                          Bool_t SideBandsFlow = kFALSE,
                                                          Bool_t Phi_minus_psi = kFALSE,
                                                          const char *Cent = "V0M",
                                                          Bool_t QC = kTRUE, // use qc2 and qc4
                                                          Bool_t SP_TPC = kTRUE, //use tpc sp method
                                                          Bool_t VZERO_SP = kFALSE, // use vzero sp method
                                                          Bool_t BaseH = kFALSE, // base histo
                                                          Int_t harmonic = 2,
                                                          Bool_t shrinkSP = kTRUE,
                                                          Bool_t debug = kFALSE,
                                                          Int_t RPFilterBit = 1,
                                                          Bool_t op_ang = kFALSE,
                                                          Double_t op_angle_cut=3.
                                                          )

{
    
    
    
    if(debug) cout << " === Adding Task ElectFlow === " << endl;
    TString fileName = AliAnalysisManager::GetCommonFileName();
    fileName += ":ElectroID_";
    fileName += uniqueID;
    if(debug) cout << "    --> Reconstruction data container: " << fileName << endl;
    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
    if (!mgr) {
        if(debug) cout << " Fatal error: no analysis manager found! " << endl;
        return 0x0;
    }
    if (!mgr->GetInputEventHandler()) {
        if(debug) cout << " Fatal error: no imput event handler found!" << endl;
        return 0x0;
    }
    
    //create a task
    AliAnalysisTaskFlowTPCEMCalQCSP *taskHFE = ConfigHFEemcalMod(kFALSE, minTPCCluster, pixel, withmultetacorrection);    //kTRUE if MC
    
    if(debug) cout << " === AliAnalysisElectronFlow === " << taskHFE << endl;
    if(!taskHFE) {
        if(debug) cout << " --> Unexpected error occurred: NO TASK WAS CREATED! (could be a library problem!) " << endl;
        return 0x0;
    }
    taskHFE->SetTrigger(Trigger);
    taskHFE->SetEPWeight(Weight);

    
    TString histoflatname = "alien:///alice/cern.ch/user/a/adubla/CentrDistrBins005.root";
    if(Trigger==0 || Trigger==4){
        TFile *fFlat=TFile::Open(histoflatname.Data());
        TCanvas *c=fFlat->Get("cintegral");
        TH1F *hfl=(TH1F*)c->FindObject("hint");
        taskHFE->SetHistoForCentralityFlattening(hfl,centrMin,centrMax,0.,0);
    }
    
    
    TString histoflatnameEP = "alien:///alice/cern.ch/user/a/adubla/EPVZero010_Smart.root";
    if(Weight){
        TFile *fFlatEP=TFile::Open(histoflatnameEP,"READ");
        TCanvas *cEP=fFlatEP->Get("c1_n7");
        TH1D *hEPfl=(TH1D*)cEP->FindObject("EPVz");
        taskHFE->SetHistoForEPFlattWeights(hEPfl);
    }
    

    
    // Set centrality percentiles and method V0M, FMD, TRK, TKL, CL0, CL1, V0MvsFMD, TKLvsV0M, ZEMvsZDC
    taskHFE->SetCentralityParameters(centrMin, centrMax, Cent);
    taskHFE->SetInvariantMassCut(InvmassCut);
    taskHFE->SetIDCuts(minTPC, maxTPC, minEovP, maxEovP, minM20, maxM20, minM02, maxM02, Dispersion);
    taskHFE->SetFlowSideBands(SideBandsFlow);
    taskHFE->Setphiminuspsi(Phi_minus_psi);
    taskHFE->SetPurity(purity);
    taskHFE->SetpTCuttrack(pTCut);
    taskHFE->SelectPhotonicElectronMethod(PhotonicElectronDCA);
    taskHFE->SetOpeningAngleflag(op_ang);
    taskHFE->SetOpeningAngleCut(op_angle_cut);
    taskHFE->SetAssoTPCCluster(TPCClusterforAsso);
    taskHFE->SetAssoITSRefit(AssoITSref);
    taskHFE->SetMultCorrelationCut(multCorrcut);
    taskHFE->SetPtMinAssoCut(ptminassocut);

    //set RP cuts for flow package analysis
    cutsRP = new AliFlowTrackCuts(Form("RFPcuts%s",uniqueID));
    if(!cutsRP) {
        if(debug) cout << " Fatal error: no RP cuts found, could be a library problem! " << endl;
        return 0x0;
    }
    
    if(!VZERO_SP) {
        AliFlowTrackCuts::trackParameterType rptype = AliFlowTrackCuts::kGlobal;
        cutsRP->SetParamType(rptype);
        cutsRP->SetAODfilterBit(RPFilterBit);
        cutsRP->SetPtRange(0.2, 5.0);
        cutsRP->SetEtaRange(-0.7, 0.7);
        cutsRP->SetMinNClustersTPC(70);
        cutsRP->SetMinChi2PerClusterTPC(0.1);
        cutsRP->SetMaxChi2PerClusterTPC(4.0);
        cutsRP->SetRequireTPCRefit(kTRUE);
        cutsRP->SetMaxDCAToVertexXY(0.3);
        cutsRP->SetMaxDCAToVertexZ(0.3);
        cutsRP->SetAcceptKinkDaughters(kFALSE);
        cutsRP->SetMinimalTPCdedx(10.);
        if(debug) cout << "    --> kGlobal RP's " << cutsRP << endl;
    }
    if(VZERO_SP) { // use vzero sub analysis
        cutsRP = cutsRP->GetStandardVZEROOnlyTrackCuts(); // select vzero tracks
        SP_TPC = kFALSE; // disable other methods
        QC = kFALSE;
        if(debug) cout << "    --> VZERO RP's " << cutsRP << endl;
    }
    
    AliFlowTrackSimpleCuts *POIfilterLeft = new AliFlowTrackSimpleCuts();
    AliFlowTrackSimpleCuts *POIfilterRight = new AliFlowTrackSimpleCuts();
    if(VZERO_SP || SP_TPC){
        POIfilterLeft->SetEtaMin(-0.7);
        POIfilterLeft->SetEtaMax(0.0);
        POIfilterLeft->SetMassMin(263731); POIfilterLeft->SetMassMax(263733);
        
        POIfilterRight->SetEtaMin(0.0);
        POIfilterRight->SetEtaMax(0.7);
        POIfilterRight->SetMassMin(263731); POIfilterRight->SetMassMax(263733);
    }
    
    
    AliFlowTrackSimpleCuts *POIfilterQC = new AliFlowTrackSimpleCuts();
    if(QC){
        POIfilterQC->SetEtaMin(-0.7);
        POIfilterQC->SetEtaMax(0.7);
        POIfilterQC->SetMassMin(263731); POIfilterQC->SetMassMax(263733);
        
    }
    
    if(SideBandsFlow){
        
        AliFlowTrackSimpleCuts *POIfilterLeftH = new AliFlowTrackSimpleCuts();
        AliFlowTrackSimpleCuts *POIfilterRightH = new AliFlowTrackSimpleCuts();
        if(SP_TPC){
            POIfilterLeftH->SetEtaMin(-0.7);
            POIfilterLeftH->SetEtaMax(0.0);
            POIfilterLeftH->SetMassMin(2636); POIfilterLeftH->SetMassMax(2638);
            
            POIfilterRightH->SetEtaMin(0.0);
            POIfilterRightH->SetEtaMax(0.7);
            POIfilterRightH->SetMassMin(2636); POIfilterRightH->SetMassMax(2638);
        }
        
        
        AliFlowTrackSimpleCuts *POIfilterQCH = new AliFlowTrackSimpleCuts();
        if(QC){
            POIfilterQCH->SetEtaMin(-0.7);
            POIfilterQCH->SetEtaMax(0.7);
            POIfilterQCH->SetMassMin(2636); POIfilterQCH->SetMassMax(2638);
            
        }
        
    }
    
    taskHFE->SetRPCuts(cutsRP);
    
    
    AliAnalysisDataContainer *coutput3 = mgr->CreateContainer(Form("ccontainer0_%s",uniqueID.Data()),TList::Class(),AliAnalysisManager::kOutputContainer,fileName);
    
    mgr->ConnectInput(taskHFE,0,mgr->GetCommonInputContainer());
    mgr->ConnectOutput(taskHFE,1,coutput3);
    
    
    if(debug) cout << " === RECEIVED REQUEST FOR FLOW ANALYSIS === " << endl;
    AliAnalysisDataContainer *flowEvent = mgr->CreateContainer(Form("FlowContainer_%s",uniqueID.Data()), AliFlowEventSimple::Class(), AliAnalysisManager::kExchangeContainer);
    mgr->ConnectOutput(taskHFE, 2, flowEvent);
    if(debug) cout << "    --> Created IO containers " << flowEvent << endl;
    
    if(SideBandsFlow){
        if(debug) cout << " === RECEIVED REQUEST FOR FLOW ANALYSIS === " << endl;
        AliAnalysisDataContainer *flowEventCont = mgr->CreateContainer(Form("FlowContainer_Cont_%s",uniqueID.Data()), AliFlowEventSimple::Class(), AliAnalysisManager::kExchangeContainer);
        mgr->ConnectOutput(taskHFE, 3, flowEventCont);
        if(debug) cout << "    --> Created IO containers " << flowEventCont << endl;
    }
    
    
    mgr->AddTask(taskHFE);
    
    if (QC) {  // add qc tasks
        AddQCmethod(Form("QCTPCin_%s",uniqueID.Data()), harmonic, flowEvent,  debug ,uniqueID, -0.7, -0.0, 0.0, 0.7,false,POIfilterQC, NUA, shrinkSP, BaseH);
        if(debug) cout << "    --> Hanging QC task ...succes! "<< endl;
    }
    if (SP_TPC) {  // add sp subevent tasks
        AddSPmethod(Form("SPTPCQa_in_%s", uniqueID.Data()), -0.7, -.0, .0, +0.7, "Qa", harmonic, flowEvent, false, shrinkSP, debug,uniqueID, false, POIfilterRight, NUA,BaseH);
        if(debug) cout << "    --> Hanging SP Qa task ... succes!" << endl;
        AddSPmethod(Form("SPTPCQb_in_%s", uniqueID.Data()), -0.7, -.0, .0, +0.7, "Qb", harmonic, flowEvent,  false, shrinkSP, debug,uniqueID, false, POIfilterLeft, NUA,BaseH);
        if(debug) cout << "    --> Hanging SP Qb task ... succes!"<< endl;
    }
    if (VZERO_SP) {  // add sp subevent tasks
        AddSPmethod(Form("SPVZEROQa_in_%s", uniqueID.Data()), -0.7, -.0, .0, +0.7, "Qa", harmonic, flowEvent, false, shrinkSP, debug,uniqueID, true, POIfilterRight, NUA,BaseH);
        if(debug) cout << "    --> Hanging SP Qa task ... succes!" << endl;
        AddSPmethod(Form("SPVZEROQb_in_%s", uniqueID.Data()), -0.7, -.0, .0, +0.7, "Qb", harmonic, flowEvent,  false, shrinkSP, debug,uniqueID, true, POIfilterLeft, NUA,BaseH);
        if(debug) cout << "    --> Hanging SP Qb task ... succes!"<< endl;
    }
    
    //=========================================Flow event for elctronContamination==============================================================================================
    if(SideBandsFlow){
        if (QC) {  // add qc tasks
            AddQCmethod(Form("QCTPCCont_%s",uniqueID.Data()), harmonic, flowEventCont,  debug ,uniqueID, -0.7, -0.0, 0.0, 0.7,false,POIfilterQCH, NUA, shrinkSP,BaseH);
            if(debug) cout << "    --> Hanging QC task ...succes! "<< endl;
        }
        if (SP_TPC) {  // add sp subevent tasks
            AddSPmethod(Form("SPTPCQa_Cont_%s", uniqueID.Data()), -0.7, -.0, .0, +0.7, "Qa", harmonic, flowEventCont, false, shrinkSP, debug,uniqueID, false, POIfilterRightH, NUA,BaseH);
            if(debug) cout << "    --> Hanging SP Qa task ... succes!" << endl;
            AddSPmethod(Form("SPTPCQb_Cont_%s", uniqueID.Data()), -0.7, -.0, .0, +0.7, "Qb", harmonic, flowEventCont,  false, shrinkSP, debug,uniqueID, false, POIfilterLeftH, NUA,BaseH);
            if(debug) cout << "    --> Hanging SP Qb task ... succes!"<< endl;
        }
    }
    //==========================================================================================================================================================================
    
    
    return taskHFE;
    
}

//_____________________________________________________________________________


//_____________________________________________________________________________
void AddSPmethod(char *name, double minEtaA, double maxEtaA, double minEtaB, double maxEtaB, char *Qvector, int harmonic, AliAnalysisDataContainer *flowEvent, bool bEP, bool shrink = false, bool debug, TString uniqueID, Bool_t VZERO_SP = kFALSE,  AliFlowTrackSimpleCuts* POIfilter, Bool_t kNUA, Bool_t kBaseH)
{
    // add sp task and invm filter tasks
    if(debug) (bEP) ? cout << " ****** Reveived request for EP task ****** " << endl : cout << " ******* Switching to SP task ******* " << endl;
    TString fileName = AliAnalysisManager::GetCommonFileName();
    (bEP) ? fileName+=":EP" : fileName+=":SP";
    //          if(etagap) {
    //            fileName+="_SUBEVENTS";
    //          if(debug) cout << "    --> Setting up subevent analysis <-- " << endl;
    //    }
    if(debug) cout << "    --> fileName " << fileName << endl;
    TString myFolder = fileName;
    if(debug) cout << "    --> myFolder " << myFolder << endl;
    TString myNameSP;
    (bEP) ? myNameSP = Form("%sEPv%d%s", name, harmonic, Qvector): myNameSP = Form("%sSPv%d%s", name, harmonic, Qvector);
    if(debug) cout << " myNameSP " << myNameSP << endl;
    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
    AliAnalysisDataContainer *flowEventOut = mgr->CreateContainer(Form("Filter_%s",myNameSP.Data()),AliFlowEventSimple::Class(),AliAnalysisManager::kExchangeContainer);
    AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE(Form("TaskFilter_%s", myNameSP.Data()), NULL, POIfilter);
    tskFilter->SetSubeventEtaRange(minEtaA, maxEtaA, minEtaB, maxEtaB);
    if(VZERO_SP) tskFilter->SetSubeventEtaRange(-10, 0, 0, 10);
    mgr->AddTask(tskFilter);
    mgr->ConnectInput(tskFilter, 0, flowEvent);
    mgr->ConnectOutput(tskFilter, 1, flowEventOut);
    AliAnalysisDataContainer *outSP = mgr->CreateContainer(myNameSP.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, fileName);
    AliAnalysisTaskScalarProduct *tskSP = new AliAnalysisTaskScalarProduct(Form("TaskScalarProduct_%s", myNameSP.Data()), kFALSE);
    tskSP->SetApplyCorrectionForNUA(kNUA);
    tskSP->SetHarmonic(harmonic);
    tskSP->SetTotalQvector(Qvector);
    if (bEP) tskSP->SetBehaveAsEP();
    if (shrink)tskSP->SetBookOnlyBasicCCH(kBaseH);
    mgr->AddTask(tskSP);
    mgr->ConnectInput(tskSP, 0, flowEventOut);
    mgr->ConnectOutput(tskSP, 1, outSP);
}
//_____________________________________________________________________________
void AddQCmethod(char *name, int harmonic, AliAnalysisDataContainer *flowEvent, Bool_t debug, TString uniqueID,double minEtaA, double maxEtaA, double minEtaB, double maxEtaB,Bool_t VZERO_SP = kFALSE,  AliFlowTrackSimpleCuts* POIfilter, Bool_t kNUA, bool shrink = false, Bool_t kBaseH)
{
    // add qc task and invm filter tasks
    if(debug) cout << " ****** Received request for QC v" << harmonic << " task " << name << ", IO ****** " << flowEvent << endl;
    TString fileName = AliAnalysisManager::GetCommonFileName();
    fileName+=":QC";
    if(debug) cout << "    --> Common filename: " << fileName << endl;
    TString myFolder = Form("v%d", harmonic);
    if(debug) cout << "    --> myFolder: " << myFolder << endl;
    TString myName = Form("%s", name);
    if(debug) cout << "    --> myName: " << myName << endl;
    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
    AliAnalysisDataContainer *flowEventOut = mgr->CreateContainer(Form("Filter_%s", myName.Data()), AliFlowEventSimple::Class(),AliAnalysisManager::kExchangeContainer);
    AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE(Form("TaskFilter_%s", myName.Data()), NULL, POIfilter);
    tskFilter->SetSubeventEtaRange(minEtaA, maxEtaA, minEtaB, maxEtaB);
    //    if(VZERO_SP) tskFilter->SetSubeventEtaRange(-10, 0, 0, 10);
    mgr->AddTask(tskFilter);
    mgr->ConnectInput(tskFilter, 0, flowEvent);
    mgr->ConnectOutput(tskFilter, 1, flowEventOut);
    
    AliAnalysisDataContainer *outQC = mgr->CreateContainer(myName.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, fileName);
    AliAnalysisTaskQCumulants *tskQC = new AliAnalysisTaskQCumulants(Form("TaskQCumulants_%s", myName.Data()), kFALSE);
    tskQC->SetApplyCorrectionForNUA(kNUA);
    tskQC->SetHarmonic(harmonic);
    if (shrink)tskQC->SetBookOnlyBasicCCH(kBaseH);
    mgr->AddTask(tskQC);
    mgr->ConnectInput(tskQC, 0, flowEventOut);
    mgr->ConnectOutput(tskQC, 1, outQC);
}
//_____________________________________________________________________________


//_____________________________________________________________________________

AliAnalysisTaskFlowTPCEMCalQCSP* ConfigHFEemcalMod(Bool_t useMC,Int_t minTPCCulster,AliHFEextraCuts::ITSPixel_t pixel, Bool_t withmultetacorrection1){
    //
    // HFE standard task configuration
    //
    
    Bool_t kAnalyseTaggedTracks = kTRUE;
    
    AliHFEcuts *hfecuts = new AliHFEcuts("hfeCutsEMCAL","HFE Standard Cuts");  //TODO....change the cuts values to PbPb
    //  hfecuts->CreateStandardCuts();
    hfecuts->SetMinNClustersTPC(minTPCCulster);
    hfecuts->SetMinNClustersITS(3);
    hfecuts->SetMinNTrackletsTRD(0);
    hfecuts->SetMinRatioTPCclusters(0.6);
    
    //   hfecuts->SetEtaRange(-0.9,0.9);
    //   hfecuts->SetTPCmodes(AliHFEextraCuts::kFound, AliHFEextraCuts::kFoundOverFindable);
    hfecuts->SetRequireITSPixel();
    hfecuts->SetCutITSpixel(pixel);//kAny
    hfecuts->SetMaxChi2perClusterITS(-1);
    hfecuts->SetMaxChi2perClusterTPC(3.5);
    hfecuts->SetCheckITSLayerStatus(kFALSE); // shud be put back
    //  hfecuts->UnsetVertexRequirement();
    hfecuts->SetVertexRange(10.);
    hfecuts->SetRequireSigmaToVertex();
    //hfecuts->SetSigmaToVertex(10);
    hfecuts->SetTOFPIDStep(kFALSE);
    //  hfecuts->SetQAOn();
    hfecuts->SetPtRange(0, 30);
    
    AliAnalysisTaskFlowTPCEMCalQCSP *task = new AliAnalysisTaskFlowTPCEMCalQCSP("HFE_Flow_TPCEMCal");
    printf("task ------------------------ %p\n ", task);
    
    
    task->SetHFECuts(hfecuts);
    
    //   task->SetInvariantMassCut(0.05);
    //  task->SetRejectKinkMother(kTRUE);
    //  task->SetRemovePileUp(kTRUE);
    
    // Define PID
    AliHFEpid *pid = task->GetPID();
    if(useMC) pid->SetHasMCData(kTRUE);
    pid->AddDetector("TPC", 0);
    pid->AddDetector("EMCAL", 1);
    
    
    if(withmultetacorrection1) {
        AliHFEpidTPC *tpcpid = pid->GetDetPID(AliHFEpid::kTPCpid);
        // Theo
        //  task->GetPIDQAManager()->SetFillMultiplicity();
        TF1 *etaCorrMean = GetEtaCorrectionEMCal("LHC11h_etaCorrMean");
        TF1 *etaCorrWdth = GetEtaCorrectionEMCal("LHC11h_etaCorrWidth");
        if(etaCorrMean && etaCorrWdth && withmultetacorrection1){
            tpcpid->SetEtaCorrections(etaCorrMean, etaCorrWdth);
            printf("TPC dE/dx Eta correction %p %p\n",etaCorrMean,etaCorrWdth);
        }
        TF1 *centCorrMean = GetCentralityCorrectionEMCal("LHC11h_multCorrMean");
        TF1 *centCorrWdth = GetCentralityCorrectionEMCal("LHC11h_multCorrWidth");
        if(centCorrMean && centCorrWdth && withmultetacorrection1){
            tpcpid->SetCentralityCorrections(centCorrMean, centCorrWdth);
            printf("TPC dE/dx multiplicity correction %p %p\n",centCorrMean,centCorrWdth);
        }
        task->SetMultCorrectionTheo(withmultetacorrection1);
        task->SetTPCPID(tpcpid);
    }
    

    
    
    printf("*************************************\n");
    printf("Configuring standard Task:\n");
    //  task->PrintStatus();
    pid->PrintStatus();
    printf("*************************************\n");
    return task;
    
    
}
//_____________________________________________________________________________
//_____________________________________________________________________________
TF1* GetCentralityCorrectionEMCal(TString listname="LHC11h"){
    
    TString etaMap="$ALICE_ROOT/PWGHF/hfe/macros/configs/PbPb/CentCorrMapsTPC.root";
    
    if (gSystem->AccessPathName(gSystem->ExpandPathName(etaMap.Data()))){
        Error("ConfigHFEpbpb","Eta map not found: %s",etaMap.Data());
        return 0;
    }
    
    TFile f(etaMap.Data());
    if (!f.IsOpen()) return 0;
    gROOT->cd();
    TList *keys=f.GetListOfKeys();
    
    for (Int_t i=0; i<keys->GetEntries(); ++i){
        TString kName=keys->At(i)->GetName();
        TPRegexp reg(kName);
        if (reg.MatchB(listname)){
            printf("Using Eta Correction Function: %s\n",kName.Data());
            return (TF1*)f.Get(kName.Data());
        }
    }
    return 0;
}
//_____________________________________________________________________________
TF1* GetEtaCorrectionEMCal(TString listname="LHC11h"){
    
    TString etaMap="$ALICE_ROOT/PWGHF/hfe/macros/configs/PbPb/EtaCorrMapsTPC.root";
    
    if (gSystem->AccessPathName(gSystem->ExpandPathName(etaMap.Data()))){
        Error("ConfigHFEpbpb","Eta map not found: %s",etaMap.Data());
        return 0;
    }
    
    TFile f(etaMap.Data());
    if (!f.IsOpen()) return 0;
    gROOT->cd();
    TList *keys=f.GetListOfKeys();
    
    for (Int_t i=0; i<keys->GetEntries(); ++i){
        TString kName=keys->At(i)->GetName();
        TPRegexp reg(kName);
        if (reg.MatchB(listname)){
            printf("Using Eta Correction Function: %s\n",kName.Data());
            return (TF1*)f.Get(kName.Data());
        }
    }
    return 0;
}
//_____________________________________________________________________________



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