]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/macros/AddTaskDplus.C
PWGHFbase converted to native cmake
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / macros / AddTaskDplus.C
1 AliAnalysisTaskSEDplus *AddTaskDplus(Int_t system=0/*0=pp,1=PbPb*/,
2                                      Float_t minC=0, Float_t maxC=100,
3                                      Bool_t storeNtuple=kFALSE,
4                                      Bool_t doSparse=kFALSE,
5                                      Bool_t readMC=kFALSE,
6                                      TString finDirname="Loose",
7                                      TString filename="",
8                                      TString finAnObjname="AnalysisCuts",
9                                      Int_t etaRange=0,
10                                      Bool_t cutsDistr=kFALSE)
11 {
12   //                                                                                                                                    
13   // Test macro for the AliAnalysisTaskSE for D+ candidates 
14
15   //Invariant mass histogram and                                                 
16   // association with MC truth (using MC info in AOD)                                                                                   
17   //  R. Bala, bala@to.infn.it                                                                                                                                  
18   // Get the pointer to the existing analysis manager via the static access method.                                                     
19   //==============================================================================                                                      
20   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
21   if (!mgr) {
22     ::Error("AddTaskDplus", "No analysis manager to connect to.");
23   }
24
25   Bool_t stdcuts=kFALSE;
26   TFile* filecuts;
27   if( filename.EqualTo("") ) {
28     stdcuts=kTRUE; 
29   } else {
30       filecuts=TFile::Open(filename.Data());
31       if(!filecuts ||(filecuts&& !filecuts->IsOpen())){
32         AliFatal("Input file not found : check your cut object");
33       }
34   }
35   
36   
37   //Analysis Task
38
39   
40   AliRDHFCutsDplustoKpipi* analysiscuts=new AliRDHFCutsDplustoKpipi();
41   if(stdcuts) {
42     if(system==0) analysiscuts->SetStandardCutsPP2010();
43     else if(system==1){
44       analysiscuts->SetStandardCutsPbPb2011();
45       analysiscuts->SetMinCentrality(minC);
46       analysiscuts->SetMaxCentrality(maxC);
47       //      analysiscuts->SetUseAOD049(kTRUE);
48       analysiscuts->SetUseCentrality(AliRDHFCuts::kCentV0M);
49     }
50   }
51   else analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(finAnObjname);
52   
53   AliAnalysisTaskSEDplus *dplusTask = new AliAnalysisTaskSEDplus("DplusAnalysis",analysiscuts,storeNtuple);
54   dplusTask->SetReadMC(readMC);
55   dplusTask->SetDoLikeSign(kFALSE);
56   //  dplusTask->SetUseTPCpid(kTRUE);
57   //dplusTask->SetUseTOFpid(kTRUE);
58   dplusTask->SetDebugLevel(0);
59   dplusTask->SetMassLimits(0.2);
60   dplusTask->SetUseBit(kTRUE);
61   dplusTask->SetCutsDistr(cutsDistr);
62   dplusTask->SetSystem(system);
63   if (doSparse) dplusTask->SetDoImpactParameterHistos(kTRUE);
64   if(etaRange==1) dplusTask->SetUseOnlyPositiveEta();
65   if(etaRange==-1) dplusTask->SetUseOnlyNegativeEta();
66
67   mgr->AddTask(dplusTask);
68   
69   // Create containers for input/output 
70
71   TString inname = "cinputDplus";
72   TString outname = "coutputDplus";
73   TString cutsname = "coutputDplusCuts";
74   TString normname = "coutputDplusNorm";
75   TString ntuplename = "coutputDplus2";
76   inname += finDirname.Data();
77   outname += finDirname.Data();
78   cutsname += finDirname.Data();
79   normname += finDirname.Data();
80   ntuplename += finDirname.Data();
81   TString centr=Form("%.0f%.0f",analysiscuts->GetMinCentrality(),analysiscuts->GetMaxCentrality());
82   inname += centr;
83   outname += centr;
84   cutsname += centr;
85   normname += centr;
86   ntuplename += centr;
87
88
89   AliAnalysisDataContainer *cinputDplus = mgr->CreateContainer(inname,TChain::Class(),
90                                                                AliAnalysisManager::kInputContainer);
91   TString outputfile = AliAnalysisManager::GetCommonFileName();
92   outputfile += ":PWG3_D2H_InvMassDplus";
93   
94   AliAnalysisDataContainer *coutputDplusCuts = mgr->CreateContainer(cutsname,TList::Class(),
95                                                                     AliAnalysisManager::kOutputContainer,
96                                                                     outputfile.Data());
97   
98   AliAnalysisDataContainer *coutputDplus = mgr->CreateContainer(outname,TList::Class(),
99                                                                 AliAnalysisManager::kOutputContainer,
100                                                                 outputfile.Data());
101   AliAnalysisDataContainer *coutputDplusNorm = mgr->CreateContainer(normname,AliNormalizationCounter::Class(),
102                                                                 AliAnalysisManager::kOutputContainer,
103                                                                 outputfile.Data());
104   
105   if(storeNtuple){
106     AliAnalysisDataContainer *coutputDplus2 = mgr->CreateContainer(ntuplename,TNtuple::Class(),
107                                                                    AliAnalysisManager::kOutputContainer,
108                                                                    outputfile.Data());
109     
110     coutputDplus2->SetSpecialOutput();
111   }
112   mgr->ConnectInput(dplusTask,0,mgr->GetCommonInputContainer());
113   
114   mgr->ConnectOutput(dplusTask,1,coutputDplus);
115   
116   mgr->ConnectOutput(dplusTask,2,coutputDplusCuts);
117
118   mgr->ConnectOutput(dplusTask,3,coutputDplusNorm);  
119   if(storeNtuple){
120     mgr->ConnectOutput(dplusTask,4,coutputDplus2);
121   }
122   return dplusTask;
123 }