Updates from Chiara
[u/mrichter/AliRoot.git] / PWGJE / FlavourJetTasks / macros / AddTaskFlavourJetCorrelations.C
1 AliAnalysisTaskFlavourJetCorrelations *AddTaskFlavourJetCorrelations(
2   AliAnalysisTaskFlavourJetCorrelations::ECandidateType cand = AliAnalysisTaskFlavourJetCorrelations::kDstartoKpipi,
3   TString filename = "DStartoKpipiCuts.root",
4   Bool_t theMCon = kFALSE,
5   TString jetArrname = "",
6   TString suffix = "",
7   Bool_t triggerOnLeadingJet = kFALSE,
8   Float_t R = 0.4,
9   Float_t jptcut = 10.,
10   Int_t acceptance = 1 /*1= 0-2pi, 2=emcal cut*/,
11   Double_t areaCut = 0.)
12 {
13   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
14   if (!mgr) {
15     ::Error("AddTaskFlavourJetCorrelations::AddTaskFlavourJetCorrelations", "No analysis manager to connect to.");
16     return NULL;
17   } 
18
19   Bool_t useStdC = kFALSE;
20   TFile* filecuts=TFile::Open(filename);
21   if (!filecuts || (filecuts && !filecuts->IsOpen())) {
22     cout<<"Input file not found: use std cuts"<<endl;
23     useStdC = kTRUE;
24   }
25
26   AliRDHFCuts *analysiscuts = 0x0;
27   switch (cand) {
28   case 0 :
29     if (useStdC) {
30       analysiscuts = new AliRDHFCutsD0toKpi();
31       analysiscuts->SetStandardCutsPP2010();
32     } else
33       analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get("D0toKpiCuts");
34     break;
35   case 1 :
36     if(useStdC) {
37       analysiscuts = new AliRDHFCutsDStartoKpipi();
38       analysiscuts->SetStandardCutsPP2010();
39     } else
40       analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get("DStartoKpipiCuts");
41     analysiscuts->SetName("DStartoKpipiCuts");
42     break;
43   }
44   
45   if (!analysiscuts) { // mm let's see if everything is ok
46     AliFatal("Specific AliRDHFCuts not found");
47     return;
48   }
49
50   printf("CREATE TASK\n"); //CREATE THE TASK
51
52   // create the task
53   AliAnalysisTaskFlavourJetCorrelations *task = new AliAnalysisTaskFlavourJetCorrelations("AnaTaskFlavourJetCorrelations", analysiscuts, cand, jetArrname);
54
55   //D meson settings
56   task->SetMC(theMCon);
57   task->SetTriggerOnLeadingJet(triggerOnLeadingJet);
58
59   //jet settings
60  
61   task->SetJetRadius(R);
62   task->SetJetPtCut(jptcut);
63
64   Float_t etaCov=0.9;
65   if (acceptance==2) etaCov=0.7; //EMCal
66
67   Float_t minEta = -etaCov+R;
68   Float_t maxEta =  etaCov-R;
69   if (acceptance) task->SetJetEtaLimits(minEta, maxEta);
70
71   Float_t minPhi = 0.;
72   Float_t maxPhi = 2.*TMath::Pi();
73  
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   
80   mgr->AddTask(task);
81
82   // Create and connect containers for input/output
83   TString outputfile = AliAnalysisManager::GetCommonFileName();
84   outputfile += ":PWG3_D2H_DEmcalJet";
85   outputfile += suffix;
86
87   TString candname="DStar"; 
88   if(cand==0)  candname="D0";
89
90   TString nameContainer1="hCor";
91   TString nameContainer2="cutsJ";
92
93   nameContainer1 += candname;
94   nameContainer2 += candname;
95   
96   nameContainer1 += suffix;
97   nameContainer2 += suffix;
98   // ------ input data ------
99   AliAnalysisDataContainer *cinput0  = mgr->GetCommonInputContainer();
100
101   // ----- output data -----
102   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(nameContainer1, TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
103   AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(nameContainer2, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfile.Data());
104
105   mgr->ConnectInput(task,0,mgr->GetCommonInputContainer());
106   mgr->ConnectOutput(task,1,coutput1);
107   mgr->ConnectOutput(task,2,coutput2);
108
109
110   Printf("Input and Output connected to the manager");
111   return task ;
112 }