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,
18 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
20 ::Error("AddTaskSEDmesonsFilterCJ", "No analysis manager to connect to.");
24 Bool_t useStdC = kFALSE;
25 TFile* filecuts=TFile::Open(filename);
26 if(!filecuts || (filecuts && !filecuts->IsOpen())) {
27 cout<<"Input file not found: use std cuts"<<endl;
31 AliRDHFCuts *analysiscuts=0x0;
35 analysiscuts = new AliRDHFCutsD0toKpi();
36 analysiscuts->SetStandardCutsPP2010();
38 analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get("D0toKpiCuts");
42 analysiscuts = new AliRDHFCutsDStartoKpipi();
43 analysiscuts->SetStandardCutsPP2010();
45 analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get("DStartoKpipiCuts");
46 analysiscuts->SetName("DStartoKpipiCuts");
50 if (!analysiscuts) { // mm let's see if everything is ok
51 AliFatal("Specific AliRDHFCuts not found");
55 printf("CREATE TASK\n"); //CREATE THE TASK
57 TString candname="DStar";
58 if(cand==0) candname="D0";
60 TString taskFiltername="DmesonsFilterCJ";
61 taskFiltername+=candname;
62 taskFiltername+=suffix;
63 if(theMCon) taskFiltername+="MC";
64 if(!reco) taskFiltername+="gen";
66 AliAnalysisTaskSEDmesonsFilterCJ* taskFilter = mgr->GetTask(taskFiltername.Data());
68 taskFilter = new AliAnalysisTaskSEDmesonsFilterCJ(taskFiltername.Data(),analysiscuts,cand);
69 if(!theMCon) reco=kTRUE;
70 taskFilter->SetMC(theMCon); //D meson settings
71 taskFilter->SetUseReco(reco);
72 mgr->AddTask(taskFilter);
76 TString taskCorrName="TaskFlavourJetCorrelations";
77 taskCorrName+=candname;
79 if(theMCon) taskCorrName+="MC";
80 if(!reco) taskCorrName+="gen";
81 taskCorrName+=cutType;
82 taskCorrName+=Form("PTj%.0f",jptcut);
85 AliAnalysisTaskFlavourJetCorrelations *taskCorr = new AliAnalysisTaskFlavourJetCorrelations(taskCorrName.Data(),
88 taskCorr->SetJetsName(jetArrname);
89 taskCorr->SetMC(theMCon);
90 taskCorr->SetUseReco(reco);
91 taskCorr->SetTriggerOnLeadingJet(triggerOnLeadingJet);
92 taskCorr->SetJetAcceptanceType(cutType);
93 taskCorr->SetJetPtCut(jptcut);
94 taskCorr->SetPercAreaCut(percjetareacut);
95 taskCorr->SetTypeDJetSelection(typeDjet);
96 if(theMCon && trType!=AliAnalysisTaskEmcal::kND){
97 taskCorr->SetCaloTriggerPatchInfoName("EmcalTriggers");
98 taskCorr->SetTriggerTypeSel(trType);
100 mgr->AddTask(taskCorr);
104 if(reco) suffix+="rec";
108 // Create and connect containers for input/output
109 TString outputfile = AliAnalysisManager::GetCommonFileName();
110 TString outputfileF = outputfile, outputfileC = outputfile;
111 outputfileF += ":PWG3_D2H_DmesonsForJetCorrelations";
112 outputfileC += ":PWG3_D2H_DEmcalJet";
114 outputfileF += suffix;
115 outputfileC += suffix;
117 TString nameContainerF0="histograms";
118 TString nameContainerF1="cuts";
120 TString nameContainerC0="hCor";
121 TString nameContainerC1="cutsJ";
123 TString nameContainerFC2="Dcandidates";
124 TString nameContainerFC3="DSBcandidates";
126 nameContainerF0 += candname;
127 nameContainerF1 += candname;
128 nameContainerC0 += candname;
129 nameContainerC1 += candname;
130 nameContainerFC2 += candname;
131 nameContainerFC3 += candname;
133 nameContainerF0 += suffix;
134 nameContainerF1 += suffix;
135 nameContainerC0 += suffix;
136 nameContainerC1 += suffix;
137 nameContainerFC2 += suffix;
138 nameContainerFC3 += suffix;
141 // ------ input data ------
142 AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();
143 cinput0->SetName(Form("in%s%s",candname.Data(),suffix.Data()));
145 // ----- output data -----
147 AliAnalysisDataContainer *coutputF0 = mgr->CreateContainer(nameContainerF0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileF.Data());
149 AliAnalysisDataContainer *coutputF1 = mgr->CreateContainer(nameContainerF1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfileF.Data());
151 AliAnalysisDataContainer *coutputC0 = mgr->CreateContainer(nameContainerC0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileC.Data());
153 AliAnalysisDataContainer *coutputC1 = mgr->CreateContainer(nameContainerC1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfileC.Data());
155 AliAnalysisDataContainer *coutputFC2 = mgr->CreateContainer(nameContainerFC2, TClonesArray::Class(),AliAnalysisManager::kExchangeContainer, outputfileF.Data()); //
157 AliAnalysisDataContainer *coutputFC3 = mgr->CreateContainer(nameContainerFC3, TClonesArray::Class(),AliAnalysisManager::kExchangeContainer, outputfileF.Data()); //
159 mgr->ConnectInput(taskFilter,0,cinput0);
160 mgr->ConnectInput(taskCorr,0,cinput0);
162 mgr->ConnectOutput(taskFilter,1,coutputF0);
163 mgr->ConnectOutput(taskFilter,2,coutputF1);
164 mgr->ConnectOutput(taskFilter,3,coutputFC2);
165 mgr->ConnectOutput(taskFilter,4,coutputFC3);
168 mgr->ConnectInput(taskCorr,1,coutputFC2);
169 mgr->ConnectInput(taskCorr,2,coutputFC3);
170 mgr->ConnectOutput(taskCorr,1,coutputC0);
171 mgr->ConnectOutput(taskCorr,2,coutputC1);
172 //if(cand==1) mgr->ConnectOutput(task,4,coutput4);
174 Printf("Input and Output connected to the manager");