8 #include <TClonesArray.h>
13 #include <TLorentzVector.h>
15 #include "AliAnalysisManager.h"
16 #include "AliCentrality.h"
17 #include "AliVCluster.h"
18 #include "AliVParticle.h"
19 #include "AliVTrack.h"
20 #include "AliEmcalJet.h"
21 #include "AliVEventHandler.h"
22 #include "AliAODEvent.h"
23 #include "AliExternalTrackParam.h"
24 #include "AliTrackerBase.h"
27 #include "AliAnalysisTaskSAQA.h"
29 ClassImp(AliAnalysisTaskSAQA)
31 //________________________________________________________________________
32 AliAnalysisTaskSAQA::AliAnalysisTaskSAQA() :
33 AliAnalysisTaskEmcalJet("AliAnalysisTaskSAQA", kTRUE),
36 fRepropagateTracks(kFALSE),
37 fTrgClusName("ClustersL1GAMMAFEE"),
46 fHistMaxL1FastORCent(0),
47 fHistMaxL1ClusCent(0),
52 fHistTrPhiEtaNonProp(0),
55 fHistDeltaEtaNewProp(0),
56 fHistDeltaPhiNewProp(0),
57 fHistClusPhiEtaEnergy(0),
59 fHistClusTimeEnergy(0),
63 fHistChVSneCorrCells(0)
65 // Default constructor.
67 for (Int_t i = 0; i < 5; i++) {
72 for (Int_t i = 0; i < 4; i++) {
73 fHistJetsPhiEta[i] = 0;
74 fHistJetsPtNonBias[i] = 0;
75 fHistJetsPtTrack[i] = 0;
76 fHistJetsPtClus[i] = 0;
78 fHistJetsPtArea[i] = 0;
79 fHistJetsPtAreaNonBias[i] = 0;
83 //________________________________________________________________________
84 AliAnalysisTaskSAQA::AliAnalysisTaskSAQA(const char *name) :
85 AliAnalysisTaskEmcalJet(name, kTRUE),
88 fRepropagateTracks(kFALSE),
89 fTrgClusName("ClustersL1GAMMAFEE"),
98 fHistMaxL1FastORCent(0),
99 fHistMaxL1ClusCent(0),
100 fHistMaxL1ThrCent(0),
104 fHistTrPhiEtaNonProp(0),
107 fHistDeltaEtaNewProp(0),
108 fHistDeltaPhiNewProp(0),
109 fHistClusPhiEtaEnergy(0),
110 fHistNCellsEnergy(0),
111 fHistClusTimeEnergy(0),
115 fHistChVSneCorrCells(0)
117 // Standard constructor.
119 for (Int_t i = 0; i < 5; i++) {
120 fHistTrackPhi[i] = 0;
121 fHistTrackEta[i] = 0;
124 for (Int_t i = 0; i < 4; i++) {
125 fHistJetsPhiEta[i] = 0;
126 fHistJetsPtNonBias[i] = 0;
127 fHistJetsPtTrack[i] = 0;
128 fHistJetsPtClus[i] = 0;
130 fHistJetsPtArea[i] = 0;
131 fHistJetsPtAreaNonBias[i] = 0;
135 //________________________________________________________________________
136 AliAnalysisTaskSAQA::~AliAnalysisTaskSAQA()
141 //________________________________________________________________________
142 void AliAnalysisTaskSAQA::UserCreateOutputObjects()
147 fOutput = new TList();
150 fHistCentrality = new TH1F("fHistCentrality","Event centrality distribution", 100, 0, 100);
151 fHistCentrality->GetXaxis()->SetTitle("Centrality (%)");
152 fHistCentrality->GetYaxis()->SetTitle("counts");
153 fOutput->Add(fHistCentrality);
155 fHistZVertex = new TH1F("fHistZVertex","Z vertex position", 60, -30, 30);
156 fHistZVertex->GetXaxis()->SetTitle("z");
157 fHistZVertex->GetYaxis()->SetTitle("counts");
158 fOutput->Add(fHistZVertex);
160 fHistTracksCent = new TH2F("fHistTracksCent","Tracks vs. centrality", 100, 0, 100, fNbins, 0, 4000);
161 fHistTracksCent->GetXaxis()->SetTitle("Centrality (%)");
162 fHistTracksCent->GetYaxis()->SetTitle("No. of tracks");
163 fOutput->Add(fHistTracksCent);
165 if (fAnaType == kEMCAL || fAnaType == kEMCALOnly) {
166 fHistClusCent = new TH2F("fHistClusCent","Clusters vs. centrality", 100, 0, 100, fNbins, 0, 2000);
167 fHistClusCent->GetXaxis()->SetTitle("Centrality (%)");
168 fHistClusCent->GetYaxis()->SetTitle("No. of clusters");
169 fOutput->Add(fHistClusCent);
171 fHistClusTracks = new TH2F("fHistClusTracks","Clusters vs. tracks", fNbins, 0, 4000, fNbins, 0, 2000);
172 fHistClusTracks->GetXaxis()->SetTitle("No. of tracks");
173 fHistClusTracks->GetYaxis()->SetTitle("No. of clusters");
174 fOutput->Add(fHistClusTracks);
176 fHistCellsCent = new TH2F("fHistCellsCent","Cells vs. centrality", 100, 0, 100, fNbins, 0, 6000);
177 fHistCellsCent->GetXaxis()->SetTitle("Centrality (%)");
178 fHistCellsCent->GetYaxis()->SetTitle("No. of EMCal cells");
179 fOutput->Add(fHistCellsCent);
181 fHistCellsTracks = new TH2F("fHistCellsTracks","Cells vs. tracks", fNbins, 0, 4000, fNbins, 0, 6000);
182 fHistCellsTracks->GetXaxis()->SetTitle("No. of tracks");
183 fHistCellsTracks->GetYaxis()->SetTitle("No. of EMCal cells");
184 fOutput->Add(fHistCellsTracks);
186 fHistClusTimeEnergy = new TH2F("fHistClusTimeEnergy","Time vs. energy of clusters", fNbins, fMinBinPt, fMaxBinPt, fNbins, 0, 1e-6);
187 fHistClusTimeEnergy->GetXaxis()->SetTitle("Energy (GeV)");
188 fHistClusTimeEnergy->GetYaxis()->SetTitle("Time");
189 fOutput->Add(fHistClusTimeEnergy);
192 fHistMaxL1FastORCent = new TH2F("fHistMaxL1FastORCent","fHistMaxL1ClusCent", 100, 0, 100, 250, 0, 250);
193 fHistMaxL1FastORCent->GetXaxis()->SetTitle("Centrality [%]");
194 fHistMaxL1FastORCent->GetYaxis()->SetTitle("Maximum L1 FastOR");
195 fOutput->Add(fHistMaxL1FastORCent);
197 fHistMaxL1ClusCent = new TH2F("fHistMaxL1ClusCent","fHistMaxL1ClusCent", 100, 0, 100, 250, 0, 250);
198 fHistMaxL1ClusCent->GetXaxis()->SetTitle("Centrality [%]");
199 fHistMaxL1ClusCent->GetYaxis()->SetTitle("Maximum L1 trigger cluster");
200 fOutput->Add(fHistMaxL1ClusCent);
202 fHistMaxL1ThrCent = new TH2F("fHistMaxL1ThrCent","fHistMaxL1ThrCent", 100, 0, 100, 250, 0, 250);
203 fHistMaxL1ThrCent->GetXaxis()->SetTitle("Centrality [%]");
204 fHistMaxL1ThrCent->GetYaxis()->SetTitle("Maximum L1 threshold");
205 fOutput->Add(fHistMaxL1ThrCent);
209 fHistTracksPt = new TH1F("fHistTracksPt","p_{T} spectrum of reconstructed tracks", fNbins, fMinBinPt, fMaxBinPt);
210 fHistTracksPt->GetXaxis()->SetTitle("p_{T} [GeV/c]");
211 fHistTracksPt->GetYaxis()->SetTitle("counts");
212 fOutput->Add(fHistTracksPt);
214 fHistTrPhiEta = new TH2F("fHistTrPhiEta","Phi-Eta distribution of tracks", 80, -2, 2, 128, 0, 6.4);
215 fHistTrPhiEta->GetXaxis()->SetTitle("#eta");
216 fHistTrPhiEta->GetYaxis()->SetTitle("#phi");
217 fOutput->Add(fHistTrPhiEta);
219 fHistTrEmcPhiEta = new TH2F("fHistTrEmcPhiEta","Phi-Eta emcal distribution of tracks", 80, -2, 2, 128, 0, 6.4);
220 fHistTrEmcPhiEta->GetXaxis()->SetTitle("#eta");
221 fHistTrEmcPhiEta->GetYaxis()->SetTitle("#phi");
222 fOutput->Add(fHistTrEmcPhiEta);
224 fHistTrPhiEtaNonProp = new TH2F("fHistTrPhiEtaNonProp","fHistTrPhiEtaNonProp", 80, -2, 2, 128, 0, 6.4);
225 fHistTrPhiEtaNonProp->GetXaxis()->SetTitle("#eta");
226 fHistTrPhiEtaNonProp->GetYaxis()->SetTitle("#phi");
227 fOutput->Add(fHistTrPhiEtaNonProp);
229 fHistDeltaEtaPt = new TH2F("fHistDeltaEtaPt","fHistDeltaEtaPt", fNbins, fMinBinPt, fMaxBinPt, 80, -0.5, 0.5);
230 fHistDeltaEtaPt->GetXaxis()->SetTitle("p_{T} [GeV/c]");
231 fHistDeltaEtaPt->GetYaxis()->SetTitle("#delta#eta");
232 fOutput->Add(fHistDeltaEtaPt);
234 fHistDeltaPhiPt = new TH2F("fHistDeltaPhiPt","fHistDeltaPhiPt", fNbins, fMinBinPt, fMaxBinPt, 256, -1.6, 4.8);
235 fHistDeltaPhiPt->GetXaxis()->SetTitle("p_{T} [GeV/c]");
236 fHistDeltaPhiPt->GetYaxis()->SetTitle("#delta#phi");
237 fOutput->Add(fHistDeltaPhiPt);
239 if (fRepropagateTracks) {
240 fHistDeltaEtaNewProp = new TH1F("fHistDeltaEtaNewProp","fHistDeltaEtaNewProp", 800, -0.4, 0.4);
241 fHistDeltaEtaNewProp->GetXaxis()->SetTitle("#delta#eta");
242 fHistDeltaEtaNewProp->GetYaxis()->SetTitle("counts");
243 fOutput->Add(fHistDeltaEtaNewProp);
245 fHistDeltaPhiNewProp = new TH1F("fHistDeltaPhiNewProp","fHistDeltaPhiNewProp", 2560, -1.6, 3.2);
246 fHistDeltaPhiNewProp->GetXaxis()->SetTitle("#delta#phi");
247 fHistDeltaPhiNewProp->GetYaxis()->SetTitle("counts");
248 fOutput->Add(fHistDeltaPhiNewProp);
251 if (fAnaType == kEMCAL || fAnaType == kEMCALOnly) {
252 fHistClusPhiEtaEnergy = new TH3F("fHistClusPhiEtaEnergy","Phi-Eta-Energy distribution of clusters", fNbins, fMinBinPt, fMaxBinPt, 80, -2, 2, 128, 0, 6.4);
253 fHistClusPhiEtaEnergy->GetXaxis()->SetTitle("E [GeV]");
254 fHistClusPhiEtaEnergy->GetYaxis()->SetTitle("#eta");
255 fHistClusPhiEtaEnergy->GetZaxis()->SetTitle("#phi");
256 fOutput->Add(fHistClusPhiEtaEnergy);
258 fHistNCellsEnergy = new TH2F("fHistNCellsEnergy","Number of cells vs. energy of clusters", fNbins, fMinBinPt, fMaxBinPt, 30, 0, 30);
259 fHistNCellsEnergy->GetXaxis()->SetTitle("E [GeV]");
260 fHistNCellsEnergy->GetYaxis()->SetTitle("N_{cells}");
261 fOutput->Add(fHistNCellsEnergy);
264 if (fAnaType == kEMCAL || fAnaType == kEMCALOnly) {
266 fHistCellsEnergy = new TH1F("fHistCellsEnergy","Energy spectrum of cells", fNbins, fMinBinPt, fMaxBinPt);
267 fHistCellsEnergy->GetXaxis()->SetTitle("E [GeV]");
268 fHistCellsEnergy->GetYaxis()->SetTitle("counts");
269 fOutput->Add(fHistCellsEnergy);
271 fHistChVSneCells = new TH2F("fHistChVSneCells","Charged energy vs. neutral (cells) energy",
272 (Int_t)(fNbins * 2.5), fMinBinPt, fMaxBinPt * 2.5, (Int_t)(fNbins * 2.5), fMinBinPt, fMaxBinPt * 2.5);
273 fHistChVSneCells->GetXaxis()->SetTitle("E [GeV]");
274 fHistChVSneCells->GetYaxis()->SetTitle("P [GeV/c]");
275 fOutput->Add(fHistChVSneCells);
277 fHistChVSneClus = new TH2F("fHistChVSneClus","Charged energy vs. neutral (clusters) energy",
278 (Int_t)(fNbins * 2.5), fMinBinPt, fMaxBinPt * 2.5, (Int_t)(fNbins * 2.5), fMinBinPt, fMaxBinPt * 2.5);
279 fHistChVSneClus->GetXaxis()->SetTitle("E [GeV]");
280 fHistChVSneClus->GetYaxis()->SetTitle("P [GeV/c]");
281 fOutput->Add(fHistChVSneClus);
283 fHistChVSneCorrCells = new TH2F("fHistChVSneCorrCells","Charged energy vs. neutral (corrected cells) energy",
284 (Int_t)(fNbins * 2.5), fMinBinPt, fMaxBinPt * 2.5, (Int_t)(fNbins * 2.5), fMinBinPt , fMaxBinPt * 2.5);
285 fHistChVSneCorrCells->GetXaxis()->SetTitle("E [GeV]");
286 fHistChVSneCorrCells->GetYaxis()->SetTitle("P [GeV/c]");
287 fOutput->Add(fHistChVSneCorrCells);
290 for (Int_t i = 0; i < 5; i++) {
291 TString histnamephi("fHistTrackPhi_");
293 fHistTrackPhi[i] = new TH1F(histnamephi.Data(),histnamephi.Data(), 128, 0, 6.4);
294 fHistTrackPhi[i]->GetXaxis()->SetTitle("Phi");
295 fOutput->Add(fHistTrackPhi[i]);
297 TString histnameeta("fHistTrackEta_");
299 fHistTrackEta[i] = new TH1F(histnameeta.Data(),histnameeta.Data(), 100, -2, 2);
300 fHistTrackEta[i]->GetXaxis()->SetTitle("Eta");
301 fOutput->Add(fHistTrackEta[i]);
304 fHistTrackPhi[0]->SetLineColor(kRed);
305 fHistTrackEta[0]->SetLineColor(kRed);
306 fHistTrackPhi[1]->SetLineColor(kBlue);
307 fHistTrackEta[1]->SetLineColor(kBlue);
308 fHistTrackPhi[2]->SetLineColor(kGreen);
309 fHistTrackEta[2]->SetLineColor(kGreen);
310 fHistTrackPhi[3]->SetLineColor(kOrange);
311 fHistTrackEta[3]->SetLineColor(kOrange);
312 fHistTrackPhi[4]->SetLineColor(kBlack);
313 fHistTrackEta[4]->SetLineColor(kBlack);
315 if (!fJetsName.IsNull()) {
319 for (Int_t i = 0; i < 4; i++) {
320 histname = "fHistJetsPhiEta_";
322 fHistJetsPhiEta[i] = new TH2F(histname.Data(), histname.Data(), 80, -2, 2, 128, 0, 6.4);
323 fHistJetsPhiEta[i]->GetXaxis()->SetTitle("#eta");
324 fHistJetsPhiEta[i]->GetYaxis()->SetTitle("#phi");
325 fHistJetsPhiEta[i]->GetZaxis()->SetTitle("p_{T} [GeV/c]");
326 fOutput->Add(fHistJetsPhiEta[i]);
328 histname = "fHistJetsPtNonBias_";
330 fHistJetsPtNonBias[i] = new TH1F(histname.Data(), histname.Data(), (Int_t)(fNbins * 2.5), fMinBinPt, fMaxBinPt * 2.5);
331 fHistJetsPtNonBias[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
332 fHistJetsPtNonBias[i]->GetYaxis()->SetTitle("counts");
333 fOutput->Add(fHistJetsPtNonBias[i]);
335 histname = "fHistJetsPtTrack_";
337 fHistJetsPtTrack[i] = new TH1F(histname.Data(), histname.Data(), (Int_t)(fNbins * 2.5), fMinBinPt, fMaxBinPt * 2.5);
338 fHistJetsPtTrack[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
339 fHistJetsPtTrack[i]->GetYaxis()->SetTitle("counts");
340 fOutput->Add(fHistJetsPtTrack[i]);
342 if (fAnaType == kEMCAL || fAnaType == kEMCALOnly) {
343 histname = "fHistJetsPtClus_";
345 fHistJetsPtClus[i] = new TH1F(histname.Data(), histname.Data(), (Int_t)(fNbins * 2.5), fMinBinPt, fMaxBinPt * 2.5);
346 fHistJetsPtClus[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
347 fHistJetsPtClus[i]->GetYaxis()->SetTitle("counts");
348 fOutput->Add(fHistJetsPtClus[i]);
351 histname = "fHistJetsPt_";
353 fHistJetsPt[i] = new TH1F(histname.Data(), histname.Data(), (Int_t)(fNbins * 2.5), fMinBinPt, fMaxBinPt * 2.5);
354 fHistJetsPt[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
355 fHistJetsPt[i]->GetYaxis()->SetTitle("counts");
356 fOutput->Add(fHistJetsPt[i]);
358 histname = "fHistJetsPtAreaNonBias_";
360 fHistJetsPtAreaNonBias[i] = new TH2F(histname.Data(), histname.Data(), (Int_t)(fNbins * 2.5), fMinBinPt, fMaxBinPt * 2.5, 20, 0, fJetRadius * fJetRadius * TMath::Pi() * 1.5);
361 fHistJetsPtAreaNonBias[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
362 fHistJetsPtAreaNonBias[i]->GetYaxis()->SetTitle("area");
363 fOutput->Add(fHistJetsPtAreaNonBias[i]);
365 histname = "fHistJetsPtArea_";
367 fHistJetsPtArea[i] = new TH2F(histname.Data(), histname.Data(), (Int_t)(fNbins * 2.5), fMinBinPt, fMaxBinPt * 2.5, 20, 0, fJetRadius * fJetRadius * TMath::Pi() * 1.5);
368 fHistJetsPtArea[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
369 fHistJetsPtArea[i]->GetYaxis()->SetTitle("area");
370 fOutput->Add(fHistJetsPtArea[i]);
374 PostData(1, fOutput); // Post data for ALL output slots >0 here, to get at least an empty histogram
377 //________________________________________________________________________
378 Bool_t AliAnalysisTaskSAQA::RetrieveEventObjects()
380 // Retrieve event objects.
382 if (!AliAnalysisTaskEmcalJet::RetrieveEventObjects())
385 if (!fTrgClusName.IsNull() && fDoTrigger && !fTrgClusters) {
386 fTrgClusters = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fTrgClusName));
388 AliError(Form("%s: Could not retrieve trigger clusters %s!", GetName(), fTrgClusName.Data()));
392 TClass *cl = fTrgClusters->GetClass();
393 if (!cl->GetBaseClass("AliVCluster") && !cl->GetBaseClass("AliEmcalParticle")) {
394 AliError(Form("%s: Collection %s does not contain AliVCluster nor AliEmcalParticle objects!", GetName(), fTrgClusName.Data()));
404 //________________________________________________________________________
405 Bool_t AliAnalysisTaskSAQA::FillHistograms()
409 fHistCentrality->Fill(fCent);
411 fHistTracksCent->Fill(fCent, fTracks->GetEntriesFast());
413 fHistClusCent->Fill(fCent, fCaloClusters->GetEntriesFast());
415 fHistZVertex->Fill(fVertex[2]);
417 Float_t trackSum = DoTrackLoop();
421 if (fAnaType == kEMCAL || fAnaType == kEMCALOnly) {
423 if (fTracks && fCaloClusters)
424 fHistClusTracks->Fill(fTracks->GetEntriesFast(), fCaloClusters->GetEntriesFast());
426 Float_t clusSum = DoClusterLoop();
428 Float_t cellSum = 0, cellCutSum = 0;
430 Int_t ncells = DoCellLoop(cellSum, cellCutSum);
433 fHistCellsTracks->Fill(fTracks->GetEntriesFast(), ncells);
435 fHistCellsCent->Fill(fCent, ncells);
437 fHistChVSneCells->Fill(cellSum, trackSum);
438 fHistChVSneClus->Fill(clusSum, trackSum);
439 fHistChVSneCorrCells->Fill(cellCutSum, trackSum);
442 Float_t maxTrgClus = DoTriggerClusLoop();
443 fHistMaxL1ClusCent->Fill(fCent, maxTrgClus);
448 DoTriggerPrimitives(maxL1amp, maxL1thr);
451 fHistMaxL1FastORCent->Fill(fCent, maxL1amp);
454 fHistMaxL1ThrCent->Fill(fCent, maxL1thr);
461 //________________________________________________________________________
462 Int_t AliAnalysisTaskSAQA::DoCellLoop(Float_t &sum, Float_t &sum_cut)
466 AliVCaloCells *cells = InputEvent()->GetEMCALCells();
471 const Int_t ncells = cells->GetNumberOfCells();
473 for (Int_t pos = 0; pos < ncells; pos++) {
474 Float_t amp = cells->GetAmplitude(pos);
475 fHistCellsEnergy->Fill(amp);
477 if (amp < fCellEnergyCut)
485 //________________________________________________________________________
486 Float_t AliAnalysisTaskSAQA::DoClusterLoop()
496 Int_t nclusters = fCaloClusters->GetEntriesFast();
498 for (Int_t iClusters = 0; iClusters < nclusters; iClusters++) {
499 AliVCluster* cluster = static_cast<AliVCluster*>(fCaloClusters->At(iClusters));
501 AliError(Form("Could not receive cluster %d", iClusters));
505 if (!AcceptCluster(cluster, kTRUE))
510 TLorentzVector nPart;
511 cluster->GetMomentum(nPart, fVertex);
513 fHistClusPhiEtaEnergy->Fill(cluster->E(), nPart.Eta(), nPart.Phi());
514 fHistNCellsEnergy->Fill(cluster->E(), cluster->GetNCells());
516 fHistClusTimeEnergy->Fill(cluster->E(), cluster->GetTOF());
522 //________________________________________________________________________
523 Float_t AliAnalysisTaskSAQA::DoTrackLoop()
532 Int_t ntracks = fTracks->GetEntriesFast();
535 nclusters = fCaloClusters->GetEntriesFast();
537 for (Int_t i = 0; i < ntracks; i++) {
539 AliVParticle* track = static_cast<AliVParticle*>(fTracks->At(i)); // pointer to reconstructed to track
542 AliError(Form("Could not retrieve track %d",i));
546 AliVTrack* vtrack = dynamic_cast<AliVTrack*>(track);
548 if (vtrack && !AcceptTrack(vtrack, kTRUE))
551 fHistTracksPt->Fill(track->Pt());
555 Int_t label = track->GetLabel();
557 fHistTrPhiEta->Fill(track->Eta(), track->Phi());
559 fHistTrackEta[4]->Fill(track->Eta());
560 fHistTrackPhi[4]->Fill(track->Phi());
562 if (label >= 0 && label < 4) {
563 fHistTrackEta[label]->Fill(track->Eta());
564 fHistTrackPhi[label]->Fill(track->Phi());
570 if (vtrack->GetTrackEtaOnEMCal() == -999 || vtrack->GetTrackPhiOnEMCal() == -999)
571 fHistTrPhiEtaNonProp->Fill(vtrack->Eta(), vtrack->Phi());
573 fHistTrEmcPhiEta->Fill(vtrack->GetTrackEtaOnEMCal(), vtrack->GetTrackPhiOnEMCal());
574 fHistDeltaEtaPt->Fill(vtrack->Pt(), vtrack->Eta() - vtrack->GetTrackEtaOnEMCal());
575 fHistDeltaPhiPt->Fill(vtrack->Pt(), vtrack->Phi() - vtrack->GetTrackPhiOnEMCal());
577 if (fRepropagateTracks && vtrack->GetTrackEtaOnEMCal() > -2) {
578 Float_t propeta = -999, propphi = -999;
579 PropagateTrack(vtrack, propeta, propphi);
580 fHistDeltaEtaNewProp->Fill(propeta - vtrack->GetTrackEtaOnEMCal());
581 fHistDeltaPhiNewProp->Fill(propphi - vtrack->GetTrackPhiOnEMCal());
588 //____________________________________________________________________________
589 void AliAnalysisTaskSAQA::PropagateTrack(AliVTrack *track, Float_t &eta, Float_t &phi)
597 if (track->Pt() == 0)
600 // init the magnetic field if not already on
601 if(!TGeoGlobalMagField::Instance()->GetField()) {
602 AliInfo("Init the magnetic field\n");
603 AliAODEvent* aodevent = dynamic_cast<AliAODEvent*>(InputEvent());
605 Double_t curSol = 30000*aodevent->GetMagneticField()/5.00668;
606 Double_t curDip = 6000 *aodevent->GetMuonMagFieldScale();
607 AliMagF *field = AliMagF::CreateFieldMap(curSol,curDip);
608 TGeoGlobalMagField::Instance()->SetField(field);
613 for (Int_t i = 0; i < 21; i++) cv[i] = 0;
615 Double_t pos[3], mom[3];
617 track->GetPxPyPz(mom);
618 AliExternalTrackParam *trackParam = new AliExternalTrackParam(pos, mom, cv, track->Charge());
620 if(!AliTrackerBase::PropagateTrackToBxByBz(trackParam, 430., 0.139, 20, kTRUE, 0.8, -1)) return;
621 Double_t trkPos[3] = {0., 0., 0.};
622 if(!trackParam->GetXYZ(trkPos)) return;
623 TVector3 trkPosVec(trkPos[0], trkPos[1], trkPos[2]);
624 eta = trkPosVec.Eta();
625 phi = trkPosVec.Phi();
627 phi += 2 * TMath::Pi();
630 //________________________________________________________________________
631 void AliAnalysisTaskSAQA::DoJetLoop()
638 Int_t njets = fJets->GetEntriesFast();
640 for (Int_t ij = 0; ij < njets; ij++) {
642 AliEmcalJet* jet = static_cast<AliEmcalJet*>(fJets->At(ij));
645 AliError(Form("Could not receive jet %d", ij));
649 if (!AcceptJet(jet, kFALSE))
652 fHistJetsPtNonBias[fCentBin]->Fill(jet->Pt());
653 fHistJetsPtAreaNonBias[fCentBin]->Fill(jet->Pt(), jet->Area());
655 if (jet->MaxTrackPt() > fPtBiasJetTrack)
656 fHistJetsPtTrack[fCentBin]->Fill(jet->Pt());
658 if (fAnaType == kEMCAL && jet->MaxClusterPt() > fPtBiasJetClus)
659 fHistJetsPtClus[fCentBin]->Fill(jet->Pt());
661 if (!AcceptBiasJet(jet))
664 fHistJetsPt[fCentBin]->Fill(jet->Pt());
665 fHistJetsPtArea[fCentBin]->Fill(jet->Pt(), jet->Area());
667 fHistJetsPhiEta[fCentBin]->Fill(jet->Eta(), jet->Phi());
671 //________________________________________________________________________
672 Float_t AliAnalysisTaskSAQA::DoTriggerClusLoop()
674 // Do trigger cluster loop.
679 Int_t ntrgclusters = fTrgClusters->GetEntriesFast();
680 Float_t maxTrgClus = 0;
682 for (Int_t iClusters = 0; iClusters < ntrgclusters; iClusters++) {
683 AliVCluster* cluster = static_cast<AliVCluster*>(fTrgClusters->At(iClusters));
685 AliError(Form("Could not receive cluster %d", iClusters));
689 if (!(cluster->IsEMCAL())) continue;
691 if (cluster->E() > maxTrgClus)
692 maxTrgClus = cluster->E();
698 //________________________________________________________________________
699 void AliAnalysisTaskSAQA::DoTriggerPrimitives(Int_t &maxL1amp, Int_t &maxL1thr)
701 // Do trigger primitives loop.
703 AliVCaloTrigger *triggers = InputEvent()->GetCaloTrigger("EMCAL");
705 if (!triggers || triggers->GetEntries() == 0)
714 while (triggers->Next()) {
715 triggers->GetL1TimeSum(L1amp);
716 if (maxL1amp < L1amp)
719 triggers->GetL1Threshold(L1thr);
720 if (maxL1thr < L1thr)
725 //________________________________________________________________________
726 void AliAnalysisTaskSAQA::Terminate(Option_t *)
728 // Called once at the end of the analysis.