5 // Author: R.Reed, M.Connors
7 #include "AliAnalysisTaskScale.h"
9 #include <TClonesArray.h>
12 #include <TLorentzVector.h>
15 #include "AliEMCALGeometry.h"
17 #include "AliVCluster.h"
18 #include "AliVTrack.h"
20 ClassImp(AliAnalysisTaskScale)
22 //________________________________________________________________________
23 AliAnalysisTaskScale::AliAnalysisTaskScale() :
24 AliAnalysisTaskEmcal("AliAnalysisTaskScale", kTRUE),
27 fHistPtEMCALvsCent(0),
30 fHistDeltaScalevsCent(0),
31 fHistScaleEmcalvsCent(0),
32 fHistScale2EmcalvsCent(0),
33 fHistChScalevsCent(0),
34 fHistChScale2EmcalvsCent(0),
35 fHistPtTPCvsNtrack(0),
36 fHistPtEMCALvsNtrack(0),
38 fHistScalevsNtrack(0),
39 fHistDeltaScalevsNtrack(0),
40 fHistScaleEmcalvsNtrack(0),
41 fHistScale2EmcalvsNtrack(0),
42 fHistChScalevsNtrack(0),
43 fHistChScale2EmcalvsNtrack(0),
44 fHistTrackPtvsCent(0),
45 fHistClusterPtvsCent(0),
47 fHistClusterEtaPhi(0),
48 fHistScalevsScale2Emcal(0),
49 fHistScalevsScaleEmcal(0),
50 fHistScaleEmcalvsScale2Emcal(0)
52 // Default constructor.
54 SetMakeGeneralHistograms(kTRUE);
57 //________________________________________________________________________
58 AliAnalysisTaskScale::AliAnalysisTaskScale(const char *name) :
59 AliAnalysisTaskEmcal(name, kTRUE),
62 fHistPtEMCALvsCent(0),
65 fHistDeltaScalevsCent(0),
66 fHistScaleEmcalvsCent(0),
67 fHistScale2EmcalvsCent(0),
68 fHistChScalevsCent(0),
69 fHistChScale2EmcalvsCent(0),
70 fHistPtTPCvsNtrack(0),
71 fHistPtEMCALvsNtrack(0),
73 fHistScalevsNtrack(0),
74 fHistDeltaScalevsNtrack(0),
75 fHistScaleEmcalvsNtrack(0),
76 fHistScale2EmcalvsNtrack(0),
77 fHistChScalevsNtrack(0),
78 fHistChScale2EmcalvsNtrack(0),
79 fHistTrackPtvsCent(0),
80 fHistClusterPtvsCent(0),
82 fHistClusterEtaPhi(0),
83 fHistScalevsScale2Emcal(0),
84 fHistScalevsScaleEmcal(0),
85 fHistScaleEmcalvsScale2Emcal(0)
89 SetMakeGeneralHistograms(kTRUE);
92 //________________________________________________________________________
93 void AliAnalysisTaskScale::UserCreateOutputObjects()
95 // Create my user objects.
97 AliAnalysisTaskEmcal::UserCreateOutputObjects();
99 fHistPtTPCvsCent = new TH2F("PtTPCvsCent","rho vs cent", 101, -1, 100, 500, 0, 1000);
100 fHistPtEMCALvsCent = new TH2F("PtEMCALvsCent","rho vs cent", 101, -1, 100, 500, 0, 1000);
101 fHistEtvsCent = new TH2F("EtvsCent","rho vs cent", 101, -1, 100, 500, 0, 1000);
102 fHistScalevsCent = new TH2F("ScalevsCent","rho vs cent", 101, -1, 100, 500, 0, 5);
103 fHistDeltaScalevsCent = new TH2F("DeltaScalevsCent","rho vs cent", 101, -1, 100, 500, -2.5, 2.5);
104 fHistScaleEmcalvsCent = new TH2F("ScaleEmcalvsCent","", 101, -1, 100, 500, 0, 5);
105 fHistScale2EmcalvsCent = new TH2F("Scale2EmcalvsCent","", 101, -1, 100, 500, 0, 5);
106 fHistChScalevsCent = new TH2F("ChScalevsCent","", 101, -1, 100, 500, 0, 5);
107 fHistChScale2EmcalvsCent = new TH2F("ChScale2EmcalvsCent","", 101, -1, 100, 500, 0, 5);
108 fHistPtTPCvsNtrack = new TH2F("PtTPCvsNtrack","rho vs cent", 500, 0, 2500, 500, 0, 1000);
109 fHistPtEMCALvsNtrack = new TH2F("PtEMCALvsNtrack","rho vs cent", 500, 0, 2500, 500, 0, 1000);
110 fHistEtvsNtrack = new TH2F("EtvsNtrack","rho vs cent", 500, 0, 2500, 500, 0, 1000);
111 fHistScalevsNtrack = new TH2F("ScalevsNtrack","rho vs cent", 500, 0, 2500, 500, 0, 5);
112 fHistDeltaScalevsNtrack = new TH2F("DeltaScalevsNtrack","rho vs cent", 500, 0, 2500, 500, -2.5, 2.5);
113 fHistScaleEmcalvsNtrack = new TH2F("ScaleEmcalvsNtrack","", 500, 0, 2500, 500, 0, 5);
114 fHistScale2EmcalvsNtrack = new TH2F("Scale2EmcalvsNtrack","", 500, 0, 2500, 500, 0, 5);
115 fHistChScalevsNtrack = new TH2F("ChScalevsNtrack","", 500, 0, 2500, 500, 0, 5);
116 fHistChScale2EmcalvsNtrack = new TH2F("ChScale2EmcalvsNtrack","", 500, 0, 2500, 500, 0, 5);
117 fHistTrackPtvsCent = new TH2F("TrackPtvsCent","Track pt vs cent", 101, -1, 100, 500, 0, 100);
118 fHistClusterPtvsCent = new TH2F("ClusterPtvsCent","Cluster pt vs cent", 101, -1, 100, 500, 0, 100);
119 fHistTrackEtaPhi = new TH2F("TrackEtaPhi","Track eta phi", 100, -1.0, 1.0, 101, 0, 2.02*TMath::Pi());
120 fHistClusterEtaPhi = new TH2F("ClusterEtaPhi","Cluster eta phi", 100, -1.0, 1.0, 101, 0, 2.02*TMath::Pi());
121 fHistScalevsScale2Emcal = new TH2F("ScalevsScale2Emcal","", 500, 0, 5, 500, 0, 5);
122 fHistScalevsScaleEmcal = new TH2F("ScalevsScaleEmcal","", 500, 0, 5, 500, 0, 5);
123 fHistScaleEmcalvsScale2Emcal = new TH2F("ScaleEmcalvsScale2Emcal","", 500, 0, 5, 500, 0, 5);
125 fOutput->Add(fHistPtTPCvsCent);
126 fOutput->Add(fHistPtEMCALvsCent);
127 fOutput->Add(fHistEtvsCent);
128 fOutput->Add(fHistScalevsCent);
129 fOutput->Add(fHistDeltaScalevsCent);
130 fOutput->Add(fHistScaleEmcalvsCent);
131 fOutput->Add(fHistScale2EmcalvsCent);
132 fOutput->Add(fHistChScalevsCent);
133 fOutput->Add(fHistChScale2EmcalvsCent);
134 fOutput->Add(fHistPtTPCvsNtrack);
135 fOutput->Add(fHistPtEMCALvsNtrack);
136 fOutput->Add(fHistEtvsNtrack);
137 fOutput->Add(fHistScalevsNtrack);
138 fOutput->Add(fHistDeltaScalevsNtrack);
139 fOutput->Add(fHistScaleEmcalvsNtrack);
140 fOutput->Add(fHistScale2EmcalvsNtrack);
141 fOutput->Add(fHistChScalevsNtrack);
142 fOutput->Add(fHistChScale2EmcalvsNtrack);
143 fOutput->Add(fHistTrackPtvsCent);
144 fOutput->Add(fHistClusterPtvsCent);
145 fOutput->Add(fHistTrackEtaPhi);
146 fOutput->Add(fHistClusterEtaPhi);
147 fOutput->Add(fHistScalevsScale2Emcal);
148 fOutput->Add(fHistScalevsScaleEmcal);
149 fOutput->Add(fHistScaleEmcalvsScale2Emcal);
151 PostData(1, fOutput);
154 //________________________________________________________________________
155 Double_t AliAnalysisTaskScale::GetScaleFactor(Double_t cent)
157 // Get scale function.
161 scale = fScaleFunction->Eval(cent);
165 //________________________________________________________________________
166 Bool_t AliAnalysisTaskScale::FillHistograms()
168 // Execute on each event.
169 const Double_t EmcalMinEta = fGeom->GetArm1EtaMin();
170 const Double_t EmcalMaxEta = fGeom->GetArm1EtaMax();
171 const Double_t EmcalMinPhi = fGeom->GetArm1PhiMin() * TMath::DegToRad();
172 const Double_t EmcalMaxPhi = fGeom->GetArm1PhiMax() * TMath::DegToRad();
173 const Double_t EmcalWidth = (EmcalMaxPhi-EmcalMinPhi)/2.0;
175 Double_t TpcMinPhi = fTrackMinPhi;
176 Double_t TpcMaxPhi = fTrackMaxPhi;
177 if (TpcMaxPhi > TMath::Pi()*2)
178 TpcMaxPhi = TMath::Pi()*2;
183 const Double_t TpcArea = (TpcMaxPhi - TpcMinPhi) * (EmcalMinEta - EmcalMaxEta);
184 const Double_t EmcalArea = (EmcalMaxPhi - EmcalMinPhi) * (EmcalMinEta - EmcalMaxEta);
187 Double_t ptEMCAL = 0;
188 Double_t ptEMCAL2 = 0;
190 const Int_t Ntracks = fTracks->GetEntries();
191 for (Int_t iTracks = 0; iTracks < Ntracks; ++iTracks) {
192 AliVTrack *track = static_cast<AliVTrack*>(fTracks->At(iTracks));
197 if (!AcceptTrack(track))
200 if (TMath::Abs(track->Eta()) > 0.7) // only accept tracks in the EMCal eta range
203 fHistTrackPtvsCent->Fill(fCent,track->Pt());
204 fHistTrackEtaPhi->Fill(track->Eta(),track->Phi());
205 ptTPC += track->Pt();
206 if ((track->Phi() > (EmcalMaxPhi+EmcalWidth)) || (track->Phi() < (EmcalMinPhi-EmcalWidth)))
208 ptEMCAL2 += track->Pt();
209 if ((track->Phi() > EmcalMaxPhi) || (track->Phi() < EmcalMinPhi))
211 ptEMCAL += track->Pt();
218 const Int_t Nclus = fCaloClusters->GetEntries();
219 for (Int_t iClus = 0; iClus < Nclus; ++iClus) {
220 AliVCluster *c = static_cast<AliVCluster*>(fCaloClusters->At(iClus));
224 if (!AcceptCluster(c))
227 TLorentzVector nPart;
228 c->GetMomentum(nPart, fVertex);
230 fHistClusterPtvsCent->Fill(fCent, nPart.Pt());
231 fHistClusterEtaPhi->Fill(nPart.Eta(), nPart.Phi());
237 const Double_t scalecalc = ((Et + ptEMCAL) / EmcalArea) * (TpcArea / ptTPC);
238 const Double_t scale = GetScaleFactor(fCent);
239 Double_t scalecalcemcal = -1;
241 scalecalcemcal = (Et+ptEMCAL)/ptEMCAL;
242 Double_t scalecalcemcal2 = -1;
243 Double_t Chscalecalcemcal2 = -1;
245 scalecalcemcal2 = 2*(Et+ptEMCAL)/ptEMCAL2;
246 Chscalecalcemcal2 = 2*ptEMCAL/ptEMCAL2;}
247 const Double_t Chscalecalcemcal = ((ptEMCAL) / EmcalArea) * (TpcArea / ptTPC);
249 fHistScaleEmcalvsCent->Fill(fCent,scalecalcemcal);
250 fHistScale2EmcalvsCent->Fill(fCent,scalecalcemcal2);
251 fHistChScalevsCent->Fill(fCent,Chscalecalcemcal);
252 fHistChScale2EmcalvsCent->Fill(fCent,Chscalecalcemcal2);
253 fHistScaleEmcalvsNtrack->Fill(Ntracks,scalecalcemcal);
254 fHistScale2EmcalvsNtrack->Fill(Ntracks,scalecalcemcal2);
255 fHistChScalevsNtrack->Fill(Ntracks,Chscalecalcemcal);
256 fHistChScale2EmcalvsNtrack->Fill(Ntracks,Chscalecalcemcal2);
257 fHistPtTPCvsCent->Fill(fCent, ptTPC);
258 fHistPtEMCALvsCent->Fill(fCent, ptEMCAL);
259 fHistEtvsCent->Fill(fCent, Et);
260 fHistScalevsCent->Fill(fCent, scalecalc);
261 fHistDeltaScalevsCent->Fill(fCent, scalecalc - scale);
262 fHistPtTPCvsNtrack->Fill(Ntracks, ptTPC);
263 fHistPtEMCALvsNtrack->Fill(Ntracks, ptEMCAL);
264 fHistEtvsNtrack->Fill(Ntracks, Et);
265 fHistScalevsNtrack->Fill(Ntracks, scalecalc);
266 fHistDeltaScalevsNtrack->Fill(Ntracks, scalecalc - scale);
267 fHistScalevsScale2Emcal->Fill(scalecalc,scalecalcemcal2);
268 fHistScalevsScaleEmcal->Fill(scalecalc,scalecalcemcal);
269 fHistScaleEmcalvsScale2Emcal->Fill(scalecalcemcal,scalecalcemcal2);