]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/FlavourJetTasks/macros/AddTaskDFilterAndCorrelations.C
reduce and set THnSparse axes
[u/mrichter/AliRoot.git] / PWGJE / FlavourJetTasks / macros / AddTaskDFilterAndCorrelations.C
CommitLineData
bbb94467 1void *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*/,
6 TString suffix = "",
7 TString jetArrname = "",
8 Bool_t triggerOnLeadingJet = kFALSE,
9 Int_t leadingHadType = 0 /*0 = charged, 1 = neutral, 2 = both*/,
10 Float_t R = 0.4,
11 Float_t jptcut = 10.,
12 const char *cutType = "TPC",
ad6abcae 13 Int_t thnsparse=1, /*-1 = no thnsparse, 0 = heavy, 1 = light*/
76bf81f2 14 Double_t percjetareacut = 1.,
b2705b43 15 AliAnalysisTaskEmcal::TriggerType trType=AliAnalysisTaskEmcal::kND,
16 Int_t typeDjet=2
76bf81f2 17)
bbb94467 18{
19 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
20 if (!mgr) {
21 ::Error("AddTaskSEDmesonsFilterCJ", "No analysis manager to connect to.");
22 return NULL;
23 }
24
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;
29 useStdC = kTRUE;
30 }
31
32 AliRDHFCuts *analysiscuts=0x0;
33 switch (cand) {
34 case 0 :
35 if(useStdC) {
36 analysiscuts = new AliRDHFCutsD0toKpi();
37 analysiscuts->SetStandardCutsPP2010();
38 } else
39 analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get("D0toKpiCuts");
40 break;
41 case 1 :
42 if(useStdC) {
43 analysiscuts = new AliRDHFCutsDStartoKpipi();
44 analysiscuts->SetStandardCutsPP2010();
45 } else
46 analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get("DStartoKpipiCuts");
47 analysiscuts->SetName("DStartoKpipiCuts");
48 break;
49 }
50
51 if (!analysiscuts) { // mm let's see if everything is ok
52 AliFatal("Specific AliRDHFCuts not found");
53 return;
54 }
55
56 printf("CREATE TASK\n"); //CREATE THE TASK
57
ce11164d 58 TString candname="DStar";
59 if(cand==0) candname="D0";
60
61 TString taskFiltername="DmesonsFilterCJ";
62 taskFiltername+=candname;
63 taskFiltername+=suffix;
64 if(theMCon) taskFiltername+="MC";
65 if(!reco) taskFiltername+="gen";
66
67 AliAnalysisTaskSEDmesonsFilterCJ* taskFilter = mgr->GetTask(taskFiltername.Data());
68 if (!taskFilter){
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);
74 }
75
bbb94467 76 // create the task
ce11164d 77 TString taskCorrName="TaskFlavourJetCorrelations";
78 taskCorrName+=candname;
79 taskCorrName+=suffix;
80 if(theMCon) taskCorrName+="MC";
81 if(!reco) taskCorrName+="gen";
82 taskCorrName+=cutType;
83 taskCorrName+=Form("PTj%.0f",jptcut);
84 taskCorrName+="";
bbb94467 85
ce11164d 86 AliAnalysisTaskFlavourJetCorrelations *taskCorr = new AliAnalysisTaskFlavourJetCorrelations(taskCorrName.Data(),
bbb94467 87 analysiscuts, cand);
ce11164d 88
bbb94467 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);
b2705b43 96 taskCorr->SetTypeDJetSelection(typeDjet);
76bf81f2 97 if(theMCon && trType!=AliAnalysisTaskEmcal::kND){
98 taskCorr->SetCaloTriggerPatchInfoName("EmcalTriggers");
99 taskCorr->SetTriggerTypeSel(trType);
100 }
ad6abcae 101 if(thnsparse==-1)taskCorr->TurnOffTHnSparse();
102 if(thnsparse==0) taskCorr->HeavyTHnSparse();
103 if(thnsparse==1) taskCorr->LightTHnSparse();
104
bbb94467 105 mgr->AddTask(taskCorr);
106
107 if(theMCon) {
108 suffix+="MC";
109 if(reco) suffix+="rec";
110 }
111
bbb94467 112
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";
118
119 outputfileF += suffix;
120 outputfileC += suffix;
121
122 TString nameContainerF0="histograms";
123 TString nameContainerF1="cuts";
124
125 TString nameContainerC0="hCor";
126 TString nameContainerC1="cutsJ";
127
128 TString nameContainerFC2="Dcandidates";
129 TString nameContainerFC3="DSBcandidates";
130
131 nameContainerF0 += candname;
132 nameContainerF1 += candname;
133 nameContainerC0 += candname;
134 nameContainerC1 += candname;
135 nameContainerFC2 += candname;
136 nameContainerFC3 += candname;
137
138 nameContainerF0 += suffix;
139 nameContainerF1 += suffix;
140 nameContainerC0 += suffix;
141 nameContainerC1 += suffix;
142 nameContainerFC2 += suffix;
143 nameContainerFC3 += suffix;
144
145
146 // ------ input data ------
147 AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();
8577f7bc 148 cinput0->SetName(Form("in%s%s",candname.Data(),suffix.Data()));
bbb94467 149
150 // ----- output data -----
151
152 AliAnalysisDataContainer *coutputF0 = mgr->CreateContainer(nameContainerF0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileF.Data());
153
154 AliAnalysisDataContainer *coutputF1 = mgr->CreateContainer(nameContainerF1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfileF.Data());
155
156 AliAnalysisDataContainer *coutputC0 = mgr->CreateContainer(nameContainerC0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileC.Data());
157
158 AliAnalysisDataContainer *coutputC1 = mgr->CreateContainer(nameContainerC1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfileC.Data());
159
160 AliAnalysisDataContainer *coutputFC2 = mgr->CreateContainer(nameContainerFC2, TClonesArray::Class(),AliAnalysisManager::kExchangeContainer, outputfileF.Data()); //
161
162 AliAnalysisDataContainer *coutputFC3 = mgr->CreateContainer(nameContainerFC3, TClonesArray::Class(),AliAnalysisManager::kExchangeContainer, outputfileF.Data()); //
163
8577f7bc 164 mgr->ConnectInput(taskFilter,0,cinput0);
165 mgr->ConnectInput(taskCorr,0,cinput0);
bbb94467 166
167 mgr->ConnectOutput(taskFilter,1,coutputF0);
168 mgr->ConnectOutput(taskFilter,2,coutputF1);
169 mgr->ConnectOutput(taskFilter,3,coutputFC2);
170 mgr->ConnectOutput(taskFilter,4,coutputFC3);
171
172
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);
178
179 Printf("Input and Output connected to the manager");
180 return;
181}
182