]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/macros/AddTaskDs.C
AddTacksDs adapted for running on lego train (Gian Michele)
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / macros / AddTaskDs.C
1 AliAnalysisTaskSEDs *AddTaskDs(Int_t system=0/*0=pp,1=PbPb*/,
2                      Int_t storeNtuple=0,Bool_t readMC=kFALSE,
3                                      TString filename="")
4 {
5   //                                                                                                                                    
6   // Test macro for the AliAnalysisTaskSE for Ds candidates 
7
8   //Invariant mass histogram and                                                 
9   // association with MC truth (using MC info in AOD)                                                                                   
10   // Origin: R. Bala, bala@to.infn.it         
11   // Modified for Ds meson: G.M. Innocenti innocent@to.infn.it
12   // Get the pointer to the existing analysis manager via the static access method.                                                     
13   //==============================================================================                                                      
14
15   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
16   if (!mgr) {
17     ::Error("AddTaskDs", "No analysis manager to connect to.");
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("Cut object not found: analysis will not start!\n");
28     }
29     else printf("Cut object correctly found\n");
30   }
31   
32   //Analysis Task
33
34   AliRDHFCutsDstoKKpi* analysiscuts=new AliRDHFCutsDstoKKpi();
35   
36   if(stdcuts) {
37     if(system==0) {
38       printf("Cut object not found: standard pp cut object used\n");
39       analysiscuts->SetStandardCutsPP2010();
40     }
41     else AliFatal("Standard cut object not available for PbPb: analysis will not start!\n");
42   }
43   else analysiscuts = (AliRDHFCutsDstoKKpi*)filecuts->Get("AnalysisCuts");
44   
45   AliAnalysisTaskSEDs *dsTask = new AliAnalysisTaskSEDs("DsAnalysis",analysiscuts,storeNtuple);
46
47   dsTask->SetReadMC(readMC);
48   //dsTask->SetDoLikeSign(kTRUE);
49   //  dsTask->SetUseTPCpid(kTRUE);
50   //dsTask->SetUseTOFpid(kTRUE);
51   dsTask->SetDebugLevel(10);
52   dsTask->SetUseSelectionBit(kTRUE);
53   //dsTask->SetMassLimits(0.2);
54   mgr->AddTask(dsTask);
55   
56   // Create containers for input/output 
57   
58   AliAnalysisDataContainer *cinputDs = mgr->CreateContainer("cinputDs",TChain::Class(),
59                                                                AliAnalysisManager::kInputContainer);
60   TString outputfile = AliAnalysisManager::GetCommonFileName();
61   outputfile += ":PWG3_D2H_InvMassDs";
62   
63   AliAnalysisDataContainer *coutputDsCuts = mgr->CreateContainer("coutputDsCuts",TList::Class(),
64                                                                     AliAnalysisManager::kOutputContainer,
65                                                                     outputfile.Data());
66   
67   AliAnalysisDataContainer *coutputDs = mgr->CreateContainer("coutputDs",TList::Class(),
68                                                                 AliAnalysisManager::kOutputContainer,
69                                                                 outputfile.Data());
70   AliAnalysisDataContainer *coutputDsNorm = mgr->CreateContainer("coutputDsNorm",AliNormalizationCounter::Class(),
71                                                                 AliAnalysisManager::kOutputContainer,
72                                                                 outputfile.Data());
73   
74    if(storeNtuple){
75     AliAnalysisDataContainer *coutputDs2 = mgr->CreateContainer("coutputDs2",TNtuple::Class(),
76                                                                    AliAnalysisManager::kOutputContainer,
77                                                                    outputfile.Data());
78     
79     coutputDs2->SetSpecialOutput();
80   }
81   
82   mgr->ConnectInput(dsTask,0,mgr->GetCommonInputContainer());
83   
84   mgr->ConnectOutput(dsTask,1,coutputDs);
85   
86   mgr->ConnectOutput(dsTask,2,coutputDsCuts);
87
88   mgr->ConnectOutput(dsTask,3,coutputDsNorm);  
89   
90   if(storeNtuple){
91     mgr->ConnectOutput(dsTask,4,coutputDs2);
92   }
93   
94   return dsTask;
95 }