X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWG2%2FFLOW%2Fmacros%2FAddTaskFlowCentrality.C;h=dd7036ba6d665165c4b999ebd8052b096a52cf9e;hb=2ed97fda4092be0a6234cecb81294ae7e4b74680;hp=ba2d14fac3d1495fc2188856a3e630a859767c47;hpb=32b846cdc400a664b12b17ed5b6f75c738b04360;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWG2/FLOW/macros/AddTaskFlowCentrality.C b/PWG2/FLOW/macros/AddTaskFlowCentrality.C index ba2d14fac3d..dd7036ba6d6 100644 --- a/PWG2/FLOW/macros/AddTaskFlowCentrality.C +++ b/PWG2/FLOW/macros/AddTaskFlowCentrality.C @@ -7,102 +7,105 @@ // ///////////////////////////////////////////////////////////////////////////////////////////// -// Define the range for eta subevents (for SP method) -Double_t minA = -0.9; -Double_t maxA = -0.5; -Double_t minB = 0.5; -Double_t maxB = 0.9; - -// 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; - -// generate the control ntuple -Bool_t FillQAntuple=kFALSE; -Bool_t DoQAcorrelations=kFALSE; - -// RUN SETTINGS -// Flow analysis method can be:(set to kTRUE or kFALSE) -Bool_t MCEP = kTRUE; // correlation with Monte Carlo reaction plane -Bool_t SP = kTRUE; // scalar product method (similar to eventplane method) -Bool_t GFC = kTRUE; // cumulants based on generating function -Bool_t QC = kTRUE; // cumulants using Q vectors -Bool_t FQD = kTRUE; // fit of the distribution of the Q vector (only integrated v) -Bool_t LYZ1SUM = kTRUE; // Lee Yang Zeroes using sum generating function (integrated v) -Bool_t LYZ1PROD = kFALSE; // Lee Yang Zeroes using product generating function (integrated v) -Bool_t LYZ2SUM = kFALSE; // Lee Yang Zeroes using sum generating function (second pass differential v) -Bool_t LYZ2PROD = kFALSE; // Lee Yang Zeroes using product generating function (second pass differential v) -Bool_t LYZEP = kFALSE; // Lee Yang Zeroes Event plane using sum generating function (gives eventplane + weight) -Bool_t MH = kFALSE; // azimuthal correlators in mixed harmonics -Bool_t NL = kFALSE; // nested loops (for instance distribution of phi1-phi2 for all distinct pairs) - -Bool_t METHODS[] = {SP,LYZ1SUM,LYZ1PROD,LYZ2SUM,LYZ2PROD,LYZEP,GFC,QC,FQD,MCEP,MH,NL}; - -// 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::kGlobal; -AliFlowTrackCuts::trackParameterType poitype = AliFlowTrackCuts::kGlobal; - -//---------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); - -void AddTaskFlowCentrality( Int_t refMultMin=0, - Int_t refMultMax=1e10, - TString fileNameBase="AnalysisResults", - Int_t binnumber=0 ) +void AddTaskFlowCentrality( Float_t centrMin=0., + Float_t centrMax=100., + TString fileNameBase="AnalysisResults" ) { + // Define the range for eta subevents (for SP method) + Double_t minA = -0.9; + Double_t maxA = -0.5; + Double_t minB = 0.5; + Double_t maxB = 0.9; + + // 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; + + // separate QA task + 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 MCEP = kTRUE; // correlation with Monte Carlo reaction plane + Bool_t SP = kTRUE; // scalar product method (similar to eventplane method) + Bool_t GFC = kTRUE; // cumulants based on generating function + Bool_t QC = kTRUE; // cumulants using Q vectors + Bool_t FQD = kTRUE; // fit of the distribution of the Q vector (only integrated v) + Bool_t LYZ1SUM = kTRUE; // Lee Yang Zeroes using sum generating function (integrated v) + Bool_t LYZ1PROD = kFALSE; // Lee Yang Zeroes using product generating function (integrated v) + Bool_t LYZ2SUM = kFALSE; // Lee Yang Zeroes using sum generating function (second pass differential v) + Bool_t LYZ2PROD = kFALSE; // Lee Yang Zeroes using product generating function (second pass differential v) + Bool_t LYZEP = kFALSE; // Lee Yang Zeroes Event plane using sum generating function (gives eventplane + weight) + Bool_t MH = kFALSE; // azimuthal correlators in mixed harmonics + Bool_t NL = kFALSE; // nested loops (for instance distribution of phi1-phi2 for all distinct pairs) + + Bool_t METHODS[] = {SP,LYZ1SUM,LYZ1PROD,LYZ2SUM,LYZ2PROD,LYZEP,GFC,QC,FQD,MCEP,MH,NL}; + + // 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, kTPCstandalone, kSPDtracklet, kPMD + AliFlowTrackCuts::trackParameterType rptype = AliFlowTrackCuts::kGlobal; + AliFlowTrackCuts::trackParameterType poitype = AliFlowTrackCuts::kGlobal; + + //---------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); + TString fileName(fileNameBase); - fileName+=binnumber; fileName.Append(".root"); //=========================================================================== printf("CREATE CUTS\n"); cout << "Used for RP: "<< rptypestr << endl; cout << "Used for POI: "<< poitypestr << endl; // EVENTS CUTS: - AliFlowEventCuts* cutsEvent = new AliFlowEventCuts(); - cutsEvent->SetRefMultRange(refMultMin,refMultMax); - //cutsEvent->SetRefMultMethod(AliFlowEventCuts::kTPConly); - //cutsEvent->SetRefMultMethod(AliFlowEventCuts::kV0); - cutsEvent->SetRefMultMethod(AliFlowEventCuts::kSPDtracklets); + AliFlowEventCuts* cutsEvent = new AliFlowEventCuts("event cuts"); + cutsEvent->SetCentralityPercentileRange(centrMin,centrMax); + cutsEvent->SetCentralityPercentileMethod(AliFlowEventCuts::kV0); + cutsEvent->SetRefMultMethod(AliFlowEventCuts::kV0); + //cutsEvent->SetCentralityPercentileMethod(AliFlowEventCuts::kSPD1tracklets); cutsEvent->SetNContributorsRange(2); - cutsEvent->SetPrimaryVertexZrange(-10.,10.); + cutsEvent->SetPrimaryVertexZrange(-7.,7.); + cutsEvent->SetCutSPDvertexerAnomaly(); //"Francesco's cut" + cutsEvent->SetCutZDCtiming(); + //cutsEvent->SetCutTPCmultiplicityOutliers(); + //cutsEvent->SetUseCentralityUnchecked(); // RP TRACK CUTS: - AliFlowTrackCuts* cutsRP = new AliFlowTrackCuts(); + AliFlowTrackCuts* cutsRP = new AliFlowTrackCuts("GlobalRP"); cutsRP->SetParamType(rptype); cutsRP->SetParamMix(rpmix); cutsRP->SetPtRange(0.2,5.); - cutsRP->SetEtaRange(-0.7,0.7); + cutsRP->SetEtaRange(-0.8,0.8); //cutsRP->SetRequireCharge(kTRUE); //cutsRP->SetCharge(chargeRP); //cutsRP->SetPID(PdgRP); cutsRP->SetMinNClustersTPC(70); - cutsRP->SetMinChi2PerClusterTPC(0.2); + cutsRP->SetMinChi2PerClusterTPC(0.1); cutsRP->SetMaxChi2PerClusterTPC(4.0); cutsRP->SetMinNClustersITS(2); cutsRP->SetRequireITSRefit(kTRUE); @@ -114,9 +117,10 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, //cutsRP->SetMaxNsigmaToVertex(1.e+10); //cutsRP->SetRequireSigmaToVertex(kFALSE); cutsRP->SetAcceptKinkDaughters(kFALSE); + cutsRP->SetMinimalTPCdedx(10.); // POI TRACK CUTS: - AliFlowTrackCuts* cutsPOI = new AliFlowTrackCuts(); + AliFlowTrackCuts* cutsPOI = new AliFlowTrackCuts("GlobalPOI"); cutsPOI->SetParamType(poitype); cutsPOI->SetParamMix(poimix); cutsPOI->SetPtRange(0.0,10.); @@ -125,7 +129,7 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, //cutsPOI->SetCharge(chargeRP); //cutsPOI->SetPID(PdgRP); cutsPOI->SetMinNClustersTPC(80); - cutsPOI->SetMinChi2PerClusterTPC(0.2); + cutsPOI->SetMinChi2PerClusterTPC(0.1); cutsPOI->SetMaxChi2PerClusterTPC(4.0); cutsPOI->SetRequireITSRefit(kTRUE); cutsPOI->SetRequireTPCRefit(kTRUE); @@ -137,29 +141,23 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, //cutsPOI->SetMaxNsigmaToVertex(1.e+10); //cutsPOI->SetRequireSigmaToVertex(kFALSE); cutsPOI->SetAcceptKinkDaughters(kFALSE); + cutsRP->SetMinimalTPCdedx(10.); //cutsPOI->SetPID(AliPID::kProton, AliFlowTrackCuts::kTOFpid); //cutsPOI->SetPID(AliPID::kPion, AliFlowTrackCuts::kTPCpid); - //cutsPOI->SetPID(AliPID::kProton, AliFlowTrackCuts::kTPCTOFpid); - //cutsPOI->SetTPCTOFpidCrossOverPt(0.4); + //cutsPOI->SetPID(AliPID::kProton, AliFlowTrackCuts::kTPCdedx); + //cutsPOI->SetPID(AliPID::kProton, AliFlowTrackCuts::kTOFbeta); + //cutsPOI->SetAllowTOFmismatch(kFALSE); + //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); + + TString outputSlotName(""); + outputSlotName+=Form("%.0f",centrMin); + outputSlotName+="-"; + outputSlotName+=Form("%.0f",centrMax); + outputSlotName+=" "; + outputSlotName+=cutsRP->GetName(); - - // common constants: - Int_t nBinsMult = 10000; - Int_t nBinsPt = 100; - Int_t nBinsPhi = 360; - Int_t nBinsEta = 100; - Int_t nBinsQ = 500; - Double_t dMultMin = 0.; - Double_t dMultMax = 10000.; - Double_t dPtMin = 0.; - Double_t dPtMax = 10.; - Double_t dPhiMin(0.); - Double_t dPhiMax(TMath::TwoPi()); - Double_t dEtaMin(-5.); - Double_t dEtaMax(5.); - Double_t dQMin(0.); - Double_t dQMax(3.); - Bool_t useWeights = WEIGHTS[0] || WEIGHTS[1] || WEIGHTS[2]; if (useWeights) cout<<"Weights are used"<Get("cobjLYZ1SUM"); + TList* fInputListLYZ2SUM = (TList*)fInputFileLYZ2SUM->Get("LYZ1SUM"); if (!fInputListLYZ2SUM) {cout<<"list is NULL pointer!"<Get("cobjLYZ1PROD"); + TList* fInputListLYZ2PROD = (TList*)fInputFileLYZ2PROD->Get("LYZ1PROD"); if (!fInputListLYZ2PROD) {cout<<"list is NULL pointer!"<Get("cobjLYZ2SUM"); + TList* fInputListLYZEP = (TList*)fInputFileLYZEP->Get("LYZ2SUM"); if (!fInputListLYZEP) {cout<<"list is NULL pointer!"<SetCutsRP(cutsRP); taskFE->SetCutsPOI(cutsPOI); - taskFE->SetTOFresolution(80); - - // Pass common constants: - taskFE->SetNbinsMult(nBinsMult); - taskFE->SetNbinsPt(nBinsPt); - taskFE->SetNbinsPhi(nBinsPhi); - taskFE->SetNbinsEta(nBinsEta); - taskFE->SetNbinsQ(nBinsQ); - taskFE->SetMultMin(dMultMin); - taskFE->SetMultMax(dMultMax); - taskFE->SetPtMin(dPtMin); - taskFE->SetPtMax(dPtMax); - taskFE->SetPhiMin(dPhiMin); - taskFE->SetPhiMax(dPhiMax); - taskFE->SetEtaMin(dEtaMin); - taskFE->SetEtaMax(dEtaMax); - taskFE->SetQMin(dQMin); - taskFE->SetQMax(dQMax); - + if (cutsRP->GetParamType()==AliFlowTrackCuts::kV0) + { + //TODO: since this is set in a static object all analyses in an analysis train + //will be affected. + taskFE->SetHistWeightvsPhiMin(0.); + taskFE->SetHistWeightvsPhiMax(200.); + } + // Create the analysis tasks, add them to the manager. //=========================================================================== if (SP){ AliAnalysisTaskScalarProduct *taskSP = new AliAnalysisTaskScalarProduct("TaskScalarProduct",WEIGHTS[0]); taskSP->SetRelDiffMsub(1.0); - taskSP->SetApplyCorrectionForNUA(kTRUE); + taskSP->SetApplyCorrectionForNUA(kFALSE); + //taskSP->SetHarmonic(2); // default is v2 mgr->AddTask(taskSP); } if (LYZ1SUM){ @@ -394,10 +382,13 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, taskQC->SetUsePhiWeights(WEIGHTS[0]); taskQC->SetUsePtWeights(WEIGHTS[1]); taskQC->SetUseEtaWeights(WEIGHTS[2]); + taskQC->SetCalculateCumulantsVsM(kFALSE); taskQC->SetnBinsMult(10000); taskQC->SetMinMult(0.); taskQC->SetMaxMult(10000.); - taskQC->SetApplyCorrectionForNUA(kTRUE); + //taskQC->SetHarmonic(2); // default is v2 + taskQC->SetApplyCorrectionForNUA(kFALSE); + taskQC->SetFillMultipleControlHistograms(kFALSE); mgr->AddTask(taskQC); } if (FQD){ @@ -433,13 +424,6 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, mgr->AddTask(taskNL); } - AliAnalysisTaskQAflow* taskQAflow = new AliAnalysisTaskQAflow("TaskQAflow"); - taskQAflow->SetEventCuts(cutsEvent); - taskQAflow->SetTrackCuts(cutsRP); - taskQAflow->SetFillNTuple(FillQAntuple); - taskQAflow->SetDoCorrelations(DoQAcorrelations); - mgr->AddTask(taskQAflow); - // Create the output container for the data produced by the task // Connect to the input and output containers //=========================================================================== @@ -447,7 +431,7 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, if (rptypestr == "FMD") { AliAnalysisDataContainer *coutputFMD = - mgr->CreateContainer(Form("BackgroundCorrected_%s",fileName.Data()), TList::Class(), AliAnalysisManager::kExchangeContainer); + mgr->CreateContainer(Form("BackgroundCorrected_%s",outputSlotName.Data()), TList::Class(), AliAnalysisManager::kExchangeContainer); //input and output taskFMD mgr->ConnectInput(taskfmd, 0, cinput1); mgr->ConnectOutput(taskfmd, 1, coutputFMD); @@ -456,16 +440,22 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, } AliAnalysisDataContainer *coutputFE = - mgr->CreateContainer(Form("cobjFlowEventSimple_%s",fileName.Data()), AliFlowEventSimple::Class(),AliAnalysisManager::kExchangeContainer); + mgr->CreateContainer(Form("FlowEventSimple_%s",outputSlotName.Data()),AliFlowEventSimple::Class(),AliAnalysisManager::kExchangeContainer); mgr->ConnectInput(taskFE,0,cinput1); mgr->ConnectOutput(taskFE,1,coutputFE); - + + if (taskFE->GetQAOn()) + { + AliAnalysisDataContainer* coutputFEQA = + mgr->CreateContainer(Form("QA %s",outputSlotName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s:QA %s",fileName,rptypestr)); + mgr->ConnectOutput(taskFE,2,coutputFEQA); + } // Create the output containers for the data produced by the analysis tasks // Connect to the input and output containers //=========================================================================== if (useWeights) { - AliAnalysisDataContainer *cinputWeights = mgr->CreateContainer(Form("cobjWeights_%s",fileName.Data()), + AliAnalysisDataContainer *cinputWeights = mgr->CreateContainer(Form("Weights_%s",outputSlotName.Data()), TList::Class(),AliAnalysisManager::kInputContainer); } @@ -473,7 +463,7 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, TString outputSP = fileName; outputSP += ":outputSPanalysis"; outputSP+= rptypestr; - AliAnalysisDataContainer *coutputSP = mgr->CreateContainer(Form("cobjSP_%s",fileName.Data()), + AliAnalysisDataContainer *coutputSP = mgr->CreateContainer(Form("SP_%s",outputSlotName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputSP); mgr->ConnectInput(taskSP,0,coutputFE); mgr->ConnectOutput(taskSP,1,coutputSP); @@ -486,7 +476,7 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, TString outputLYZ1SUM = fileName; outputLYZ1SUM += ":outputLYZ1SUManalysis"; outputLYZ1SUM+= rptypestr; - AliAnalysisDataContainer *coutputLYZ1SUM = mgr->CreateContainer(Form("cobjLYZ1SUM_%s",fileName.Data()), + AliAnalysisDataContainer *coutputLYZ1SUM = mgr->CreateContainer(Form("LYZ1SUM_%s",outputSlotName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ1SUM); mgr->ConnectInput(taskLYZ1SUM,0,coutputFE); mgr->ConnectOutput(taskLYZ1SUM,1,coutputLYZ1SUM); @@ -495,19 +485,19 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, TString outputLYZ1PROD = fileName; outputLYZ1PROD += ":outputLYZ1PRODanalysis"; outputLYZ1PROD+= rptypestr; - AliAnalysisDataContainer *coutputLYZ1PROD = mgr->CreateContainer(Form("cobjLYZ1PROD_%s",fileName.Data()), + AliAnalysisDataContainer *coutputLYZ1PROD = mgr->CreateContainer(Form("LYZ1PROD_%s",outputSlotName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ1PROD); mgr->ConnectInput(taskLYZ1PROD,0,coutputFE); mgr->ConnectOutput(taskLYZ1PROD,1,coutputLYZ1PROD); } if(LYZ2SUM) { - AliAnalysisDataContainer *cinputLYZ2SUM = mgr->CreateContainer(Form("cobjLYZ2SUMin_%s",fileName.Data()), + AliAnalysisDataContainer *cinputLYZ2SUM = mgr->CreateContainer(Form("LYZ2SUMin_%s",outputSlotName.Data()), TList::Class(),AliAnalysisManager::kInputContainer); TString outputLYZ2SUM = fileName; outputLYZ2SUM += ":outputLYZ2SUManalysis"; outputLYZ2SUM+= rptypestr; - AliAnalysisDataContainer *coutputLYZ2SUM = mgr->CreateContainer(Form("cobjLYZ2SUM_%s",fileName.Data()), + AliAnalysisDataContainer *coutputLYZ2SUM = mgr->CreateContainer(Form("LYZ2SUM_%s",outputSlotName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ2SUM); mgr->ConnectInput(taskLYZ2SUM,0,coutputFE); mgr->ConnectInput(taskLYZ2SUM,1,cinputLYZ2SUM); @@ -515,13 +505,13 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, cinputLYZ2SUM->SetData(fInputListLYZ2SUM); } if(LYZ2PROD) { - AliAnalysisDataContainer *cinputLYZ2PROD = mgr->CreateContainer(Form("cobjLYZ2PRODin_%s",fileName.Data()), + AliAnalysisDataContainer *cinputLYZ2PROD = mgr->CreateContainer(Form("LYZ2PRODin_%s",outputSlotName.Data()), TList::Class(),AliAnalysisManager::kInputContainer); TString outputLYZ2PROD = fileName; outputLYZ2PROD += ":outputLYZ2PRODanalysis"; outputLYZ2PROD+= rptypestr; - AliAnalysisDataContainer *coutputLYZ2PROD = mgr->CreateContainer(Form("cobjLYZ2PROD_%s",fileName.Data()), + AliAnalysisDataContainer *coutputLYZ2PROD = mgr->CreateContainer(Form("LYZ2PROD_%s",outputSlotName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ2PROD); mgr->ConnectInput(taskLYZ2PROD,0,coutputFE); mgr->ConnectInput(taskLYZ2PROD,1,cinputLYZ2PROD); @@ -529,13 +519,13 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, cinputLYZ2PROD->SetData(fInputListLYZ2PROD); } if(LYZEP) { - AliAnalysisDataContainer *cinputLYZEP = mgr->CreateContainer(Form("cobjLYZEPin_%s",fileName.Data()), + AliAnalysisDataContainer *cinputLYZEP = mgr->CreateContainer(Form("LYZEPin_%s",outputSlotName.Data()), TList::Class(),AliAnalysisManager::kInputContainer); TString outputLYZEP = fileName; outputLYZEP += ":outputLYZEPanalysis"; outputLYZEP+= rptypestr; - AliAnalysisDataContainer *coutputLYZEP = mgr->CreateContainer(Form("cobjLYZEP_%s",fileName.Data()), + AliAnalysisDataContainer *coutputLYZEP = mgr->CreateContainer(Form("LYZEP_%s",outputSlotName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZEP); mgr->ConnectInput(taskLYZEP,0,coutputFE); mgr->ConnectInput(taskLYZEP,1,cinputLYZEP); @@ -547,7 +537,7 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, outputGFC += ":outputGFCanalysis"; outputGFC+= rptypestr; - AliAnalysisDataContainer *coutputGFC = mgr->CreateContainer(Form("cobjGFC_%s",fileName.Data()), + AliAnalysisDataContainer *coutputGFC = mgr->CreateContainer(Form("GFC_%s",outputSlotName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputGFC); mgr->ConnectInput(taskGFC,0,coutputFE); mgr->ConnectOutput(taskGFC,1,coutputGFC); @@ -561,7 +551,7 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, outputQC += ":outputQCanalysis"; outputQC+= rptypestr; - AliAnalysisDataContainer *coutputQC = mgr->CreateContainer(Form("cobjQC_%s",fileName.Data()), + AliAnalysisDataContainer *coutputQC = mgr->CreateContainer(Form("QC_%s",outputSlotName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputQC); mgr->ConnectInput(taskQC,0,coutputFE); mgr->ConnectOutput(taskQC,1,coutputQC); @@ -575,7 +565,7 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, outputFQD += ":outputFQDanalysis"; outputFQD+= rptypestr; - AliAnalysisDataContainer *coutputFQD = mgr->CreateContainer(Form("cobjFQD_%s",fileName.Data()), + AliAnalysisDataContainer *coutputFQD = mgr->CreateContainer(Form("FQD_%s",outputSlotName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFQD); mgr->ConnectInput(taskFQD,0,coutputFE); mgr->ConnectOutput(taskFQD,1,coutputFQD); @@ -589,7 +579,7 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, outputMCEP += ":outputMCEPanalysis"; outputMCEP+= rptypestr; - AliAnalysisDataContainer *coutputMCEP = mgr->CreateContainer(Form("cobjMCEP_%s",fileName.Data()), + AliAnalysisDataContainer *coutputMCEP = mgr->CreateContainer(Form("MCEP_%s",outputSlotName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputMCEP); mgr->ConnectInput(taskMCEP,0,coutputFE); mgr->ConnectOutput(taskMCEP,1,coutputMCEP); @@ -599,7 +589,7 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, outputMH += ":outputMHanalysis"; outputMH += rptypestr; - AliAnalysisDataContainer *coutputMH = mgr->CreateContainer(Form("cobjMH_%s",fileName.Data()), + AliAnalysisDataContainer *coutputMH = mgr->CreateContainer(Form("MH_%s",outputSlotName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputMH); mgr->ConnectInput(taskMH,0,coutputFE); mgr->ConnectOutput(taskMH,1,coutputMH); @@ -613,7 +603,7 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, outputNL += ":outputNLanalysis"; outputNL += rptypestr; - AliAnalysisDataContainer *coutputNL = mgr->CreateContainer(Form("cobjNL_%s",fileName.Data()), + AliAnalysisDataContainer *coutputNL = mgr->CreateContainer(Form("NL_%s",outputSlotName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputNL); mgr->ConnectInput(taskNL,0,coutputFE); mgr->ConnectOutput(taskNL,1,coutputNL); @@ -623,21 +613,32 @@ void AddTaskFlowCentrality( Int_t refMultMin=0, //} } - TString taskQAoutputFileName(fileNameBase); - taskQAoutputFileName+=binnumber; - taskQAoutputFileName.Append("_QA.root"); - AliAnalysisDataContainer* coutputQAtask = mgr->CreateContainer(Form("flowQA_%i",binnumber), - TObjArray::Class(), - AliAnalysisManager::kOutputContainer, - taskQAoutputFileName); - AliAnalysisDataContainer* coutputQAtaskTree = mgr->CreateContainer(Form("flowQAntuple_%i",binnumber), - TNtuple::Class(), - AliAnalysisManager::kOutputContainer, - taskQAoutputFileName); - mgr->ConnectInput(taskQAflow,0,mgr->GetCommonInputContainer()); - mgr->ConnectInput(taskQAflow,1,coutputFE); - mgr->ConnectOutput(taskQAflow,1,coutputQAtask); - if (FillQAntuple) mgr->ConnectOutput(taskQAflow,2,coutputQAtaskTree); + /////////////////////////////////////////////////////////////////////////////////////////// + if (runQAtask) + { + AliAnalysisTaskQAflow* taskQAflow = new AliAnalysisTaskQAflow("TaskQAflow"); + taskQAflow->SetEventCuts(cutsEvent); + taskQAflow->SetTrackCuts(cutsRP); + taskQAflow->SetFillNTuple(FillQAntuple); + taskQAflow->SetDoCorrelations(DoQAcorrelations); + mgr->AddTask(taskQAflow); + + Printf("outputSlotName %s",outputSlotName.Data()); + TString taskQAoutputFileName(fileNameBase); + taskQAoutputFileName.Append("_QA.root"); + AliAnalysisDataContainer* coutputQAtask = mgr->CreateContainer(Form("flowQA_%s",outputSlotName.Data()), + TObjArray::Class(), + AliAnalysisManager::kOutputContainer, + taskQAoutputFileName); + AliAnalysisDataContainer* coutputQAtaskTree = mgr->CreateContainer(Form("flowQAntuple_%s",outputSlotName.Data()), + TNtuple::Class(), + AliAnalysisManager::kOutputContainer, + taskQAoutputFileName); + mgr->ConnectInput(taskQAflow,0,mgr->GetCommonInputContainer()); + mgr->ConnectInput(taskQAflow,1,coutputFE); + mgr->ConnectOutput(taskQAflow,1,coutputQAtask); + if (FillQAntuple) mgr->ConnectOutput(taskQAflow,2,coutputQAtaskTree); + } }