bf5b418b2aa5e23b4e7a861697830984a349fda2
[u/mrichter/AliRoot.git] / PWGJE / FlavourJetTasks / macros / AddTaskFlavourJetCorrelations.C
1 // $Id$
2
3 AliAnalysisTaskFlavourJetCorrelations *AddTaskFlavourJetCorrelations(
4   AliAnalysisTaskRecoJetCorrelations::ECandidateType cand = AliAnalysisTaskRecoJetCorrelations::kDstartoKpipi,
5   TString filename = "DStartoKpipiCuts.root",
6   Bool_t theMCon = kFALSE,
7   TString jetArrname = "",
8   TString suffix = "",
9   Bool_t triggerOnLeadingJet = kFALSE,
10   Float_t R = 0.4,
11   Float_t jptcut = 10.,
12   Int_t acceptance = 1 /*1= 0-2pi, 2=emcal cut*/,
13   Double_t areaCut = 0.)
14 {
15   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
16   if (!mgr) {
17     ::Error("AddTaskFlavourJetCorrelations::AddTaskFlavourJetCorrelations", "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   AliAnalysisTaskFlavourJetCorrelations *task = new AliAnalysisTaskFlavourJetCorrelations("AnaTaskFlavourJetCorrelations", analysiscuts, cand, jetArrname);
56
57   //D meson settings
58   task->SetMC(theMCon);
59   task->SetTriggerOnLeadingJet(triggerOnLeadingJet);
60
61   //jet settings
62   task->SetJetRadius(R);
63   task->SetJetPtCut(jptcut);
64
65   Float_t etaCov=0.9;
66   if (acceptance==2) etaCov=0.7; //EMCal
67
68   Float_t minEta = -etaCov+R;
69   Float_t maxEta =  etaCov-R;
70   if (acceptance) task->SetJetEtaLimits(minEta, maxEta);
71
72   Float_t minPhi = 0.;
73   Float_t maxPhi = 2.*TMath::Pi();
74 //if (acceptance==2) { /*80-180 degree*/ }
75   if (acceptance) task->SetJetPhiLimits(minPhi, maxPhi);
76
77   //Float_t area=0.6*TMath::Pi()*R*R;
78   task->SetJetAreaCut(areaCut);
79   mgr->AddTask(task);
80
81   // Create and connect containers for input/output
82   TString outputfile = AliAnalysisManager::GetCommonFileName();
83   outputfile += ":PWG3_D2H_DEmcalJet";
84   outputfile += suffix;
85
86   TString nameContainer0="histogramsCorrelations";
87   TString nameContainer1="cuts";
88
89   nameContainer0 += suffix;
90   nameContainer1 += suffix;
91
92   // ------ input data ------
93   AliAnalysisDataContainer *cinput0  = mgr->GetCommonInputContainer();
94
95   // ----- output data -----
96
97   // output TH1I for event counting
98   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(nameContainer0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
99   AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(nameContainer1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfile.Data());
100
101   mgr->ConnectInput(task,0,mgr->GetCommonInputContainer());
102   mgr->ConnectOutput(task,1,coutput1);
103   mgr->ConnectOutput(task,2,coutput2);
104
105   Printf("Input and Output connected to the manager");
106   return task ;
107 }