]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/charmFlow/AddTaskHFv2.C
Updates to run with deltas (L. Cunqueiro)
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / charmFlow / AddTaskHFv2.C
1 AliAnalysisTaskSEHFv2 *AddTaskHFv2(TString filename="DplustoKpipiCuts.root", AliAnalysisTaskSEHFv2::DecChannel decCh=AliAnalysisTaskSEHFv2::kD0toKpi,Bool_t readMC=kFALSE,TString name="",Int_t flagep=1 /*0=tracks,1=V0*/)
2 {
3   //
4   // Test macro for the AliAnalysisTaskSE for  D 
5   // mesons v2 analysis with event plane method
6   // Authors: Chiara Bianchin, cbianchi@pd.infn.it, 
7   //          Robert Grajcarek, grajcarek@physi.uni-heidelberg.de
8   //          Giacomo Ortona, ortona@to.infn.it,
9   //          Carlos Perez Lara, carlos.eugenio.perez.lara@cern.ch
10   //          Francesco Prino, prino@to.infn.it
11   // Get the pointer to the existing analysis manager via the static access method.
12   //============================================================================
13   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
14   if (!mgr) {
15     ::Error("AddTaskHFv2", "No analysis manager to connect to.");
16     return NULL;
17   }
18   Bool_t stdcuts=kFALSE;
19   TFile* filecuts=new TFile(filename.Data());
20   if(!filecuts->IsOpen()){
21     cout<<"Input file not found:  using std cut object"<<endl;
22     stdcuts=kTRUE;
23   }
24   
25   AliRDHFCuts *analysiscuts=0x0;
26   TString suffix="";
27
28   TString cutsobjname="loosercuts";
29   //Analysis cuts
30   switch (decCh){
31   case 0:
32     cutsobjname="AnalysisCuts"; 
33     if(stdcuts){
34       analysiscuts = new AliRDHFCutsDplustoKpipi();
35       analysiscuts->SetStandardCutsPbPb2010();
36     }
37     else analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(cutsobjname);
38     suffix="Dplus";
39     break;
40   case 1:
41     cutsobjname="D0toKpiCuts";
42     if(stdcuts) {
43       analysiscuts = new AliRDHFCutsD0toKpi();
44       analysiscuts->SetStandardCutsPbPb2010();
45     }
46     else analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get(cutsobjname);
47     suffix="D0";
48     break;
49   case 2:
50     cutsobjname="DStartoKpipiCuts";
51     if(stdcuts) {
52       analysiscuts = new AliRDHFCutsDStartoKpipi();
53       analysiscuts->SetStandardCutsPbPb2010();
54     }
55     else analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get(cutsobjname);
56     suffix="Dstar";
57     break;
58   default:
59     cout<<"Not available"<<endl;
60     break;
61   }
62
63   if(!analysiscuts){
64     cout<<"Specific AliRDHFCuts not found"<<endl;
65     return;
66   }
67
68   suffix+=name;
69   const Int_t nphibins=4;
70   const Int_t nphibinlimits=nphibins+1;
71   Float_t pi=TMath::Pi();
72   Float_t philimits[nphibinlimits]={0., pi/4.,pi/2., 3./4.*pi, pi};
73
74   // Analysis task    
75   AliAnalysisTaskSEHFv2 *v2Task = new AliAnalysisTaskSEHFv2("HFv2Analysis",analysiscuts,decCh,nphibinlimits,philimits);
76   v2Task->SetReadMC(readMC);
77
78   v2Task->SetEtaGapFeatureForEventplaneFromTracks(kTRUE);
79   
80   v2Task->SetDebugLevel(0);
81   
82   if(flagep){
83     //histogram for V0
84     TFile *fpar = TFile::Open("VZEROParHist.root");
85     TH2D *hh[6];
86     for(Int_t i=0;i<6;i++){
87       TString hhname;hhname.Form("parhist%d_%d",(i+2)*10,(i+3)*10);
88       hh[i]=(TH2D*)fpar->Get(hhname.Data());
89     } 
90     v2Task->SetVZEROParHist(hh);
91   }
92   mgr->AddTask(v2Task);
93
94   // Create containers for input/output
95
96   TString contname=Form("cinputv2%s",suffix.Data());
97   AliAnalysisDataContainer *cinputv2 = mgr->CreateContainer(contname.Data(),TChain::Class(),AliAnalysisManager::kInputContainer);
98
99   TString outputfile = AliAnalysisManager::GetCommonFileName();
100   TString outputhistos = outputfile += ":PWG3_D2H_HFv2"; 
101
102   contname=Form("hEventsInfo%s",suffix.Data());
103   AliAnalysisDataContainer *coutputstat = mgr->CreateContainer(contname.Data(),TH1F::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
104
105   contname=Form("coutputv2%s",suffix.Data());
106   AliAnalysisDataContainer *coutputv2 = mgr->CreateContainer(contname.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
107
108   contname=Form("cutobj%s",suffix.Data());
109   AliAnalysisDataContainer *cutobj = mgr->CreateContainer(contname.Data(),AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
110
111   mgr->ConnectInput(v2Task,0,mgr->GetCommonInputContainer());
112   
113   mgr->ConnectOutput(v2Task,1,coutputstat);
114   
115   mgr->ConnectOutput(v2Task,2,coutputv2);
116
117   mgr->ConnectOutput(v2Task,3,cutobj);
118  
119   if(flagep){
120     contname=Form("coutputVZEROpar%s",suffix.Data());
121     AliAnalysisDataContainer *coutputpar = mgr->CreateContainer(contname.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
122     mgr->ConnectOutput(v2Task,4,coutputpar);
123   }
124
125   return v2Task;
126 }