1 void *AddTaskDFilterAndCorrelations(
2 AliAnalysisTaskSEDmesonsFilterCJ::ECandidateType cand = AliAnalysisTaskSEDmesonsFilterCJ::kDstartoKpipi,
3 TString filename = "DStartoKpipiCuts.root",
4 Bool_t theMCon = kFALSE,
5 Bool_t reco = kTRUE /*must be true if theMCon is false*/,
7 TString jetArrname = "",
8 Bool_t triggerOnLeadingJet = kFALSE,
9 Int_t leadingHadType = 0 /*0 = charged, 1 = neutral, 2 = both*/,
12 const char *cutType = "TPC",
13 Double_t percjetareacut = 1.,
14 AliAnalysisTaskEmcal::TriggerType trType=AliAnalysisTaskEmcal::kND
17 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
19 ::Error("AddTaskSEDmesonsFilterCJ", "No analysis manager to connect to.");
23 Bool_t useStdC = kFALSE;
24 TFile* filecuts=TFile::Open(filename);
25 if(!filecuts || (filecuts && !filecuts->IsOpen())) {
26 cout<<"Input file not found: use std cuts"<<endl;
30 AliRDHFCuts *analysiscuts=0x0;
34 analysiscuts = new AliRDHFCutsD0toKpi();
35 analysiscuts->SetStandardCutsPP2010();
37 analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get("D0toKpiCuts");
41 analysiscuts = new AliRDHFCutsDStartoKpipi();
42 analysiscuts->SetStandardCutsPP2010();
44 analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get("DStartoKpipiCuts");
45 analysiscuts->SetName("DStartoKpipiCuts");
49 if (!analysiscuts) { // mm let's see if everything is ok
50 AliFatal("Specific AliRDHFCuts not found");
54 printf("CREATE TASK\n"); //CREATE THE TASK
57 AliAnalysisTaskSEDmesonsFilterCJ *taskFilter = new AliAnalysisTaskSEDmesonsFilterCJ("AnaTaskSEDmesonsFilterCJ",analysiscuts,cand);
58 if(!theMCon) reco=kTRUE;
59 taskFilter->SetMC(theMCon); //D meson settings
60 taskFilter->SetUseReco(reco);
61 taskFilter->SetName("AliAnalysisTaskSEDmesonsFilterCJ");
62 mgr->AddTask(taskFilter);
66 AliAnalysisTaskFlavourJetCorrelations *taskCorr = new AliAnalysisTaskFlavourJetCorrelations("AnaTaskFlavourJetCorrelations",
68 taskCorr->SetName("AliAnalysisTaskFlavourJetCorrelations");
69 taskCorr->SetJetsName(jetArrname);
70 taskCorr->SetMC(theMCon);
71 taskCorr->SetUseReco(reco);
72 taskCorr->SetTriggerOnLeadingJet(triggerOnLeadingJet);
73 taskCorr->SetJetAcceptanceType(cutType);
74 taskCorr->SetJetPtCut(jptcut);
75 taskCorr->SetPercAreaCut(percjetareacut);
76 taskCorr->SetMakeGeneralHistograms(kTRUE);
77 if(theMCon && trType!=AliAnalysisTaskEmcal::kND){
78 taskCorr->SetCaloTriggerPatchInfoName("EmcalTriggers");
79 taskCorr->SetTriggerTypeSel(trType);
81 mgr->AddTask(taskCorr);
85 if(reco) suffix+="rec";
88 TString candname="DStar";
89 if(cand==0) candname="D0";
91 // Create and connect containers for input/output
92 TString outputfile = AliAnalysisManager::GetCommonFileName();
93 TString outputfileF = outputfile, outputfileC = outputfile;
94 outputfileF += ":PWG3_D2H_DmesonsForJetCorrelations";
95 outputfileC += ":PWG3_D2H_DEmcalJet";
97 outputfileF += suffix;
98 outputfileC += suffix;
100 TString nameContainerF0="histograms";
101 TString nameContainerF1="cuts";
103 TString nameContainerC0="hCor";
104 TString nameContainerC1="cutsJ";
106 TString nameContainerFC2="Dcandidates";
107 TString nameContainerFC3="DSBcandidates";
109 nameContainerF0 += candname;
110 nameContainerF1 += candname;
111 nameContainerC0 += candname;
112 nameContainerC1 += candname;
113 nameContainerFC2 += candname;
114 nameContainerFC3 += candname;
116 nameContainerF0 += suffix;
117 nameContainerF1 += suffix;
118 nameContainerC0 += suffix;
119 nameContainerC1 += suffix;
120 nameContainerFC2 += suffix;
121 nameContainerFC3 += suffix;
124 // ------ input data ------
125 AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();
126 cinput0->SetName(Form("in%s%s",candname.Data(),suffix.Data()));
128 // ----- output data -----
130 AliAnalysisDataContainer *coutputF0 = mgr->CreateContainer(nameContainerF0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileF.Data());
132 AliAnalysisDataContainer *coutputF1 = mgr->CreateContainer(nameContainerF1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfileF.Data());
134 AliAnalysisDataContainer *coutputC0 = mgr->CreateContainer(nameContainerC0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileC.Data());
136 AliAnalysisDataContainer *coutputC1 = mgr->CreateContainer(nameContainerC1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfileC.Data());
138 AliAnalysisDataContainer *coutputFC2 = mgr->CreateContainer(nameContainerFC2, TClonesArray::Class(),AliAnalysisManager::kExchangeContainer, outputfileF.Data()); //
140 AliAnalysisDataContainer *coutputFC3 = mgr->CreateContainer(nameContainerFC3, TClonesArray::Class(),AliAnalysisManager::kExchangeContainer, outputfileF.Data()); //
142 mgr->ConnectInput(taskFilter,0,cinput0);
143 mgr->ConnectInput(taskCorr,0,cinput0);
145 mgr->ConnectOutput(taskFilter,1,coutputF0);
146 mgr->ConnectOutput(taskFilter,2,coutputF1);
147 mgr->ConnectOutput(taskFilter,3,coutputFC2);
148 mgr->ConnectOutput(taskFilter,4,coutputFC3);
151 mgr->ConnectInput(taskCorr,1,coutputFC2);
152 mgr->ConnectInput(taskCorr,2,coutputFC3);
153 mgr->ConnectOutput(taskCorr,1,coutputC0);
154 mgr->ConnectOutput(taskCorr,2,coutputC1);
155 //if(cand==1) mgr->ConnectOutput(task,4,coutput4);
157 Printf("Input and Output connected to the manager");