void *AddTaskDFilterAndCorrelations( AliAnalysisTaskSEDmesonsFilterCJ::ECandidateType cand = AliAnalysisTaskSEDmesonsFilterCJ::kDstartoKpipi, TString filename = "DStartoKpipiCuts.root", Bool_t theMCon = kFALSE, Bool_t reco = kTRUE /*must be true if theMCon is false*/, TString suffix = "", TString jetArrname = "", Bool_t triggerOnLeadingJet = kFALSE, Int_t leadingHadType = 0 /*0 = charged, 1 = neutral, 2 = both*/, Float_t R = 0.4, Float_t jptcut = 10., const char *cutType = "TPC", Int_t thnsparse=1, /*-1 = no thnsparse, 0 = heavy, 1 = light*/ Double_t percjetareacut = 1., AliAnalysisTaskEmcal::TriggerType trType=AliAnalysisTaskEmcal::kND, Int_t typeDjet=2 ) { AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); if (!mgr) { ::Error("AddTaskSEDmesonsFilterCJ", "No analysis manager to connect to."); return NULL; } Bool_t useStdC = kFALSE; TFile* filecuts=TFile::Open(filename); if(!filecuts || (filecuts && !filecuts->IsOpen())) { cout<<"Input file not found: use std cuts"<SetStandardCutsPP2010(); } else analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get("D0toKpiCuts"); break; case 1 : if(useStdC) { analysiscuts = new AliRDHFCutsDStartoKpipi(); analysiscuts->SetStandardCutsPP2010(); } else analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get("DStartoKpipiCuts"); analysiscuts->SetName("DStartoKpipiCuts"); break; } if (!analysiscuts) { // mm let's see if everything is ok AliFatal("Specific AliRDHFCuts not found"); return; } printf("CREATE TASK\n"); //CREATE THE TASK TString candname="DStar"; if(cand==0) candname="D0"; TString taskFiltername="DmesonsFilterCJ"; taskFiltername+=candname; taskFiltername+=suffix; if(theMCon) taskFiltername+="MC"; if(!reco) taskFiltername+="gen"; AliAnalysisTaskSEDmesonsFilterCJ* taskFilter = mgr->GetTask(taskFiltername.Data()); if (!taskFilter){ taskFilter = new AliAnalysisTaskSEDmesonsFilterCJ(taskFiltername.Data(),analysiscuts,cand); if(!theMCon) reco=kTRUE; taskFilter->SetMC(theMCon); //D meson settings taskFilter->SetUseReco(reco); mgr->AddTask(taskFilter); } // create the task TString taskCorrName="TaskFlavourJetCorrelations"; taskCorrName+=candname; taskCorrName+=suffix; if(theMCon) taskCorrName+="MC"; if(!reco) taskCorrName+="gen"; taskCorrName+=cutType; taskCorrName+=Form("PTj%.0f",jptcut); taskCorrName+=""; AliAnalysisTaskFlavourJetCorrelations *taskCorr = new AliAnalysisTaskFlavourJetCorrelations(taskCorrName.Data(), analysiscuts, cand); taskCorr->SetJetsName(jetArrname); taskCorr->SetMC(theMCon); taskCorr->SetUseReco(reco); taskCorr->SetTriggerOnLeadingJet(triggerOnLeadingJet); taskCorr->SetJetAcceptanceType(cutType); taskCorr->SetJetPtCut(jptcut); taskCorr->SetPercAreaCut(percjetareacut); taskCorr->SetTypeDJetSelection(typeDjet); if(theMCon && trType!=AliAnalysisTaskEmcal::kND){ taskCorr->SetCaloTriggerPatchInfoName("EmcalTriggers"); taskCorr->SetTriggerTypeSel(trType); } if(thnsparse==-1)taskCorr->TurnOffTHnSparse(); if(thnsparse==0) taskCorr->HeavyTHnSparse(); if(thnsparse==1) taskCorr->LightTHnSparse(); mgr->AddTask(taskCorr); if(theMCon) { suffix+="MC"; if(reco) suffix+="rec"; } // Create and connect containers for input/output TString outputfile = AliAnalysisManager::GetCommonFileName(); TString outputfileF = outputfile, outputfileC = outputfile; outputfileF += ":PWG3_D2H_DmesonsForJetCorrelations"; outputfileC += ":PWG3_D2H_DEmcalJet"; outputfileF += suffix; outputfileC += suffix; TString nameContainerF0="histograms"; TString nameContainerF1="cuts"; TString nameContainerC0="hCor"; TString nameContainerC1="cutsJ"; TString nameContainerFC2="Dcandidates"; TString nameContainerFC3="DSBcandidates"; nameContainerF0 += candname; nameContainerF1 += candname; nameContainerC0 += candname; nameContainerC1 += candname; nameContainerFC2 += candname; nameContainerFC3 += candname; nameContainerF0 += suffix; nameContainerF1 += suffix; nameContainerC0 += suffix; nameContainerC1 += suffix; nameContainerFC2 += suffix; nameContainerFC3 += suffix; // ------ input data ------ AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer(); cinput0->SetName(Form("in%s%s",candname.Data(),suffix.Data())); // ----- output data ----- AliAnalysisDataContainer *coutputF0 = mgr->CreateContainer(nameContainerF0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileF.Data()); AliAnalysisDataContainer *coutputF1 = mgr->CreateContainer(nameContainerF1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfileF.Data()); AliAnalysisDataContainer *coutputC0 = mgr->CreateContainer(nameContainerC0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileC.Data()); AliAnalysisDataContainer *coutputC1 = mgr->CreateContainer(nameContainerC1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfileC.Data()); AliAnalysisDataContainer *coutputFC2 = mgr->CreateContainer(nameContainerFC2, TClonesArray::Class(),AliAnalysisManager::kExchangeContainer, outputfileF.Data()); // AliAnalysisDataContainer *coutputFC3 = mgr->CreateContainer(nameContainerFC3, TClonesArray::Class(),AliAnalysisManager::kExchangeContainer, outputfileF.Data()); // mgr->ConnectInput(taskFilter,0,cinput0); mgr->ConnectInput(taskCorr,0,cinput0); mgr->ConnectOutput(taskFilter,1,coutputF0); mgr->ConnectOutput(taskFilter,2,coutputF1); mgr->ConnectOutput(taskFilter,3,coutputFC2); mgr->ConnectOutput(taskFilter,4,coutputFC3); mgr->ConnectInput(taskCorr,1,coutputFC2); mgr->ConnectInput(taskCorr,2,coutputFC3); mgr->ConnectOutput(taskCorr,1,coutputC0); mgr->ConnectOutput(taskCorr,2,coutputC1); //if(cand==1) mgr->ConnectOutput(task,4,coutput4); Printf("Input and Output connected to the manager"); return; }