]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/vertexingHF/macros/AddTaskDvsMultiplicity.C
Adding: 1) switch for usage of 3 different multiplicity estimators (by default Ntrack...
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / macros / AddTaskDvsMultiplicity.C
CommitLineData
b7fae104 1AliAnalysisTaskSEDvsMultiplicity *AddTaskDvsMultiplicity(Int_t system=0,
2 Bool_t readMC=kFALSE,
3 Int_t MCOption=0,
3d27f7b3 4 Int_t pdgMeson=411,
b7fae104 5 TString finDirname="Loose",
6 TString filename="",
7 TString finAnObjname="AnalysisCuts",
38d3a7e8 8 TString estimatorFilename="",
0d1e32a6 9 Double_t refMult=9.26,
18d726fa 10 Bool_t subtractDau=kFALSE,
11 Bool_t NchWeight=kFALSE,
20550d50 12 Int_t recoEstimator = AliAnalysisTaskSEDvsMultiplicity::kNtrk10,
13 Int_t MCEstimator = AliAnalysisTaskSEDvsMultiplicity::kEta10)
b7fae104 14{
3d27f7b3 15 //
16 // Test macro for the AliAnalysisTaskSE for D+ candidates
17 //Invariant mass histogram and
18 // association with MC truth (using MC info in AOD)
19 // R. Bala, bala@to.infn.it
20 // Get the pointer to the existing analysis manager via the static access method.
21 //==============================================================================
22
b7fae104 23 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
24 if (!mgr) {
25 ::Error("AddTaskDvsMultiplicity", "No analysis manager to connect to.");
26 }
3d27f7b3 27
b7fae104 28 Bool_t stdcuts=kFALSE;
2d11aff8 29 TFile* filecuts;
b7fae104 30 if( filename.EqualTo("") ) {
31 stdcuts=kTRUE;
32 } else {
3d27f7b3 33 filecuts=TFile::Open(filename.Data());
34 if(!filecuts ||(filecuts&& !filecuts->IsOpen())){
35 AliFatal("Input file not found : check your cut object");
36 }
b7fae104 37 }
b7fae104 38
39
3d27f7b3 40 //Analysis Task
41 AliRDHFCuts *analysiscuts=0x0;
b7fae104 42
3d27f7b3 43 TString Name="";
44 if(pdgMeson==411){
b7fae104 45 if(stdcuts) {
46 analysiscuts = new AliRDHFCutsDplustoKpipi();
47 if (system == 0) analysiscuts->SetStandardCutsPP2010();
48 else analysiscuts->SetStandardCutsPbPb2011();
49 }
50 else analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(finAnObjname);
51 Name="Dplus";
3d27f7b3 52 }else if(pdgMeson==421){
b7fae104 53 if(stdcuts) {
54 analysiscuts = new AliRDHFCutsD0toKpi();
55 if (system == 0) analysiscuts->SetStandardCutsPP2010();
56 else analysiscuts->SetStandardCutsPbPb2011();
57 }
58 else analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get(finAnObjname);
3d27f7b3 59 Name="D0";
60 }else if(pdgMeson==413){
61 if(stdcuts) {
b7fae104 62 analysiscuts = new AliRDHFCutsDStartoKpipi();
63 if (system == 0) analysiscuts->SetStandardCutsPP2010();
64 else analysiscuts->SetStandardCutsPbPb2011();
65 }
66 else analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get(finAnObjname);
3d27f7b3 67 Name="DStar";
68 }
b7fae104 69
70
3d27f7b3 71 AliAnalysisTaskSEDvsMultiplicity *dMultTask = new AliAnalysisTaskSEDvsMultiplicity("dMultAnalysis",pdgMeson,analysiscuts);
72 dMultTask->SetReadMC(readMC);
b7fae104 73 dMultTask->SetDebugLevel(0);
b7fae104 74 dMultTask->SetUseBit(kTRUE);
b7fae104 75 dMultTask->SetDoImpactParameterHistos(kFALSE);
0d1e32a6 76 dMultTask->SetSubtractTrackletsFromDaughters(subtractDau);
20550d50 77 dMultTask->SetMultiplicityEstimator(recoEstimator);
78 dMultTask->SetMCPrimariesEstimator(MCEstimator);
79 dMultTask->SetMCOption(MCOption);
18d726fa 80
81 if(NchWeight){
82 TH1F *hNchPrimaries = (TH1F*)filecuts->Get("hGenPrimaryParticlesInelGt0");
83 if(hNchPrimaries) {
84 dMultTask->UseMCNchWeight(true);
85 dMultTask->SetHistoNchWeight(hNchPrimaries);
86 } else {
87 AliFatal("Histogram for multiplicity weights not found");
88 return 0x0;
89 }
90 }
14eaa841 91
92 if(pdgMeson==421) {
93 dMultTask->SetMassLimits(1.5648,2.1648);
8934c74b 94 dMultTask->SetNMassBins(200);
c3f04bec 95 }else if(pdgMeson==411)dMultTask->SetMassLimits(pdgMeson,0.2);
3d27f7b3 96
2d11aff8 97 if(estimatorFilename.EqualTo("") ) {
f09fd3fe 98 printf("Estimator file not provided, multiplcity corrected histograms will not be filled\n");
3d27f7b3 99 } else{
100 const Char_t* periodNames[4] = {"LHC10b", "LHC10c", "LHC10d", "LHC10e"};
101 TProfile* multEstimatorAvg[4];
102 TFile* fileEstimator=TFile::Open(estimatorFilename.Data());
103 if(!fileEstimator) {
104 AliFatal("File with multiplicity estimator not found\n");
105 return;
106 }
107 for(Int_t ip=0; ip<4; ip++) {
108 multEstimatorAvg[ip] = (TProfile*)(fileEstimator->Get(Form("SPDmult10_%s",periodNames[ip]))->Clone(Form("SPDmult10_%s_clone",periodNames[ip])));
109 }
110 dMultTask->SetMultiplVsZProfileLHC10b(multEstimatorAvg[0]);
111 dMultTask->SetMultiplVsZProfileLHC10c(multEstimatorAvg[1]);
112 dMultTask->SetMultiplVsZProfileLHC10d(multEstimatorAvg[2]);
113 dMultTask->SetMultiplVsZProfileLHC10e(multEstimatorAvg[3]);
38d3a7e8 114 dMultTask->SetReferenceMultiplcity(refMult);
f09fd3fe 115 }
b7fae104 116 mgr->AddTask(dMultTask);
117
118 // Create containers for input/output
3d27f7b3 119
b7fae104 120 TString inname = "cinput";
121 TString outname = "coutput";
122 TString cutsname = "coutputCuts";
123 TString normname = "coutputNorm";
6c06d0fe 124 TString profname = "coutputProf";
3d27f7b3 125
126 inname += Name.Data();
127 outname += Name.Data();
128 cutsname += Name.Data();
129 normname += Name.Data();
6c06d0fe 130 profname += Name.Data();
b7fae104 131 inname += finDirname.Data();
132 outname += finDirname.Data();
133 cutsname += finDirname.Data();
134 normname += finDirname.Data();
6c06d0fe 135 profname += finDirname.Data();
b7fae104 136
3d27f7b3 137 AliAnalysisDataContainer *cinput = mgr->CreateContainer(inname,TChain::Class(),AliAnalysisManager::kInputContainer);
138
b7fae104 139 TString outputfile = AliAnalysisManager::GetCommonFileName();
3d27f7b3 140 outputfile += ":PWG3_D2H_DMult_";
141 outputfile += Name.Data();
142 outputfile += finDirname.Data();
143
144 AliAnalysisDataContainer *coutputCuts = mgr->CreateContainer(cutsname,TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
145 AliAnalysisDataContainer *coutput = mgr->CreateContainer(outname,TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
146 AliAnalysisDataContainer *coutputNorm = mgr->CreateContainer(normname,TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
6c06d0fe 147 AliAnalysisDataContainer *coutputProf = mgr->CreateContainer(profname,TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
b7fae104 148
149 mgr->ConnectInput(dMultTask,0,mgr->GetCommonInputContainer());
150
151 mgr->ConnectOutput(dMultTask,1,coutput);
152
153 mgr->ConnectOutput(dMultTask,2,coutputCuts);
154
155 mgr->ConnectOutput(dMultTask,3,coutputNorm);
6c06d0fe 156
157 mgr->ConnectOutput(dMultTask,4,coutputProf);
158
b7fae104 159 return dMultTask;
160}