X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWG2%2FFLOW%2Fmacros%2FAddTaskFlow.C;h=8cda4e4ff01dfb071deabf94c8597cdee13515c2;hb=e999459d688f1799af6ba2fcd2ab84f7ad7b9a0e;hp=b57505d69a27526dc2f3aeafd876bb18d3af3188;hpb=c0ed632528d948d3c2f4a49470007f0536a76119;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWG2/FLOW/macros/AddTaskFlow.C b/PWG2/FLOW/macros/AddTaskFlow.C index b57505d69a2..8cda4e4ff01 100644 --- a/PWG2/FLOW/macros/AddTaskFlow.C +++ b/PWG2/FLOW/macros/AddTaskFlow.C @@ -7,6 +7,26 @@ // ///////////////////////////////////////////////////////////////////////////////////////////// +// Define the range for eta subevents (for SP method) +//-----(FMD 1.7 - 5.0)----- +//Double_t minA = -5.0; +//Double_t maxA = -1.7; +//Double_t minB = 1.7; +//Double_t maxB = 5.0; +//-----(Tracklets 0.9 - 2.0)----- +//Double_t minA = -2.0; +//Double_t maxA = -0.9; +//Double_t minB = 0.9; +//Double_t maxB = 2.0; +//-----(Global 0.5 - 0.9)----- +Double_t minA = -0.9; +Double_t maxA = -0.5; +Double_t minB = 0.5; +Double_t maxB = 0.9; + + +// use physics selection class +Bool_t UsePhysicsSelection = kTRUE; // SETTING THE CUTS @@ -16,15 +36,31 @@ Bool_t UseMultCutforESD = kTRUE; const Int_t multminESD = 1; //used for CORRFW cuts const Int_t multmaxESD = 1000000; //used for CORRFW cuts -//Bool_t UseMultCut = kTRUE; -Bool_t UseMultCut = kFALSE; -const Int_t multmin = 10; //used for AliFlowEventSimple (to set the centrality) -const Int_t multmax = 40; //used for AliFlowEventSimple (to set the centrality) +Bool_t requireVtxCuts = kTRUE; +const Double_t vertexXmin = -1.e99; +const Double_t vertexXmax = 1.e99; +const Double_t vertexYmin = -1.e99; +const Double_t vertexYmax = 1.e99; +const Double_t vertexZmin = -1.e99; +const Double_t vertexZmax = 1.e99; +const Int_t vertexNContributorsmin = 1; +const Int_t vertexNContributorsmax = 10000; + +//Bool_t UseMultCut = kFALSE; +Bool_t UseMultCut = kTRUE; +const Int_t multmin = 1; //used for AliFlowEventSimple (to set the centrality) +const Int_t multmax = 10000; //used for AliFlowEventSimple (to set the centrality) //const Int_t multmin = 10; //used for AliFlowEventSimple (to set the centrality) //const Int_t multmax = 1000000; //used for AliFlowEventSimple (to set the centrality) //----------For RP selection---------- +// Use Global tracks ("Global"), or SPD tracklets ("Tracklet") +// or FMD hits ("FMD") for the RP selection +const TString rptype = "Global"; +//const TString rptype = "Tracklet"; +//const TString rptype = "FMD"; + //KINEMATICS (on generated and reconstructed tracks) Bool_t UseKineforRP = kTRUE; const Double_t ptminRP = 0.0; @@ -32,6 +68,7 @@ const Double_t ptmaxRP = 10.0; const Double_t etaminRP = -0.9; const Double_t etamaxRP = 0.9; const Int_t chargeRP = 1; //not used +const Bool_t isChargedRP = kTRUE; //PID (on generated and reconstructed tracks) Bool_t UsePIDforRP = kFALSE; @@ -41,7 +78,7 @@ const Int_t PdgRP = 211; //see /CORRFW/AliCFTrackQualityCuts class Bool_t UseTrackQualityforRP = kTRUE; const Int_t minClustersTpcRP = 80; //default = -1; -const Double_t maxChi2PerClusterTpcRP = 3.5; //default = 1.e+09; +const Double_t maxChi2PerClusterTpcRP = 4.0; //default = 1.e+09; const UShort_t minDedxClusterTpcRP = 0; const Int_t minClustersItsRP = 2; //panos const Double_t maxChi2PerClusterItsRP = 1.e+09; @@ -84,9 +121,10 @@ const Int_t minTrackrefsMuonRP = 0; Bool_t UseKineforPOI = kTRUE; const Double_t ptminPOI = 0.0; const Double_t ptmaxPOI = 10.0; -const Double_t etaminPOI = -0.9; -const Double_t etamaxPOI = 0.9; +const Double_t etaminPOI = -0.5; +const Double_t etamaxPOI = 0.5; const Int_t chargePOI = 1; //not used +const Bool_t isChargedPOI = kTRUE; //PID (on generated and reconstructed tracks) Bool_t UsePIDforPOI = kFALSE; @@ -96,7 +134,7 @@ const Int_t PdgPOI = 321; //see /CORRFW/AliCFTrackQualityCuts class Bool_t UseTrackQualityforPOI = kTRUE; const Int_t minClustersTpcPOI = 80; -const Double_t maxChi2PerClusterTpcPOI = 3.5; +const Double_t maxChi2PerClusterTpcPOI = 4.0; const UShort_t minDedxClusterTpcPOI = 0; const Int_t minClustersItsPOI = 2; const Double_t maxChi2PerClusterItsPOI = 1.e+09; @@ -151,8 +189,9 @@ AliAnalysisTaskFlowEvent* AddTaskFlow(TString type, Bool_t* METHODS, Bool_t QA, Bool_t GFC = METHODS[6]; Bool_t QC = METHODS[7]; Bool_t FQD = METHODS[8]; - Bool_t MCEP = METHODS[9]; - + Bool_t MCEP = METHODS[9]; + Bool_t MH = METHODS[10]; + Bool_t NL = METHODS[11]; //for using weights Bool_t useWeights = WEIGHTS[0] || WEIGHTS[1] || WEIGHTS[2]; if (useWeights) cout<<"Weights are used"<IsZombie()) { - cerr << " ERROR: To run LYZ2SUM you need the output file from LYZ1SUM. This file is not there! Please run LYZ1SUM first." << endl ; - break; + //LYZ2 + if (LYZ2SUM || LYZ2PROD) { + //read the outputfile of the first run + TString outputFileName = "AnalysisResults1.root"; + TString pwd(gSystem->pwd()); + pwd+="/"; + pwd+=outputFileName.Data(); + TFile *outputFile = NULL; + if(gSystem->AccessPathName(pwd.Data(),kFileExists)) { + cout<<"WARNING: You do not have an output file:"<Get("cobjLYZ1SUM"); - if (!fInputListLYZ2SUM) {cout<<"list is NULL pointer!"<IsZombie()) { - cerr << " ERROR: To run LYZ2PROD you need the output file from LYZ1PROD. This file is not there! Please run LYZ1PROD first." << endl ; - break; + + if (LYZ2SUM){ + // read the output directory from LYZ1SUM + TString inputFileNameLYZ2SUM = "outputLYZ1SUManalysis" ; + inputFileNameLYZ2SUM += type; + cout<<"The input directory is "<FindObjectAny(inputFileNameLYZ2SUM.Data()); + if(!fInputFileLYZ2SUM || fInputFileLYZ2SUM->IsZombie()) { + cerr << " ERROR: To run LYZ2SUM you need the output file from LYZ1SUM. This file is not there! Please run LYZ1SUM first." << endl ; + break; + } + else { + TList* fInputListLYZ2SUM = (TList*)fInputFileLYZ2SUM->Get("cobjLYZ1SUM"); + if (!fInputListLYZ2SUM) {cout<<"list is NULL pointer!"<Get("cobjLYZ1PROD"); - if (!fInputListLYZ2PROD) {cout<<"list is NULL pointer!"<FindObjectAny(inputFileNameLYZ2PROD.Data()); + if(!fInputFileLYZ2PROD || fInputFileLYZ2PROD->IsZombie()) { + cerr << " ERROR: To run LYZ2PROD you need the output file from LYZ1PROD. This file is not there! Please run LYZ1PROD first." << endl ; + break; + } + else { + TList* fInputListLYZ2PROD = (TList*)fInputFileLYZ2PROD->Get("cobjLYZ1PROD"); + if (!fInputListLYZ2PROD) {cout<<"list is NULL pointer!"<pwd()); + pwd+="/"; + pwd+=outputFileName.Data(); + TFile *outputFile = NULL; + if(gSystem->AccessPathName(pwd.Data(),kFileExists)) { + cout<<"WARNING: You do not have an output file:"<FindObjectAny(inputFileNameLYZEP.Data()); if(!fInputFileLYZEP || fInputFileLYZEP->IsZombie()) { cerr << " ERROR: To run LYZEP you need the output file from LYZ2SUM. This file is not there! Please run LYZ2SUM first." << endl ; break; @@ -246,29 +315,60 @@ if (LYZ2PROD){ } cout<<"LYZEP input file/list read..."<AddTask(taskfmd); + + AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance(); + pars->Init(); + pars->SetProcessPrimary(kTRUE); + pars->SetProcessHits(kFALSE); + } + } + // Create the task, add it to the manager. //=========================================================================== AliAnalysisTaskFlowEvent *taskFE = NULL; if (QA) { if(AddToEvent) { - taskFE = new AliAnalysisTaskFlowEvent("TaskFlowEvent",kTRUE,1); + taskFE = new AliAnalysisTaskFlowEvent("TaskFlowEvent",rptype,kTRUE,1); taskFE->SetEllipticFlowValue(ellipticFlow); } //TEST - else {taskFE = new AliAnalysisTaskFlowEvent("TaskFlowEvent",kTRUE); } + else {taskFE = new AliAnalysisTaskFlowEvent("TaskFlowEvent",rptype,kTRUE); } taskFE->SetAnalysisType(type); + taskFE->SetRPType(rptype); //only for ESD if (UseMultCut) { taskFE->SetMinMult(multmin); - taskFE->SetMaxMult(multmax);} + taskFE->SetMaxMult(multmax); + } + taskFE->SetSubeventEtaRange(minA, maxA, minB, maxB); + if (UsePhysicsSelection) { + taskFE->SelectCollisionCandidates(); + cout<<"Using Physics Selection"<AddTask(taskFE); } else { - taskFE = new AliAnalysisTaskFlowEvent("TaskFlowEvent",kFALSE); + if(AddToEvent) { + taskFE = new AliAnalysisTaskFlowEvent("TaskFlowEvent",rptype,kFALSE,1); + taskFE->SetEllipticFlowValue(ellipticFlow); } //TEST + else {taskFE = new AliAnalysisTaskFlowEvent("TaskFlowEvent",rptype,kFALSE); } taskFE->SetAnalysisType(type); if (UseMultCut) { taskFE->SetMinMult(multmin); - taskFE->SetMaxMult(multmax); } + taskFE->SetMaxMult(multmax); + } + taskFE->SetSubeventEtaRange(minA, maxA, minB, maxB); + if (UsePhysicsSelection) { + taskFE->SelectCollisionCandidates(); + cout<<"Using Physics Selection"<AddTask(taskFE); } @@ -283,11 +383,20 @@ if (LYZ2PROD){ //----------Event cuts---------- AliCFEventGenCuts* mcEventCuts = new AliCFEventGenCuts("mcEventCuts","MC-level event cuts"); mcEventCuts->SetNTracksCut(multminESD,multmaxESD); + mcEventCuts->SetRequireVtxCuts(requireVtxCuts); + mcEventCuts->SetVertexXCut(vertexXmin, vertexXmax); + mcEventCuts->SetVertexYCut(vertexYmin, vertexYmax); + mcEventCuts->SetVertexZCut(vertexZmin, vertexZmax); if (QA) { mcEventCuts->SetQAOn(qaRP); } AliCFEventRecCuts* recEventCuts = new AliCFEventRecCuts("recEventCuts","rec-level event cuts"); recEventCuts->SetNTracksCut(multminESD,multmaxESD); + recEventCuts->SetRequireVtxCuts(requireVtxCuts); + recEventCuts->SetVertexXCut(vertexXmin, vertexXmax); + recEventCuts->SetVertexYCut(vertexYmin, vertexYmax); + recEventCuts->SetVertexZCut(vertexZmin, vertexZmax); + recEventCuts->SetVertexNContributors(vertexNContributorsmin,vertexNContributorsmax); if (QA) { recEventCuts->SetQAOn(qaRP); } @@ -298,6 +407,7 @@ if (LYZ2PROD){ mcKineCutsRP->SetPtRange(ptminRP,ptmaxRP); mcKineCutsRP->SetEtaRange(etaminRP,etamaxRP); //mcKineCutsRP->SetChargeMC(chargeRP); + mcKineCutsRP->SetRequireIsCharged(isChargedRP); if (QA) { mcKineCutsRP->SetQAOn(qaRP); } @@ -306,6 +416,7 @@ if (LYZ2PROD){ recKineCutsRP->SetPtRange(ptminRP,ptmaxRP); recKineCutsRP->SetEtaRange(etaminRP,etamaxRP); //recKineCutsRP->SetChargeRec(chargeRP); + recKineCutsRP->SetRequireIsCharged(isChargedRP); if (QA) { recKineCutsRP->SetQAOn(qaRP); } @@ -409,6 +520,7 @@ if (LYZ2PROD){ mcKineCutsPOI->SetPtRange(ptminPOI,ptmaxPOI); mcKineCutsPOI->SetEtaRange(etaminPOI,etamaxPOI); //mcKineCutsPOI->SetChargeMC(chargePOI); + mcKineCutsPOI->SetRequireIsCharged(isChargedPOI); if (QA) { mcKineCutsPOI->SetQAOn(qaPOI); } @@ -417,6 +529,7 @@ if (LYZ2PROD){ recKineCutsPOI->SetPtRange(ptminPOI,ptmaxPOI); recKineCutsPOI->SetEtaRange(etaminPOI,etamaxPOI); //recKineCutsPOI->SetChargeRec(chargePOI); + recKineCutsPOI->SetRequireIsCharged(isChargedPOI); if (QA) { recKineCutsPOI->SetQAOn(qaPOI); } @@ -503,10 +616,10 @@ if (LYZ2PROD){ //----------Create Cut Lists---------- printf("CREATE EVENT CUTS\n"); TObjArray* mcEventList = new TObjArray(0); - if (UseMultCutforESD) mcEventList->AddLast(mcEventCuts);//cut on mult + if (UseMultCutforESD) mcEventList->AddLast(mcEventCuts);//cut on mult and vertex TObjArray* recEventList = new TObjArray(0); - if (UseMultCutforESD) recEventList->AddLast(recEventCuts);//cut on mult + if (UseMultCutforESD) recEventList->AddLast(recEventCuts);//cut on mult and vertex printf("CREATE MC KINE CUTS\n"); TObjArray* mcListRP = new TObjArray(0); @@ -526,15 +639,15 @@ if (LYZ2PROD){ printf("CREATE ESD RECONSTRUCTION CUTS\n"); TObjArray* recListRP = new TObjArray(0) ; - if (UseKineforRP) recListRP->AddLast(recKineCutsRP); //cut on pt/eta/phi - if (UseTrackQualityforRP) recListRP->AddLast(recQualityCutsRP); + if (UseTrackQualityforRP) recListRP->AddLast(recQualityCutsRP); //track quality if (UsePrimariesforRP) recListRP->AddLast(recIsPrimaryCutsRP); //cut if it is a primary - + if (UseKineforRP) recListRP->AddLast(recKineCutsRP); //cut on pt/eta/phi + TObjArray* recListPOI = new TObjArray(0) ; - if (UseKineforPOI) recListPOI->AddLast(recKineCutsPOI); //cut on pt/eta/phi - if (UseTrackQualityforPOI) recListPOI->AddLast(recQualityCutsPOI); + if (UseTrackQualityforPOI) recListPOI->AddLast(recQualityCutsPOI); //track quality if (UsePrimariesforPOI) recListPOI->AddLast(recIsPrimaryCutsPOI); //cut if it is a primary - + if (UseKineforPOI) recListPOI->AddLast(recKineCutsPOI); //cut on pt/eta/phi + printf("CREATE ESD PID CUTS\n"); TObjArray* fPIDCutListRP = new TObjArray(0) ; if(UsePIDforRP) {fPIDCutListRP->AddLast(cutPidRP);} //cut on ESD PID @@ -577,7 +690,9 @@ if (LYZ2PROD){ // Create the analysis tasks, add them to the manager. //=========================================================================== if (SP){ - AliAnalysisTaskScalarProduct *taskSP = new AliAnalysisTaskScalarProduct("TaskScalarProduct"); + AliAnalysisTaskScalarProduct *taskSP = new AliAnalysisTaskScalarProduct("TaskScalarProduct",WEIGHTS[0]); + taskSP->SetRelDiffMsub(1.0); + taskSP->SetApplyCorrectionForNUA(kFALSE); mgr->AddTask(taskSP); } if (LYZ1SUM){ @@ -620,25 +735,63 @@ if (LYZ2PROD){ taskQC->SetUsePhiWeights(WEIGHTS[0]); taskQC->SetUsePtWeights(WEIGHTS[1]); taskQC->SetUseEtaWeights(WEIGHTS[2]); + taskQC->SetnBinsMult(10000); + taskQC->SetMinMult(0.); + taskQC->SetMaxMult(10000.); mgr->AddTask(taskQC); } if (FQD){ AliAnalysisTaskFittingQDistribution *taskFQD = new AliAnalysisTaskFittingQDistribution("TaskFittingQDistribution",kFALSE); taskFQD->SetUsePhiWeights(WEIGHTS[0]); + taskFQD->SetqMin(0.); + taskFQD->SetqMax(1000.); + taskFQD->SetqNbins(10000); mgr->AddTask(taskFQD); } if (MCEP){ AliAnalysisTaskMCEventPlane *taskMCEP = new AliAnalysisTaskMCEventPlane("TaskMCEventPlane"); mgr->AddTask(taskMCEP); } - + if (MH){ + AliAnalysisTaskMixedHarmonics *taskMH = new AliAnalysisTaskMixedHarmonics("TaskMixedHarmonics",useWeights); + taskMH->SetHarmonic(1); // n in cos[n(phi1+phi2-2phi3)] and cos[n(psi1+psi2-2phi3)] + taskMH->SetNoOfMultipicityBins(10); + taskMH->SetMultipicityBinWidth(2); + taskMH->SetMinMultiplicity(3); + taskMH->SetCorrectForDetectorEffects(kTRUE); + taskMH->SetEvaluateDifferential3pCorrelator(kFALSE); // evaluate <> (Remark: two nested loops) + taskMH->SetOppositeChargesPOI(kFALSE); // POIs psi1 and psi2 in cos[n(psi1+psi2-2phi3)] will have opposite charges + mgr->AddTask(taskMH); + } + if (NL){ + AliAnalysisTaskNestedLoops *taskNL = new AliAnalysisTaskNestedLoops("TaskNestedLoops",useWeights); + taskNL->SetHarmonic(1); // n in cos[n(phi1+phi2-2phi3)] and cos[n(psi1+psi2-2phi3)] + taskNL->SetEvaluateNestedLoopsForRAD(kTRUE); // RAD = Relative Angle Distribution + taskNL->SetEvaluateNestedLoopsForMH(kTRUE); // evalaute <> (Remark: three nested loops) + taskNL->SetEvaluateDifferential3pCorrelator(kFALSE); // evaluate <> (Remark: three nested loops) + taskNL->SetOppositeChargesPOI(kFALSE); // POIs psi1 and psi2 in cos[n(psi1+psi2-2phi3)] will have opposite charges + mgr->AddTask(taskNL); + } + // Create the output container for the data produced by the task // Connect to the input and output containers //=========================================================================== AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer(); - AliAnalysisDataContainer *coutputFE = mgr->CreateContainer("cobjFlowEventSimple", AliFlowEventSimple::Class(),AliAnalysisManager::kExchangeContainer); + + if (rptype == "FMD") { + AliAnalysisDataContainer *coutputFMD = + mgr->CreateContainer("BackgroundCorrected", TList::Class(), AliAnalysisManager::kExchangeContainer); + //input and output taskFMD + mgr->ConnectInput(taskfmd, 0, cinput1); + mgr->ConnectOutput(taskfmd, 1, coutputFMD); + //input into taskFE + mgr->ConnectInput(taskFE,1,coutputFMD); + } + + AliAnalysisDataContainer *coutputFE = + mgr->CreateContainer("cobjFlowEventSimple", AliFlowEventSimple::Class(),AliAnalysisManager::kExchangeContainer); mgr->ConnectInput(taskFE,0,cinput1); - mgr->ConnectOutput(taskFE,0,coutputFE); + mgr->ConnectOutput(taskFE,1,coutputFE); if (QA) { TString qaNameRPFE = AliAnalysisManager::GetCommonFileName(); @@ -655,8 +808,8 @@ if (LYZ2PROD){ AliAnalysisDataContainer *coutputQA2FE = mgr->CreateContainer("QAPOIFE", TList::Class(),AliAnalysisManager::kOutputContainer,qaNamePOIFE); - mgr->ConnectOutput(taskFE,1,coutputQA1FE); - mgr->ConnectOutput(taskFE,2,coutputQA2FE); + mgr->ConnectOutput(taskFE,2,coutputQA1FE); + mgr->ConnectOutput(taskFE,3,coutputQA2FE); } // Create the output containers for the data produced by the analysis tasks @@ -673,7 +826,11 @@ if (LYZ2PROD){ AliAnalysisDataContainer *coutputSP = mgr->CreateContainer("cobjSP", TList::Class(),AliAnalysisManager::kOutputContainer,outputSP); mgr->ConnectInput(taskSP,0,coutputFE); - mgr->ConnectOutput(taskSP,0,coutputSP); + mgr->ConnectOutput(taskSP,1,coutputSP); + if (WEIGHTS[0]) { + mgr->ConnectInput(taskSP,1,cinputWeights); + cinputWeights->SetData(weightsList); + } } if(LYZ1SUM) { TString outputLYZ1SUM = AliAnalysisManager::GetCommonFileName(); @@ -682,7 +839,7 @@ if (LYZ2PROD){ AliAnalysisDataContainer *coutputLYZ1SUM = mgr->CreateContainer("cobjLYZ1SUM", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ1SUM); mgr->ConnectInput(taskLYZ1SUM,0,coutputFE); - mgr->ConnectOutput(taskLYZ1SUM,0,coutputLYZ1SUM); + mgr->ConnectOutput(taskLYZ1SUM,1,coutputLYZ1SUM); } if(LYZ1PROD) { TString outputLYZ1PROD = AliAnalysisManager::GetCommonFileName(); @@ -691,7 +848,7 @@ if (LYZ2PROD){ AliAnalysisDataContainer *coutputLYZ1PROD = mgr->CreateContainer("cobjLYZ1PROD", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ1PROD); mgr->ConnectInput(taskLYZ1PROD,0,coutputFE); - mgr->ConnectOutput(taskLYZ1PROD,0,coutputLYZ1PROD); + mgr->ConnectOutput(taskLYZ1PROD,1,coutputLYZ1PROD); } if(LYZ2SUM) { AliAnalysisDataContainer *cinputLYZ2SUM = mgr->CreateContainer("cobjLYZ2SUMin",TList::Class(),AliAnalysisManager::kInputContainer); @@ -702,7 +859,7 @@ if (LYZ2PROD){ AliAnalysisDataContainer *coutputLYZ2SUM = mgr->CreateContainer("cobjLYZ2SUM", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ2SUM); mgr->ConnectInput(taskLYZ2SUM,0,coutputFE); mgr->ConnectInput(taskLYZ2SUM,1,cinputLYZ2SUM); - mgr->ConnectOutput(taskLYZ2SUM,0,coutputLYZ2SUM); + mgr->ConnectOutput(taskLYZ2SUM,1,coutputLYZ2SUM); cinputLYZ2SUM->SetData(fInputListLYZ2SUM); } if(LYZ2PROD) { @@ -714,7 +871,7 @@ if (LYZ2PROD){ AliAnalysisDataContainer *coutputLYZ2PROD = mgr->CreateContainer("cobjLYZ2PROD", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ2PROD); mgr->ConnectInput(taskLYZ2PROD,0,coutputFE); mgr->ConnectInput(taskLYZ2PROD,1,cinputLYZ2PROD); - mgr->ConnectOutput(taskLYZ2PROD,0,coutputLYZ2PROD); + mgr->ConnectOutput(taskLYZ2PROD,1,coutputLYZ2PROD); cinputLYZ2PROD->SetData(fInputListLYZ2PROD); } if(LYZEP) { @@ -726,7 +883,7 @@ if (LYZ2PROD){ AliAnalysisDataContainer *coutputLYZEP = mgr->CreateContainer("cobjLYZEP", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZEP); mgr->ConnectInput(taskLYZEP,0,coutputFE); mgr->ConnectInput(taskLYZEP,1,cinputLYZEP); - mgr->ConnectOutput(taskLYZEP,0,coutputLYZEP); + mgr->ConnectOutput(taskLYZEP,1,coutputLYZEP); cinputLYZEP->SetData(fInputListLYZEP); } if(GFC) { @@ -736,7 +893,7 @@ if (LYZ2PROD){ AliAnalysisDataContainer *coutputGFC = mgr->CreateContainer("cobjGFC", TList::Class(),AliAnalysisManager::kOutputContainer,outputGFC); mgr->ConnectInput(taskGFC,0,coutputFE); - mgr->ConnectOutput(taskGFC,0,coutputGFC); + mgr->ConnectOutput(taskGFC,1,coutputGFC); if (useWeights) { mgr->ConnectInput(taskGFC,1,cinputWeights); cinputWeights->SetData(weightsList); @@ -749,11 +906,11 @@ if (LYZ2PROD){ AliAnalysisDataContainer *coutputQC = mgr->CreateContainer("cobjQC", TList::Class(),AliAnalysisManager::kOutputContainer,outputQC); mgr->ConnectInput(taskQC,0,coutputFE); - mgr->ConnectOutput(taskQC,0,coutputQC); + mgr->ConnectOutput(taskQC,1,coutputQC); if (useWeights) { mgr->ConnectInput(taskQC,1,cinputWeights); cinputWeights->SetData(weightsList); - } + } } if(FQD) { TString outputFQD = AliAnalysisManager::GetCommonFileName(); @@ -762,7 +919,7 @@ if (LYZ2PROD){ AliAnalysisDataContainer *coutputFQD = mgr->CreateContainer("cobjFQD", TList::Class(),AliAnalysisManager::kOutputContainer,outputFQD); mgr->ConnectInput(taskFQD,0,coutputFE); - mgr->ConnectOutput(taskFQD,0,coutputFQD); + mgr->ConnectOutput(taskFQD,1,coutputFQD); if(useWeights) { mgr->ConnectInput(taskFQD,1,cinputWeights); cinputWeights->SetData(weightsList); @@ -775,9 +932,34 @@ if (LYZ2PROD){ AliAnalysisDataContainer *coutputMCEP = mgr->CreateContainer("cobjMCEP", TList::Class(),AliAnalysisManager::kOutputContainer,outputMCEP); mgr->ConnectInput(taskMCEP,0,coutputFE); - mgr->ConnectOutput(taskMCEP,0,coutputMCEP); + mgr->ConnectOutput(taskMCEP,1,coutputMCEP); + } + if(MH) { + TString outputMH = AliAnalysisManager::GetCommonFileName(); + outputMH += ":outputMHanalysis"; + outputMH += type; + + AliAnalysisDataContainer *coutputMH = mgr->CreateContainer("cobjMH", TList::Class(),AliAnalysisManager::kOutputContainer,outputMH); + mgr->ConnectInput(taskMH,0,coutputFE); + mgr->ConnectOutput(taskMH,1,coutputMH); + //if (useWeights) { + // mgr->ConnectInput(taskMH,1,cinputWeights); + // cinputWeights->SetData(weightsList); + //} + } + if(NL) { + TString outputNL = AliAnalysisManager::GetCommonFileName(); + outputNL += ":outputNLanalysis"; + outputNL += type; + + AliAnalysisDataContainer *coutputNL = mgr->CreateContainer("cobjNL", TList::Class(),AliAnalysisManager::kOutputContainer,outputNL); + mgr->ConnectInput(taskNL,0,coutputFE); + mgr->ConnectOutput(taskNL,1,coutputNL); + //if (useWeights) { + // mgr->ConnectInput(taskNL,1,cinputWeights); + // cinputWeights->SetData(weightsList); + //} } - // Return analysis task //===========================================================================