1 #include "AliAnalysisTaskFullpAJets.h"
11 #include <THnSparse.h>
14 #include <TLorentzVector.h>
16 #include <TProfile2D.h>
17 #include <TProfile3D.h>
20 #include <TClonesArray.h>
21 #include <TObjArray.h>
23 #include "AliAnalysisTaskSE.h"
24 #include "AliAnalysisManager.h"
26 #include "AliESDtrackCuts.h"
27 #include "AliESDEvent.h"
28 #include "AliESDInputHandler.h"
29 #include "AliAODEvent.h"
30 #include "AliVEvent.h"
31 #include "AliMCEvent.h"
32 #include "AliVTrack.h"
33 #include "AliVCluster.h"
34 #include "AliEmcalJet.h"
35 #include "AliEMCALGeometry.h"
36 #include "AliEMCALRecoUtils.h"
37 #include "AliVCaloCells.h"
38 #include "AliPicoTrack.h"
41 ClassImp(AliAnalysisTaskFullpAJets)
43 //________________________________________________________________________
44 AliAnalysisTaskFullpAJets::AliAnalysisTaskFullpAJets() :
56 fhComplementaryTrackPt(0),
57 fhComplementaryTrackEta(0),
58 fhComplementaryTrackPhi(0),
68 fhGlobalTrackEtaPhi(0),
69 fhGlobalTrackPhiPt(0),
70 fhGlobalTrackEtaPt(0),
71 fhComplementaryTrackEtaPhi(0),
72 fhComplementaryTrackPhiPt(0),
73 fhComplementaryTrackEtaPt(0),
79 fhEMCalTrackEventMult(0),
85 fpClusterPtProfile(0),
89 fRhoChargedCMSScale(0),
103 fRhoChargedkTScale(0),
114 fEMCalPartJetUnbiased(0),
131 fEMCalPhiMin(1.39626),
132 fEMCalPhiMax(3.26377),
133 fEMCalPhiTotal(1.86750),
140 fTPCPhiTotal(6.28319),
146 fParticlePtUp(200.0),
147 fParticlePtBins(200),
150 fJetAreaCutFrac(0.6),
151 fJetAreaThreshold(0.30159),
157 fNEFSignalJetCut(0.9),
158 fCentralityTag("V0A"),
174 fEMCalJetThreshold(5),
186 fmyAKTChargedJets(0),
193 fEMCalRCBckgFlucSignal(0),
194 fTPCRCBckgFlucSignal(0),
195 fEMCalRCBckgFlucNColl(0),
196 fTPCRCBckgFlucNColl(0)
198 // Dummy constructor ALWAYS needed for I/O.
199 fVertex[0]=0.0,fVertex[1]=0.0,fVertex[2]=0.0;
202 //________________________________________________________________________
203 AliAnalysisTaskFullpAJets::AliAnalysisTaskFullpAJets(const char *name) :
204 AliAnalysisTaskSE(name),
215 fhComplementaryTrackPt(0),
216 fhComplementaryTrackEta(0),
217 fhComplementaryTrackPhi(0),
222 fhEMCalCellCounts(0),
227 fhGlobalTrackEtaPhi(0),
228 fhGlobalTrackPhiPt(0),
229 fhGlobalTrackEtaPt(0),
230 fhComplementaryTrackEtaPhi(0),
231 fhComplementaryTrackPhiPt(0),
232 fhComplementaryTrackEtaPt(0),
238 fhEMCalTrackEventMult(0),
244 fpClusterPtProfile(0),
248 fRhoChargedCMSScale(0),
262 fRhoChargedkTScale(0),
273 fEMCalPartJetUnbiased(0),
290 fEMCalPhiMin(1.39626),
291 fEMCalPhiMax(3.26377),
292 fEMCalPhiTotal(1.86750),
299 fTPCPhiTotal(6.28319),
305 fParticlePtUp(200.0),
306 fParticlePtBins(2000),
309 fJetAreaCutFrac(0.6),
310 fJetAreaThreshold(0.30159),
316 fNEFSignalJetCut(0.9),
317 fCentralityTag("V0A"),
333 fEMCalJetThreshold(5),
345 fmyAKTChargedJets(0),
352 fEMCalRCBckgFlucSignal(0),
353 fTPCRCBckgFlucSignal(0),
354 fEMCalRCBckgFlucNColl(0),
355 fTPCRCBckgFlucNColl(0)
358 // Define input and output slots here (never in the dummy constructor)
359 // Input slot #0 works with a TChain - it is connected to the default input container
360 // Output slot #1 writes into a TH1 container
361 fVertex[0]=0.0,fVertex[1]=0.0,fVertex[2]=0.0;
363 DefineOutput(1,TList::Class()); // for output list
366 //________________________________________________________________________
367 AliAnalysisTaskFullpAJets::~AliAnalysisTaskFullpAJets()
369 // Destructor. Clean-up the output list, but not the histograms that are put inside
370 // (the list is owner and will clean-up these histograms). Protect in PROOF case.
371 if (fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode())
377 //________________________________________________________________________
378 void AliAnalysisTaskFullpAJets::UserCreateOutputObjects()
381 // Called once (on the worker node)
382 fIsInitialized=kFALSE;
383 fOutput = new TList();
384 fOutput->SetOwner(); // IMPORTANT!
386 // Initialize Global Variables
391 // fRJET=4 -> fJetR=0.4 && fRJET=25 -> fJetR=0.25, but for writing files, should be 4 and 25 respectively
394 fJetR=(Double_t)fRJET/100.0;
398 fJetR=(Double_t)fRJET/10.0;
402 fEMCalPhiMin=(80/(double)360)*2*TMath::Pi();
403 fEMCalPhiMax=(187/(double)360)*2*TMath::Pi();
404 fEMCalPhiTotal= fEMCalPhiMax-fEMCalPhiMin;
407 fEMCalEtaTotal=fEMCalEtaMax-fEMCalEtaMin;
408 fEMCalArea=fEMCalPhiTotal*fEMCalEtaTotal;
410 fTPCPhiMin=(0/(double)360)*2*TMath::Pi();
411 fTPCPhiMax=(360/(double)360)*2*TMath::Pi();
412 fTPCPhiTotal= fTPCPhiMax-fTPCPhiMin;
415 fTPCEtaTotal=fTPCEtaMax-fTPCEtaMin;
416 fTPCArea=fTPCPhiTotal*fTPCEtaTotal;
420 fParticlePtBins=Int_t(fParticlePtUp-fParticlePtLow);
425 Int_t CentralityBinMult=10;
427 fJetAreaCutFrac =0.6; // Fudge factor for selecting on jets with threshold Area or higher
428 fJetAreaThreshold=fJetAreaCutFrac*TMath::Pi()*fJetR*fJetR;
429 fTPCJetThreshold=5.0; // Threshold required for an Anti-kT Charged jet to be considered a "true" jet in TPC
430 fEMCalJetThreshold=5.0; // Threshold required for an Anti-kT Charged+Neutral jet to be considered a "true" jet in EMCal
435 fEMCalRCBckgFluc = new Double_t[fnBckgClusters];
436 fTPCRCBckgFluc = new Double_t[fnBckgClusters];
437 fEMCalRCBckgFlucSignal = new Double_t[fnBckgClusters];
438 fTPCRCBckgFlucSignal = new Double_t[fnBckgClusters];
439 fEMCalRCBckgFlucNColl = new Double_t[fnBckgClusters];
440 fTPCRCBckgFlucNColl = new Double_t[fnBckgClusters];
441 for (Int_t i=0;i<fnBckgClusters;i++)
443 fEMCalRCBckgFluc[i]=0.0;
444 fTPCRCBckgFluc[i]=0.0;
445 fEMCalRCBckgFlucSignal[i]=0.0;
446 fTPCRCBckgFlucSignal[i]=0.0;
447 fEMCalRCBckgFlucNColl[i]=0.0;
448 fTPCRCBckgFlucNColl[i]=0.0;
451 fnEMCalCells=12288; // sMods 1-10 have 24x48 cells, sMods 11&12 have 8x48 cells...
458 fhCentrality = new TH1F("fhCentrality","Event Centrality Distribution",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
459 fhCentrality->GetXaxis()->SetTitle(fCentralityTag);
460 fhCentrality->GetYaxis()->SetTitle("1/N_{Events}");
461 fhCentrality->Sumw2();
466 flTrack = new TList();
467 flTrack->SetName("TrackQA");
470 fhTrackPt = new TH1F("fhTrackPt","p_{T} distribution of tracks in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
471 fhTrackPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
472 fhTrackPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
475 fhTrackPhi = new TH1F("fhTrackPhi","#varphi distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax);
476 fhTrackPhi->GetXaxis()->SetTitle("#varphi");
477 fhTrackPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
480 fhTrackEta = new TH1F("fhTrackEta","#eta distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax);
481 fhTrackEta->GetXaxis()->SetTitle("#eta");
482 fhTrackEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
485 fhTrackEtaPhi = new TH2F("fhTrackEtaPhi","#eta-#varphi distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
486 fhTrackEtaPhi->GetXaxis()->SetTitle("#eta");
487 fhTrackEtaPhi->GetYaxis()->SetTitle("#varphi");
488 fhTrackEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
489 fhTrackEtaPhi->Sumw2();
491 fhTrackPhiPt = new TH2F("fhTrackPhiPt","#varphi-p_{T} distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
492 fhTrackPhiPt->GetXaxis()->SetTitle("#varphi");
493 fhTrackPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
494 fhTrackPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
495 fhTrackPhiPt->Sumw2();
497 fhTrackEtaPt = new TH2F("fhTrackEtaPt","#eta-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
498 fhTrackEtaPt->GetXaxis()->SetTitle("#varphi");
499 fhTrackEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
500 fhTrackEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
501 fhTrackEtaPt->Sumw2();
504 fhGlobalTrackPt = new TH1F("fhGlobalTrackPt","Global p_{T} distribution of tracks in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
505 fhGlobalTrackPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
506 fhGlobalTrackPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
507 fhGlobalTrackPt->Sumw2();
509 fhGlobalTrackPhi = new TH1F("fhGlobalTrackPhi","Global #varphi distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax);
510 fhGlobalTrackPhi->GetXaxis()->SetTitle("#varphi");
511 fhGlobalTrackPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
512 fhGlobalTrackPhi->Sumw2();
514 fhGlobalTrackEta = new TH1F("fhGlobalTrackEta","Global #eta distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax);
515 fhGlobalTrackEta->GetXaxis()->SetTitle("#eta");
516 fhGlobalTrackEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
517 fhGlobalTrackEta->Sumw2();
519 fhGlobalTrackEtaPhi = new TH2F("fhGlobalTrackEtaPhi","Global #eta-#varphi distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
520 fhGlobalTrackEtaPhi->GetXaxis()->SetTitle("#eta");
521 fhGlobalTrackEtaPhi->GetYaxis()->SetTitle("#varphi");
522 fhGlobalTrackEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
523 fhGlobalTrackEtaPhi->Sumw2();
525 fhGlobalTrackPhiPt = new TH2F("fhGlobalTrackPhiPt","Global #varphi-p_{T} distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
526 fhGlobalTrackPhiPt->GetXaxis()->SetTitle("#varphi");
527 fhGlobalTrackPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
528 fhGlobalTrackPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
529 fhGlobalTrackPhiPt->Sumw2();
531 fhGlobalTrackEtaPt = new TH2F("fhGlobalTrackEtaPt","Global #eta-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
532 fhGlobalTrackEtaPt->GetXaxis()->SetTitle("#varphi");
533 fhGlobalTrackEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
534 fhGlobalTrackEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
535 fhGlobalTrackEtaPt->Sumw2();
537 // Complementary Tracks
538 fhComplementaryTrackPt = new TH1F("fhComplementaryTrackPt","Complementary p_{T} distribution of tracks in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
539 fhComplementaryTrackPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
540 fhComplementaryTrackPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
541 fhComplementaryTrackPt->Sumw2();
543 fhComplementaryTrackPhi = new TH1F("fhComplementaryTrackPhi","Complementary #varphi distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax);
544 fhComplementaryTrackPhi->GetXaxis()->SetTitle("#varphi");
545 fhComplementaryTrackPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
546 fhComplementaryTrackPhi->Sumw2();
548 fhComplementaryTrackEta = new TH1F("fhComplementaryTrackEta","Complementary #eta distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax);
549 fhComplementaryTrackEta->GetXaxis()->SetTitle("#eta");
550 fhComplementaryTrackEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
551 fhComplementaryTrackEta->Sumw2();
553 fhComplementaryTrackEtaPhi = new TH2F("fhComplementaryTrackEtaPhi","Complementary #eta-#varphi distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
554 fhComplementaryTrackEtaPhi->GetXaxis()->SetTitle("#eta");
555 fhComplementaryTrackEtaPhi->GetYaxis()->SetTitle("#varphi");
556 fhComplementaryTrackEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
557 fhComplementaryTrackEtaPhi->Sumw2();
559 fhComplementaryTrackPhiPt = new TH2F("fhComplementaryTrackPhiPt","Complementary #varphi-p_{T} distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
560 fhComplementaryTrackPhiPt->GetXaxis()->SetTitle("#varphi");
561 fhComplementaryTrackPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
562 fhComplementaryTrackPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
563 fhComplementaryTrackPhiPt->Sumw2();
565 fhComplementaryTrackEtaPt = new TH2F("fhComplementaryTrackEtaPt","Complementary #eta-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
566 fhComplementaryTrackEtaPt->GetXaxis()->SetTitle("#varphi");
567 fhComplementaryTrackEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
568 fhComplementaryTrackEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
569 fhComplementaryTrackEtaPt->Sumw2();
571 fhTPCEventMult = new TH2F("fhTPCEventMult","TPC Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp,multBins,multLow,multUp);
572 fhTPCEventMult->GetXaxis()->SetTitle(fCentralityTag);
573 fhTPCEventMult->GetYaxis()->SetTitle("Multiplicity");
574 fhTPCEventMult->GetZaxis()->SetTitle("1/N_{Events} dN/dCentdN_{Charged}");
575 fhTPCEventMult->Sumw2();
577 fhEMCalTrackEventMult = new TH2F("fhEMCalTrackEventMult","EMCal Track Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp,multBins,multLow,multUp);
578 fhEMCalTrackEventMult->GetXaxis()->SetTitle(fCentralityTag);
579 fhEMCalTrackEventMult->GetYaxis()->SetTitle("Multiplicity");
580 fhEMCalTrackEventMult->GetZaxis()->SetTitle("1/N_{Events} dN/dCentdN_{Neutral}");
581 fhEMCalTrackEventMult->Sumw2();
583 fpTPCEventMult = new TProfile("fpTPCEventMult","TPC Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp);
584 fpTPCEventMult->GetXaxis()->SetTitle(fCentralityTag);
585 fpTPCEventMult->GetYaxis()->SetTitle("Multiplicity");
587 // QA::2D Energy Density Profiles for Tracks and Clusters
588 fpTrackPtProfile = new TProfile2D("fpTrackPtProfile","2D Profile of track pT density throughout the TPC",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
589 fpTrackPtProfile->GetXaxis()->SetTitle("#eta");
590 fpTrackPtProfile->GetYaxis()->SetTitle("#varphi");
591 fpTrackPtProfile->GetZaxis()->SetTitle("p_{T} density (GeV/Area)");
593 flTrack->Add(fhTrackPt);
594 flTrack->Add(fhTrackEta);
595 flTrack->Add(fhTrackPhi);
596 flTrack->Add(fhTrackEtaPhi);
597 flTrack->Add(fhTrackPhiPt);
598 flTrack->Add(fhTrackEtaPt);
599 flTrack->Add(fhGlobalTrackPt);
600 flTrack->Add(fhGlobalTrackEta);
601 flTrack->Add(fhGlobalTrackPhi);
602 flTrack->Add(fhGlobalTrackEtaPhi);
603 flTrack->Add(fhGlobalTrackPhiPt);
604 flTrack->Add(fhGlobalTrackEtaPt);
605 flTrack->Add(fhComplementaryTrackPt);
606 flTrack->Add(fhComplementaryTrackEta);
607 flTrack->Add(fhComplementaryTrackPhi);
608 flTrack->Add(fhComplementaryTrackEtaPhi);
609 flTrack->Add(fhComplementaryTrackPhiPt);
610 flTrack->Add(fhComplementaryTrackEtaPt);
611 flTrack->Add(fhTPCEventMult);
612 flTrack->Add(fhEMCalTrackEventMult);
613 flTrack->Add(fpTPCEventMult);
614 flTrack->Add(fpTrackPtProfile);
615 fOutput->Add(flTrack);
618 if (fClusterQA==kTRUE)
620 flCluster = new TList();
621 flCluster->SetName("ClusterQA");
623 fhClusterPt = new TH1F("fhClusterPt","p_{T} distribution of clusters in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
624 fhClusterPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
625 fhClusterPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
626 fhClusterPt->Sumw2();
628 fhClusterPhi = new TH1F("fhClusterPhi","#varphi distribution of clusters in event",TCBins,fTPCPhiMin,fTPCPhiMax);
629 fhClusterPhi->GetXaxis()->SetTitle("#varphi");
630 fhClusterPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
631 fhClusterPhi->Sumw2();
633 fhClusterEta = new TH1F("fhClusterEta","#eta distribution of clusters in event",TCBins,fTPCEtaMin,fTPCEtaMax);
634 fhClusterEta->GetXaxis()->SetTitle("#eta");
635 fhClusterEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
636 fhClusterEta->Sumw2();
638 fhClusterEtaPhi = new TH2F("fhClusterEtaPhi","#eta-#varphi distribution of clusters in event",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax);
639 fhClusterEtaPhi->GetXaxis()->SetTitle("#eta");
640 fhClusterEtaPhi->GetYaxis()->SetTitle("#varphi");
641 fhClusterEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
642 fhClusterEtaPhi->Sumw2();
644 fhClusterPhiPt = new TH2F("fhClusterPhiPt","#varphi-p_{T} distribution of clusters in event",TCBins,fEMCalPhiMin,fEMCalPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
645 fhClusterPhiPt->GetXaxis()->SetTitle("#varphi");
646 fhClusterPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
647 fhClusterPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
648 fhClusterPhiPt->Sumw2();
650 fhClusterEtaPt = new TH2F("fhClusterEtaPt","#eta-p_{T} distribution of clusters in event",TCBins,fEMCalEtaMin,fEMCalEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
651 fhClusterEtaPt->GetXaxis()->SetTitle("#varphi");
652 fhClusterEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
653 fhClusterEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
654 fhClusterEtaPt->Sumw2();
656 fhEMCalEventMult = new TH2F("fhEMCalEventMult","EMCal Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp,multBins,multLow,multUp);
657 fhEMCalEventMult->GetXaxis()->SetTitle(fCentralityTag);
658 fhEMCalEventMult->GetYaxis()->SetTitle("Multiplicity");
659 fhEMCalEventMult->GetZaxis()->SetTitle("1/N_{Events} dN/dCentdN_{Neutral}");
660 fhEMCalEventMult->Sumw2();
662 fpEMCalEventMult = new TProfile("fpEMCalEventMult","EMCal Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp);
663 fpEMCalEventMult->GetXaxis()->SetTitle(fCentralityTag);
664 fpEMCalEventMult->GetYaxis()->SetTitle("Multiplicity");
666 fpClusterPtProfile = new TProfile2D("fpClusterPtProfile","2D Profile of cluster pT density throughout the EMCal",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax);
667 fpClusterPtProfile->GetXaxis()->SetTitle("#eta");
668 fpClusterPtProfile->GetYaxis()->SetTitle("#varphi");
669 fpClusterPtProfile->GetZaxis()->SetTitle("p_{T} density (GeV/Area)");
671 fhEMCalCellCounts = new TH1F("fhEMCalCellCounts","Distribtuion of cluster counts across the EMCal",fnEMCalCells,1,fnEMCalCells);
672 fhEMCalCellCounts->GetXaxis()->SetTitle("Absoulute Cell Id");
673 fhEMCalCellCounts->GetYaxis()->SetTitle("Counts per Event");
674 fhEMCalCellCounts->Sumw2();
676 flCluster->Add(fhClusterPt);
677 flCluster->Add(fhClusterEta);
678 flCluster->Add(fhClusterPhi);
679 flCluster->Add(fhClusterEtaPhi);
680 flCluster->Add(fhClusterPhiPt);
681 flCluster->Add(fhClusterEtaPt);
682 flCluster->Add(fhEMCalEventMult);
683 flCluster->Add(fpEMCalEventMult);
684 flCluster->Add(fpClusterPtProfile);
685 flCluster->Add(fhEMCalCellCounts);
686 fOutput->Add(flCluster);
689 if (fCalculateRhoJet>=0) // Default Rho & Raw Jet Spectra
691 fEMCalRawJets = new AlipAJetHistos("EMCalRawJets",fCentralityTag);
693 fRhoChargedCMSScale = new AlipAJetHistos("RhoChargedCMSScale",fCentralityTag,fDoNEF);
694 fRhoChargedCMSScale->SetSignalTrackPtBias(fSignalTrackBias);
696 fOutput->Add(fEMCalRawJets->GetOutputHistos());
697 fOutput->Add(fRhoChargedCMSScale->GetOutputHistos());
700 if (fCalculateRhoJet>=1) // Basic Rho & Raw Jet Spectra
702 fRhoChargedScale = new AlipAJetHistos("RhoChargedScale",fCentralityTag);
703 fRhoChargedScale->SetSignalTrackPtBias(fSignalTrackBias);
705 fOutput->Add(fRhoChargedScale->GetOutputHistos());
707 if (fCalculateRhoJet>=2) // Basic Rho & Raw Jet Spectra
709 fTPCRawJets = new AlipAJetHistos("TPCRawJets",fCentralityTag);
710 fRhoFull0 = new AlipAJetHistos("RhoFull0",fCentralityTag);
711 fRhoFull0->SetSignalTrackPtBias(fSignalTrackBias);
712 fRhoFull1 = new AlipAJetHistos("RhoFull1",fCentralityTag);
713 fRhoFull1->SetSignalTrackPtBias(fSignalTrackBias);
714 fRhoFull2 = new AlipAJetHistos("RhoFull2",fCentralityTag);
715 fRhoFull2->SetSignalTrackPtBias(fSignalTrackBias);
716 fRhoFullN = new AlipAJetHistos("RhoFullN",fCentralityTag);
717 fRhoFullN->SetSignalTrackPtBias(fSignalTrackBias);
718 fRhoFullDijet = new AlipAJetHistos("RhoFullDijet",fCentralityTag);
719 fRhoFullDijet->SetSignalTrackPtBias(fSignalTrackBias);
720 fRhoFullkT = new AlipAJetHistos("RhoFullkT",fCentralityTag);
721 fRhoFullkT->SetSignalTrackPtBias(fSignalTrackBias);
722 fRhoFullCMS = new AlipAJetHistos("RhoFullCMS",fCentralityTag);
723 fRhoFullCMS->SetSignalTrackPtBias(fSignalTrackBias);
724 fRhoCharged0 = new AlipAJetHistos("RhoCharged0",fCentralityTag);
725 fRhoCharged0->SetSignalTrackPtBias(fSignalTrackBias);
726 fRhoCharged1 = new AlipAJetHistos("RhoCharged1",fCentralityTag);
727 fRhoCharged1->SetSignalTrackPtBias(fSignalTrackBias);
728 fRhoCharged2 = new AlipAJetHistos("RhoCharged2",fCentralityTag);
729 fRhoCharged2->SetSignalTrackPtBias(fSignalTrackBias);
730 fRhoChargedN = new AlipAJetHistos("RhoChargedN",fCentralityTag);
731 fRhoChargedN->SetSignalTrackPtBias(fSignalTrackBias);
732 fRhoChargedkT = new AlipAJetHistos("RhoChargedkT",fCentralityTag);
733 fRhoChargedkT->SetSignalTrackPtBias(fSignalTrackBias);
734 fRhoChargedkTScale = new AlipAJetHistos("RhoChargedkTScale",fCentralityTag);
735 fRhoChargedkTScale->SetSignalTrackPtBias(fSignalTrackBias);
736 fRhoChargedCMS = new AlipAJetHistos("RhoChargedCMS",fCentralityTag);
737 fRhoChargedCMS->SetSignalTrackPtBias(fSignalTrackBias);
739 fOutput->Add(fTPCRawJets->GetOutputHistos());
740 fOutput->Add(fRhoFull0->GetOutputHistos());
741 fOutput->Add(fRhoFull1->GetOutputHistos());
742 fOutput->Add(fRhoFull2->GetOutputHistos());
743 fOutput->Add(fRhoFullN->GetOutputHistos());
744 fOutput->Add(fRhoFullDijet->GetOutputHistos());
745 fOutput->Add(fRhoFullkT->GetOutputHistos());
746 fOutput->Add(fRhoFullCMS->GetOutputHistos());
747 fOutput->Add(fRhoCharged0->GetOutputHistos());
748 fOutput->Add(fRhoCharged1->GetOutputHistos());
749 fOutput->Add(fRhoCharged2->GetOutputHistos());
750 fOutput->Add(fRhoChargedN->GetOutputHistos());
751 fOutput->Add(fRhoChargedkT->GetOutputHistos());
752 fOutput->Add(fRhoChargedkTScale->GetOutputHistos());
753 fOutput->Add(fRhoChargedCMS->GetOutputHistos());
756 fOutput->Add(fhCentrality);
758 // Post data for ALL output slots >0 here,
759 // To get at least an empty histogram
760 // 1 is the outputnumber of a certain weg of task 1
761 PostData(1, fOutput);
764 void AliAnalysisTaskFullpAJets::UserExecOnce()
766 // Get the event tracks
767 fOrgTracks = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fTrackName));
769 // Get the event caloclusters
770 fOrgClusters = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fClusName));
773 fmyKTChargedJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fkTChargedName));
774 fmyAKTChargedJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fAkTChargedName));
777 fmyKTFullJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fkTFullName));
778 fmyAKTFullJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fAkTFullName));
780 fIsInitialized=kTRUE;
782 //________________________________________________________________________
783 void AliAnalysisTaskFullpAJets::UserExec(Option_t *)
785 if (fIsInitialized==kFALSE)
790 // Get pointer to reconstructed event
791 fEvent = InputEvent();
794 AliError("Pointer == 0, this can not happen!");
798 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(fEvent);
799 AliAODEvent* aod = dynamic_cast<AliAODEvent*>(fEvent);
801 fRecoUtil = new AliEMCALRecoUtils();
802 fEMCALGeometry = AliEMCALGeometry::GetInstance();
806 fEventCentrality=esd->GetCentrality()->GetCentralityPercentile(fCentralityTag);
808 if (esd->GetPrimaryVertex()->GetNContributors()<1 || (TMath::Abs(esd->GetPrimaryVertex()->GetZ())>fVertexWindow))
812 if (TMath::Sqrt(TMath::Power(esd->GetPrimaryVertex()->GetX(),2)+TMath::Power(esd->GetPrimaryVertex()->GetY(),2))>fVertexMaxR)
817 esd->GetPrimaryVertex()->GetXYZ(fVertex);
818 fCells = (AliVCaloCells*) esd->GetEMCALCells();
819 fnCaloClusters = esd->GetNumberOfCaloClusters();
823 fEventCentrality=aod->GetCentrality()->GetCentralityPercentile(fCentralityTag);
825 if (aod->GetPrimaryVertex()->GetNContributors()<1 || (TMath::Abs(aod->GetPrimaryVertex()->GetZ())>fVertexWindow))
829 if (TMath::Sqrt(TMath::Power(aod->GetPrimaryVertex()->GetX(),2)+TMath::Power(aod->GetPrimaryVertex()->GetY(),2))>fVertexMaxR)
834 aod->GetPrimaryVertex()->GetXYZ(fVertex);
835 fCells = (AliVCaloCells*) aod->GetEMCALCells();
836 fnCaloClusters = aod->GetNumberOfCaloClusters();
840 AliError("Cannot get AOD/ESD event. Rejecting Event");
844 // Make sure Centrality isn't exactly 100% (to avoid bin filling errors in profile plots. Make it 99.99
845 if (fEventCentrality>99.99)
847 fEventCentrality=99.99;
849 fhCentrality->Fill(fEventCentrality);
852 // Reject any event that doesn't have any tracks, i.e. TPC is off
857 fhTPCEventMult->Fill(fEventCentrality,0.0);
858 fpTPCEventMult->Fill(fEventCentrality,0.0);
859 fhEMCalTrackEventMult->Fill(fEventCentrality,0.0);
861 AliWarning("No PicoTracks, Rejecting Event");
868 AliInfo("No Corrected CaloClusters, using only charged jets");
875 GenerateTPCRandomConesPt();
877 if (fClusterQA==kTRUE)
879 fhEMCalEventMult->Fill(fEventCentrality,0.0);
880 fpEMCalEventMult->Fill(fEventCentrality,0.0);
884 if (fCalculateRhoJet>=2)
886 EstimateChargedRho0();
887 EstimateChargedRho1();
888 EstimateChargedRho2();
889 EstimateChargedRhoN();
890 EstimateChargedRhokT();
891 EstimateChargedRhoCMS();
894 DeleteJetData(kFALSE);
898 PostData(1, fOutput);
906 if (fClusterQA==kTRUE)
914 GenerateTPCRandomConesPt();
915 GenerateEMCalRandomConesPt();
917 if (fCalculateRhoJet>=0)
919 EstimateChargedRhoCMSScale();
921 if (fCalculateRhoJet>=1)
923 EstimateChargedRhoScale();
925 if (fCalculateRhoJet>=2)
927 EstimateChargedRho0();
928 EstimateChargedRho1();
929 EstimateChargedRho2();
930 EstimateChargedRhoN();
931 EstimateChargedRhokT();
932 EstimateChargedRhoCMS();
939 EstimateFullRhoCMS();
941 EstimateChargedRhokTScale();
944 if (IsDiJetEvent()==kTRUE)
946 EstimateFullRhoDijet();
950 // Delete Dynamic Arrays
951 DeleteJetData(kTRUE);
955 PostData(1, fOutput);
958 //________________________________________________________________________
959 void AliAnalysisTaskFullpAJets::Terminate(Option_t *) //specify what you want to have done
961 // Called once at the end of the query. Done nothing here.
964 /////////////////////////////////////////////////////////////////////////////////////////
965 ///////////////// User Defined Sub_Routines ///////////////////////////////////////
966 /////////////////////////////////////////////////////////////////////////////////////////
968 void AliAnalysisTaskFullpAJets::TrackCuts()
970 // Fill a TObjArray with the tracks from a TClonesArray which grabs the picotracks.
973 fmyTracks = new TObjArray();
974 for (i=0;i<fOrgTracks->GetEntries();i++)
976 AliVTrack* vtrack = (AliVTrack*) fOrgTracks->At(i);
977 if (vtrack->Pt()>=fTrackMinPt)
979 fmyTracks->Add(vtrack);
982 fnTracks = fmyTracks->GetEntries();
985 void AliAnalysisTaskFullpAJets::ClusterCuts()
987 // Fill a TObjArray with the clusters from a TClonesArray which grabs the caloclusterscorr.
990 fmyClusters = new TObjArray();
991 TLorentzVector *cluster_vec = new TLorentzVector;
995 for (i=0;i<fOrgClusters->GetEntries();i++)
997 AliVCluster* vcluster = (AliVCluster*) fOrgClusters->At(i);
998 vcluster->GetMomentum(*cluster_vec,fVertex);
1000 if (cluster_vec->Pt()>=fClusterMinPt && vcluster->IsEMCAL()==kTRUE)
1002 fmyClusters->Add(vcluster);
1006 fnClusters = fmyClusters->GetEntries();
1010 void AliAnalysisTaskFullpAJets::TrackHisto()
1012 // Fill track histograms: Phi,Eta,Pt
1015 TH2F *hdummypT= new TH2F("hdummypT","",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax); //!
1017 for (i=0;i<fnTracks;i++)
1019 AliPicoTrack* vtrack = (AliPicoTrack*) fmyTracks->At(i);
1020 fhTrackPt->Fill(vtrack->Pt());
1021 fhTrackEta->Fill(vtrack->Eta());
1022 fhTrackPhi->Fill(vtrack->Phi());
1023 fhTrackEtaPhi->Fill(vtrack->Eta(),vtrack->Phi());
1024 fhTrackPhiPt->Fill(vtrack->Phi(),vtrack->Pt());
1025 fhTrackEtaPt->Fill(vtrack->Eta(),vtrack->Pt());
1027 // Fill Associated Track Distributions for AOD QA Productions
1029 if (vtrack->GetTrackType()==0)
1031 fhGlobalTrackPt->Fill(vtrack->Pt());
1032 fhGlobalTrackEta->Fill(vtrack->Eta());
1033 fhGlobalTrackPhi->Fill(vtrack->Phi());
1034 fhGlobalTrackEtaPhi->Fill(vtrack->Eta(),vtrack->Phi());
1035 fhGlobalTrackPhiPt->Fill(vtrack->Phi(),vtrack->Pt());
1036 fhGlobalTrackEtaPt->Fill(vtrack->Eta(),vtrack->Pt());
1038 // Complementary Tracks
1039 else if (vtrack->GetTrackType()==1)
1041 fhComplementaryTrackPt->Fill(vtrack->Pt());
1042 fhComplementaryTrackEta->Fill(vtrack->Eta());
1043 fhComplementaryTrackPhi->Fill(vtrack->Phi());
1044 fhComplementaryTrackEtaPhi->Fill(vtrack->Eta(),vtrack->Phi());
1045 fhComplementaryTrackPhiPt->Fill(vtrack->Phi(),vtrack->Pt());
1046 fhComplementaryTrackEtaPt->Fill(vtrack->Eta(),vtrack->Pt());
1048 hdummypT->Fill(vtrack->Eta(),vtrack->Phi(),vtrack->Pt());
1050 for (i=1;i<=TCBins;i++)
1052 for (j=1;j<=TCBins;j++)
1054 fpTrackPtProfile->Fill(hdummypT->GetXaxis()->GetBinCenter(i),hdummypT->GetYaxis()->GetBinCenter(j),fTPCArea*TMath::Power(TCBins,-2)*hdummypT->GetBinContent(i,j));
1060 void AliAnalysisTaskFullpAJets::ClusterHisto()
1062 // Fill cluster histograms: Phi,Eta,Pt
1065 TH2F *hdummypT= new TH2F("hdummypT","",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax); //!
1067 TLorentzVector *cluster_vec = new TLorentzVector;
1069 for (i=0;i<fnClusters;i++)
1071 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
1072 vcluster->GetMomentum(*cluster_vec,fVertex);
1074 fhClusterPt->Fill(cluster_vec->Pt());
1075 fhClusterEta->Fill(cluster_vec->Eta());
1076 fhClusterPhi->Fill(cluster_vec->Phi());
1077 fhClusterEtaPhi->Fill(cluster_vec->Eta(),cluster_vec->Phi());
1078 fhClusterPhiPt->Fill(cluster_vec->Phi(),cluster_vec->Pt());
1079 fhClusterEtaPt->Fill(cluster_vec->Eta(),cluster_vec->Pt());
1080 hdummypT->Fill(cluster_vec->Eta(),cluster_vec->Phi(),cluster_vec->Pt());
1081 fEMCALGeometry->GetAbsCellIdFromEtaPhi(cluster_vec->Eta(),cluster_vec->Phi(),myCellID);
1082 fhEMCalCellCounts->Fill(myCellID);
1084 for (i=1;i<=TCBins;i++)
1086 for (j=1;j<=TCBins;j++)
1088 fpClusterPtProfile->Fill(hdummypT->GetXaxis()->GetBinCenter(i),hdummypT->GetYaxis()->GetBinCenter(j),fEMCalArea*TMath::Power(TCBins,-2)*hdummypT->GetBinContent(i,j));
1095 void AliAnalysisTaskFullpAJets::InitChargedJets()
1097 // Preliminary Jet Placement and Selection Cuts
1100 fnAKTChargedJets = fmyAKTChargedJets->GetEntries();
1101 fnKTChargedJets = fmyKTChargedJets->GetEntries();
1103 fTPCJet = new AlipAJetData("fTPCJet",kFALSE,fnAKTChargedJets);
1104 fTPCFullJet = new AlipAJetData("fTPCFullJet",kFALSE,fnAKTChargedJets);
1105 fTPCOnlyJet = new AlipAJetData("fTPCOnlyJet",kFALSE,fnAKTChargedJets);
1106 fTPCJetUnbiased = new AlipAJetData("fTPCJetUnbiased",kFALSE,fnAKTChargedJets);
1108 fTPCJet->SetSignalCut(fTPCJetThreshold);
1109 fTPCJet->SetAreaCutFraction(fJetAreaCutFrac);
1110 fTPCJet->SetJetR(fJetR);
1111 fTPCJet->SetSignalTrackPtBias(fSignalTrackBias);
1112 fTPCFullJet->SetSignalCut(fTPCJetThreshold);
1113 fTPCFullJet->SetAreaCutFraction(fJetAreaCutFrac);
1114 fTPCFullJet->SetJetR(fJetR);
1115 fTPCFullJet->SetSignalTrackPtBias(fSignalTrackBias);
1116 fTPCOnlyJet->SetSignalCut(fTPCJetThreshold);
1117 fTPCOnlyJet->SetAreaCutFraction(fJetAreaCutFrac);
1118 fTPCOnlyJet->SetJetR(fJetR);
1119 fTPCOnlyJet->SetSignalTrackPtBias(fSignalTrackBias);
1120 fTPCJetUnbiased->SetSignalCut(fTPCJetThreshold);
1121 fTPCJetUnbiased->SetAreaCutFraction(fJetAreaCutFrac);
1122 fTPCJetUnbiased->SetJetR(fJetR);
1123 fTPCJetUnbiased->SetSignalTrackPtBias(kFALSE);
1125 // Initialize Jet Data
1126 for (i=0;i<fnAKTChargedJets;i++)
1128 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(i);
1130 fTPCJet->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kFALSE),i);
1131 fTPCFullJet->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kTRUE),i);
1132 fTPCOnlyJet->SetIsJetInArray(IsInTPCFull(fJetR,myJet->Phi(),myJet->Eta()),i);
1133 fTPCJetUnbiased->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kFALSE),i);
1135 fTPCJet->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1136 fTPCFullJet->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1137 fTPCOnlyJet->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1138 fTPCJetUnbiased->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1141 fTPCkTFullJet = new AlipAJetData("fTPCkTFullJet",kFALSE,fnKTChargedJets);
1142 fTPCkTFullJet->SetSignalCut(fTPCJetThreshold);
1143 fTPCkTFullJet->SetAreaCutFraction(0.25*fJetAreaCutFrac);
1144 fTPCkTFullJet->SetJetR(fJetR);
1146 for (i=0;i<fnKTChargedJets;i++)
1148 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(i);
1149 fTPCkTFullJet->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kTRUE),i);
1151 fTPCkTFullJet->InitializeJetData(fmyKTChargedJets,fnKTChargedJets);
1153 // Raw Charged Jet Spectra
1154 if (fCalculateRhoJet>=2)
1156 fTPCRawJets->FillBSJS(fEventCentrality,0.0,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1160 void AliAnalysisTaskFullpAJets::InitFullJets()
1162 // Preliminary Jet Placement and Selection Cuts
1165 fnAKTFullJets = fmyAKTFullJets->GetEntries();
1166 fnKTFullJets = fmyKTFullJets->GetEntries();
1168 fEMCalJet = new AlipAJetData("fEMCalJet",kTRUE,fnAKTFullJets);
1169 fEMCalFullJet = new AlipAJetData("fEMCalFullJet",kTRUE,fnAKTFullJets);
1170 fEMCalPartJet = new AlipAJetData("fEMCalPartJet",kTRUE,fnAKTFullJets);
1171 fEMCalPartJetUnbiased = new AlipAJetData("fEMCalPartJetUnbiased",kTRUE,fnAKTFullJets);
1173 fEMCalJet->SetSignalCut(fEMCalJetThreshold);
1174 fEMCalJet->SetAreaCutFraction(fJetAreaCutFrac);
1175 fEMCalJet->SetJetR(fJetR);
1176 fEMCalJet->SetNEF(fNEFSignalJetCut);
1177 fEMCalJet->SetSignalTrackPtBias(fSignalTrackBias);
1178 fEMCalFullJet->SetSignalCut(fEMCalJetThreshold);
1179 fEMCalFullJet->SetAreaCutFraction(fJetAreaCutFrac);
1180 fEMCalFullJet->SetJetR(fJetR);
1181 fEMCalFullJet->SetNEF(fNEFSignalJetCut);
1182 fEMCalFullJet->SetSignalTrackPtBias(fSignalTrackBias);
1183 fEMCalPartJet->SetSignalCut(fEMCalJetThreshold);
1184 fEMCalPartJet->SetAreaCutFraction(fJetAreaCutFrac);
1185 fEMCalPartJet->SetJetR(fJetR);
1186 fEMCalPartJet->SetNEF(fNEFSignalJetCut);
1187 fEMCalPartJet->SetSignalTrackPtBias(fSignalTrackBias);
1188 fEMCalPartJetUnbiased->SetSignalCut(fEMCalJetThreshold);
1189 fEMCalPartJetUnbiased->SetAreaCutFraction(fJetAreaCutFrac);
1190 fEMCalPartJetUnbiased->SetJetR(fJetR);
1191 fEMCalPartJetUnbiased->SetNEF(1.0);
1192 fEMCalPartJetUnbiased->SetSignalTrackPtBias(kFALSE);
1194 // Initialize Jet Data
1195 for (i=0;i<fnAKTFullJets;i++)
1197 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(i);
1199 fEMCalJet->SetIsJetInArray(IsInEMCal(myJet->Phi(),myJet->Eta()),i);
1200 fEMCalFullJet->SetIsJetInArray(IsInEMCalFull(fJetR,myJet->Phi(),myJet->Eta()),i);
1201 fEMCalPartJet->SetIsJetInArray(IsInEMCalPart(fJetR,myJet->Phi(),myJet->Eta()),i);
1202 fEMCalPartJetUnbiased->SetIsJetInArray(IsInEMCalPart(fJetR,myJet->Phi(),myJet->Eta()),i);
1204 fEMCalJet->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1205 fEMCalFullJet->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1206 fEMCalPartJet->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1207 fEMCalPartJetUnbiased->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1210 fEMCalkTFullJet = new AlipAJetData("fEMCalkTFullJet",kTRUE,fnKTFullJets);
1211 fEMCalkTFullJet->SetSignalCut(fEMCalJetThreshold);
1212 fEMCalkTFullJet->SetAreaCutFraction(0.25*fJetAreaCutFrac);
1213 fEMCalkTFullJet->SetJetR(fJetR);
1214 fEMCalkTFullJet->SetNEF(fNEFSignalJetCut);
1215 fEMCalkTFullJet->SetSignalTrackPtBias(fSignalTrackBias);
1217 for (i=0;i<fnKTFullJets;i++)
1219 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(i);
1220 fEMCalkTFullJet->SetIsJetInArray(IsInEMCalFull(fJetR,myJet->Phi(),myJet->Eta()),i);
1222 fEMCalkTFullJet->InitializeJetData(fmyKTFullJets,fnKTFullJets);
1224 // Raw Full Jet Spectra
1225 fEMCalRawJets->FillBSJS(fEventCentrality,0.0,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
1228 void AliAnalysisTaskFullpAJets::GenerateTPCRandomConesPt()
1231 Double_t E_tracks_total=0.;
1232 TRandom3 u(time(NULL));
1234 Double_t Eta_Center=0.5*(fTPCEtaMin+fTPCEtaMax);
1235 Double_t Phi_Center=0.5*(fTPCPhiMin+fTPCPhiMax);
1237 Int_t event_track_mult=0;
1240 for (i=0;i<fnBckgClusters;i++)
1242 fTPCRCBckgFluc[i]=0.0;
1243 fTPCRCBckgFlucSignal[i]=0.0;
1244 fTPCRCBckgFlucNColl[i]=0.0;
1247 TLorentzVector *dummy= new TLorentzVector;
1248 TLorentzVector *temp_jet= new TLorentzVector;
1249 TLorentzVector *track_vec = new TLorentzVector;
1251 // First, consider the RC with no spatial restrictions
1252 for (j=0;j<fnBckgClusters;j++)
1256 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1257 // Loop over all tracks
1258 for (i=0;i<fnTracks;i++)
1260 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1261 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1263 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1264 if (dummy->DeltaR(*track_vec)<fJetR)
1266 E_tracks_total+=vtrack->Pt();
1270 fTPCRCBckgFlucSignal[j]=E_tracks_total;
1273 // Now, consider the RC where the vertex of RC is at least 2R away from the leading signal
1275 if (fTPCJetUnbiased->GetLeadingPt()<0.0)
1277 temp_jet->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1281 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetLeadingIndex());
1282 myJet->GetMom(*temp_jet);
1285 for (j=0;j<fnBckgClusters;j++)
1292 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1293 while (temp_jet->DeltaR(*dummy)<fJetR)
1295 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1297 // Loop over all tracks
1298 for (i=0;i<fnTracks;i++)
1300 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1301 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1304 if (IsInEMCal(vtrack->Phi(),vtrack->Eta()==kTRUE))
1308 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1309 if (dummy->DeltaR(*track_vec)<fJetR)
1312 E_tracks_total+=vtrack->Pt();
1316 fTPCRCBckgFluc[j]=E_tracks_total;
1318 if (fTrackQA==kTRUE)
1320 fhTPCEventMult->Fill(fEventCentrality,event_mult);
1321 fpTPCEventMult->Fill(fEventCentrality,event_mult);
1322 fhEMCalTrackEventMult->Fill(fEventCentrality,event_track_mult);
1324 if (fCalculateRhoJet>=2)
1326 fTPCRawJets->FillDeltaPt(fEventCentrality,0.0,fJetR,fTPCRCBckgFluc,1);
1329 // For the case of partial exclusion, merely allow a superposition of full and no exclusion with probability p=1/Ncoll
1330 Double_t exclusion_prob;
1331 for (j=0;j<fnBckgClusters;j++)
1333 exclusion_prob = u.Uniform(0,1);
1334 if (exclusion_prob<(1/fNColl))
1336 fTPCRCBckgFlucNColl[j]=fTPCRCBckgFlucSignal[j];
1340 fTPCRCBckgFlucNColl[j]=fTPCRCBckgFluc[j];
1349 void AliAnalysisTaskFullpAJets::GenerateEMCalRandomConesPt()
1352 Double_t E_tracks_total=0.;
1353 Double_t E_caloclusters_total=0.;
1354 TRandom3 u(time(NULL));
1356 Double_t Eta_Center=0.5*(fEMCalEtaMin+fEMCalEtaMax);
1357 Double_t Phi_Center=0.5*(fEMCalPhiMin+fEMCalPhiMax);
1361 for (i=0;i<fnBckgClusters;i++)
1363 fEMCalRCBckgFluc[i]=0.0;
1364 fEMCalRCBckgFlucSignal[i]=0.0;
1365 fEMCalRCBckgFlucNColl[i]=0.0;
1368 TLorentzVector *dummy= new TLorentzVector;
1369 TLorentzVector *temp_jet= new TLorentzVector;
1370 TLorentzVector *track_vec = new TLorentzVector;
1371 TLorentzVector *cluster_vec = new TLorentzVector;
1373 // First, consider the RC with no spatial restrictions
1374 for (j=0;j<fnBckgClusters;j++)
1377 E_caloclusters_total=0.;
1379 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1380 // Loop over all tracks
1381 for (i=0;i<fnTracks;i++)
1383 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1384 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
1386 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1387 if (dummy->DeltaR(*track_vec)<fJetR)
1389 E_tracks_total+=vtrack->Pt();
1394 // Loop over all caloclusters
1395 for (i=0;i<fnClusters;i++)
1397 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
1398 vcluster->GetMomentum(*cluster_vec,fVertex);
1399 if (dummy->DeltaR(*cluster_vec)<fJetR)
1402 E_caloclusters_total+=vcluster->E();
1405 fEMCalRCBckgFlucSignal[j]=E_tracks_total+E_caloclusters_total;
1408 // Now, consider the RC where the vertex of RC is at least 2R away from the leading signal
1410 E_caloclusters_total=0.;
1411 if (fEMCalPartJetUnbiased->GetLeadingPt()<0.0)
1413 temp_jet->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1417 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
1418 myJet->GetMom(*temp_jet);
1421 for (j=0;j<fnBckgClusters;j++)
1426 E_caloclusters_total=0.;
1428 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1429 while (temp_jet->DeltaR(*dummy)<fJetR)
1431 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1433 // Loop over all tracks
1434 for (i=0;i<fnTracks;i++)
1436 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1437 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
1440 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1441 if (dummy->DeltaR(*track_vec)<fJetR)
1444 E_tracks_total+=vtrack->Pt();
1449 // Loop over all caloclusters
1450 for (i=0;i<fnClusters;i++)
1452 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
1453 vcluster->GetMomentum(*cluster_vec,fVertex);
1455 if (dummy->DeltaR(*cluster_vec)<fJetR)
1458 E_caloclusters_total+=vcluster->E();
1461 fEMCalRCBckgFluc[j]=E_tracks_total+E_caloclusters_total;
1463 if (fClusterQA==kTRUE)
1465 fhEMCalEventMult->Fill(fEventCentrality,event_mult);
1466 fpEMCalEventMult->Fill(fEventCentrality,event_mult);
1468 fEMCalRawJets->FillDeltaPt(fEventCentrality,0.0,fJetR,fEMCalRCBckgFluc,1);
1470 // For the case of partial exclusion, merely allow a superposition of full and no exclusion with probability p=1/Ncoll
1471 Double_t exclusion_prob;
1472 for (j=0;j<fnBckgClusters;j++)
1474 exclusion_prob = u.Uniform(0,1);
1475 if (exclusion_prob<(1/fNColl))
1477 fEMCalRCBckgFlucNColl[j]=fEMCalRCBckgFlucSignal[j];
1481 fEMCalRCBckgFlucNColl[j]=fEMCalRCBckgFluc[j];
1492 void AliAnalysisTaskFullpAJets::EstimateChargedRho0()
1495 Double_t E_tracks_total=0.0;
1496 Double_t TPC_rho=0.;
1498 // Loop over all tracks
1499 for (i=0;i<fnTracks;i++)
1501 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1502 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1504 E_tracks_total+=vtrack->Pt();
1508 // Calculate the mean Background density
1509 TPC_rho=E_tracks_total/fTPCArea;
1510 fRhoCharged=TPC_rho;
1513 fRhoCharged0->FillRho(fEventCentrality,TPC_rho);
1514 fRhoCharged0->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCJet->GetJets(),fTPCJet->GetTotalJets());
1515 fRhoCharged0->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1516 fRhoCharged0->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1517 fRhoCharged0->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1518 fRhoCharged0->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1519 fRhoCharged0->FillLeadingJetPtRho(fTPCJet->GetLeadingPt(),TPC_rho);
1523 void AliAnalysisTaskFullpAJets::EstimateChargedRho1()
1526 Double_t E_tracks_total=0.0;
1527 Double_t TPC_rho=0.;
1529 TLorentzVector *temp_jet= new TLorentzVector;
1530 TLorentzVector *track_vec = new TLorentzVector;
1532 if (fTPCJetUnbiased->GetLeadingPt()>=fTPCJetThreshold)
1534 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1535 myJet->GetMom(*temp_jet);
1537 // Loop over all tracks
1538 for (i=0;i<fnTracks;i++)
1540 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1541 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1543 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1544 if (temp_jet->DeltaR(*track_vec)>fJetRForRho)
1546 E_tracks_total+=vtrack->Pt();
1551 // Calculate the mean Background density
1552 TPC_rho=E_tracks_total/(fTPCArea-AreaWithinTPC(fJetR,myJet->Eta()));
1554 else // i.e. No signal jets -> same as total background density
1556 // Loop over all tracks
1557 for (i=0;i<fnTracks;i++)
1559 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1560 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1562 E_tracks_total+=vtrack->Pt();
1565 // Calculate the mean Background density
1566 TPC_rho=E_tracks_total/fTPCArea;
1572 fRhoCharged1->FillRho(fEventCentrality,TPC_rho);
1573 fRhoCharged1->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1574 fRhoCharged1->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1575 fRhoCharged1->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1576 fRhoCharged1->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1577 fRhoCharged1->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1578 fRhoCharged1->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),TPC_rho);
1581 void AliAnalysisTaskFullpAJets::EstimateChargedRho2()
1584 Double_t E_tracks_total=0.0;
1585 Double_t TPC_rho=0.;
1587 TLorentzVector *temp_jet1= new TLorentzVector;
1588 TLorentzVector *temp_jet2= new TLorentzVector;
1589 TLorentzVector *track_vec = new TLorentzVector;
1591 if ((fTPCJetUnbiased->GetLeadingPt()>=fTPCJetThreshold) && (fTPCJetUnbiased->GetSubLeadingPt()>=fTPCJetThreshold))
1593 AliEmcalJet *myhJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1594 myhJet->GetMom(*temp_jet1);
1596 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetSubLeadingIndex());
1597 myJet->GetMom(*temp_jet2);
1599 // Loop over all tracks
1600 for (i=0;i<fnTracks;i++)
1602 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1603 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1605 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1606 if ((temp_jet1->DeltaR(*track_vec)>fJetRForRho) && (temp_jet2->DeltaR(*track_vec)>fJetRForRho))
1608 E_tracks_total+=vtrack->Pt();
1613 // Calculate the mean Background density
1614 TPC_rho=E_tracks_total/(fTPCArea-AreaWithinTPC(fJetR,myhJet->Eta())-AreaWithinTPC(fJetR,myJet->Eta()));
1616 else if (fTPCJetUnbiased->GetLeadingPt()>=fTPCJetThreshold)
1618 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1619 myJet->GetMom(*temp_jet1);
1621 // Loop over all tracks
1622 for (i=0;i<fnTracks;i++)
1624 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1625 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1627 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1628 if (temp_jet1->DeltaR(*track_vec)>fJetRForRho)
1630 E_tracks_total+=vtrack->Pt();
1635 // Calculate the mean Background density
1636 TPC_rho=E_tracks_total/(fTPCArea-AreaWithinTPC(fJetR,myJet->Eta()));
1638 else // i.e. No signal jets -> same as total background density
1640 // Loop over all tracks
1641 for (i=0;i<fnTracks;i++)
1643 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1644 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1646 E_tracks_total+=vtrack->Pt();
1650 // Calculate the mean Background density
1651 TPC_rho=E_tracks_total/fTPCArea;
1658 fRhoCharged2->FillRho(fEventCentrality,TPC_rho);
1659 fRhoCharged2->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1660 fRhoCharged2->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1661 fRhoCharged2->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1662 fRhoCharged2->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1663 fRhoCharged2->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1664 fRhoCharged2->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),TPC_rho);
1667 void AliAnalysisTaskFullpAJets::EstimateChargedRhoN()
1670 Bool_t track_away_from_jet;
1671 Double_t E_tracks_total=0.0;
1672 Double_t TPC_rho=0.0;
1673 Double_t jet_area_total=0.0;
1675 TLorentzVector *jet_vec= new TLorentzVector;
1676 TLorentzVector *track_vec = new TLorentzVector;
1678 // First, sum all tracks within the EMCal that are away from jet(s) above Pt Threshold
1679 for (i=0;i<fnTracks;i++)
1681 // First, check if track is in the EMCal!!
1682 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(i);
1683 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1685 if (fTPCJetUnbiased->GetTotalSignalJets()<1)
1687 E_tracks_total+=vtrack->Pt();
1691 track_away_from_jet=kTRUE;
1693 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1694 while (track_away_from_jet==kTRUE && j<fTPCJetUnbiased->GetTotalSignalJets())
1696 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(j));
1697 myJet->GetMom(*jet_vec);
1698 if (track_vec->DeltaR(*jet_vec)<=fJetRForRho)
1700 track_away_from_jet=kFALSE;
1704 if (track_away_from_jet==kTRUE)
1706 E_tracks_total+=vtrack->Pt();
1712 // Determine area of all Jets that are within the EMCal
1713 if (fTPCJetUnbiased->GetTotalSignalJets()==0)
1719 for (i=0;i<fTPCJetUnbiased->GetTotalSignalJets();i++)
1721 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(i));
1722 jet_area_total+=AreaWithinTPC(fJetR,myJet->Eta());
1729 TPC_rho = E_tracks_total/(fTPCArea-jet_area_total);
1732 fRhoChargedN->FillRho(fEventCentrality,TPC_rho);
1733 fRhoChargedN->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1734 fRhoChargedN->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1735 fRhoChargedN->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1736 fRhoChargedN->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1737 fRhoChargedN->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1738 fRhoChargedN->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),TPC_rho);
1742 void AliAnalysisTaskFullpAJets::EstimateChargedRhoScale()
1745 Bool_t track_away_from_jet;
1746 Double_t E_tracks_total=0.0;
1747 Double_t TPC_rho=0.0;
1748 Double_t jet_area_total=0.0;
1750 TLorentzVector *jet_vec= new TLorentzVector;
1751 TLorentzVector *track_vec = new TLorentzVector;
1753 // First, sum all tracks within the EMCal that are away from jet(s) above Pt Threshold
1754 for (i=0;i<fnTracks;i++)
1756 // First, check if track is in the EMCal!!
1757 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(i);
1758 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1760 if (fTPCJetUnbiased->GetTotalSignalJets()<1)
1762 E_tracks_total+=vtrack->Pt();
1766 track_away_from_jet=kTRUE;
1768 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1769 while (track_away_from_jet==kTRUE && j<fTPCJetUnbiased->GetTotalSignalJets())
1771 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(j));
1772 myJet->GetMom(*jet_vec);
1773 if (track_vec->DeltaR(*jet_vec)<=fJetRForRho)
1775 track_away_from_jet=kFALSE;
1779 if (track_away_from_jet==kTRUE)
1781 E_tracks_total+=vtrack->Pt();
1787 // Determine area of all Jets that are within the TPC
1788 if (fTPCJetUnbiased->GetTotalSignalJets()==0)
1794 for (i=0;i<fTPCJetUnbiased->GetTotalSignalJets();i++)
1796 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(i));
1797 jet_area_total+=AreaWithinTPC(fJetR,myJet->Eta());
1804 TPC_rho = E_tracks_total/(fTPCArea-jet_area_total);
1805 TPC_rho*=fScaleFactor;
1808 fRhoChargedScale->FillRho(fEventCentrality,TPC_rho);
1809 fRhoChargedScale->FillBSJS(fEventCentrality,TPC_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
1810 fRhoChargedScale->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFluc,1);
1811 fRhoChargedScale->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFlucSignal,1);
1812 fRhoChargedScale->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFlucNColl,1);
1813 fRhoChargedScale->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1814 fRhoChargedScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),TPC_rho);
1815 fRhoChargedScale->FillMiscJetStats(fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fOrgTracks,fOrgClusters);
1819 void AliAnalysisTaskFullpAJets::EstimateChargedRhokT()
1822 Double_t kTRho = 0.0;
1823 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1824 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1826 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
1828 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
1829 pTArray[i]=myJet->Pt();
1830 RhoArray[i]=myJet->Pt()/myJet->Area();
1833 if (fTPCkTFullJet->GetTotalJets()>=2)
1835 kTRho=MedianRhokT(pTArray,RhoArray,fTPCkTFullJet->GetTotalJets());
1837 fRhoChargedkT->FillRho(fEventCentrality,kTRho);
1838 fRhoChargedkT->FillBSJS(fEventCentrality,kTRho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1839 fRhoChargedkT->FillDeltaPt(fEventCentrality,kTRho,fJetR,fTPCRCBckgFluc,1);
1840 fRhoChargedkT->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucSignal,1);
1841 fRhoChargedkT->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucNColl,1);
1842 fRhoChargedkT->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
1843 fRhoChargedkT->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),kTRho);
1849 void AliAnalysisTaskFullpAJets::EstimateChargedRhokTScale()
1852 Double_t kTRho = 0.0;
1853 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1854 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1856 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
1858 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
1859 pTArray[i]=myJet->Pt();
1860 RhoArray[i]=myJet->Pt()/myJet->Area();
1863 if (fTPCkTFullJet->GetTotalJets()>=2)
1865 kTRho=MedianRhokT(pTArray,RhoArray,fTPCkTFullJet->GetTotalJets());
1866 kTRho*=fScaleFactor;
1868 fRhoChargedkTScale->FillRho(fEventCentrality,kTRho);
1869 fRhoChargedkTScale->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
1870 fRhoChargedkTScale->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
1871 fRhoChargedkTScale->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
1872 fRhoChargedkTScale->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
1873 fRhoChargedkTScale->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
1874 fRhoChargedkTScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
1880 void AliAnalysisTaskFullpAJets::EstimateChargedRhoCMS()
1883 Double_t kTRho = 0.0;
1884 Double_t CMSTotalkTArea = 0.0;
1885 Double_t CMSTrackArea = 0.0;
1886 Double_t CMSCorrectionFactor = 1.0;
1887 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1888 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
1891 if ((fTPCJet->GetLeadingPt()>=fTPCJetThreshold) && (fTPCJet->GetSubLeadingPt()>=fTPCJetThreshold))
1893 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1894 AliEmcalJet *myJet2 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetSubLeadingIndex());
1896 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
1898 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
1900 CMSTotalkTArea+=myJet->Area();
1901 if (myJet->GetNumberOfTracks()>0)
1903 CMSTrackArea+=myJet->Area();
1905 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE && IsJetOverlap(myJet,myJet2,kFALSE)==kFALSE)
1907 pTArray[k]=myJet->Pt();
1908 RhoArray[k]=myJet->Pt()/myJet->Area();
1914 kTRho=MedianRhokT(pTArray,RhoArray,k);
1921 else if (fTPCJet->GetLeadingPt()>=fTPCJetThreshold)
1923 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1925 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
1927 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
1929 CMSTotalkTArea+=myJet->Area();
1930 if (myJet->GetNumberOfTracks()>0)
1932 CMSTrackArea+=myJet->Area();
1934 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE)
1936 pTArray[k]=myJet->Pt();
1937 RhoArray[k]=myJet->Pt()/myJet->Area();
1943 kTRho=MedianRhokT(pTArray,RhoArray,k);
1952 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
1954 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
1956 CMSTotalkTArea+=myJet->Area();
1957 if (myJet->GetNumberOfTracks()>0)
1959 CMSTrackArea+=myJet->Area();
1961 pTArray[k]=myJet->Pt();
1962 RhoArray[k]=myJet->Pt()/myJet->Area();
1967 kTRho=MedianRhokT(pTArray,RhoArray,k);
1974 // Scale CMS Rho by Correction factor
1975 if (CMSTotalkTArea==0.0)
1977 CMSCorrectionFactor = 1.0;
1981 //CMSCorrectionFactor = CMSTrackArea/CMSTotalkTArea;
1982 CMSCorrectionFactor = CMSTrackArea/(fTPCPhiTotal*(fTPCEtaTotal-2*fJetR)); // The total physical area should be reduced by the eta cut due to looping over only fully contained kT jets within the TPC
1984 kTRho*=CMSCorrectionFactor;
1985 fRhoChargedCMS->FillRho(fEventCentrality,kTRho);
1986 fRhoChargedCMS->FillBSJS(fEventCentrality,kTRho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1987 fRhoChargedCMS->FillDeltaPt(fEventCentrality,kTRho,fJetR,fTPCRCBckgFluc,1);
1988 fRhoChargedCMS->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucSignal,1);
1989 fRhoChargedCMS->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucNColl,1);
1990 fRhoChargedCMS->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
1991 fRhoChargedCMS->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),kTRho);
1996 void AliAnalysisTaskFullpAJets::EstimateChargedRhoCMSScale()
1999 Double_t kTRho = 0.0;
2000 Double_t CMSTotalkTArea = 0.0;
2001 Double_t CMSTrackArea = 0.0;
2002 Double_t CMSCorrectionFactor = 1.0;
2003 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2004 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2007 if ((fTPCJet->GetLeadingPt()>=fTPCJetThreshold) && (fTPCJet->GetSubLeadingPt()>=fTPCJetThreshold))
2009 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
2010 AliEmcalJet *myJet2 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetSubLeadingIndex());
2012 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2014 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2016 CMSTotalkTArea+=myJet->Area();
2017 if (myJet->GetNumberOfTracks()>0)
2019 CMSTrackArea+=myJet->Area();
2021 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE && IsJetOverlap(myJet,myJet2,kFALSE)==kFALSE)
2023 pTArray[k]=myJet->Pt();
2024 RhoArray[k]=myJet->Pt()/myJet->Area();
2030 kTRho=MedianRhokT(pTArray,RhoArray,k);
2037 else if (fTPCJet->GetLeadingPt()>=fTPCJetThreshold)
2039 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
2041 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2043 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2045 CMSTotalkTArea+=myJet->Area();
2046 if (myJet->GetNumberOfTracks()>0)
2048 CMSTrackArea+=myJet->Area();
2050 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE)
2052 pTArray[k]=myJet->Pt();
2053 RhoArray[k]=myJet->Pt()/myJet->Area();
2059 kTRho=MedianRhokT(pTArray,RhoArray,k);
2068 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2070 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2072 CMSTotalkTArea+=myJet->Area();
2073 if (myJet->GetNumberOfTracks()>0)
2075 CMSTrackArea+=myJet->Area();
2077 pTArray[k]=myJet->Pt();
2078 RhoArray[k]=myJet->Pt()/myJet->Area();
2083 kTRho=MedianRhokT(pTArray,RhoArray,k);
2090 kTRho*=fScaleFactor;
2091 // Scale CMS Rho by Correction factor
2092 if (CMSTotalkTArea==0.0)
2094 CMSCorrectionFactor = 1.0;
2098 CMSCorrectionFactor = CMSTrackArea/(fTPCPhiTotal*(fTPCEtaTotal-2*fJetR)); // The total physical area should be reduced by the eta cut due to looping over only fully contained kT jets within the TPC
2100 kTRho*=CMSCorrectionFactor;
2102 fRhoChargedCMSScale->FillRho(fEventCentrality,kTRho);
2103 fRhoChargedCMSScale->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2104 fRhoChargedCMSScale->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2105 fRhoChargedCMSScale->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
2106 fRhoChargedCMSScale->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
2107 fRhoChargedCMSScale->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2108 fRhoChargedCMSScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2109 fRhoChargedCMSScale->DoNEFAnalysis(fNEFSignalJetCut,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fmyClusters,fOrgClusters,fEvent,fEMCALGeometry,fRecoUtil,fCells);
2110 fRhoChargedCMSScale->FillMiscJetStats(fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fOrgTracks,fOrgClusters);
2117 void AliAnalysisTaskFullpAJets::EstimateFullRho0()
2120 Double_t E_tracks_total=0.0;
2121 Double_t E_caloclusters_total=0.0;
2122 Double_t EMCal_rho=0.0;
2124 TLorentzVector *cluster_vec = new TLorentzVector;
2126 // Loop over all tracks
2127 for (i=0;i<fnTracks;i++)
2129 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2130 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2132 E_tracks_total+=vtrack->Pt();
2136 // Loop over all caloclusters
2137 for (i=0;i<fnClusters;i++)
2139 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2140 vcluster->GetMomentum(*cluster_vec,fVertex);
2141 E_caloclusters_total+=cluster_vec->Pt();
2145 // Calculate the mean Background density
2146 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2150 fRhoFull0->FillRho(fEventCentrality,EMCal_rho);
2151 fRhoFull0->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2152 fRhoFull0->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2153 fRhoFull0->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2154 fRhoFull0->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2155 fRhoFull0->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2156 fRhoFull0->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2159 void AliAnalysisTaskFullpAJets::EstimateFullRho1()
2162 Double_t E_tracks_total=0.0;
2163 Double_t E_caloclusters_total=0.0;
2164 Double_t EMCal_rho=0.0;
2166 TLorentzVector *temp_jet= new TLorentzVector;
2167 TLorentzVector *track_vec = new TLorentzVector;
2168 TLorentzVector *cluster_vec = new TLorentzVector;
2170 if (fEMCalPartJetUnbiased->GetLeadingPt()>=fEMCalJetThreshold)
2172 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
2173 myJet->GetMom(*temp_jet);
2175 // Loop over all tracks
2176 for (i=0;i<fnTracks;i++)
2178 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2179 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2181 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2182 if (temp_jet->DeltaR(*track_vec)>fJetRForRho)
2184 E_tracks_total+=vtrack->Pt();
2189 // Loop over all caloclusters
2190 for (i=0;i<fnClusters;i++)
2192 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2193 vcluster->GetMomentum(*cluster_vec,fVertex);
2194 if (temp_jet->DeltaR(*cluster_vec)>fJetRForRho)
2196 E_caloclusters_total+=vcluster->E();
2199 // Calculate the mean Background density
2200 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta()));
2202 else // i.e. No signal jets -> same as total background density
2204 // Loop over all tracks
2205 for (i=0;i<fnTracks;i++)
2207 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2208 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2210 E_tracks_total+=vtrack->Pt();
2214 // Loop over all caloclusters
2215 for (i=0;i<fnClusters;i++)
2217 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2218 E_caloclusters_total+=vcluster->E();
2220 // Calculate the mean Background density
2221 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2228 fRhoFull1->FillRho(fEventCentrality,EMCal_rho);
2229 fRhoFull1->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2230 fRhoFull1->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2231 fRhoFull1->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2232 fRhoFull1->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2233 fRhoFull1->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2234 fRhoFull1->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2237 void AliAnalysisTaskFullpAJets::EstimateFullRho2()
2240 Double_t E_tracks_total=0.0;
2241 Double_t E_caloclusters_total=0.0;
2242 Double_t EMCal_rho=0.0;
2244 TLorentzVector *temp_jet1 = new TLorentzVector;
2245 TLorentzVector *temp_jet2 = new TLorentzVector;
2246 TLorentzVector *track_vec = new TLorentzVector;
2247 TLorentzVector *cluster_vec = new TLorentzVector;
2249 if ((fEMCalPartJetUnbiased->GetLeadingPt()>=fEMCalJetThreshold) && (fEMCalPartJetUnbiased->GetSubLeadingPt()>=fEMCalJetThreshold))
2251 AliEmcalJet *myhJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
2252 myhJet->GetMom(*temp_jet1);
2254 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSubLeadingIndex());
2255 myJet->GetMom(*temp_jet2);
2257 // Loop over all tracks
2258 for (i=0;i<fnTracks;i++)
2260 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2261 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2263 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2264 if ((temp_jet1->DeltaR(*track_vec)>fJetRForRho) && (temp_jet2->DeltaR(*track_vec)>fJetRForRho))
2266 E_tracks_total+=vtrack->Pt();
2271 // Loop over all caloclusters
2272 for (i=0;i<fnClusters;i++)
2274 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2275 vcluster->GetMomentum(*cluster_vec,fVertex);
2276 if ((temp_jet1->DeltaR(*cluster_vec)>fJetRForRho) && (temp_jet2->DeltaR(*cluster_vec)>fJetRForRho))
2278 E_caloclusters_total+=vcluster->E();
2282 // Calculate the mean Background density
2283 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-AreaWithinEMCal(fJetR,myhJet->Phi(),myhJet->Eta())-AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta()));
2285 else if (fEMCalPartJetUnbiased->GetLeadingPt()>=fEMCalJetThreshold)
2287 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
2288 myJet->GetMom(*temp_jet1);
2290 // Loop over all tracks
2291 for (i=0;i<fnTracks;i++)
2293 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2294 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2296 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2297 if (temp_jet1->DeltaR(*track_vec)>fJetRForRho)
2299 E_tracks_total+=vtrack->Pt();
2304 // Loop over all caloclusters
2305 for (i=0;i<fnClusters;i++)
2307 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2308 vcluster->GetMomentum(*cluster_vec,fVertex);
2309 if (temp_jet1->DeltaR(*cluster_vec)>fJetRForRho)
2311 E_caloclusters_total+=vcluster->E();
2314 // Calculate the mean Background density
2315 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta()));
2317 else // i.e. No signal jets -> same as total background density
2319 // Loop over all tracks
2320 for (i=0;i<fnTracks;i++)
2322 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2323 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2325 E_tracks_total+=vtrack->Pt();
2329 // Loop over all caloclusters
2330 for (i=0;i<fnClusters;i++)
2332 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2333 E_caloclusters_total+=vcluster->E();
2335 // Calculate the mean Background density
2336 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2344 fRhoFull2->FillRho(fEventCentrality,EMCal_rho);
2345 fRhoFull2->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2346 fRhoFull2->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2347 fRhoFull2->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2348 fRhoFull2->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2349 fRhoFull2->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2350 fRhoFull2->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2353 void AliAnalysisTaskFullpAJets::EstimateFullRhoN()
2356 Bool_t track_away_from_jet;
2357 Bool_t cluster_away_from_jet;
2358 Double_t E_tracks_total=0.0;
2359 Double_t E_caloclusters_total=0.0;
2360 Double_t EMCal_rho=0.0;
2361 Double_t jet_area_total=0.0;
2363 TLorentzVector *jet_vec= new TLorentzVector;
2364 TLorentzVector *track_vec = new TLorentzVector;
2365 TLorentzVector *cluster_vec = new TLorentzVector;
2367 // First, sum all tracks within the EMCal that are away from jet(s) above Pt Threshold
2368 for (i=0;i<fnTracks;i++)
2370 // First, check if track is in the EMCal!!
2371 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(i);
2372 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2374 if (fEMCalPartJetUnbiased->GetTotalSignalJets()<1)
2376 E_tracks_total+=vtrack->Pt();
2380 track_away_from_jet=kTRUE;
2382 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2383 while (track_away_from_jet==kTRUE && j<fEMCalPartJetUnbiased->GetTotalSignalJets())
2385 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(j));
2386 myJet->GetMom(*jet_vec);
2387 if (track_vec->DeltaR(*jet_vec)<=fJetRForRho)
2389 track_away_from_jet=kFALSE;
2393 if (track_away_from_jet==kTRUE)
2395 E_tracks_total+=vtrack->Pt();
2401 // Next, sum all CaloClusters within the EMCal (obviously all clusters must be within EMCal!!) that are away from jet(s) above Pt Threshold
2402 for (i=0;i<fnClusters;i++)
2404 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2405 if (fEMCalPartJet->GetTotalSignalJets()<1)
2407 E_caloclusters_total+=vcluster->E();
2411 cluster_away_from_jet=kTRUE;
2414 vcluster->GetMomentum(*cluster_vec,fVertex);
2415 while (cluster_away_from_jet==kTRUE && j<fEMCalPartJetUnbiased->GetTotalSignalJets())
2417 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(j));
2418 myJet->GetMom(*jet_vec);
2419 if (cluster_vec->DeltaR(*jet_vec)<=fJetRForRho)
2421 cluster_away_from_jet=kFALSE;
2425 if (cluster_away_from_jet==kTRUE)
2427 E_caloclusters_total+=vcluster->E();
2432 // Determine area of all Jets that are within the EMCal
2433 if (fEMCalPartJet->GetTotalSignalJets()==0)
2439 for (i=0;i<fEMCalPartJetUnbiased->GetTotalSignalJets();i++)
2441 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(i));
2442 jet_area_total+=AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta());
2450 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-jet_area_total);
2453 fRhoFullN->FillRho(fEventCentrality,EMCal_rho);
2454 fRhoFullN->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2455 fRhoFullN->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2456 fRhoFullN->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2457 fRhoFullN->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2458 fRhoFullN->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2459 fRhoFullN->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2462 void AliAnalysisTaskFullpAJets::EstimateFullRhoDijet()
2465 Double_t E_tracks_total=0.0;
2466 Double_t E_caloclusters_total=0.0;
2467 Double_t EMCal_rho=0.0;
2469 // Loop over all tracks
2470 for (i=0;i<fnTracks;i++)
2472 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2473 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2475 E_tracks_total+=vtrack->Pt();
2479 // Loop over all caloclusters
2480 for (i=0;i<fnClusters;i++)
2482 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2483 E_caloclusters_total+=vcluster->E();
2486 // Calculate the mean Background density
2487 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2490 fRhoFullDijet->FillRho(fEventCentrality,EMCal_rho);
2491 fRhoFullDijet->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2492 fRhoFullDijet->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2493 fRhoFullDijet->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2494 fRhoFullDijet->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2495 fRhoFullDijet->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2496 fRhoFullDijet->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2499 void AliAnalysisTaskFullpAJets::EstimateFullRhokT()
2502 Double_t kTRho = 0.0;
2503 Double_t *pTArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2504 Double_t *RhoArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2506 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2508 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2509 pTArray[i]=myJet->Pt();
2510 RhoArray[i]=myJet->Pt()/myJet->Area();
2513 if (fEMCalkTFullJet->GetTotalJets()>0)
2515 kTRho=MedianRhokT(pTArray,RhoArray,fEMCalkTFullJet->GetTotalJets());
2521 fRhoFullkT->FillRho(fEventCentrality,kTRho);
2522 fRhoFullkT->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2523 fRhoFullkT->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2524 fRhoFullkT->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
2525 fRhoFullkT->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
2526 fRhoFullkT->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2527 fRhoFullkT->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2532 void AliAnalysisTaskFullpAJets::EstimateFullRhoCMS()
2535 Double_t kTRho = 0.0;
2536 Double_t CMSTotalkTArea = 0.0;
2537 Double_t CMSParticleArea = 0.0;
2538 Double_t CMSCorrectionFactor = 1.0;
2539 Double_t *pTArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2540 Double_t *RhoArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2543 if ((fEMCalPartJet->GetLeadingPt()>=fEMCalJetThreshold) && (fEMCalPartJet->GetSubLeadingPt()>=fEMCalJetThreshold))
2545 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJet->GetLeadingIndex());
2546 AliEmcalJet *myJet2 =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJet->GetSubLeadingIndex());
2548 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2550 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2552 CMSTotalkTArea+=myJet->Area();
2553 if (myJet->GetNumberOfTracks()>0 || myJet->GetNumberOfClusters()>0)
2555 CMSParticleArea+=myJet->Area();
2557 if (IsJetOverlap(myJet,myJet1,kTRUE)==kFALSE && IsJetOverlap(myJet,myJet2,kFALSE)==kTRUE)
2559 pTArray[k]=myJet->Pt();
2560 RhoArray[k]=myJet->Pt()/myJet->Area();
2566 kTRho=MedianRhokT(pTArray,RhoArray,k);
2573 else if (fEMCalJet->GetLeadingPt()>=fEMCalJetThreshold)
2575 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalJet->GetLeadingIndex());
2577 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2579 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2581 CMSTotalkTArea+=myJet->Area();
2582 if (myJet->GetNumberOfTracks()>0 || myJet->GetNumberOfClusters()>0)
2584 CMSParticleArea+=myJet->Area();
2586 if (IsJetOverlap(myJet,myJet1,kTRUE)==kFALSE)
2588 pTArray[k]=myJet->Pt();
2589 RhoArray[k]=myJet->Pt()/myJet->Area();
2595 kTRho=MedianRhokT(pTArray,RhoArray,k);
2604 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2606 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2608 CMSTotalkTArea+=myJet->Area();
2609 if (myJet->GetNumberOfTracks()>0 || myJet->GetNumberOfClusters()>0)
2611 CMSParticleArea+=myJet->Area();
2613 pTArray[k]=myJet->Pt();
2614 RhoArray[k]=myJet->Pt()/myJet->Area();
2619 kTRho=MedianRhokT(pTArray,RhoArray,k);
2626 // Scale CMS Rho by Correction factor
2627 if (CMSTotalkTArea==0.0)
2629 CMSCorrectionFactor = 1.0;
2633 //CMSCorrectionFactor = CMSTrackArea/CMSTotalkTArea;
2634 CMSCorrectionFactor = CMSParticleArea/((fEMCalPhiTotal-2*fJetR)*(fEMCalEtaTotal-2*fJetR)); // The total physical area should be reduced by the eta & phi cuts due to looping over only fully contained kT jets within the EMCal
2636 kTRho*=CMSCorrectionFactor;
2638 fRhoFullCMS->FillRho(fEventCentrality,kTRho);
2639 fRhoFullCMS->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2640 fRhoFullCMS->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2641 fRhoFullCMS->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
2642 fRhoFullCMS->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
2643 fRhoFullCMS->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2644 fRhoFullCMS->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2649 void AliAnalysisTaskFullpAJets::DeleteJetData(Bool_t EMCalOn)
2655 delete fTPCkTFullJet;
2660 delete fEMCalFullJet;
2661 delete fEMCalPartJet;
2662 delete fEMCalkTFullJet;
2666 /////////////////////////////////////////////////////////////////////////////////////////
2667 ///////////////// User Defined Functions ///////////////////////////////////////
2668 /////////////////////////////////////////////////////////////////////////////////////////
2670 Bool_t AliAnalysisTaskFullpAJets::IsDiJetEvent()
2672 // Determine if event contains a di-jet within the detector. Uses charged jets.
2673 // Requires the delta phi of the jets to be 180 +/- 15 degrees.
2674 // Requires both jets to be outside of the EMCal
2675 // Requires both jets to be signal jets
2677 const Double_t dijet_delta_phi=(180/360.)*2*TMath::Pi();
2678 const Double_t dijet_phi_acceptance=0.5*(30/360.)*2*TMath::Pi(); //Input the total acceptance within the paraenthesis to be +/- dijet_phi_acceptance
2679 Double_t dummy_phi=0.0;
2681 if (fTPCOnlyJet->GetTotalSignalJets()>1)
2683 AliEmcalJet *myhJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCOnlyJet->GetLeadingIndex());
2684 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCOnlyJet->GetSubLeadingIndex());
2685 dummy_phi=TMath::Min(TMath::Abs(myhJet->Phi()-myJet->Phi()),2*TMath::Pi()-TMath::Abs(myhJet->Phi()-myJet->Phi()));
2686 if (dummy_phi>(dijet_delta_phi-dijet_phi_acceptance))
2695 Bool_t AliAnalysisTaskFullpAJets::InsideRect(Double_t phi,Double_t phi_min,Double_t phi_max,Double_t eta,Double_t eta_min,Double_t eta_max)
2697 if (phi>phi_min && phi<phi_max)
2699 if (eta>eta_min && eta<eta_max)
2707 Bool_t AliAnalysisTaskFullpAJets::IsInEMCal(Double_t phi,Double_t eta)
2709 return InsideRect(phi,fEMCalPhiMin,fEMCalPhiMax,eta,fEMCalEtaMin,fEMCalEtaMax);
2712 Bool_t AliAnalysisTaskFullpAJets::IsInEMCalFull(Double_t r,Double_t phi,Double_t eta)
2714 return InsideRect(phi,fEMCalPhiMin+r,fEMCalPhiMax-r,eta,fEMCalEtaMin+r,fEMCalEtaMax-r);
2717 Bool_t AliAnalysisTaskFullpAJets::IsInEMCalPart(Double_t r,Double_t phi,Double_t eta)
2719 return InsideRect(phi,fEMCalPhiMin-r,fEMCalPhiMax+r,eta,fEMCalEtaMin-r,fEMCalEtaMax+r);
2722 Bool_t AliAnalysisTaskFullpAJets::IsInTPCFull(Double_t r,Double_t phi,Double_t eta)
2724 Bool_t in_EMCal= InsideRect(phi,fEMCalPhiMin-r,fEMCalPhiMax+r,eta,fEMCalEtaMin-r,fEMCalEtaMax+r);
2725 Bool_t in_TPC= InsideRect(phi,fTPCPhiMin,fTPCPhiMax,eta,fTPCEtaMin+r,fTPCEtaMax-r);
2727 if (in_EMCal==kFALSE && in_TPC==kTRUE)
2734 Bool_t AliAnalysisTaskFullpAJets::IsInTPC(Double_t r,Double_t phi,Double_t eta,Bool_t Complete)
2736 if (Complete==kTRUE)
2738 return InsideRect(phi,fTPCPhiMin,fTPCPhiMax,eta,fTPCEtaMin+r,fTPCEtaMax-r);
2740 return InsideRect(phi,fTPCPhiMin,fTPCPhiMax,eta,fTPCEtaMin,fTPCEtaMax);
2743 Bool_t AliAnalysisTaskFullpAJets::IsJetOverlap(AliEmcalJet *jet1,AliEmcalJet *jet2,Bool_t EMCalOn)
2748 Int_t jetCluster1=0;
2749 Int_t jetCluster2=0;
2751 for (i=0;i<jet1->GetNumberOfTracks();i++)
2753 jetTrack1=jet1->TrackAt(i);
2754 for (j=0;j<jet2->GetNumberOfTracks();j++)
2756 jetTrack2=jet2->TrackAt(j);
2757 if (jetTrack1 == jetTrack2)
2763 if (EMCalOn == kTRUE)
2765 for (i=0;i<jet1->GetNumberOfClusters();i++)
2767 jetCluster1=jet1->ClusterAt(i);
2768 for (j=0;j<jet2->GetNumberOfClusters();j++)
2770 jetCluster2=jet2->ClusterAt(j);
2771 if (jetCluster1 == jetCluster2)
2781 Double_t AliAnalysisTaskFullpAJets::AreaWithinTPC(Double_t r,Double_t eta)
2784 if (eta<(fTPCEtaMin+r))
2788 else if(eta>(fTPCEtaMax-r))
2796 return r*r*TMath::Pi()-AreaEdge(r,z);
2799 Double_t AliAnalysisTaskFullpAJets::AreaWithinEMCal(Double_t r,Double_t phi,Double_t eta)
2803 if (phi<(fEMCalPhiMin-r) || phi>(fEMCalPhiMax+r))
2807 else if (phi<(fEMCalPhiMin+r))
2811 else if (phi>(fEMCalPhiMin+r) && phi<(fEMCalPhiMax-r))
2820 if (eta<(fEMCalEtaMin-r) || eta>(fEMCalEtaMax+r))
2824 else if (eta<(fEMCalEtaMin+r))
2828 else if (eta>(fEMCalEtaMin+r) && eta<(fEMCalEtaMax-r))
2839 if (TMath::Sqrt(x*x+y*y)>=r)
2841 return r*r*TMath::Pi()-AreaEdge(r,x)-AreaEdge(r,y);
2843 return r*r*TMath::Pi()-AreaEdge(r,x)-AreaEdge(r,y)+AreaOverlap(r,x,y);
2845 else if ((x>=r && y<0) || (y>=r && x<0))
2847 return r*r*TMath::Pi()-AreaEdge(r,x)-AreaEdge(r,y);
2849 else if (x>0 && x<r && y<0)
2851 Double_t a=TMath::Sqrt(r*r-x*x);
2852 Double_t b=TMath::Sqrt(r*r-y*y);
2855 return r*r*TMath::ASin(b/r)+y*b;
2859 return 0.5*x*a+0.5*r*r*TMath::ASin(x/r)+0.5*y*b+x*y+0.5*r*r*TMath::ASin(b/r);
2862 else if (y>0 && y<r && x<0)
2864 Double_t a=TMath::Sqrt(r*r-x*x);
2865 Double_t b=TMath::Sqrt(r*r-y*y);
2868 return r*r*TMath::ASin(a/r)+x*a;
2872 return 0.5*y*b+0.5*r*r*TMath::ASin(y/r)+0.5*x*a+x*y+0.5*r*r*TMath::ASin(a/r);
2877 Double_t a=TMath::Sqrt(r*r-x*x);
2878 Double_t b=TMath::Sqrt(r*r-y*y);
2885 return 0.5*x*a+0.5*r*r*TMath::ASin(x/r)+0.5*y*b+x*y+0.5*r*r*TMath::ASin(b/r);
2890 Double_t AliAnalysisTaskFullpAJets::AreaEdge(Double_t r,Double_t z)
2892 Double_t a=TMath::Sqrt(r*r-z*z);
2893 return r*r*TMath::ASin(a/r)-a*z;
2896 Double_t AliAnalysisTaskFullpAJets::AreaOverlap(Double_t r,Double_t x,Double_t y)
2898 Double_t a=TMath::Sqrt(r*r-x*x);
2899 Double_t b=TMath::Sqrt(r*r-y*y);
2900 return x*y-0.5*(x*a+y*b)+0.5*r*r*(TMath::ASin(b/r)-TMath::ASin(x/r));
2903 Double_t AliAnalysisTaskFullpAJets::TransverseArea(Double_t r,Double_t psi0,Double_t phi,Double_t eta)
2905 Double_t area_left=0;
2906 Double_t area_right=0;
2910 Double_t eta_down=0;
2912 Double_t u=eta-fEMCalEtaMin;
2913 Double_t v=fEMCalEtaMax-eta;
2915 Double_t phi1=phi+u*TMath::Tan(psi0);
2916 Double_t phi2=phi-u*TMath::Tan(psi0);
2917 Double_t phi3=phi+v*TMath::Tan(psi0);
2918 Double_t phi4=phi-v*TMath::Tan(psi0);
2920 //Calculate the Left side area
2921 if (phi1>=fEMCalPhiMax)
2923 eta_a=eta-u*((fEMCalPhiMax-phi)/(phi1-phi));
2925 if (phi2<=fEMCalPhiMin)
2927 eta_b=eta-u*((phi-fEMCalPhiMin)/(phi-phi2));
2930 if ((phi1>=fEMCalPhiMax) && (phi2<=fEMCalPhiMin))
2932 eta_up=TMath::Max(eta_a,eta_b);
2933 eta_down=TMath::Min(eta_a,eta_b);
2935 area_left=(eta_down-fEMCalEtaMin)*fEMCalPhiTotal + 0.5*(fEMCalPhiTotal+2*(eta-eta_up)*TMath::Tan(psi0))*(eta_up-eta_down) + (eta-eta_up+r)*TMath::Tan(psi0)*(eta-eta_up-r);
2937 else if (phi1>=fEMCalPhiMax)
2939 area_left=0.5*(fEMCalPhiMax-phi2+2*(eta-eta_a)*TMath::Tan(psi0))*(eta_a-fEMCalEtaMin) + (eta-eta_a+r)*TMath::Tan(psi0)*(eta-eta_a-r);
2941 else if (phi2<=fEMCalPhiMin)
2943 area_left=0.5*(phi1-fEMCalPhiMin+2*(eta-eta_b)*TMath::Tan(psi0))*(eta_b-fEMCalEtaMin) + (eta-eta_b+r)*TMath::Tan(psi0)*(eta-eta_b-r);
2947 area_left=0.5*(phi1-phi2+2*r*TMath::Tan(psi0))*(u-r);
2950 // Calculate the Right side area
2951 if (phi3>=fEMCalPhiMax)
2953 eta_a=eta+v*((fEMCalPhiMax-phi)/(phi3-phi));
2955 if (phi4<=fEMCalPhiMin)
2957 eta_b=eta+v*((phi-fEMCalPhiMin)/(phi-phi4));
2960 if ((phi3>=fEMCalPhiMax) && (phi4<=fEMCalPhiMin))
2962 eta_up=TMath::Max(eta_a,eta_b);
2963 eta_down=TMath::Min(eta_a,eta_b);
2965 area_right=(fEMCalEtaMax-eta_up)*fEMCalPhiTotal + 0.5*(fEMCalPhiTotal+2*(eta_down-eta)*TMath::Tan(psi0))*(eta_down-eta_up) + (eta_down-eta+r)*TMath::Tan(psi0)*(eta_up-eta-r);
2967 else if (phi3>=fEMCalPhiMax)
2969 area_right=0.5*(fEMCalPhiMax-phi4+2*(eta_a-eta)*TMath::Tan(psi0))*(fEMCalEtaMax-eta_a) + (eta_a-eta+r)*TMath::Tan(psi0)*(eta_a-eta-r);
2971 else if (phi4<=fEMCalPhiMin)
2973 area_right=0.5*(phi3-fEMCalPhiMin+2*(eta_b-eta)*TMath::Tan(psi0))*(fEMCalEtaMax-eta_b) + (eta_b-eta+r)*TMath::Tan(psi0)*(eta_b-eta-r);
2977 area_right=0.5*(phi3-phi4+2*r*TMath::Tan(psi0))*(v-r);
2979 return area_left+area_right;
2982 Double_t AliAnalysisTaskFullpAJets::MedianRhokT(Double_t *pTkTEntries, Double_t *RhokTEntries, Int_t nEntries)
2984 // This function is used to calculate the median Rho kT value. The procedure is:
2985 // - Order the kT cluster array from highest rho value to lowest
2986 // - Exclude highest rho kT cluster
2987 // - Return the median rho value of the remaining subset
2990 const Double_t rho_min=-9.9999E+99;
2992 Double_t w[nEntries]; // Used for sorting
2993 Double_t smax=rho_min;
2999 for (j=0;j<nEntries;j++)
3004 for (j=0;j<nEntries;j++)
3006 if (pTkTEntries[j]>pTmax)
3008 pTmax=pTkTEntries[j];
3013 for (j=0;j<nEntries;j++)
3015 for (k=0;k<nEntries;k++)
3017 if (RhokTEntries[k]>smax)
3019 smax=RhokTEntries[k];
3024 RhokTEntries[sindex]=rho_min;
3028 return w[nEntries/2];
3032 // AlipAJetData Class Member Defs
3034 AliAnalysisTaskFullpAJets::AlipAJetData::AlipAJetData() :
3045 fSignalTrackBias(0),
3048 fPtSubLeadingIndex(0),
3056 // Dummy constructor ALWAYS needed for I/O.
3059 AliAnalysisTaskFullpAJets::AlipAJetData::AlipAJetData(const char *name, Bool_t isFull, Int_t nEntries) :
3070 fSignalTrackBias(0),
3073 fPtSubLeadingIndex(0),
3081 SetIsJetsFull(isFull);
3082 SetTotalEntries(nEntries);
3083 SetLeading(0,-9.99E+099);
3084 SetSubLeading(0,-9.99E+099);
3086 SetAreaCutFraction(0.6);
3088 SetSignalTrackPtBias(0);
3092 AliAnalysisTaskFullpAJets::AlipAJetData::~AlipAJetData()
3097 SetIsJetsFull(kFALSE);
3100 SetTotalSignalJets(0);
3104 SetAreaCutFraction(0);
3107 SetSignalTrackPtBias(kFALSE);
3109 delete [] fJetsIndex;
3110 delete [] fJetsSCIndex;
3111 delete [] fIsJetInArray;
3112 delete [] fJetMaxChargedPt;
3116 // User Defined Sub-Routines
3117 void AliAnalysisTaskFullpAJets::AlipAJetData::InitializeJetData(TClonesArray *jetList, Int_t nEntries)
3122 Double_t AreaThreshold = fAreaCutFrac*TMath::Pi()*TMath::Power(fJetR,2);
3124 // Initialize Jet Data
3125 for (i=0;i<nEntries;i++)
3127 AliEmcalJet *myJet =(AliEmcalJet*) jetList->At(i);
3129 if (fIsJetInArray[i]==kTRUE && myJet->Area()>AreaThreshold)
3132 if (myJet->Pt()>fPtMax)
3134 SetSubLeading(fPtMaxIndex,fPtMax);
3135 SetLeading(i,myJet->Pt());
3137 else if (myJet->Pt()>fPtSubLeading)
3139 SetSubLeading(i,myJet->Pt());
3141 // require leading charged constituent to have a pT greater then the signal threshold & Jet NEF to be less then the Signal Jet NEF cut
3142 fJetMaxChargedPt[i] = myJet->MaxTrackPt();
3143 if (fSignalTrackBias==kTRUE)
3145 if (fJetMaxChargedPt[i]>=fSignalPt && myJet->NEF()<=fNEF)
3147 SetSignalJetIndex(i,l);
3153 if (myJet->Pt()>=fSignalPt && myJet->NEF()<=fNEF)
3155 SetSignalJetIndex(i,l);
3163 SetTotalSignalJets(l);
3167 void AliAnalysisTaskFullpAJets::AlipAJetData::SetName(const char *name)
3172 void AliAnalysisTaskFullpAJets::AlipAJetData::SetIsJetsFull(Bool_t isFull)
3174 fIsJetsFull = isFull;
3177 void AliAnalysisTaskFullpAJets::AlipAJetData::SetTotalEntries(Int_t nEntries)
3180 fJetsIndex = new Int_t[fnTotal];
3181 fJetsSCIndex = new Int_t[fnTotal];
3182 fIsJetInArray = new Bool_t[fnTotal];
3183 fJetMaxChargedPt = new Double_t[fnTotal];
3186 void AliAnalysisTaskFullpAJets::AlipAJetData::SetTotalJets(Int_t nJets)
3191 void AliAnalysisTaskFullpAJets::AlipAJetData::SetTotalSignalJets(Int_t nSignalJets)
3193 fnJetsSC = nSignalJets;
3196 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSignalCut(Double_t Pt)
3201 void AliAnalysisTaskFullpAJets::AlipAJetData::SetLeading(Int_t index, Double_t Pt)
3203 fPtMaxIndex = index;
3207 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSubLeading(Int_t index, Double_t Pt)
3209 fPtSubLeadingIndex = index;
3213 void AliAnalysisTaskFullpAJets::AlipAJetData::SetJetIndex(Int_t index, Int_t At)
3215 fJetsIndex[At] = index;
3218 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSignalJetIndex(Int_t index, Int_t At)
3220 fJetsSCIndex[At] = index;
3223 void AliAnalysisTaskFullpAJets::AlipAJetData::SetIsJetInArray(Bool_t isInArray, Int_t At)
3225 fIsJetInArray[At] = isInArray;
3228 void AliAnalysisTaskFullpAJets::AlipAJetData::SetAreaCutFraction(Double_t areaFraction)
3230 fAreaCutFrac = areaFraction;
3233 void AliAnalysisTaskFullpAJets::AlipAJetData::SetJetR(Double_t jetR)
3238 void AliAnalysisTaskFullpAJets::AlipAJetData::SetNEF(Double_t nef)
3243 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSignalTrackPtBias(Bool_t chargedBias)
3245 fSignalTrackBias = chargedBias;
3249 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetTotalEntries()
3254 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetTotalJets()
3259 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetTotalSignalJets()
3264 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSignalCut()
3269 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetLeadingIndex()
3274 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetLeadingPt()
3279 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSubLeadingIndex()
3281 return fPtSubLeadingIndex;
3284 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSubLeadingPt()
3286 return fPtSubLeading;
3289 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetJetIndex(Int_t At)
3291 return fJetsIndex[At];
3294 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSignalJetIndex(Int_t At)
3296 return fJetsSCIndex[At];
3299 Bool_t AliAnalysisTaskFullpAJets::AlipAJetData::GetIsJetInArray(Int_t At)
3301 return fIsJetInArray[At];
3304 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetJetMaxChargedPt(Int_t At)
3306 return fJetMaxChargedPt[At];
3309 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetNEF()
3314 // AlipAJetHistos Class Member Defs
3316 AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos() :
3329 fh80100BSPtSignal(0),
3336 fh020DeltaPtSignal(0),
3337 fh80100DeltaPtSignal(0),
3339 fhDeltaPtCenSignal(0),
3340 fh020DeltaPtNColl(0),
3341 fh80100DeltaPtNColl(0),
3343 fhDeltaPtCenNColl(0),
3345 fh80100BckgFlucPt(0),
3353 fhJetConstituentPt(0),
3356 fhJetConstituentCounts(0),
3357 fhJetTracksCounts(0),
3358 fhJetClustersCounts(0),
3362 fhJetNEFSignalInfo(0),
3363 fhClusterNEFInfo(0),
3364 fhClusterNEFSignalInfo(0),
3365 fhClusterShapeAll(0),
3366 fhClusterPtCellAll(0),
3389 fLChargedTrackPtBins(0),
3390 fLChargedTrackPtLow(0),
3391 fLChargedTrackPtUp(0),
3393 fSignalTrackBias(0),
3399 fEMCalPhiMin(1.39626),
3400 fEMCalPhiMax(3.26377),
3405 // Dummy constructor ALWAYS needed for I/O.
3408 AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos(const char *name) :
3421 fh80100BSPtSignal(0),
3428 fh020DeltaPtSignal(0),
3429 fh80100DeltaPtSignal(0),
3431 fhDeltaPtCenSignal(0),
3432 fh020DeltaPtNColl(0),
3433 fh80100DeltaPtNColl(0),
3435 fhDeltaPtCenNColl(0),
3437 fh80100BckgFlucPt(0),
3445 fhJetConstituentPt(0),
3448 fhJetConstituentCounts(0),
3449 fhJetTracksCounts(0),
3450 fhJetClustersCounts(0),
3454 fhJetNEFSignalInfo(0),
3455 fhClusterNEFInfo(0),
3456 fhClusterNEFSignalInfo(0),
3457 fhClusterShapeAll(0),
3458 fhClusterPtCellAll(0),
3481 fLChargedTrackPtBins(0),
3482 fLChargedTrackPtLow(0),
3483 fLChargedTrackPtUp(0),
3485 fSignalTrackBias(0),
3491 fEMCalPhiMin(1.39626),
3492 fEMCalPhiMax(3.26377),
3498 SetCentralityTag("V0A");
3499 SetCentralityRange(100,0,100);
3500 SetPtRange(250,-50,200);
3501 SetRhoPtRange(500,0,50);
3502 SetDeltaPtRange(200,-100,100);
3503 SetBackgroundFluctuationsPtRange(100,0,100);
3504 SetLeadingJetPtRange(200,0,200);
3505 SetLeadingChargedTrackPtRange(100,0,100);
3506 SetNEFRange(100,0,1);
3507 DoNEFQAPlots(kFALSE);
3512 AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos(const char *name, const char *centag, Bool_t doNEF) :
3525 fh80100BSPtSignal(0),
3532 fh020DeltaPtSignal(0),
3533 fh80100DeltaPtSignal(0),
3535 fhDeltaPtCenSignal(0),
3536 fh020DeltaPtNColl(0),
3537 fh80100DeltaPtNColl(0),
3539 fhDeltaPtCenNColl(0),
3541 fh80100BckgFlucPt(0),
3549 fhJetConstituentPt(0),
3552 fhJetConstituentCounts(0),
3553 fhJetTracksCounts(0),
3554 fhJetClustersCounts(0),
3558 fhJetNEFSignalInfo(0),
3559 fhClusterNEFInfo(0),
3560 fhClusterNEFSignalInfo(0),
3561 fhClusterShapeAll(0),
3562 fhClusterPtCellAll(0),
3585 fLChargedTrackPtBins(0),
3586 fLChargedTrackPtLow(0),
3587 fLChargedTrackPtUp(0),
3589 fSignalTrackBias(0),
3595 fEMCalPhiMin(1.39626),
3596 fEMCalPhiMax(3.26377),
3602 SetCentralityTag(centag);
3603 SetCentralityRange(100,0,100);
3604 SetPtRange(250,-50,200);
3605 SetRhoPtRange(500,0,50);
3606 SetDeltaPtRange(200,-100,100);
3607 SetBackgroundFluctuationsPtRange(100,0,100);
3608 SetLeadingJetPtRange(200,0,200);
3609 SetLeadingChargedTrackPtRange(100,0,100);
3610 SetNEFRange(100,0,1);
3611 DoNEFQAPlots(doNEF);
3617 AliAnalysisTaskFullpAJets::AlipAJetHistos::~AlipAJetHistos()
3625 void AliAnalysisTaskFullpAJets::AlipAJetHistos::Init()
3629 // Initialize Private Variables
3631 fEMCalPhiMin=(80/(double)360)*2*TMath::Pi();
3632 fEMCalPhiMax=(187/(double)360)*2*TMath::Pi();
3636 fOutput = new TList();
3637 fOutput->SetOwner();
3638 fOutput->SetName(fName);
3640 TString RhoString="";
3641 TString PtString="";
3642 TString DeltaPtString="";
3643 TString BckgFlucPtString="";
3644 TString CentralityString;
3645 CentralityString = Form("Centrality (%s) ",fCentralityTag);
3647 // Rho Spectral Plots
3648 RhoString = Form("%d-%d Centrality, Rho Spectrum",0,20);
3649 fh020Rho = new TH1F("fh020Rho",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp);
3650 fh020Rho->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
3651 fh020Rho->GetYaxis()->SetTitle("1/N_{Events} dN/d#rho");
3654 RhoString = Form("%d-%d Centrality, Rho Spectrum",80,100);
3655 fh80100Rho = new TH1F("fh80100Rho",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp);
3656 fh80100Rho->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
3657 fh80100Rho->GetYaxis()->SetTitle("1/N_{Events} dN/d#rho");
3658 fh80100Rho->Sumw2();
3660 RhoString = Form("%d-%d Centrality, Rho Spectrum",0,100);
3661 fhRho = new TH1F("fhRho",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp);
3662 fhRho->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
3663 fhRho->GetYaxis()->SetTitle("1/N_{Events} dN/d#rho");
3666 RhoString = "Rho Spectrum vs Centrality";
3667 fhRhoCen = new TH2F("fhRhoCen",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3668 fhRhoCen->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
3669 fhRhoCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
3670 fhRhoCen->GetZaxis()->SetTitle("1/N_{Events} dN/d#rho");
3673 // Background Subtracted Plots
3674 PtString = Form("%d-%d Centrality, Background Subtracted Jet Spectrum",0,20);
3675 fh020BSPt = new TH1F("fh020BSPt",PtString,fPtBins,fPtLow,fPtUp);
3676 fh020BSPt->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
3677 fh020BSPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3680 PtString = Form("%d-%d Centrality, Background Subtracted Jet Spectrum",80,100);
3681 fh80100BSPt = new TH1F("fh80100BSPt",PtString,fPtBins,fPtLow,fPtUp);
3682 fh80100BSPt->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
3683 fh80100BSPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3684 fh80100BSPt->Sumw2();
3686 PtString = Form("%d-%d Centrality, Background Subtracted Jet Spectrum",0,100);
3687 fhBSPt = new TH1F("fhBSPt",PtString,fPtBins,fPtLow,fPtUp);
3688 fhBSPt->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
3689 fhBSPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3692 PtString = "Background Subtracted Jet Spectrum vs Centrality";
3693 fhBSPtCen = new TH2F("fhBSPtCen",PtString,fPtBins,fPtLow,fPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3694 fhBSPtCen->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
3695 fhBSPtCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
3696 fhBSPtCen->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3699 PtString = Form("%d-%d Centrality, Background Subtracted Signal Jet Spectrum",0,20);
3700 fh020BSPtSignal = new TH1F("fh020BSPtSignal",PtString,fPtBins,fPtLow,fPtUp);
3701 fh020BSPtSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
3702 fh020BSPtSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3703 fh020BSPtSignal->Sumw2();
3705 PtString = Form("%d-%d Centrality, Background Subtracted Signal Jet Spectrum",80,100);
3706 fh80100BSPtSignal = new TH1F("fh80100BSPtSignal",PtString,fPtBins,fPtLow,fPtUp);
3707 fh80100BSPtSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
3708 fh80100BSPtSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3709 fh80100BSPtSignal->Sumw2();
3711 PtString = Form("%d-%d Centrality, Background Subtracted Signal Jet Spectrum",0,100);
3712 fhBSPtSignal = new TH1F("fhBSPtSignal",PtString,fPtBins,fPtLow,fPtUp);
3713 fhBSPtSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
3714 fhBSPtSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3715 fhBSPtSignal->Sumw2();
3717 PtString = "Background Subtracted Signal Jet Spectrum vs Centrality";
3718 fhBSPtCenSignal = new TH2F("fhBSPtCenSignal",PtString,fPtBins,fPtLow,fPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3719 fhBSPtCenSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
3720 fhBSPtCenSignal->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
3721 fhBSPtCenSignal->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3722 fhBSPtCenSignal->Sumw2();
3724 // Delta Pt Plots with RC at least 2R away from Leading Signal
3725 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,20);
3726 fh020DeltaPt = new TH1F("fh020DeltaPt",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3727 fh020DeltaPt->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3728 fh020DeltaPt->GetYaxis()->SetTitle("Probability Density");
3729 fh020DeltaPt->Sumw2();
3731 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",80,100);
3732 fh80100DeltaPt = new TH1F("fh80100DeltaPt",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3733 fh80100DeltaPt->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3734 fh80100DeltaPt->GetYaxis()->SetTitle("Probability Density");
3735 fh80100DeltaPt->Sumw2();
3737 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,100);
3738 fhDeltaPt = new TH1F("fhDeltaPt",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3739 fhDeltaPt->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3740 fhDeltaPt->GetYaxis()->SetTitle("Probability Density");
3743 DeltaPtString = "#deltap_{T} Spectrum vs Centrality";
3744 fhDeltaPtCen = new TH2F("fhDeltaPtCen",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3745 fhDeltaPtCen->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3746 fhDeltaPtCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
3747 fhDeltaPtCen->GetZaxis()->SetTitle("Probability Density");
3748 fhDeltaPtCen->Sumw2();
3750 // Delta Pt Plots with no spatial restrictions on RC
3751 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,20);
3752 fh020DeltaPtSignal = new TH1F("fh020DeltaPtSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3753 fh020DeltaPtSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3754 fh020DeltaPtSignal->GetYaxis()->SetTitle("Probability Density");
3755 fh020DeltaPtSignal->Sumw2();
3757 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",80,100);
3758 fh80100DeltaPtSignal = new TH1F("fh80100DeltaPtSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3759 fh80100DeltaPtSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3760 fh80100DeltaPtSignal->GetYaxis()->SetTitle("Probability Density");
3761 fh80100DeltaPtSignal->Sumw2();
3763 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,100);
3764 fhDeltaPtSignal = new TH1F("fhDeltaPtSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3765 fhDeltaPtSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3766 fhDeltaPtSignal->GetYaxis()->SetTitle("Probability Density");
3767 fhDeltaPtSignal->Sumw2();
3769 DeltaPtString = "#deltap_{T} Spectrum vs Centrality";
3770 fhDeltaPtCenSignal = new TH2F("fhDeltaPtCenSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3771 fhDeltaPtCenSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3772 fhDeltaPtCenSignal->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
3773 fhDeltaPtCenSignal->GetZaxis()->SetTitle("Probability Density");
3774 fhDeltaPtCenSignal->Sumw2();
3776 // Delta Pt Plots with NColl restrictions on RC
3777 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,20);
3778 fh020DeltaPtNColl = new TH1F("fh020DeltaPtNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3779 fh020DeltaPtNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3780 fh020DeltaPtNColl->GetYaxis()->SetTitle("Probability Density");
3781 fh020DeltaPtNColl->Sumw2();
3783 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",80,100);
3784 fh80100DeltaPtNColl = new TH1F("fh80100DeltaPtNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3785 fh80100DeltaPtNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3786 fh80100DeltaPtNColl->GetYaxis()->SetTitle("Probability Density");
3787 fh80100DeltaPtNColl->Sumw2();
3789 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,100);
3790 fhDeltaPtNColl = new TH1F("fhDeltaPtNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
3791 fhDeltaPtNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3792 fhDeltaPtNColl->GetYaxis()->SetTitle("Probability Density");
3793 fhDeltaPtNColl->Sumw2();
3795 DeltaPtString = "#deltap_{T} Spectrum vs Centrality";
3796 fhDeltaPtCenNColl = new TH2F("fhDeltaPtCenNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3797 fhDeltaPtCenNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
3798 fhDeltaPtCenNColl->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
3799 fhDeltaPtCenNColl->GetZaxis()->SetTitle("Probability Density");
3800 fhDeltaPtCenNColl->Sumw2();
3802 // Background Fluctuations Pt Plots
3803 BckgFlucPtString = Form("%d-%d Centrality, Background Fluctuation p_{T} Spectrum",0,20);
3804 fh020BckgFlucPt = new TH1F("fh020BckgFlucPt",PtString,fPtBins,fPtLow,fPtUp);
3805 fh020BckgFlucPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
3806 fh020BckgFlucPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3807 fh020BckgFlucPt->Sumw2();
3809 BckgFlucPtString = Form("%d-%d Centrality, Background Fluctuation p_{T} Spectrum",80,100);
3810 fh80100BckgFlucPt = new TH1F("fh80100BckgFlucPt",BckgFlucPtString,fBckgFlucPtBins,fBckgFlucPtLow,fBckgFlucPtUp);
3811 fh80100BckgFlucPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
3812 fh80100BckgFlucPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3813 fh80100BckgFlucPt->Sumw2();
3815 BckgFlucPtString = Form("%d-%d Centrality, Background Fluctuation p_{T} Spectrum",0,100);
3816 fhBckgFlucPt = new TH1F("fhBckgFlucPt",BckgFlucPtString,fBckgFlucPtBins,fBckgFlucPtLow,fBckgFlucPtUp);
3817 fhBckgFlucPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
3818 fhBckgFlucPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3819 fhBckgFlucPt->Sumw2();
3821 BckgFlucPtString = "Background Fluctuation p_{T} Spectrum vs Centrality";
3822 fhBckgFlucPtCen = new TH2F("fhBckgFlucPtCen",BckgFlucPtString,fBckgFlucPtBins,fBckgFlucPtLow,fBckgFlucPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
3823 fhBckgFlucPtCen->GetXaxis()->SetTitle("#p_{T} (GeV/c)");
3824 fhBckgFlucPtCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
3825 fhBckgFlucPtCen->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
3826 fhBckgFlucPtCen->Sumw2();
3828 // Background Density vs Centrality Profile
3829 RhoString = "Background Density vs Centrality";
3830 fpRho = new TProfile("fpRho",RhoString,fCentralityBins,fCentralityLow,fCentralityUp);
3831 fpRho->GetXaxis()->SetTitle(Form("%s",CentralityString.Data()));
3832 fpRho->GetYaxis()->SetTitle("p_{T}/Area (GeV/c)");
3834 // Background Density vs Leading Jet Profile
3835 fpLJetRho = new TProfile("fpLJetRho","#rho vs Leading Jet p_{T}",fLJetPtBins,fLJetPtLow,fLJetPtUp);
3836 fpLJetRho->GetXaxis()->SetTitle("Leading Jet p_{T}");
3837 fpLJetRho->GetYaxis()->SetTitle("p_{T}/Area (GeV/c)");
3840 Int_t JetPtAreaBins=200;
3841 Double_t JetPtAreaLow=0.0;
3842 Double_t JetPtAreaUp=2.0;
3844 fhJetPtArea = new TH2F("fhJetPtArea","Jet Area Distribution",fPtBins,fPtLow,fPtUp,JetPtAreaBins,JetPtAreaLow,JetPtAreaUp);
3845 fhJetPtArea->GetXaxis()->SetTitle("p_{T} (GeV/c)");
3846 fhJetPtArea->GetYaxis()->SetTitle("A_{jet}");
3847 fhJetPtArea->GetZaxis()->SetTitle("1/N_{Events} dN/dA_{jet}dp_{T}");
3848 fhJetPtArea->Sumw2();
3850 // Jet pT vs Constituent pT
3851 fhJetConstituentPt = new TH2F("fhJetConstituentPt","Jet constituents p_{T} distribution",fPtBins,fPtLow,fPtUp,10*fPtBins,fPtLow,fPtUp);
3852 fhJetConstituentPt->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
3853 fhJetConstituentPt->GetYaxis()->SetTitle("Constituent p_{T} (GeV/c)");
3854 fhJetConstituentPt->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dp_{T,track}");
3855 fhJetConstituentPt->Sumw2();
3857 fhJetTracksPt = new TH2F("fhJetTracksPt","Jet constituents Tracks p_{T} distribution",fPtBins,fPtLow,fPtUp,10*fPtBins,fPtLow,fPtUp);
3858 fhJetTracksPt->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
3859 fhJetTracksPt->GetYaxis()->SetTitle("Constituent Track p_{T} (GeV/c)");
3860 fhJetTracksPt->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dp_{T,track}");
3861 fhJetTracksPt->Sumw2();
3863 fhJetClustersPt = new TH2F("fhJetClustersPt","Jet constituents Clusters p_{T} distribution",fPtBins,fPtLow,fPtUp,10*fPtBins,fPtLow,fPtUp);
3864 fhJetClustersPt->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
3865 fhJetClustersPt->GetYaxis()->SetTitle("Constituent Cluster p_{T} (GeV/c)");
3866 fhJetClustersPt->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dp_{T,cluster}");
3867 fhJetClustersPt->Sumw2();
3869 // Jet pT vs Constituent Counts
3870 fhJetConstituentCounts = new TH2F("fhJetConstituentCounts","Jet constituents distribution",fPtBins,fPtLow,fPtUp,TCBins,0,(Double_t)TCBins);
3871 fhJetConstituentCounts->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
3872 fhJetConstituentCounts->GetYaxis()->SetTitle("Constituent Count");
3873 fhJetConstituentCounts->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dN_{constituent}");
3874 fhJetConstituentCounts->Sumw2();
3876 fhJetTracksCounts = new TH2F("fhJetTracksCounts","Jet constituents Tracks distribution",fPtBins,fPtLow,fPtUp,TCBins,0,(Double_t)TCBins);
3877 fhJetTracksCounts->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
3878 fhJetTracksCounts->GetYaxis()->SetTitle("Constituent Track Count");
3879 fhJetTracksCounts->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dN_{track}");
3880 fhJetTracksCounts->Sumw2();
3882 fhJetClustersCounts = new TH2F("fhJetClustersCounts","Jet constituents Clusters distribution",fPtBins,fPtLow,fPtUp,TCBins,0,(Double_t)TCBins);
3883 fhJetClustersCounts->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
3884 fhJetClustersCounts->GetYaxis()->SetTitle("Constituent Cluster Count");
3885 fhJetClustersCounts->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dN_{cluster}");
3886 fhJetClustersCounts->Sumw2();
3888 // Neutral Energy Fraction Histograms & QA
3889 if (fDoNEFQAPlots==kTRUE)
3891 fNEFOutput = new TList();
3892 fNEFOutput->SetOwner();
3893 fNEFOutput->SetName("ListNEFQAPlots");
3895 SetNEFJetDimensions(8); // Order: nef,Jet Pt,Eta,Phi,Centrality,Constituent mult,Charged mult, Neutral mult
3896 SetNEFClusterDimensions(10); // Order: nef,Jet Pt,Eta,Phi,Centrality,F_Cross,z_leading,t_cell,deltat_cell,Cell Count
3898 Int_t dimJetBins[fnDimJet];
3899 Double_t dimJetLow[fnDimJet];
3900 Double_t dimJetUp[fnDimJet];
3902 Int_t dimClusterBins[fnDimCluster];
3903 Double_t dimClusterLow[fnDimCluster];
3904 Double_t dimClusterUp[fnDimCluster];
3906 // Establish dimensinality bin counts and bounds
3908 dimJetBins[0] = dimClusterBins[0] = fNEFBins;
3909 dimJetLow[0] = dimClusterLow[0] = fNEFLow;
3910 dimJetUp[0] = dimClusterUp[0] = fNEFUp;
3913 dimJetBins[1] = dimClusterBins[1] = fPtBins;
3914 dimJetLow[1] = dimClusterLow[1] = fPtLow;
3915 dimJetUp[1] = dimClusterUp[1] = fPtUp;
3918 dimJetBins[2] = dimJetBins[3] = dimClusterBins[2] = dimClusterBins[3] = TCBins;
3919 dimJetLow[2] = dimClusterLow[2] = fEMCalEtaMin;
3920 dimJetUp[2] = dimClusterUp[2] = fEMCalEtaMax;
3921 dimJetLow[3] = dimClusterLow[3] = fEMCalPhiMin;
3922 dimJetUp[3] = dimClusterUp[3] = fEMCalPhiMax;
3925 dimJetBins[4] = dimClusterBins[4] = fCentralityBins;
3926 dimJetLow[4] = dimClusterLow[4] = fCentralityLow;
3927 dimJetUp[4] = dimClusterUp[4] = fCentralityUp;
3929 // Jets Constituent Multiplicity Info {Total,Charged,Neutral}
3932 dimJetBins[i] = TCBins;
3934 dimJetUp[i] = (Double_t)TCBins;
3938 dimClusterBins[5] = TCBins;
3939 dimClusterLow[5] = 0.0;
3940 dimClusterUp[5] = 1.0;
3942 // Cluster z_leading
3943 dimClusterBins[6] = TCBins;
3944 dimClusterLow[6] = 0.0;
3945 dimClusterUp[6] = 1.0;
3948 dimClusterBins[7] = 400;
3949 dimClusterLow[7] = -2e-07;
3950 dimClusterUp[7] = 2e-07;
3952 // Cluster delta t_cell
3953 dimClusterBins[8] = 100;
3954 dimClusterLow[8] = 0.0;
3955 dimClusterUp[8] = 1e-07;
3957 // Cluster Cell Count
3958 dimClusterBins[9] = TCBins;
3959 dimClusterLow[9] = 0.0;
3960 dimClusterUp[9] = 100.0;
3962 fhJetNEFInfo = new THnSparseF("fhJetNEFInfo","Jet NEF Information Histogram",fnDimJet,dimJetBins,dimJetLow,dimJetUp);
3963 fhJetNEFInfo->Sumw2();
3964 fhJetNEFSignalInfo = new THnSparseF("fhJetNEFSignalInfo","Signal Jet NEF Information Histogram",fnDimJet,dimJetBins,dimJetLow,dimJetUp);
3965 fhJetNEFSignalInfo->Sumw2();
3967 fhClusterNEFInfo = new THnSparseF("fhClusterNEFInfo","Jet NEF Cluster Information Histogram",fnDimCluster,dimClusterBins,dimClusterLow,dimClusterUp);
3968 fhClusterNEFInfo->Sumw2();
3969 fhClusterNEFSignalInfo = new THnSparseF("fhClusterNEFSignalInfo","Signal Jet NEF Cluster Information Histogram",fnDimCluster,dimClusterBins,dimClusterLow,dimClusterUp);
3970 fhClusterNEFSignalInfo->Sumw2();
3973 fhClusterShapeAll = new TH1F("fhClusterShapeAll","Cluster Shape of all CaloClustersCorr",10*TCBins,0,10*TCBins);
3974 fhClusterShapeAll->GetXaxis()->SetTitle("Cells");
3975 fhClusterShapeAll->GetYaxis()->SetTitle("1/N_{Events} dN/dCells");
3976 fhClusterShapeAll->Sumw2();
3978 fhClusterPtCellAll = new TH2F("fhClusterPtCellAll","Cluster p_{T} vs Cluster Shape of all CaloClustersCorr",fPtBins,fPtLow,fPtUp,10*TCBins,0,10*TCBins);
3979 fhClusterPtCellAll->GetXaxis()->SetTitle("p_{T} (GeV/c)");
3980 fhClusterPtCellAll->GetYaxis()->SetTitle("Cells");
3981 fhClusterPtCellAll->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}dCells");
3982 fhClusterPtCellAll->Sumw2();
3984 fNEFOutput->Add(fhJetNEFInfo);
3985 fNEFOutput->Add(fhJetNEFSignalInfo);
3986 fNEFOutput->Add(fhClusterNEFInfo);
3987 fNEFOutput->Add(fhClusterNEFSignalInfo);
3988 fNEFOutput->Add(fhClusterShapeAll);
3989 fNEFOutput->Add(fhClusterPtCellAll);
3990 fOutput->Add(fNEFOutput);
3993 // Add Histos & Profiles to List
3994 fOutput->Add(fh020Rho);
3995 fOutput->Add(fh80100Rho);
3996 fOutput->Add(fhRho);
3997 fOutput->Add(fhRhoCen);
3998 fOutput->Add(fh020BSPt);
3999 fOutput->Add(fh80100BSPt);
4000 fOutput->Add(fhBSPt);
4001 fOutput->Add(fhBSPtCen);
4002 fOutput->Add(fh020BSPtSignal);
4003 fOutput->Add(fh80100BSPtSignal);
4004 fOutput->Add(fhBSPtSignal);
4005 fOutput->Add(fhBSPtCenSignal);
4006 fOutput->Add(fh020DeltaPt);
4007 fOutput->Add(fh80100DeltaPt);
4008 fOutput->Add(fhDeltaPt);
4009 fOutput->Add(fhDeltaPtCen);
4010 fOutput->Add(fh020DeltaPtSignal);
4011 fOutput->Add(fh80100DeltaPtSignal);
4012 fOutput->Add(fhDeltaPtSignal);
4013 fOutput->Add(fhDeltaPtCenSignal);
4014 fOutput->Add(fh020DeltaPtNColl);
4015 fOutput->Add(fh80100DeltaPtNColl);
4016 fOutput->Add(fhDeltaPtNColl);
4017 fOutput->Add(fhDeltaPtCenNColl);
4018 fOutput->Add(fh020BckgFlucPt);
4019 fOutput->Add(fh80100BckgFlucPt);
4020 fOutput->Add(fhBckgFlucPt);
4021 fOutput->Add(fhBckgFlucPtCen);
4022 fOutput->Add(fpRho);
4023 fOutput->Add(fpLJetRho);
4024 fOutput->Add(fhJetPtArea);
4025 fOutput->Add(fhJetConstituentPt);
4026 fOutput->Add(fhJetTracksPt);
4027 fOutput->Add(fhJetClustersPt);
4028 fOutput->Add(fhJetConstituentCounts);
4029 fOutput->Add(fhJetTracksCounts);
4030 fOutput->Add(fhJetClustersCounts);
4033 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetName(const char *name)
4038 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetCentralityTag(const char *name)
4040 fCentralityTag = name;
4043 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetCentralityRange(Int_t bins, Double_t low, Double_t up)
4045 fCentralityBins=bins;
4050 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetPtRange(Int_t bins, Double_t low, Double_t up)
4057 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetRhoPtRange(Int_t bins, Double_t low, Double_t up)
4064 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetDeltaPtRange(Int_t bins, Double_t low, Double_t up)
4071 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetBackgroundFluctuationsPtRange(Int_t bins, Double_t low, Double_t up)
4073 fBckgFlucPtBins=bins;
4078 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetLeadingJetPtRange(Int_t bins, Double_t low, Double_t up)
4085 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetLeadingChargedTrackPtRange(Int_t bins, Double_t low, Double_t up)
4087 fLChargedTrackPtBins=bins;
4088 fLChargedTrackPtLow=low;
4089 fLChargedTrackPtUp=up;
4092 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetNEFRange(Int_t bins, Double_t low, Double_t up)
4099 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetSignalTrackPtBias(Bool_t chargedBias)
4101 fSignalTrackBias = chargedBias;
4104 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetNEFJetDimensions(Int_t n)
4109 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetNEFClusterDimensions(Int_t n)
4114 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillRho(Double_t eventCentrality, Double_t rho)
4119 fhRhoCen->Fill(rho,eventCentrality);
4120 fpRho->Fill(eventCentrality,rho);
4122 if (eventCentrality<=20)
4124 fh020Rho->Fill(rho);
4126 else if (eventCentrality>=80)
4128 fh80100Rho->Fill(rho);
4132 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillBSJS(Double_t eventCentrality, Double_t rho, Double_t signalCut, TClonesArray *jetList, Int_t *indexJetList, Int_t nIndexJetList)
4135 Double_t tempPt=0.0;
4136 Double_t tempChargedHighPt=0.0;
4138 for (i=0;i<nIndexJetList;i++)
4140 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
4141 tempPt=myJet->Pt()-rho*myJet->Area();
4142 tempChargedHighPt = myJet->MaxTrackPt();
4144 fhBSPt->Fill(tempPt);
4145 fhBSPtCen->Fill(tempPt,eventCentrality);
4146 if (eventCentrality<=20)
4148 fh020BSPt->Fill(tempPt);
4150 else if (eventCentrality>=80)
4152 fh80100BSPt->Fill(tempPt);
4154 if (fSignalTrackBias==kTRUE)
4156 if (tempChargedHighPt>=signalCut)
4158 fhBSPtSignal->Fill(tempPt);
4159 fhBSPtCenSignal->Fill(tempPt,eventCentrality);
4160 if (eventCentrality<=20)
4162 fh020BSPtSignal->Fill(tempPt);
4164 else if (eventCentrality>=80)
4166 fh80100BSPtSignal->Fill(tempPt);
4172 if (tempPt>=signalCut)
4174 fhBSPtSignal->Fill(tempPt);
4175 fhBSPtCenSignal->Fill(tempPt,eventCentrality);
4176 if (eventCentrality<=20)
4178 fh020BSPtSignal->Fill(tempPt);
4180 else if (eventCentrality>=80)
4182 fh80100BSPtSignal->Fill(tempPt);
4187 tempChargedHighPt=0.0;
4191 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillDeltaPt(Double_t eventCentrality, Double_t rho, Double_t jetRadius, Double_t *RCArray, Int_t nRC)
4194 Double_t tempPt=0.0;
4198 tempPt=RCArray[i]-rho*TMath::Power(jetRadius,2);
4199 fhDeltaPt->Fill(tempPt);
4200 fhDeltaPtCen->Fill(tempPt,eventCentrality);
4201 if (eventCentrality<=20)
4203 fh020DeltaPt->Fill(tempPt);
4205 else if (eventCentrality>=80)
4207 fh80100DeltaPt->Fill(tempPt);
4213 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillDeltaPtSignal(Double_t eventCentrality, Double_t rho, Double_t jetRadius, Double_t *RCArray, Int_t nRC)
4216 Double_t tempPt=0.0;
4220 tempPt=RCArray[i]-rho*TMath::Power(jetRadius,2);
4221 fhDeltaPtSignal->Fill(tempPt);
4222 fhDeltaPtCenSignal->Fill(tempPt,eventCentrality);
4223 if (eventCentrality<=20)
4225 fh020DeltaPtSignal->Fill(tempPt);
4227 else if (eventCentrality>=80)
4229 fh80100DeltaPtSignal->Fill(tempPt);
4235 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillDeltaPtNColl(Double_t eventCentrality, Double_t rho, Double_t jetRadius, Double_t *RCArray, Int_t nRC)
4238 Double_t tempPt=0.0;
4242 tempPt=RCArray[i]-rho*TMath::Power(jetRadius,2);
4243 fhDeltaPtNColl->Fill(tempPt);
4244 fhDeltaPtCenNColl->Fill(tempPt,eventCentrality);
4245 if (eventCentrality<=20)
4247 fh020DeltaPtNColl->Fill(tempPt);
4249 else if (eventCentrality>=80)
4251 fh80100DeltaPtNColl->Fill(tempPt);
4257 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillBackgroundFluctuations(Double_t eventCentrality, Double_t rho, Double_t jetRadius)
4259 Double_t tempPt=0.0;
4261 tempPt=rho*TMath::Power(jetRadius,2);
4262 fhBckgFlucPt->Fill(tempPt);
4263 fhBckgFlucPtCen->Fill(tempPt,eventCentrality);
4264 if (eventCentrality<=20)
4266 fh020BckgFlucPt->Fill(tempPt);
4268 else if (eventCentrality>=80)
4270 fh80100BckgFlucPt->Fill(tempPt);
4274 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillLeadingJetPtRho(Double_t jetPt, Double_t rho)
4276 fpLJetRho->Fill(jetPt,rho);
4279 void AliAnalysisTaskFullpAJets::AlipAJetHistos::DoNEFQAPlots(Bool_t doNEFAna)
4281 fDoNEFQAPlots = doNEFAna;
4284 void AliAnalysisTaskFullpAJets::AlipAJetHistos::DoNEFAnalysis(Double_t nefCut, Double_t signalCut, TClonesArray *jetList, Int_t *indexJetList, Int_t nIndexJetList, TObjArray *clusterList, TClonesArray *orgClusterList, AliVEvent *event, AliEMCALGeometry *geometry, AliEMCALRecoUtils *recoUtils, AliVCaloCells *cells)
4286 if (fDoNEFQAPlots==kFALSE)
4293 Double_t valJet[fnDimJet];
4294 Double_t valCluster[fnDimJet];
4295 for (i=0;i<fnDimJet;i++)
4303 Double_t tempChargedHighPt=0.0;
4307 Int_t chargedMult=0;
4308 Int_t neutralMult=0;
4309 Int_t iSupMod = -1, absId = -1, ieta = -1, iphi = -1;
4310 Bool_t shared = kFALSE;
4312 Double_t zLeading=0.0;
4315 Double_t eCross=0.0;
4316 Double_t FCross=0.0;
4318 Double_t lowTime=9.99e99;
4319 Double_t upTime=-9.99e99;
4321 Double_t tempCellTime=0.0;
4323 Double_t event_centrality = event->GetCentrality()->GetCentralityPercentile(fCentralityTag);
4324 valJet[4] = valCluster[4] = event_centrality;
4327 for (i=0;i<nIndexJetList;i++)
4329 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
4330 tempChargedHighPt = myJet->MaxTrackPt();
4335 totalMult=myJet->GetNumberOfConstituents();
4336 chargedMult = myJet->GetNumberOfTracks();
4337 neutralMult=myJet->GetNumberOfClusters();
4338 zLeading=myJet->MaxClusterPt()/myJet->Pt();
4340 valJet[0] = valCluster[0] = nef;
4341 valJet[1] = valCluster[1] = jetPt;
4342 valJet[2] = valCluster[2] = eta;
4343 valJet[3] = valCluster[3] = phi;
4345 valJet[5] = totalMult;
4346 valJet[6] = chargedMult;
4347 valJet[7] = neutralMult;
4349 valCluster[6] = zLeading;
4351 fhJetNEFInfo->Fill(valJet);
4353 if (fSignalTrackBias==kTRUE)
4355 if (tempChargedHighPt>=signalCut && nef<=nefCut)
4357 fhJetNEFSignalInfo->Fill(valJet);
4362 if (jetPt>=signalCut && nef<=nefCut)
4364 fhJetNEFSignalInfo->Fill(valJet);
4368 for (j=0;j<neutralMult;j++)
4370 AliVCluster* vcluster = (AliVCluster*) orgClusterList->At(myJet->ClusterAt(j));
4371 recoUtils->GetMaxEnergyCell(geometry,cells,vcluster,absId,iSupMod,ieta,iphi,shared);
4372 eSeed = cells->GetCellAmplitude(absId);
4373 tCell = cells->GetCellTime(absId);
4374 eCross = recoUtils->GetECross(absId,tCell,cells,event->GetBunchCrossNumber());
4375 FCross = 1 - eCross/eSeed;
4377 // Obtain Delta t of Cluster
4380 for (k=0;k<vcluster->GetNCells();k++)
4382 tempCellID=vcluster->GetCellAbsId(k);
4383 tempCellTime=cells->GetCellTime(tempCellID);
4384 if (tempCellTime>upTime)
4386 upTime=tempCellTime;
4388 if (tempCellTime<lowTime)
4390 lowTime=tempCellTime;
4393 valCluster[5] = FCross;
4394 valCluster[7] = tCell;
4395 valCluster[8] = upTime-lowTime;
4396 valCluster[9] = vcluster->GetNCells();
4398 fhClusterNEFInfo->Fill(valCluster);
4399 if (fSignalTrackBias==kTRUE)
4401 if (tempChargedHighPt>=signalCut && nef<=nefCut)
4403 fhClusterNEFSignalInfo->Fill(valCluster);
4408 if (myJet->Pt()>=signalCut && nef<=nefCut)
4410 fhClusterNEFSignalInfo->Fill(valCluster);
4419 iSupMod=-1,absId=-1,ieta=-1,iphi=-1;
4424 tempChargedHighPt=0.0;
4433 // Now do Cluster QA
4434 // Finally, Cluster QA
4435 for (i=0;i<clusterList->GetEntries();i++)
4437 AliVCluster *vcluster = (AliVCluster*) clusterList->At(i);
4438 fhClusterShapeAll->Fill(vcluster->GetNCells());
4439 fhClusterPtCellAll->Fill(vcluster->E(),vcluster->GetNCells());
4443 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillMiscJetStats(TClonesArray *jetList, Int_t *indexJetList, Int_t nIndexJetList, TClonesArray *trackList, TClonesArray *clusterList)
4447 for (i=0;i<nIndexJetList;i++)
4449 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
4451 fhJetPtArea->Fill(myJet->Pt(),myJet->Area());
4452 fhJetConstituentCounts->Fill(myJet->Pt(),myJet->GetNumberOfConstituents());
4453 fhJetTracksCounts->Fill(myJet->Pt(),myJet->GetNumberOfTracks());
4454 fhJetClustersCounts->Fill(myJet->Pt(),myJet->GetNumberOfClusters());
4455 for (j=0;j<myJet->GetNumberOfTracks();j++)
4457 AliVTrack *vtrack = (AliVTrack*) myJet->TrackAt(j,trackList);
4458 fhJetConstituentPt->Fill(myJet->Pt(),vtrack->Pt());
4459 fhJetTracksPt->Fill(myJet->Pt(),vtrack->Pt());
4461 for (j=0;j<myJet->GetNumberOfClusters();j++)
4463 AliVCluster *vcluster = (AliVCluster*) myJet->ClusterAt(j,clusterList);
4464 fhJetConstituentPt->Fill(myJet->Pt(),vcluster->E());
4465 fhJetClustersPt->Fill(myJet->Pt(),vcluster->E());
4470 TList* AliAnalysisTaskFullpAJets::AlipAJetHistos::GetOutputHistos()
4475 Double_t AliAnalysisTaskFullpAJets::AlipAJetHistos::GetRho()