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