]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/charmFlow/AddTaskHFv2.C
AddTasdk for v2 with EP modified to run in the lego train
[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=0 /*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
14   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
15   if (!mgr) {
16     ::Error("AddTaskHFv2", "No analysis manager to connect to.");
17     return NULL;
18   }
19
20   Bool_t stdcuts=kFALSE;
21   TFile* filecuts;
22   if( filename.EqualTo("") ) {
23     stdcuts=kTRUE; 
24   } else {
25       filecuts=TFile::Open(filename.Data());
26       if(!filecuts ||(filecuts&& !filecuts->IsOpen())){
27         AliFatal("Input file not found : check your cut object");
28       }
29   }
30   
31   AliRDHFCuts *analysiscuts=0x0;
32   TString suffix="";
33
34   TString cutsobjname="loosercuts";
35   //Analysis cuts
36   switch (decCh){
37   case 0:
38     cutsobjname="AnalysisCuts"; 
39     if(stdcuts){
40       analysiscuts = new AliRDHFCutsDplustoKpipi();
41       analysiscuts->SetStandardCutsPbPb2010();
42     }
43     else analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(cutsobjname);
44     suffix="Dplus";
45     break;
46   case 1:
47     cutsobjname="D0toKpiCuts";
48     if(stdcuts) {
49       analysiscuts = new AliRDHFCutsD0toKpi();
50       analysiscuts->SetStandardCutsPbPb2010();
51     }
52     else analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get(cutsobjname);
53     suffix="D0";
54     break;
55   case 2:
56     cutsobjname="DStartoKpipiCuts";
57     if(stdcuts) {
58       analysiscuts = new AliRDHFCutsDStartoKpipi();
59       analysiscuts->SetStandardCutsPbPb2010();
60     }
61     else analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get(cutsobjname);
62     suffix="Dstar";
63     break;
64   default:
65     cout<<"Not available"<<endl;
66     break;
67   }
68
69   if(!analysiscuts){
70     cout<<"Specific AliRDHFCuts not found"<<endl;
71     return;
72   }
73
74   suffix+=name;
75   const Int_t nphibins=4;
76   const Int_t nphibinlimits=nphibins+1;
77   Float_t pi=TMath::Pi();
78   Float_t philimits[nphibinlimits]={0., pi/4.,pi/2., 3./4.*pi, pi};
79
80   // Analysis task    
81   AliAnalysisTaskSEHFv2 *v2Task = new AliAnalysisTaskSEHFv2("HFv2Analysis",analysiscuts,decCh,nphibinlimits,philimits);
82   v2Task->SetReadMC(readMC);
83
84   v2Task->SetEtaGapFeatureForEventplaneFromTracks(kTRUE);
85   
86   v2Task->SetDebugLevel(0);
87   
88   if(flagep){
89     //histogram for V0
90     TFile *fpar = TFile::Open("VZEROParHist.root");
91     TH2D *hh[6];
92     for(Int_t i=0;i<6;i++){
93       TString hhname;hhname.Form("parhist%d_%d",(i+2)*10,(i+3)*10);
94       hh[i]=(TH2D*)fpar->Get(hhname.Data());
95     } 
96     v2Task->SetVZEROParHist(hh);
97   }
98   mgr->AddTask(v2Task);
99
100   // Create containers for input/output
101
102   TString contname=Form("cinputv2%s",suffix.Data());
103   AliAnalysisDataContainer *cinputv2 = mgr->CreateContainer(contname.Data(),TChain::Class(),AliAnalysisManager::kInputContainer);
104
105   TString outputfile = AliAnalysisManager::GetCommonFileName();
106   TString outputhistos = outputfile += ":PWG3_D2H_HFv2"; 
107
108   contname=Form("hEventsInfo%s",suffix.Data());
109   AliAnalysisDataContainer *coutputstat = mgr->CreateContainer(contname.Data(),TH1F::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
110
111   contname=Form("coutputv2%s",suffix.Data());
112   AliAnalysisDataContainer *coutputv2 = mgr->CreateContainer(contname.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
113
114   contname=Form("cutobj%s",suffix.Data());
115   AliAnalysisDataContainer *cutobj = mgr->CreateContainer(contname.Data(),AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
116
117   mgr->ConnectInput(v2Task,0,mgr->GetCommonInputContainer());
118   
119   mgr->ConnectOutput(v2Task,1,coutputstat);
120   
121   mgr->ConnectOutput(v2Task,2,coutputv2);
122
123   mgr->ConnectOutput(v2Task,3,cutobj);
124  
125   if(flagep){
126     contname=Form("coutputVZEROpar%s",suffix.Data());
127     AliAnalysisDataContainer *coutputpar = mgr->CreateContainer(contname.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
128     mgr->ConnectOutput(v2Task,4,coutputpar);
129   }
130
131   return v2Task;
132 }