]>
Commit | Line | Data |
---|---|---|
1 | AliAnalysisTaskSEDvsMultiplicity *AddTaskDvsMultiplicity(Int_t system=0, | |
2 | Bool_t readMC=kFALSE, | |
3 | Int_t MCOption=0, | |
4 | Int_t pdgMeson=411, | |
5 | TString finDirname="Loose", | |
6 | TString filename="", | |
7 | TString finAnObjname="AnalysisCuts", | |
8 | TString estimatorFilename="", | |
9 | Double_t refMult=9.26, | |
10 | Bool_t subtractDau=kFALSE, | |
11 | Bool_t NchWeight=kFALSE, | |
12 | Int_t recoEstimator = AliAnalysisTaskSEDvsMultiplicity::kNtrk10, | |
13 | Int_t MCEstimator = AliAnalysisTaskSEDvsMultiplicity::kEta10) | |
14 | { | |
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 | ||
23 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
24 | if (!mgr) { | |
25 | ::Error("AddTaskDvsMultiplicity", "No analysis manager to connect to."); | |
26 | } | |
27 | ||
28 | Bool_t stdcuts=kFALSE; | |
29 | TFile* filecuts; | |
30 | if( filename.EqualTo("") ) { | |
31 | stdcuts=kTRUE; | |
32 | } else { | |
33 | filecuts=TFile::Open(filename.Data()); | |
34 | if(!filecuts ||(filecuts&& !filecuts->IsOpen())){ | |
35 | AliFatal("Input file not found : check your cut object"); | |
36 | } | |
37 | } | |
38 | ||
39 | ||
40 | //Analysis Task | |
41 | AliRDHFCuts *analysiscuts=0x0; | |
42 | ||
43 | TString Name=""; | |
44 | if(pdgMeson==411){ | |
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"; | |
52 | }else if(pdgMeson==421){ | |
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); | |
59 | Name="D0"; | |
60 | }else if(pdgMeson==413){ | |
61 | if(stdcuts) { | |
62 | analysiscuts = new AliRDHFCutsDStartoKpipi(); | |
63 | if (system == 0) analysiscuts->SetStandardCutsPP2010(); | |
64 | else analysiscuts->SetStandardCutsPbPb2011(); | |
65 | } | |
66 | else analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get(finAnObjname); | |
67 | Name="DStar"; | |
68 | } | |
69 | ||
70 | ||
71 | AliAnalysisTaskSEDvsMultiplicity *dMultTask = new AliAnalysisTaskSEDvsMultiplicity("dMultAnalysis",pdgMeson,analysiscuts); | |
72 | dMultTask->SetReadMC(readMC); | |
73 | dMultTask->SetDebugLevel(0); | |
74 | dMultTask->SetUseBit(kTRUE); | |
75 | dMultTask->SetDoImpactParameterHistos(kFALSE); | |
76 | dMultTask->SetSubtractTrackletsFromDaughters(subtractDau); | |
77 | dMultTask->SetMultiplicityEstimator(recoEstimator); | |
78 | dMultTask->SetMCPrimariesEstimator(MCEstimator); | |
79 | dMultTask->SetMCOption(MCOption); | |
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 | } | |
91 | ||
92 | if(pdgMeson==421) { | |
93 | dMultTask->SetMassLimits(1.5648,2.1648); | |
94 | dMultTask->SetNMassBins(200); | |
95 | }else if(pdgMeson==411)dMultTask->SetMassLimits(pdgMeson,0.2); | |
96 | ||
97 | if(estimatorFilename.EqualTo("") ) { | |
98 | printf("Estimator file not provided, multiplcity corrected histograms will not be filled\n"); | |
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]); | |
114 | dMultTask->SetReferenceMultiplcity(refMult); | |
115 | } | |
116 | mgr->AddTask(dMultTask); | |
117 | ||
118 | // Create containers for input/output | |
119 | ||
120 | TString inname = "cinput"; | |
121 | TString outname = "coutput"; | |
122 | TString cutsname = "coutputCuts"; | |
123 | TString normname = "coutputNorm"; | |
124 | TString profname = "coutputProf"; | |
125 | ||
126 | inname += Name.Data(); | |
127 | outname += Name.Data(); | |
128 | cutsname += Name.Data(); | |
129 | normname += Name.Data(); | |
130 | profname += Name.Data(); | |
131 | inname += finDirname.Data(); | |
132 | outname += finDirname.Data(); | |
133 | cutsname += finDirname.Data(); | |
134 | normname += finDirname.Data(); | |
135 | profname += finDirname.Data(); | |
136 | ||
137 | AliAnalysisDataContainer *cinput = mgr->CreateContainer(inname,TChain::Class(),AliAnalysisManager::kInputContainer); | |
138 | ||
139 | TString outputfile = AliAnalysisManager::GetCommonFileName(); | |
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()); | |
147 | AliAnalysisDataContainer *coutputProf = mgr->CreateContainer(profname,TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data()); | |
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); | |
156 | ||
157 | mgr->ConnectOutput(dMultTask,4,coutputProf); | |
158 | ||
159 | return dMultTask; | |
160 | } |