]>
Commit | Line | Data |
---|---|---|
bbb94467 | 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*/, | |
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", | |
13 | Double_t percjetareacut = 1.) | |
14 | { | |
15 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
16 | if (!mgr) { | |
17 | ::Error("AddTaskSEDmesonsFilterCJ", "No analysis manager to connect to."); | |
18 | return NULL; | |
19 | } | |
20 | ||
21 | Bool_t useStdC = kFALSE; | |
22 | TFile* filecuts=TFile::Open(filename); | |
23 | if(!filecuts || (filecuts && !filecuts->IsOpen())) { | |
24 | cout<<"Input file not found: use std cuts"<<endl; | |
25 | useStdC = kTRUE; | |
26 | } | |
27 | ||
28 | AliRDHFCuts *analysiscuts=0x0; | |
29 | switch (cand) { | |
30 | case 0 : | |
31 | if(useStdC) { | |
32 | analysiscuts = new AliRDHFCutsD0toKpi(); | |
33 | analysiscuts->SetStandardCutsPP2010(); | |
34 | } else | |
35 | analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get("D0toKpiCuts"); | |
36 | break; | |
37 | case 1 : | |
38 | if(useStdC) { | |
39 | analysiscuts = new AliRDHFCutsDStartoKpipi(); | |
40 | analysiscuts->SetStandardCutsPP2010(); | |
41 | } else | |
42 | analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get("DStartoKpipiCuts"); | |
43 | analysiscuts->SetName("DStartoKpipiCuts"); | |
44 | break; | |
45 | } | |
46 | ||
47 | if (!analysiscuts) { // mm let's see if everything is ok | |
48 | AliFatal("Specific AliRDHFCuts not found"); | |
49 | return; | |
50 | } | |
51 | ||
52 | printf("CREATE TASK\n"); //CREATE THE TASK | |
53 | ||
54 | // create the task | |
55 | AliAnalysisTaskSEDmesonsFilterCJ *taskFilter = new AliAnalysisTaskSEDmesonsFilterCJ("AnaTaskSEDmesonsFilterCJ",analysiscuts,cand); | |
56 | if(!theMCon) reco=kTRUE; | |
57 | taskFilter->SetMC(theMCon); //D meson settings | |
58 | taskFilter->SetUseReco(reco); | |
59 | taskFilter->SetName("AliAnalysisTaskSEDmesonsFilterCJ"); | |
60 | mgr->AddTask(taskFilter); | |
61 | ||
62 | // create the task | |
63 | ||
64 | AliAnalysisTaskFlavourJetCorrelations *taskCorr = new AliAnalysisTaskFlavourJetCorrelations("AnaTaskFlavourJetCorrelations", | |
65 | analysiscuts, cand); | |
66 | taskCorr->SetName("AliAnalysisTaskFlavourJetCorrelations"); | |
67 | taskCorr->SetJetsName(jetArrname); | |
68 | taskCorr->SetMC(theMCon); | |
69 | taskCorr->SetUseReco(reco); | |
70 | taskCorr->SetTriggerOnLeadingJet(triggerOnLeadingJet); | |
71 | taskCorr->SetJetAcceptanceType(cutType); | |
72 | taskCorr->SetJetPtCut(jptcut); | |
73 | taskCorr->SetPercAreaCut(percjetareacut); | |
74 | ||
75 | mgr->AddTask(taskCorr); | |
76 | ||
77 | if(theMCon) { | |
78 | suffix+="MC"; | |
79 | if(reco) suffix+="rec"; | |
80 | } | |
81 | ||
82 | TString candname="DStar"; | |
83 | if(cand==0) candname="D0"; | |
84 | ||
85 | // Create and connect containers for input/output | |
86 | TString outputfile = AliAnalysisManager::GetCommonFileName(); | |
87 | TString outputfileF = outputfile, outputfileC = outputfile; | |
88 | outputfileF += ":PWG3_D2H_DmesonsForJetCorrelations"; | |
89 | outputfileC += ":PWG3_D2H_DEmcalJet"; | |
90 | ||
91 | outputfileF += suffix; | |
92 | outputfileC += suffix; | |
93 | ||
94 | TString nameContainerF0="histograms"; | |
95 | TString nameContainerF1="cuts"; | |
96 | ||
97 | TString nameContainerC0="hCor"; | |
98 | TString nameContainerC1="cutsJ"; | |
99 | ||
100 | TString nameContainerFC2="Dcandidates"; | |
101 | TString nameContainerFC3="DSBcandidates"; | |
102 | ||
103 | nameContainerF0 += candname; | |
104 | nameContainerF1 += candname; | |
105 | nameContainerC0 += candname; | |
106 | nameContainerC1 += candname; | |
107 | nameContainerFC2 += candname; | |
108 | nameContainerFC3 += candname; | |
109 | ||
110 | nameContainerF0 += suffix; | |
111 | nameContainerF1 += suffix; | |
112 | nameContainerC0 += suffix; | |
113 | nameContainerC1 += suffix; | |
114 | nameContainerFC2 += suffix; | |
115 | nameContainerFC3 += suffix; | |
116 | ||
117 | ||
118 | // ------ input data ------ | |
119 | AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer(); | |
120 | ||
121 | // ----- output data ----- | |
122 | ||
123 | AliAnalysisDataContainer *coutputF0 = mgr->CreateContainer(nameContainerF0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileF.Data()); | |
124 | ||
125 | AliAnalysisDataContainer *coutputF1 = mgr->CreateContainer(nameContainerF1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfileF.Data()); | |
126 | ||
127 | AliAnalysisDataContainer *coutputC0 = mgr->CreateContainer(nameContainerC0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileC.Data()); | |
128 | ||
129 | AliAnalysisDataContainer *coutputC1 = mgr->CreateContainer(nameContainerC1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfileC.Data()); | |
130 | ||
131 | AliAnalysisDataContainer *coutputFC2 = mgr->CreateContainer(nameContainerFC2, TClonesArray::Class(),AliAnalysisManager::kExchangeContainer, outputfileF.Data()); // | |
132 | ||
133 | AliAnalysisDataContainer *coutputFC3 = mgr->CreateContainer(nameContainerFC3, TClonesArray::Class(),AliAnalysisManager::kExchangeContainer, outputfileF.Data()); // | |
134 | ||
135 | mgr->ConnectInput(taskFilter,0,mgr->GetCommonInputContainer()); | |
136 | mgr->ConnectInput(taskCorr,0,mgr->GetCommonInputContainer()); | |
137 | ||
138 | mgr->ConnectOutput(taskFilter,1,coutputF0); | |
139 | mgr->ConnectOutput(taskFilter,2,coutputF1); | |
140 | mgr->ConnectOutput(taskFilter,3,coutputFC2); | |
141 | mgr->ConnectOutput(taskFilter,4,coutputFC3); | |
142 | ||
143 | ||
144 | mgr->ConnectInput(taskCorr,1,coutputFC2); | |
145 | mgr->ConnectInput(taskCorr,2,coutputFC3); | |
146 | mgr->ConnectOutput(taskCorr,1,coutputC0); | |
147 | mgr->ConnectOutput(taskCorr,2,coutputC1); | |
148 | //if(cand==1) mgr->ConnectOutput(task,4,coutput4); | |
149 | ||
150 | Printf("Input and Output connected to the manager"); | |
151 | return; | |
152 | } | |
153 |