]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/vertexingHF/charmFlow/AddTaskHFv2.C
Mem.leak fix: Get(...) only once per object
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / charmFlow / AddTaskHFv2.C
CommitLineData
1bea13e6 1AliAnalysisTaskSEHFv2 *AddTaskHFv2(TString filename="DplustoKpipiCutsPbPb.root",AliAnalysisTaskSEHFv2::DecChannel decCh=AliAnalysisTaskSEHFv2::kDplustoKpipi,TString cutsobjname="AnalysisCuts", Bool_t readMC=kFALSE, TString suffix="", Int_t flagep=0 /*0=tracks,1=V0,2=v0A,3=V0C*/,Float_t minC=20.,Float_t maxC=80.)
a8f6c03f 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 }
f97320e9 18
a8f6c03f 19 Bool_t stdcuts=kFALSE;
f97320e9 20 TFile* filecuts;
21 if( filename.EqualTo("") ) {
22 stdcuts=kTRUE;
23 } else {
24 filecuts=TFile::Open(filename.Data());
25 if(!filecuts ||(filecuts&& !filecuts->IsOpen())){
26 AliFatal("Input file not found : check your cut object");
27 }
a8f6c03f 28 }
29
30 AliRDHFCuts *analysiscuts=0x0;
f97320e9 31 Int_t pdgmes=-1;
a8f6c03f 32 //Analysis cuts
f97320e9 33
6e88402f 34 if(decCh==AliAnalysisTaskSEHFv2::kDplustoKpipi){
f97320e9 35 if(stdcuts){
36 analysiscuts = new AliRDHFCutsDplustoKpipi();
37 analysiscuts->SetStandardCutsPbPb2011();
38 }else analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(cutsobjname);
39 suffix.Prepend("Dplus");
40 pdgmes=411;
6e88402f 41 }else if(decCh==AliAnalysisTaskSEHFv2::kD0toKpi){
f97320e9 42 if(stdcuts) {
43 analysiscuts = new AliRDHFCutsD0toKpi();
44 analysiscuts->SetStandardCutsPbPb2011();
45 }
46 else analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get(cutsobjname);
47 suffix.Prepend("Dzero");
48 pdgmes=421;
6e88402f 49 }else if(decCh==AliAnalysisTaskSEHFv2::kDstartoKpipi){
f97320e9 50 if(stdcuts) {
51 analysiscuts = new AliRDHFCutsDStartoKpipi();
52 analysiscuts->SetStandardCutsPbPb2011();
53 }
54 else analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get(cutsobjname);
55 suffix.Prepend("Dstar");
56 pdgmes=413;
57 }
58 if(pdgmes==-1){
59 AliFatal("Wrong meson setting");
6e88402f 60 }
a8f6c03f 61 if(!analysiscuts){
6e88402f 62 AliFatal("Specific AliRDHFCuts not found");
a8f6c03f 63 }
64
a8f6c03f 65 // Analysis task
aaf4df1a 66 AliAnalysisTaskSEHFv2 *v2Task = new AliAnalysisTaskSEHFv2("HFv2Analysis",analysiscuts,decCh);
f97320e9 67 v2Task->SetReadMC(readMC);
aaf4df1a 68 v2Task->SetEtaGapFeatureForEventplaneFromTracks(kFALSE);
8a562c17 69 if(decCh == AliAnalysisTaskSEHFv2::kDstartoKpipi){
70 v2Task->SetNMassBins(200);}
71 else if(decCh == AliAnalysisTaskSEHFv2::kDplustoKpipi || decCh == AliAnalysisTaskSEHFv2::kD0toKpi){
72 v2Task->SetNMassBins(104);
73 v2Task->SetMassLimits(0.2,pdgmes);}
1bea13e6 74 v2Task->SetMinCentrality(minC);
75 v2Task->SetMaxCentrality(maxC);
a8f6c03f 76 v2Task->SetDebugLevel(0);
aaf4df1a 77 v2Task->SetV0EventPlaneOrder(2);
e74d1295 78 if(flagep==0){
1c451ce0 79 v2Task->SetTPCEP();
f97320e9 80 suffix+="TPC";
1c451ce0 81 }else if(flagep==1){
e74d1295 82 v2Task->SetVZEROEP();
f97320e9 83 suffix+="VZERO";
1c451ce0 84 }else if(flagep==2){
85 v2Task->SetVZEROAEP();
86 suffix+="VZEROA";
87 }else if(flagep==3){
88 v2Task->SetVZEROCEP();
89 suffix+="VZEROC";
e74d1295 90 }
a8f6c03f 91 mgr->AddTask(v2Task);
92
93 // Create containers for input/output
94
95 TString contname=Form("cinputv2%s",suffix.Data());
96 AliAnalysisDataContainer *cinputv2 = mgr->CreateContainer(contname.Data(),TChain::Class(),AliAnalysisManager::kInputContainer);
97
98 TString outputfile = AliAnalysisManager::GetCommonFileName();
f97320e9 99 TString outputhistos = Form("%s:PWGHF_D2H_HFv2_%s",outputfile.Data(),suffix.Data());
a8f6c03f 100
101 contname=Form("hEventsInfo%s",suffix.Data());
f97320e9 102 AliAnalysisDataContainer *coutputstat = mgr->CreateContainer(contname.Data(),TH1F::Class(),AliAnalysisManager::kOutputContainer,outputhistos.Data());
a8f6c03f 103
104 contname=Form("coutputv2%s",suffix.Data());
f97320e9 105 AliAnalysisDataContainer *coutputv2 = mgr->CreateContainer(contname.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,outputhistos.Data());
a8f6c03f 106
107 contname=Form("cutobj%s",suffix.Data());
f97320e9 108 AliAnalysisDataContainer *cutobj = mgr->CreateContainer(contname.Data(),AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer,outputhistos.Data());
a8f6c03f 109
110 mgr->ConnectInput(v2Task,0,mgr->GetCommonInputContainer());
111
112 mgr->ConnectOutput(v2Task,1,coutputstat);
113
114 mgr->ConnectOutput(v2Task,2,coutputv2);
115
116 mgr->ConnectOutput(v2Task,3,cutobj);
117
a8f6c03f 118 return v2Task;
119}