3 // Base class for rho mass calculation.
4 // Calculates parameterized rho mass for given centrality independent of input.
6 // Author: M. Verweij. Similar to AliAnalysisTaskRhoBase
11 #include <TClonesArray.h>
14 #include "AliRhoParameter.h"
15 #include "AliEmcalJet.h"
17 #include "AliAnalysisTaskRhoMassBase.h"
19 ClassImp(AliAnalysisTaskRhoMassBase)
21 //________________________________________________________________________
22 AliAnalysisTaskRhoMassBase::AliAnalysisTaskRhoMassBase() :
23 AliAnalysisTaskEmcalJet("AliAnalysisTaskRhoMassBase", kFALSE),
25 fOutRhoMassScaledName(),
26 fCompareRhoMassName(),
27 fCompareRhoMassScaledName(),
30 fAttachToEvent(kTRUE),
34 fCompareRhoMassScaled(0),
35 fHistJetMassvsCent(0),
36 fHistRhoMassvsCent(0),
37 fHistRhoMassScaledvsCent(0),
38 fHistDeltaRhoMassvsCent(0),
39 fHistDeltaRhoMassScalevsCent(0),
40 fHistRhoMassvsNtrack(0),
41 fHistRhoMassScaledvsNtrack(0),
42 fHistDeltaRhoMassvsNtrack(0),
43 fHistDeltaRhoMassScalevsNtrack(0),
44 fHistRhoMassvsNcluster(0),
45 fHistRhoMassScaledvsNcluster(0),
51 //________________________________________________________________________
52 AliAnalysisTaskRhoMassBase::AliAnalysisTaskRhoMassBase(const char *name, Bool_t histo) :
53 AliAnalysisTaskEmcalJet(name, histo),
55 fOutRhoMassScaledName(),
56 fCompareRhoMassName(),
57 fCompareRhoMassScaledName(),
60 fAttachToEvent(kTRUE),
64 fCompareRhoMassScaled(0),
65 fHistJetMassvsCent(0),
66 fHistRhoMassvsCent(0),
67 fHistRhoMassScaledvsCent(0),
68 fHistDeltaRhoMassvsCent(0),
69 fHistDeltaRhoMassScalevsCent(0),
70 fHistRhoMassvsNtrack(0),
71 fHistRhoMassScaledvsNtrack(0),
72 fHistDeltaRhoMassvsNtrack(0),
73 fHistDeltaRhoMassScalevsNtrack(0),
74 fHistRhoMassvsNcluster(0),
75 fHistRhoMassScaledvsNcluster(0),
80 SetMakeGeneralHistograms(histo);
83 //________________________________________________________________________
84 void AliAnalysisTaskRhoMassBase::UserCreateOutputObjects()
86 // User create output objects, called at the beginning of the analysis.
91 AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
93 const Int_t nBinsRhom = 200;
94 const Double_t minRhom = 0.;
95 const Double_t maxRhom = 20.;
97 const Int_t nBinsM = 100;
98 const Double_t minM = -20.;
99 const Double_t maxM = 80.;
101 fHistRhoMassvsCent = new TH2F("fHistRhoMassvsCent", "fHistRhoMassvsCent", 101, -1, 100, nBinsRhom,minRhom,maxRhom);
102 fHistRhoMassvsCent->GetXaxis()->SetTitle("Centrality (%)");
103 fHistRhoMassvsCent->GetYaxis()->SetTitle("#rho_{m} (GeV/c * rad^{-1})");
104 fOutput->Add(fHistRhoMassvsCent);
106 if (fParticleCollArray.GetEntriesFast()>0) {
107 fHistRhoMassvsNtrack = new TH2F("fHistRhoMassvsNtrack", "fHistRhoMassvsNtrack", 150, 0, 6000, nBinsRhom,minRhom,maxRhom);
108 fHistRhoMassvsNtrack->GetXaxis()->SetTitle("No. of tracks");
109 fHistRhoMassvsNtrack->GetYaxis()->SetTitle("#rho_{m} (GeV/c * rad^{-1})");
110 fOutput->Add(fHistRhoMassvsNtrack);
113 fHistGammaVsNtrack = new TH2F("fHistGammaVsNtrack", "fHistGammaVsNtrack", 150, 0, 6000, 100,0.,10.);
114 fHistGammaVsNtrack->GetXaxis()->SetTitle("No. of tracks");
115 fHistGammaVsNtrack->GetYaxis()->SetTitle("#gamma = #LT E #GT / #LT M #GT");
116 fOutput->Add(fHistGammaVsNtrack);
119 if (fClusterCollArray.GetEntriesFast()>0) {
120 fHistRhoMassvsNcluster = new TH2F("fHistRhoMassvsNcluster", "fHistRhoMassvsNcluster", 50, 0, 1500, nBinsRhom,minRhom,maxRhom);
121 fHistRhoMassvsNcluster->GetXaxis()->SetTitle("No. of tracks");
122 fHistRhoMassvsNcluster->GetYaxis()->SetTitle("#rho_{m} (GeV/c * rad^{-1})");
123 fOutput->Add(fHistRhoMassvsNcluster);
126 if (fJetCollArray.GetEntriesFast()>0) {
127 fHistJetMassvsCent = new TH2F("fHistJetMassvsCent", "fHistJetMassvsCent", 101, -1, 100, nBinsM,minM,maxM);
128 fHistJetMassvsCent->GetXaxis()->SetTitle("Centrality (%)");
129 fHistJetMassvsCent->GetYaxis()->SetTitle("#it{M}_{jet} (GeV/c)");
130 fOutput->Add(fHistJetMassvsCent);
133 if (!fCompareRhoMassName.IsNull()) {
134 fHistDeltaRhoMassvsCent = new TH2F("fHistDeltaRhoMassvsCent", "fHistDeltaRhoMassvsCent", 101, -1, 100, fNbins, -fMaxBinPt, fMaxBinPt);
135 fHistDeltaRhoMassvsCent->GetXaxis()->SetTitle("Centrality (%)");
136 fHistDeltaRhoMassvsCent->GetYaxis()->SetTitle("#Delta#rho (GeV/c * rad^{-1})");
137 fOutput->Add(fHistDeltaRhoMassvsCent);
139 if (fParticleCollArray.GetEntriesFast()>0) {
140 fHistDeltaRhoMassvsNtrack = new TH2F("fHistDeltaRhoMassvsNtrack", "fHistDeltaRhoMassvsNtrack", 150, 0, 6000, fNbins, -fMaxBinPt, fMaxBinPt);
141 fHistDeltaRhoMassvsNtrack->GetXaxis()->SetTitle("No. of tracks");
142 fHistDeltaRhoMassvsNtrack->GetYaxis()->SetTitle("#Delta#rho (GeV/c * rad^{-1})");
143 fOutput->Add(fHistDeltaRhoMassvsNtrack);
147 if (fScaleFunction) {
148 fHistRhoMassScaledvsCent = new TH2F("fHistRhoMassScaledvsCent", "fHistRhoMassScaledvsCent", 101, -1, 100, fNbins, fMinBinPt , fMaxBinPt*2);
149 fHistRhoMassScaledvsCent->GetXaxis()->SetTitle("Centrality (%)");
150 fHistRhoMassScaledvsCent->GetYaxis()->SetTitle("#rho_{m,scaled} (GeV/c * rad^{-1})");
151 fOutput->Add(fHistRhoMassScaledvsCent);
153 if (fParticleCollArray.GetEntriesFast()>0) {
154 fHistRhoMassScaledvsNtrack = new TH2F("fHistRhoMassScaledvsNtrack", "fHistRhoMassScaledvsNtrack", 150, 0, 6000, fNbins, fMinBinPt, fMaxBinPt*2);
155 fHistRhoMassScaledvsNtrack->GetXaxis()->SetTitle("No. of tracks");
156 fHistRhoMassScaledvsNtrack->GetYaxis()->SetTitle("#rho_{m,scaled} (GeV/c * rad^{-1})");
157 fOutput->Add(fHistRhoMassScaledvsNtrack);
160 if (fClusterCollArray.GetEntriesFast()>0) {
161 fHistRhoMassScaledvsNcluster = new TH2F("fHistRhoMassScaledvsNcluster", "fHistRhoMassScaledvsNcluster", 50, 0, 1500, fNbins, fMinBinPt, fMaxBinPt*2);
162 fHistRhoMassScaledvsNcluster->GetXaxis()->SetTitle("No. of clusters");
163 fHistRhoMassScaledvsNcluster->GetYaxis()->SetTitle("#rho_{m,scaled} (GeV/c * rad^{-1})");
164 fOutput->Add(fHistRhoMassScaledvsNcluster);
167 if (!fCompareRhoMassScaledName.IsNull()) {
168 fHistDeltaRhoMassScalevsCent = new TH2F("fHistDeltaRhoMassScalevsCent", "fHistDeltaRhoMassScalevsCent", 101, -1, 100, fNbins, -fMaxBinPt, fMaxBinPt);
169 fHistDeltaRhoMassScalevsCent->GetXaxis()->SetTitle("Centrality (%)");
170 fHistDeltaRhoMassScalevsCent->GetYaxis()->SetTitle("#Delta#rho_{m,scaled} (GeV/c * rad^{-1})");
171 fOutput->Add(fHistDeltaRhoMassScalevsCent);
173 if (fParticleCollArray.GetEntriesFast()>0) {
174 fHistDeltaRhoMassScalevsNtrack = new TH2F("fHistDeltaRhoMassScalevsNtrack", "fHistDeltaRhoMassScalevsNtrack", 150, 0, 6000, fNbins, -fMaxBinPt, fMaxBinPt);
175 fHistDeltaRhoMassScalevsNtrack->GetXaxis()->SetTitle("No. of tracks");
176 fHistDeltaRhoMassScalevsNtrack->GetYaxis()->SetTitle("#Delta#rho_{m,scaled} (GeV/c * rad^{-1})");
177 fOutput->Add(fHistDeltaRhoMassScalevsNtrack);
183 //________________________________________________________________________
184 Bool_t AliAnalysisTaskRhoMassBase::Run()
188 Double_t rhom = GetRhoMassFactor(fCent);
189 fOutRhoMass->SetVal(rhom);
191 if (fScaleFunction) {
192 Double_t rhomScaled = rhom * GetScaleFactor(fCent);
193 fOutRhoMassScaled->SetVal(rhomScaled);
199 //________________________________________________________________________
200 Bool_t AliAnalysisTaskRhoMassBase::FillHistograms()
208 Ntracks = fTracks->GetEntries();
210 Nclusters = fCaloClusters->GetEntries();
213 Int_t Njets = fJets->GetEntries();
216 for (Int_t i = 0; i < Njets; ++i) {
217 AliEmcalJet *jet = static_cast<AliEmcalJet*>(fJets->At(i));
219 AliError(Form("%s: Could not receive jet %d", GetName(), i));
226 fHistJetMassvsCent->Fill(fCent, jet->M());
231 fHistRhoMassvsCent->Fill(fCent, fOutRhoMass->GetVal());
234 fHistRhoMassvsNtrack->Fill(Ntracks, fOutRhoMass->GetVal());
236 fHistRhoMassvsNcluster->Fill(Nclusters, fOutRhoMass->GetVal());
237 if (fCompareRhoMass) {
238 fHistDeltaRhoMassvsCent->Fill(fCent, fOutRhoMass->GetVal() - fCompareRhoMass->GetVal());
240 fHistDeltaRhoMassvsNtrack->Fill(Ntracks, fOutRhoMass->GetVal() - fCompareRhoMass->GetVal());
243 if (fOutRhoMassScaled) {
244 fHistRhoMassScaledvsCent->Fill(fCent, fOutRhoMassScaled->GetVal());
246 fHistRhoMassScaledvsNtrack->Fill(Ntracks, fOutRhoMassScaled->GetVal());
248 fHistRhoMassScaledvsNcluster->Fill(Nclusters, fOutRhoMassScaled->GetVal());
249 if (fCompareRhoMassScaled) {
250 fHistDeltaRhoMassScalevsCent->Fill(fCent, fOutRhoMassScaled->GetVal() - fCompareRhoMassScaled->GetVal());
252 fHistDeltaRhoMassScalevsNtrack->Fill(Ntracks, fOutRhoMassScaled->GetVal() - fCompareRhoMassScaled->GetVal());
260 //________________________________________________________________________
261 void AliAnalysisTaskRhoMassBase::ExecOnce()
263 // Init the analysis.
266 fOutRhoMass = new AliRhoParameter(fOutRhoMassName, 0);
268 if (fAttachToEvent) {
269 if (!(InputEvent()->FindListObject(fOutRhoMassName))) {
270 InputEvent()->AddObject(fOutRhoMass);
272 AliFatal(Form("%s: Container with same name %s already present. Aborting", GetName(), fOutRhoMassName.Data()));
278 if (fScaleFunction && !fOutRhoMassScaled) {
279 fOutRhoMassScaled = new AliRhoParameter(fOutRhoMassScaledName, 0);
281 if (fAttachToEvent) {
282 if (!(InputEvent()->FindListObject(fOutRhoMassScaledName))) {
283 InputEvent()->AddObject(fOutRhoMassScaled);
285 AliFatal(Form("%s: Container with same name %s already present. Aborting", GetName(), fOutRhoMassScaledName.Data()));
291 if (!fCompareRhoMassName.IsNull() && !fCompareRhoMass) {
292 fCompareRhoMass = dynamic_cast<AliRhoParameter*>(InputEvent()->FindListObject(fCompareRhoMassName));
293 if (!fCompareRhoMass) {
294 AliWarning(Form("%s: Could not retrieve rho %s!", GetName(), fCompareRhoMassName.Data()));
298 if (!fCompareRhoMassScaledName.IsNull() && !fCompareRhoMassScaled) {
299 fCompareRhoMassScaled = dynamic_cast<AliRhoParameter*>(InputEvent()->FindListObject(fCompareRhoMassScaledName));
300 if (!fCompareRhoMassScaled) {
301 AliWarning(Form("%s: Could not retrieve rho %s!", GetName(), fCompareRhoMassScaledName.Data()));
305 AliAnalysisTaskEmcalJet::ExecOnce();
308 //________________________________________________________________________
309 Double_t AliAnalysisTaskRhoMassBase::GetRhoMassFactor(Double_t cent)
311 // Return rho per centrality.
314 if (fRhoMassFunction)
315 rho = fRhoMassFunction->Eval(cent);
319 //________________________________________________________________________
320 Double_t AliAnalysisTaskRhoMassBase::GetScaleFactor(Double_t cent)
326 scale = fScaleFunction->Eval(cent);