]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/FlavourJetTasks/macros/AddTaskDFilterAndCorrelations.C
Merge branch 'TPCdev' of https://git.cern.ch/reps/AliRoot into TPCdev
[u/mrichter/AliRoot.git] / PWGJE / FlavourJetTasks / macros / AddTaskDFilterAndCorrelations.C
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   AliAnalysisTaskEmcal::TriggerType trType=AliAnalysisTaskEmcal::kND,
15   Int_t typeDjet=2
16 )
17 {
18   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
19   if (!mgr) {
20     ::Error("AddTaskSEDmesonsFilterCJ", "No analysis manager to connect to.");
21     return NULL;
22   } 
23
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;
28     useStdC = kTRUE;
29   }
30
31   AliRDHFCuts *analysiscuts=0x0;
32   switch (cand) {
33   case 0 :
34     if(useStdC) {
35       analysiscuts = new AliRDHFCutsD0toKpi();
36       analysiscuts->SetStandardCutsPP2010();
37     } else
38       analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get("D0toKpiCuts");
39     break;
40   case 1 :
41     if(useStdC) {
42       analysiscuts = new AliRDHFCutsDStartoKpipi();
43       analysiscuts->SetStandardCutsPP2010();
44     } else
45       analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get("DStartoKpipiCuts");
46     analysiscuts->SetName("DStartoKpipiCuts");
47     break;
48   }
49   
50   if (!analysiscuts) { // mm let's see if everything is ok
51     AliFatal("Specific AliRDHFCuts not found");
52     return;
53   } 
54
55   printf("CREATE TASK\n"); //CREATE THE TASK
56
57   TString candname="DStar"; 
58   if(cand==0)  candname="D0";
59
60   TString taskFiltername="DmesonsFilterCJ";
61   taskFiltername+=candname;
62   taskFiltername+=suffix;
63   if(theMCon) taskFiltername+="MC";
64   if(!reco)   taskFiltername+="gen";
65   
66   AliAnalysisTaskSEDmesonsFilterCJ* taskFilter = mgr->GetTask(taskFiltername.Data());
67   if (!taskFilter){
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);
73   }
74
75   // create the task
76   TString taskCorrName="TaskFlavourJetCorrelations";
77   taskCorrName+=candname;
78   taskCorrName+=suffix;
79   if(theMCon) taskCorrName+="MC";
80   if(!reco)   taskCorrName+="gen";
81   taskCorrName+=cutType;
82   taskCorrName+=Form("PTj%.0f",jptcut);
83   taskCorrName+="";
84   
85   AliAnalysisTaskFlavourJetCorrelations *taskCorr = new AliAnalysisTaskFlavourJetCorrelations(taskCorrName.Data(), 
86      analysiscuts, cand);
87   
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);
99   }
100   mgr->AddTask(taskCorr);
101
102   if(theMCon) {
103      suffix+="MC";
104      if(reco) suffix+="rec";  
105   }
106   
107   
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";
113   
114   outputfileF += suffix;
115   outputfileC += suffix;
116
117   TString nameContainerF0="histograms";
118   TString nameContainerF1="cuts";
119   
120   TString nameContainerC0="hCor";
121   TString nameContainerC1="cutsJ";
122
123   TString nameContainerFC2="Dcandidates";
124   TString nameContainerFC3="DSBcandidates";
125
126   nameContainerF0  += candname;
127   nameContainerF1  += candname;
128   nameContainerC0  += candname;
129   nameContainerC1  += candname;
130   nameContainerFC2 += candname;
131   nameContainerFC3 += candname;
132   
133   nameContainerF0  += suffix;
134   nameContainerF1  += suffix;
135   nameContainerC0  += suffix;
136   nameContainerC1  += suffix;
137   nameContainerFC2 += suffix;
138   nameContainerFC3 += suffix;
139   
140
141   // ------ input data ------
142   AliAnalysisDataContainer *cinput0  = mgr->GetCommonInputContainer();
143   cinput0->SetName(Form("in%s%s",candname.Data(),suffix.Data()));
144   
145   // ----- output data -----
146   
147   AliAnalysisDataContainer *coutputF0 = mgr->CreateContainer(nameContainerF0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileF.Data());
148   
149   AliAnalysisDataContainer *coutputF1 = mgr->CreateContainer(nameContainerF1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfileF.Data());
150   
151   AliAnalysisDataContainer *coutputC0 = mgr->CreateContainer(nameContainerC0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileC.Data());
152
153   AliAnalysisDataContainer *coutputC1 = mgr->CreateContainer(nameContainerC1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfileC.Data());
154   
155   AliAnalysisDataContainer *coutputFC2 = mgr->CreateContainer(nameContainerFC2, TClonesArray::Class(),AliAnalysisManager::kExchangeContainer, outputfileF.Data()); //
156   
157   AliAnalysisDataContainer *coutputFC3 = mgr->CreateContainer(nameContainerFC3, TClonesArray::Class(),AliAnalysisManager::kExchangeContainer, outputfileF.Data()); //
158   
159   mgr->ConnectInput(taskFilter,0,cinput0);
160   mgr->ConnectInput(taskCorr,0,cinput0);
161   
162   mgr->ConnectOutput(taskFilter,1,coutputF0);
163   mgr->ConnectOutput(taskFilter,2,coutputF1);
164   mgr->ConnectOutput(taskFilter,3,coutputFC2);
165   mgr->ConnectOutput(taskFilter,4,coutputFC3);
166   
167   
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);
173
174   Printf("Input and Output connected to the manager");
175   return; 
176 }
177