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 Int_t thnsparse=1, /*-1 = no thnsparse, 0 = heavy, 1 = light*/
14 Double_t percjetareacut = 1.,
15 AliAnalysisTaskEmcal::TriggerType trType=AliAnalysisTaskEmcal::kND,
19 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
21 ::Error("AddTaskSEDmesonsFilterCJ", "No analysis manager to connect to.");
25 Bool_t useStdC = kFALSE;
26 TFile* filecuts=TFile::Open(filename);
27 if(!filecuts || (filecuts && !filecuts->IsOpen())) {
28 cout<<"Input file not found: use std cuts"<<endl;
32 AliRDHFCuts *analysiscuts=0x0;
36 analysiscuts = new AliRDHFCutsD0toKpi();
37 analysiscuts->SetStandardCutsPP2010();
39 analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get("D0toKpiCuts");
43 analysiscuts = new AliRDHFCutsDStartoKpipi();
44 analysiscuts->SetStandardCutsPP2010();
46 analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get("DStartoKpipiCuts");
47 analysiscuts->SetName("DStartoKpipiCuts");
51 if (!analysiscuts) { // mm let's see if everything is ok
52 AliFatal("Specific AliRDHFCuts not found");
56 printf("CREATE TASK\n"); //CREATE THE TASK
58 TString candname="DStar";
59 if(cand==0) candname="D0";
61 TString taskFiltername="DmesonsFilterCJ";
62 taskFiltername+=candname;
63 taskFiltername+=suffix;
64 if(theMCon) taskFiltername+="MC";
65 if(!reco) taskFiltername+="gen";
67 AliAnalysisTaskSEDmesonsFilterCJ* taskFilter = mgr->GetTask(taskFiltername.Data());
69 taskFilter = new AliAnalysisTaskSEDmesonsFilterCJ(taskFiltername.Data(),analysiscuts,cand);
70 if(!theMCon) reco=kTRUE;
71 taskFilter->SetMC(theMCon); //D meson settings
72 taskFilter->SetUseReco(reco);
73 mgr->AddTask(taskFilter);
77 TString taskCorrName="TaskFlavourJetCorrelations";
78 taskCorrName+=candname;
80 if(theMCon) taskCorrName+="MC";
81 if(!reco) taskCorrName+="gen";
82 taskCorrName+=cutType;
83 taskCorrName+=Form("PTj%.0f",jptcut);
86 AliAnalysisTaskFlavourJetCorrelations *taskCorr = new AliAnalysisTaskFlavourJetCorrelations(taskCorrName.Data(),
89 taskCorr->SetJetsName(jetArrname);
90 taskCorr->SetMC(theMCon);
91 taskCorr->SetUseReco(reco);
92 taskCorr->SetTriggerOnLeadingJet(triggerOnLeadingJet);
93 taskCorr->SetJetAcceptanceType(cutType);
94 taskCorr->SetJetPtCut(jptcut);
95 taskCorr->SetPercAreaCut(percjetareacut);
96 taskCorr->SetTypeDJetSelection(typeDjet);
97 if(theMCon && trType!=AliAnalysisTaskEmcal::kND){
98 taskCorr->SetCaloTriggerPatchInfoName("EmcalTriggers");
99 taskCorr->SetTriggerTypeSel(trType);
101 if(thnsparse==-1)taskCorr->TurnOffTHnSparse();
102 if(thnsparse==0) taskCorr->HeavyTHnSparse();
103 if(thnsparse==1) taskCorr->LightTHnSparse();
105 mgr->AddTask(taskCorr);
109 if(reco) suffix+="rec";
113 // Create and connect containers for input/output
114 TString outputfile = AliAnalysisManager::GetCommonFileName();
115 TString outputfileF = outputfile, outputfileC = outputfile;
116 outputfileF += ":PWG3_D2H_DmesonsForJetCorrelations";
117 outputfileC += ":PWG3_D2H_DEmcalJet";
119 outputfileF += suffix;
120 outputfileC += suffix;
122 TString nameContainerF0="histograms";
123 TString nameContainerF1="cuts";
125 TString nameContainerC0="hCor";
126 TString nameContainerC1="cutsJ";
128 TString nameContainerFC2="Dcandidates";
129 TString nameContainerFC3="DSBcandidates";
131 nameContainerF0 += candname;
132 nameContainerF1 += candname;
133 nameContainerC0 += candname;
134 nameContainerC1 += candname;
135 nameContainerFC2 += candname;
136 nameContainerFC3 += candname;
138 nameContainerF0 += suffix;
139 nameContainerF1 += suffix;
140 nameContainerC0 += suffix;
141 nameContainerC1 += suffix;
142 nameContainerFC2 += suffix;
143 nameContainerFC3 += suffix;
146 // ------ input data ------
147 AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();
148 cinput0->SetName(Form("in%s%s",candname.Data(),suffix.Data()));
150 // ----- output data -----
152 AliAnalysisDataContainer *coutputF0 = mgr->CreateContainer(nameContainerF0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileF.Data());
154 AliAnalysisDataContainer *coutputF1 = mgr->CreateContainer(nameContainerF1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfileF.Data());
156 AliAnalysisDataContainer *coutputC0 = mgr->CreateContainer(nameContainerC0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileC.Data());
158 AliAnalysisDataContainer *coutputC1 = mgr->CreateContainer(nameContainerC1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfileC.Data());
160 AliAnalysisDataContainer *coutputFC2 = mgr->CreateContainer(nameContainerFC2, TClonesArray::Class(),AliAnalysisManager::kExchangeContainer, outputfileF.Data()); //
162 AliAnalysisDataContainer *coutputFC3 = mgr->CreateContainer(nameContainerFC3, TClonesArray::Class(),AliAnalysisManager::kExchangeContainer, outputfileF.Data()); //
164 mgr->ConnectInput(taskFilter,0,cinput0);
165 mgr->ConnectInput(taskCorr,0,cinput0);
167 mgr->ConnectOutput(taskFilter,1,coutputF0);
168 mgr->ConnectOutput(taskFilter,2,coutputF1);
169 mgr->ConnectOutput(taskFilter,3,coutputFC2);
170 mgr->ConnectOutput(taskFilter,4,coutputFC3);
173 mgr->ConnectInput(taskCorr,1,coutputFC2);
174 mgr->ConnectInput(taskCorr,2,coutputFC3);
175 mgr->ConnectOutput(taskCorr,1,coutputC0);
176 mgr->ConnectOutput(taskCorr,2,coutputC1);
177 //if(cand==1) mgr->ConnectOutput(task,4,coutput4);
179 Printf("Input and Output connected to the manager");