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