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