1 AliAnalysisTaskSEDvsMultiplicity *AddTaskDvsMultiplicity(Int_t system=0,
5 TString finDirname="Loose",
7 TString finAnObjname="AnalysisCuts",
8 TString estimatorFilename="",
10 Bool_t subtractDau=kFALSE,
11 Bool_t NchWeight=kFALSE,
12 Int_t recoEstimator = AliAnalysisTaskSEDvsMultiplicity::kNtrk10,
13 Int_t MCEstimator = AliAnalysisTaskSEDvsMultiplicity::kEta10,
14 Bool_t isPPbData=kFALSE)
17 // Macro for the AliAnalysisTaskSE for D candidates vs Multiplicity
18 // Invariant mass histogram in pt and multiplicity bins in a 3D histogram
19 // different estimators implemented
20 //==============================================================================
22 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
24 ::Error("AddTaskDvsMultiplicity", "No analysis manager to connect to.");
27 Bool_t stdcuts=kFALSE;
29 if( filename.EqualTo("") ) {
32 filecuts=TFile::Open(filename.Data());
33 if(!filecuts ||(filecuts&& !filecuts->IsOpen())){
34 AliFatal("Input file not found : check your cut object");
40 AliRDHFCuts *analysiscuts=0x0;
45 analysiscuts = new AliRDHFCutsDplustoKpipi();
46 if (system == 0) analysiscuts->SetStandardCutsPP2010();
47 else analysiscuts->SetStandardCutsPbPb2011();
49 else analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(finAnObjname);
51 }else if(pdgMeson==421){
53 analysiscuts = new AliRDHFCutsD0toKpi();
54 if (system == 0) analysiscuts->SetStandardCutsPP2010();
55 else analysiscuts->SetStandardCutsPbPb2011();
57 else analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get(finAnObjname);
59 }else if(pdgMeson==413){
61 analysiscuts = new AliRDHFCutsDStartoKpipi();
62 if (system == 0) analysiscuts->SetStandardCutsPP2010();
63 else analysiscuts->SetStandardCutsPbPb2011();
65 else analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get(finAnObjname);
69 AliAnalysisTaskSEDvsMultiplicity *dMultTask = new AliAnalysisTaskSEDvsMultiplicity("dMultAnalysis",pdgMeson,analysiscuts,isPPbData);
70 dMultTask->SetReadMC(readMC);
71 dMultTask->SetDebugLevel(0);
72 dMultTask->SetUseBit(kTRUE);
73 dMultTask->SetDoImpactParameterHistos(kFALSE);
74 dMultTask->SetSubtractTrackletsFromDaughters(subtractDau);
75 dMultTask->SetMultiplicityEstimator(recoEstimator);
76 dMultTask->SetMCPrimariesEstimator(MCEstimator);
77 dMultTask->SetMCOption(MCOption);
78 if(isPPbData) dMultTask->SetIsPPbData();
81 TH1F *hNchPrimaries = NULL;
82 if(isPPbData) hNchPrimaries = (TH1F*)filecuts->Get("hNtrUnCorrEvWithDWeight");
83 else hNchPrimaries = (TH1F*)filecuts->Get("hGenPrimaryParticlesInelGt0");
85 dMultTask->UseMCNchWeight(true);
86 dMultTask->SetHistoNchWeight(hNchPrimaries);
88 AliFatal("Histogram for multiplicity weights not found");
94 dMultTask->SetMassLimits(1.5648,2.1648);
95 dMultTask->SetNMassBins(200);
96 }else if(pdgMeson==411)dMultTask->SetMassLimits(pdgMeson,0.2);
98 if(estimatorFilename.EqualTo("") ) {
99 printf("Estimator file not provided, multiplcity corrected histograms will not be filled\n");
102 TFile* fileEstimator=TFile::Open(estimatorFilename.Data());
104 AliFatal("File with multiplicity estimator not found\n");
108 dMultTask->SetReferenceMultiplcity(refMult);
110 if (isPPbData) { //Only use two profiles if pPb
111 const Char_t* periodNames[2] = {"LHC13b", "LHC13c"};
112 TProfile* multEstimatorAvg[2];
113 for(Int_t ip=0; ip<2; ip++) {
114 multEstimatorAvg[ip] = (TProfile*)(fileEstimator->Get(Form("SPDmult10_%s",periodNames[ip]))->Clone(Form("SPDmult10_%s_clone",periodNames[ip])));
115 if (!multEstimatorAvg[ip]) {
116 AliFatal(Form("Multiplicity estimator for %s not found! Please check your estimator file",periodNames[ip]));
120 dMultTask->SetMultiplVsZProfileLHC13b(multEstimatorAvg[0]);
121 dMultTask->SetMultiplVsZProfileLHC13c(multEstimatorAvg[1]);
124 const Char_t* periodNames[4] = {"LHC10b", "LHC10c", "LHC10d", "LHC10e"};
125 TProfile* multEstimatorAvg[4];
126 for(Int_t ip=0; ip<4; ip++) {
127 multEstimatorAvg[ip] = (TProfile*)(fileEstimator->Get(Form("SPDmult10_%s",periodNames[ip]))->Clone(Form("SPDmult10_%s_clone",periodNames[ip])));
128 if (!multEstimatorAvg[ip]) {
129 AliFatal(Form("Multiplicity estimator for %s not found! Please check your estimator file",periodNames[ip]));
133 dMultTask->SetMultiplVsZProfileLHC10b(multEstimatorAvg[0]);
134 dMultTask->SetMultiplVsZProfileLHC10c(multEstimatorAvg[1]);
135 dMultTask->SetMultiplVsZProfileLHC10d(multEstimatorAvg[2]);
136 dMultTask->SetMultiplVsZProfileLHC10e(multEstimatorAvg[3]);
139 mgr->AddTask(dMultTask);
141 // Create containers for input/output
143 TString inname = "cinput";
144 TString outname = "coutput";
145 TString cutsname = "coutputCuts";
146 TString normname = "coutputNorm";
147 TString profname = "coutputProf";
149 inname += Name.Data();
150 outname += Name.Data();
151 cutsname += Name.Data();
152 normname += Name.Data();
153 profname += Name.Data();
154 inname += finDirname.Data();
155 outname += finDirname.Data();
156 cutsname += finDirname.Data();
157 normname += finDirname.Data();
158 profname += finDirname.Data();
160 AliAnalysisDataContainer *cinput = mgr->CreateContainer(inname,TChain::Class(),AliAnalysisManager::kInputContainer);
162 TString outputfile = AliAnalysisManager::GetCommonFileName();
163 outputfile += ":PWG3_D2H_DMult_";
164 outputfile += Name.Data();
165 outputfile += finDirname.Data();
167 AliAnalysisDataContainer *coutputCuts = mgr->CreateContainer(cutsname,TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
168 AliAnalysisDataContainer *coutput = mgr->CreateContainer(outname,TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
169 AliAnalysisDataContainer *coutputNorm = mgr->CreateContainer(normname,TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
170 AliAnalysisDataContainer *coutputProf = mgr->CreateContainer(profname,TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
172 mgr->ConnectInput(dMultTask,0,mgr->GetCommonInputContainer());
174 mgr->ConnectOutput(dMultTask,1,coutput);
176 mgr->ConnectOutput(dMultTask,2,coutputCuts);
178 mgr->ConnectOutput(dMultTask,3,coutputNorm);
180 mgr->ConnectOutput(dMultTask,4,coutputProf);