]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/charmFlow/AddTaskHFv2.C
AddTask for HF v2 updated to use vzero EP
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / charmFlow / AddTaskHFv2.C
1 AliAnalysisTaskSEHFv2 *AddTaskHFv2(TString filename="DplustoKpipiCutsPbPb.root",AliAnalysisTaskSEHFv2::DecChannel decCh=AliAnalysisTaskSEHFv2::kDplustoKpipi,TString cutsobjname="AnalysisCuts", 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   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   //Analysis cuts
29   if(decCh==AliAnalysisTaskSEHFv2::kDplustoKpipi){
30     analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(cutsobjname);
31   }else if(decCh==AliAnalysisTaskSEHFv2::kD0toKpi){
32     analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get(cutsobjname);
33   }else if(decCh==AliAnalysisTaskSEHFv2::kDstartoKpipi){
34     analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get(cutsobjname);
35   }
36
37   if(!analysiscuts){
38     AliFatal("Specific AliRDHFCuts not found");
39   }
40
41   analysiscuts->SetUseCentrality(AliRDHFCuts::kCentV0M);
42   analysiscuts->SetRemoveDaughtersFromPrim(kFALSE);
43   analysiscuts->SetTriggerClass("");
44   analysiscuts->ResetMaskAndEnableMBTrigger();
45   analysiscuts->EnableCentralTrigger();
46   analysiscuts->EnableSemiCentralTrigger();
47   analysiscuts->SetMinCentrality(30.);
48   analysiscuts->SetMaxCentrality(80.);
49   ((AliRDHFCutsDplustoKpipi*)analysiscuts)->SetMinPtCandidate(3.);
50   ((AliRDHFCutsDplustoKpipi*)analysiscuts)->SetUseImpParProdCorrCut(kFALSE);
51   AliAODPidHF *pid = analysiscuts->GetPidHF();
52   pid->SetOldPid(kFALSE);
53   analysiscuts->SetPidHF(pid);
54   // Analysis task    
55   AliAnalysisTaskSEHFv2 *v2Task = new AliAnalysisTaskSEHFv2("HFv2Analysis",analysiscuts,decCh);
56   v2Task->SetReadMC(kFALSE);
57   v2Task->SetEtaGapFeatureForEventplaneFromTracks(kFALSE);
58   v2Task->SetNMassBins(104);
59   v2Task->SetMassLimits(0.2,411);
60   v2Task->SetDebugLevel(0);
61   v2Task->SetV0EventPlaneOrder(2);
62   if(flagep==0){
63     v2Task->SetTPCEP();//SetVZEROEPOnly();
64   }else{
65     v2Task->SetVZEROEP();
66   }
67   mgr->AddTask(v2Task);
68
69   // Create containers for input/output
70
71   TString contname=Form("cinputv2%s",suffix.Data());
72   AliAnalysisDataContainer *cinputv2 = mgr->CreateContainer(contname.Data(),TChain::Class(),AliAnalysisManager::kInputContainer);
73
74   TString outputfile = AliAnalysisManager::GetCommonFileName();
75   TString outputhistos = outputfile += ":PWG3_D2H_HFv2"; 
76
77   contname=Form("hEventsInfo%s",suffix.Data());
78   AliAnalysisDataContainer *coutputstat = mgr->CreateContainer(contname.Data(),TH1F::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
79
80   contname=Form("coutputv2%s",suffix.Data());
81   AliAnalysisDataContainer *coutputv2 = mgr->CreateContainer(contname.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
82
83   contname=Form("cutobj%s",suffix.Data());
84   AliAnalysisDataContainer *cutobj = mgr->CreateContainer(contname.Data(),AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
85
86   mgr->ConnectInput(v2Task,0,mgr->GetCommonInputContainer());
87   
88   mgr->ConnectOutput(v2Task,1,coutputstat);
89   
90   mgr->ConnectOutput(v2Task,2,coutputv2);
91
92   mgr->ConnectOutput(v2Task,3,cutobj);
93  
94   return v2Task;
95 }