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 "AliAnalysisTaskEmcal.h"
24 #include "AliAnalysisTaskEmcalJet.h"
25 #include "AliAnalysisManager.h"
27 #include "AliESDtrackCuts.h"
28 #include "AliESDEvent.h"
29 #include "AliESDInputHandler.h"
30 #include "AliAODEvent.h"
31 #include "AliVEvent.h"
32 #include "AliMCEvent.h"
33 #include "AliVTrack.h"
34 #include "AliVCluster.h"
35 #include "AliEmcalJet.h"
36 #include "AliEMCALGeometry.h"
37 #include "AliEMCALRecoUtils.h"
38 #include "AliVCaloCells.h"
39 #include "AliPicoTrack.h"
40 #include "AliAnalysisTaskEmcal.h"
41 #include "AliAnalysisTaskEmcalJet.h"
44 ClassImp(AliAnalysisTaskFullpAJets)
46 //________________________________________________________________________
47 AliAnalysisTaskFullpAJets::AliAnalysisTaskFullpAJets() :
48 AliAnalysisTaskEmcalJet(),
59 fhComplementaryTrackPt(0),
60 fhComplementaryTrackEta(0),
61 fhComplementaryTrackPhi(0),
68 fhChargeAndNeutralEvents(0),
69 fhChargeOnlyEvents(0),
70 fhNeutralOnlyEvents(0),
72 fhEMCalChargeAndNeutralEvents(0),
73 fhEMCalChargeOnlyEvents(0),
74 fhEMCalNeutralOnlyEvents(0),
75 fhEMCalNothingEvents(0),
80 fhGlobalTrackEtaPhi(0),
81 fhGlobalTrackPhiPt(0),
82 fhGlobalTrackEtaPt(0),
83 fhComplementaryTrackEtaPhi(0),
84 fhComplementaryTrackPhiPt(0),
85 fhComplementaryTrackEtaPt(0),
91 fhEMCalTrackEventMult(0),
97 fpClusterPtProfile(0),
99 fpFullJetEDProfile(0),
100 fpChargedJetEDProfile(0),
101 fpChargedJetEDProfileScaled(0),
105 fRhoChargedCMSScale(0),
119 fRhoChargedkTScale(0),
130 fEMCalPartJetUnbiased(0),
152 fEMCalPhiMin(1.39626),
153 fEMCalPhiMax(3.26377),
154 fEMCalPhiTotal(1.86750),
161 fTPCPhiTotal(6.28319),
167 fParticlePtUp(200.0),
168 fParticlePtBins(200),
174 fJetAreaCutFrac(0.6),
175 fJetAreaThreshold(0.30159),
181 fNEFSignalJetCut(0.9),
182 fCentralityTag("V0A"),
199 fEMCalJetThreshold(5),
211 fmyAKTChargedJets(0),
218 fEMCalRCBckgFlucSignal(0),
219 fTPCRCBckgFlucSignal(0),
220 fEMCalRCBckgFlucNColl(0),
221 fTPCRCBckgFlucNColl(0)
223 // Dummy constructor ALWAYS needed for I/O.
224 fVertex[0]=0.0,fVertex[1]=0.0,fVertex[2]=0.0;
227 //________________________________________________________________________
228 AliAnalysisTaskFullpAJets::AliAnalysisTaskFullpAJets(const char *name) :
229 AliAnalysisTaskEmcalJet(name),
240 fhComplementaryTrackPt(0),
241 fhComplementaryTrackEta(0),
242 fhComplementaryTrackPhi(0),
247 fhEMCalCellCounts(0),
249 fhChargeAndNeutralEvents(0),
250 fhChargeOnlyEvents(0),
251 fhNeutralOnlyEvents(0),
253 fhEMCalChargeAndNeutralEvents(0),
254 fhEMCalChargeOnlyEvents(0),
255 fhEMCalNeutralOnlyEvents(0),
256 fhEMCalNothingEvents(0),
261 fhGlobalTrackEtaPhi(0),
262 fhGlobalTrackPhiPt(0),
263 fhGlobalTrackEtaPt(0),
264 fhComplementaryTrackEtaPhi(0),
265 fhComplementaryTrackPhiPt(0),
266 fhComplementaryTrackEtaPt(0),
272 fhEMCalTrackEventMult(0),
278 fpClusterPtProfile(0),
280 fpFullJetEDProfile(0),
281 fpChargedJetEDProfile(0),
282 fpChargedJetEDProfileScaled(0),
286 fRhoChargedCMSScale(0),
300 fRhoChargedkTScale(0),
311 fEMCalPartJetUnbiased(0),
333 fEMCalPhiMin(1.39626),
334 fEMCalPhiMax(3.26377),
335 fEMCalPhiTotal(1.86750),
342 fTPCPhiTotal(6.28319),
348 fParticlePtUp(200.0),
349 fParticlePtBins(2000),
355 fJetAreaCutFrac(0.6),
356 fJetAreaThreshold(0.30159),
362 fNEFSignalJetCut(0.9),
363 fCentralityTag("V0A"),
380 fEMCalJetThreshold(5),
392 fmyAKTChargedJets(0),
399 fEMCalRCBckgFlucSignal(0),
400 fTPCRCBckgFlucSignal(0),
401 fEMCalRCBckgFlucNColl(0),
402 fTPCRCBckgFlucNColl(0)
405 // Define input and output slots here (never in the dummy constructor)
406 // Input slot #0 works with a TChain - it is connected to the default input container
407 // Output slot #1 writes into a TH1 container
408 fVertex[0]=0.0,fVertex[1]=0.0,fVertex[2]=0.0;
410 DefineOutput(1,TList::Class()); // for output list
413 //________________________________________________________________________
414 AliAnalysisTaskFullpAJets::~AliAnalysisTaskFullpAJets()
416 // Destructor. Clean-up the output list, but not the histograms that are put inside
417 // (the list is owner and will clean-up these histograms). Protect in PROOF case.
418 if (fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode())
424 //________________________________________________________________________
425 void AliAnalysisTaskFullpAJets::UserCreateOutputObjects()
428 // Called once (on the worker node)
429 fIsInitialized=kFALSE;
430 fOutput = new TList();
431 fOutput->SetOwner(); // IMPORTANT!
433 // Initialize Global Variables
438 // fRJET=4 -> fJetR=0.4 && fRJET=25 -> fJetR=0.25, but for writing files, should be 4 and 25 respectively
441 fJetR=(Double_t)fRJET/100.0;
445 fJetR=(Double_t)fRJET/10.0;
449 fEMCalPhiMin=(80/(double)360)*2*TMath::Pi();
450 fEMCalPhiMax=(187/(double)360)*2*TMath::Pi();
451 fEMCalPhiTotal= fEMCalPhiMax-fEMCalPhiMin;
454 fEMCalEtaTotal=fEMCalEtaMax-fEMCalEtaMin;
455 fEMCalArea=fEMCalPhiTotal*fEMCalEtaTotal;
457 fTPCPhiMin=(0/(double)360)*2*TMath::Pi();
458 fTPCPhiMax=(360/(double)360)*2*TMath::Pi();
459 fTPCPhiTotal= fTPCPhiMax-fTPCPhiMin;
462 fTPCEtaTotal=fTPCEtaMax-fTPCEtaMin;
463 fTPCArea=fTPCPhiTotal*fTPCEtaTotal;
467 fParticlePtBins=Int_t(fParticlePtUp-fParticlePtLow);
472 Int_t CentralityBinMult=10;
474 fJetAreaCutFrac =0.6; // Fudge factor for selecting on jets with threshold Area or higher
475 fJetAreaThreshold=fJetAreaCutFrac*TMath::Pi()*fJetR*fJetR;
476 fTPCJetThreshold=5.0; // Threshold required for an Anti-kT Charged jet to be considered a "true" jet in TPC
477 fEMCalJetThreshold=5.0; // Threshold required for an Anti-kT Charged+Neutral jet to be considered a "true" jet in EMCal
482 fEMCalRCBckgFluc = new Double_t[fnBckgClusters];
483 fTPCRCBckgFluc = new Double_t[fnBckgClusters];
484 fEMCalRCBckgFlucSignal = new Double_t[fnBckgClusters];
485 fTPCRCBckgFlucSignal = new Double_t[fnBckgClusters];
486 fEMCalRCBckgFlucNColl = new Double_t[fnBckgClusters];
487 fTPCRCBckgFlucNColl = new Double_t[fnBckgClusters];
488 for (Int_t i=0;i<fnBckgClusters;i++)
490 fEMCalRCBckgFluc[i]=0.0;
491 fTPCRCBckgFluc[i]=0.0;
492 fEMCalRCBckgFlucSignal[i]=0.0;
493 fTPCRCBckgFlucSignal[i]=0.0;
494 fEMCalRCBckgFlucNColl[i]=0.0;
495 fTPCRCBckgFlucNColl[i]=0.0;
498 fnEMCalCells=12288; // sMods 1-10 have 24x48 cells, sMods 11&12 have 8x48 cells...
508 flTrack = new TList();
509 flTrack->SetName("TrackQA");
512 fhTrackPt = new TH1F("fhTrackPt","p_{T} distribution of tracks in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
513 fhTrackPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
514 fhTrackPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
517 fhTrackPhi = new TH1F("fhTrackPhi","#varphi distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax);
518 fhTrackPhi->GetXaxis()->SetTitle("#varphi");
519 fhTrackPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
522 fhTrackEta = new TH1F("fhTrackEta","#eta distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax);
523 fhTrackEta->GetXaxis()->SetTitle("#eta");
524 fhTrackEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
527 fhTrackEtaPhi = new TH2F("fhTrackEtaPhi","#eta-#varphi distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
528 fhTrackEtaPhi->GetXaxis()->SetTitle("#eta");
529 fhTrackEtaPhi->GetYaxis()->SetTitle("#varphi");
530 fhTrackEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
531 fhTrackEtaPhi->Sumw2();
533 fhTrackPhiPt = new TH2F("fhTrackPhiPt","#varphi-p_{T} distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
534 fhTrackPhiPt->GetXaxis()->SetTitle("#varphi");
535 fhTrackPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
536 fhTrackPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
537 fhTrackPhiPt->Sumw2();
539 fhTrackEtaPt = new TH2F("fhTrackEtaPt","#eta-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
540 fhTrackEtaPt->GetXaxis()->SetTitle("#varphi");
541 fhTrackEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
542 fhTrackEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
543 fhTrackEtaPt->Sumw2();
546 fhGlobalTrackPt = new TH1F("fhGlobalTrackPt","Global p_{T} distribution of tracks in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
547 fhGlobalTrackPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
548 fhGlobalTrackPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
549 fhGlobalTrackPt->Sumw2();
551 fhGlobalTrackPhi = new TH1F("fhGlobalTrackPhi","Global #varphi distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax);
552 fhGlobalTrackPhi->GetXaxis()->SetTitle("#varphi");
553 fhGlobalTrackPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
554 fhGlobalTrackPhi->Sumw2();
556 fhGlobalTrackEta = new TH1F("fhGlobalTrackEta","Global #eta distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax);
557 fhGlobalTrackEta->GetXaxis()->SetTitle("#eta");
558 fhGlobalTrackEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
559 fhGlobalTrackEta->Sumw2();
561 fhGlobalTrackEtaPhi = new TH2F("fhGlobalTrackEtaPhi","Global #eta-#varphi distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
562 fhGlobalTrackEtaPhi->GetXaxis()->SetTitle("#eta");
563 fhGlobalTrackEtaPhi->GetYaxis()->SetTitle("#varphi");
564 fhGlobalTrackEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
565 fhGlobalTrackEtaPhi->Sumw2();
567 fhGlobalTrackPhiPt = new TH2F("fhGlobalTrackPhiPt","Global #varphi-p_{T} distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
568 fhGlobalTrackPhiPt->GetXaxis()->SetTitle("#varphi");
569 fhGlobalTrackPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
570 fhGlobalTrackPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
571 fhGlobalTrackPhiPt->Sumw2();
573 fhGlobalTrackEtaPt = new TH2F("fhGlobalTrackEtaPt","Global #eta-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
574 fhGlobalTrackEtaPt->GetXaxis()->SetTitle("#varphi");
575 fhGlobalTrackEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
576 fhGlobalTrackEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
577 fhGlobalTrackEtaPt->Sumw2();
579 // Complementary Tracks
580 fhComplementaryTrackPt = new TH1F("fhComplementaryTrackPt","Complementary p_{T} distribution of tracks in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
581 fhComplementaryTrackPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
582 fhComplementaryTrackPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
583 fhComplementaryTrackPt->Sumw2();
585 fhComplementaryTrackPhi = new TH1F("fhComplementaryTrackPhi","Complementary #varphi distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax);
586 fhComplementaryTrackPhi->GetXaxis()->SetTitle("#varphi");
587 fhComplementaryTrackPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
588 fhComplementaryTrackPhi->Sumw2();
590 fhComplementaryTrackEta = new TH1F("fhComplementaryTrackEta","Complementary #eta distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax);
591 fhComplementaryTrackEta->GetXaxis()->SetTitle("#eta");
592 fhComplementaryTrackEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
593 fhComplementaryTrackEta->Sumw2();
595 fhComplementaryTrackEtaPhi = new TH2F("fhComplementaryTrackEtaPhi","Complementary #eta-#varphi distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
596 fhComplementaryTrackEtaPhi->GetXaxis()->SetTitle("#eta");
597 fhComplementaryTrackEtaPhi->GetYaxis()->SetTitle("#varphi");
598 fhComplementaryTrackEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
599 fhComplementaryTrackEtaPhi->Sumw2();
601 fhComplementaryTrackPhiPt = new TH2F("fhComplementaryTrackPhiPt","Complementary #varphi-p_{T} distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
602 fhComplementaryTrackPhiPt->GetXaxis()->SetTitle("#varphi");
603 fhComplementaryTrackPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
604 fhComplementaryTrackPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
605 fhComplementaryTrackPhiPt->Sumw2();
607 fhComplementaryTrackEtaPt = new TH2F("fhComplementaryTrackEtaPt","Complementary #eta-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
608 fhComplementaryTrackEtaPt->GetXaxis()->SetTitle("#varphi");
609 fhComplementaryTrackEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
610 fhComplementaryTrackEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
611 fhComplementaryTrackEtaPt->Sumw2();
613 fhTPCEventMult = new TH2F("fhTPCEventMult","TPC Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp,multBins,multLow,multUp);
614 fhTPCEventMult->GetXaxis()->SetTitle(fCentralityTag.Data());
615 fhTPCEventMult->GetYaxis()->SetTitle("Multiplicity");
616 fhTPCEventMult->GetZaxis()->SetTitle("1/N_{Events} dN/dCentdN_{Charged}");
617 fhTPCEventMult->Sumw2();
619 fhEMCalTrackEventMult = new TH2F("fhEMCalTrackEventMult","EMCal Track Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp,multBins,multLow,multUp);
620 fhEMCalTrackEventMult->GetXaxis()->SetTitle(fCentralityTag.Data());
621 fhEMCalTrackEventMult->GetYaxis()->SetTitle("Multiplicity");
622 fhEMCalTrackEventMult->GetZaxis()->SetTitle("1/N_{Events} dN/dCentdN_{Neutral}");
623 fhEMCalTrackEventMult->Sumw2();
625 fpTPCEventMult = new TProfile("fpTPCEventMult","TPC Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp);
626 fpTPCEventMult->GetXaxis()->SetTitle(fCentralityTag.Data());
627 fpTPCEventMult->GetYaxis()->SetTitle("Multiplicity");
629 // QA::2D Energy Density Profiles for Tracks and Clusters
630 fpTrackPtProfile = new TProfile2D("fpTrackPtProfile","2D Profile of track pT density throughout the TPC",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
631 fpTrackPtProfile->GetXaxis()->SetTitle("#eta");
632 fpTrackPtProfile->GetYaxis()->SetTitle("#varphi");
633 fpTrackPtProfile->GetZaxis()->SetTitle("p_{T} density (GeV/Area)");
635 flTrack->Add(fhTrackPt);
636 flTrack->Add(fhTrackEta);
637 flTrack->Add(fhTrackPhi);
638 flTrack->Add(fhTrackEtaPhi);
639 flTrack->Add(fhTrackPhiPt);
640 flTrack->Add(fhTrackEtaPt);
641 flTrack->Add(fhGlobalTrackPt);
642 flTrack->Add(fhGlobalTrackEta);
643 flTrack->Add(fhGlobalTrackPhi);
644 flTrack->Add(fhGlobalTrackEtaPhi);
645 flTrack->Add(fhGlobalTrackPhiPt);
646 flTrack->Add(fhGlobalTrackEtaPt);
647 flTrack->Add(fhComplementaryTrackPt);
648 flTrack->Add(fhComplementaryTrackEta);
649 flTrack->Add(fhComplementaryTrackPhi);
650 flTrack->Add(fhComplementaryTrackEtaPhi);
651 flTrack->Add(fhComplementaryTrackPhiPt);
652 flTrack->Add(fhComplementaryTrackEtaPt);
653 flTrack->Add(fhTPCEventMult);
654 flTrack->Add(fhEMCalTrackEventMult);
655 flTrack->Add(fpTPCEventMult);
656 flTrack->Add(fpTrackPtProfile);
657 fOutput->Add(flTrack);
660 if (fClusterQA==kTRUE)
662 flCluster = new TList();
663 flCluster->SetName("ClusterQA");
665 fhClusterPt = new TH1F("fhClusterPt","p_{T} distribution of clusters in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
666 fhClusterPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
667 fhClusterPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
668 fhClusterPt->Sumw2();
670 fhClusterPhi = new TH1F("fhClusterPhi","#varphi distribution of clusters in event",TCBins,fTPCPhiMin,fTPCPhiMax);
671 fhClusterPhi->GetXaxis()->SetTitle("#varphi");
672 fhClusterPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
673 fhClusterPhi->Sumw2();
675 fhClusterEta = new TH1F("fhClusterEta","#eta distribution of clusters in event",TCBins,fTPCEtaMin,fTPCEtaMax);
676 fhClusterEta->GetXaxis()->SetTitle("#eta");
677 fhClusterEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
678 fhClusterEta->Sumw2();
680 fhClusterEtaPhi = new TH2F("fhClusterEtaPhi","#eta-#varphi distribution of clusters in event",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax);
681 fhClusterEtaPhi->GetXaxis()->SetTitle("#eta");
682 fhClusterEtaPhi->GetYaxis()->SetTitle("#varphi");
683 fhClusterEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
684 fhClusterEtaPhi->Sumw2();
686 fhClusterPhiPt = new TH2F("fhClusterPhiPt","#varphi-p_{T} distribution of clusters in event",TCBins,fEMCalPhiMin,fEMCalPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
687 fhClusterPhiPt->GetXaxis()->SetTitle("#varphi");
688 fhClusterPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
689 fhClusterPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
690 fhClusterPhiPt->Sumw2();
692 fhClusterEtaPt = new TH2F("fhClusterEtaPt","#eta-p_{T} distribution of clusters in event",TCBins,fEMCalEtaMin,fEMCalEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
693 fhClusterEtaPt->GetXaxis()->SetTitle("#varphi");
694 fhClusterEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
695 fhClusterEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
696 fhClusterEtaPt->Sumw2();
698 fhEMCalEventMult = new TH2F("fhEMCalEventMult","EMCal Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp,multBins,multLow,multUp);
699 fhEMCalEventMult->GetXaxis()->SetTitle(fCentralityTag.Data());
700 fhEMCalEventMult->GetYaxis()->SetTitle("Multiplicity");
701 fhEMCalEventMult->GetZaxis()->SetTitle("1/N_{Events} dN/dCentdN_{Neutral}");
702 fhEMCalEventMult->Sumw2();
704 fpEMCalEventMult = new TProfile("fpEMCalEventMult","EMCal Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp);
705 fpEMCalEventMult->GetXaxis()->SetTitle(fCentralityTag.Data());
706 fpEMCalEventMult->GetYaxis()->SetTitle("Multiplicity");
708 fpClusterPtProfile = new TProfile2D("fpClusterPtProfile","2D Profile of cluster pT density throughout the EMCal",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax);
709 fpClusterPtProfile->GetXaxis()->SetTitle("#eta");
710 fpClusterPtProfile->GetYaxis()->SetTitle("#varphi");
711 fpClusterPtProfile->GetZaxis()->SetTitle("p_{T} density (GeV/Area)");
713 fhEMCalCellCounts = new TH1F("fhEMCalCellCounts","Distribtuion of cluster counts across the EMCal",fnEMCalCells,1,fnEMCalCells);
714 fhEMCalCellCounts->GetXaxis()->SetTitle("Absoulute Cell Id");
715 fhEMCalCellCounts->GetYaxis()->SetTitle("Counts per Event");
716 fhEMCalCellCounts->Sumw2();
718 flCluster->Add(fhClusterPt);
719 flCluster->Add(fhClusterEta);
720 flCluster->Add(fhClusterPhi);
721 flCluster->Add(fhClusterEtaPhi);
722 flCluster->Add(fhClusterPhiPt);
723 flCluster->Add(fhClusterEtaPt);
724 flCluster->Add(fhEMCalEventMult);
725 flCluster->Add(fpEMCalEventMult);
726 flCluster->Add(fpClusterPtProfile);
727 flCluster->Add(fhEMCalCellCounts);
728 fOutput->Add(flCluster);
731 if (fCalculateRhoJet>=0 && fMCPartLevel==kFALSE) // Default Rho & Raw Jet Spectra
733 fEMCalRawJets = new AlipAJetHistos("EMCalRawJets",fCentralityTag.Data());
735 fRhoChargedCMSScale = new AlipAJetHistos("RhoChargedCMSScale",fCentralityTag.Data(),fDoNEF,fDoNEFSignalOnly,fDoTHnSparse);
736 fRhoChargedCMSScale->SetSignalTrackPtBias(fSignalTrackBias);
737 fOutput->Add(fEMCalRawJets->GetOutputHistos());
738 fOutput->Add(fRhoChargedCMSScale->GetOutputHistos());
741 if (fCalculateRhoJet>=1) // Basic Rho & Raw Jet Spectra
743 fRhoChargedScale = new AlipAJetHistos("RhoChargedScale",fCentralityTag.Data());
744 fRhoChargedScale->SetSignalTrackPtBias(fSignalTrackBias);
746 if (fMCPartLevel==kTRUE)
748 fTPCRawJets = new AlipAJetHistos("TPCRawJets",fCentralityTag.Data());
749 fRhoChargedCMS = new AlipAJetHistos("RhoChargedCMS",fCentralityTag.Data());
750 fRhoChargedCMS->SetSignalTrackPtBias(fSignalTrackBias);
752 fOutput->Add(fTPCRawJets->GetOutputHistos());
753 fOutput->Add(fRhoChargedCMS->GetOutputHistos());
756 if (fDoJetRhoDensity == kTRUE)
758 Double_t fullEDR = fFullEDJetR *100;
759 Double_t chargedEDR = fChargedEDJetR *100;
760 const Int_t fullEDBins = (Int_t) fullEDR;
761 const Int_t chargedEDBins = (Int_t) chargedEDR;
763 fpFullJetEDProfile = new TProfile3D("fpFullJetEDProfile","Jet ED Profile for #varphi_{jet}#in(#varphi_{EMCal min} + R,#varphi_{EMCal max} - R) & #eta_{jet}#in(#eta_{EMCal min} + R,#eta_{EMCal max} - R)",fParticlePtBins,fParticlePtLow,fParticlePtUp,fCentralityBins,fCentralityLow,fCentralityUp,fullEDBins,0,fFullEDJetR);
764 fpFullJetEDProfile->GetXaxis()->SetTitle("p_{T,jet}^{ch+em} (GeV)");
765 fpFullJetEDProfile->GetYaxis()->SetTitle(fCentralityTag.Data());
766 fpFullJetEDProfile->GetZaxis()->SetTitle("R");
768 fpChargedJetEDProfile = new TProfile3D("fpChargedJetEDProfile","Charged Jet ED Profile for #eta_{jet}#in(#eta_{TPC min} + R,#eta_{TPC max} - R)",fParticlePtBins,fParticlePtLow,fParticlePtUp,fCentralityBins,fCentralityLow,fCentralityUp,chargedEDBins,0,fChargedEDJetR);
769 fpChargedJetEDProfile->GetXaxis()->SetTitle("p_{T,jet}^{ch} (GeV)");
770 fpChargedJetEDProfile->GetYaxis()->SetTitle(fCentralityTag.Data());
771 fpChargedJetEDProfile->GetZaxis()->SetTitle("R");
773 fpChargedJetEDProfileScaled = new TProfile3D("fpChargedJetEDProfileScaled","Charged Jet ED Profile x SF for #eta_{jet}#in(#eta_{TPC min} + R,#eta_{TPC max} - R)",fParticlePtBins,fParticlePtLow,fParticlePtUp,fCentralityBins,fCentralityLow,fCentralityUp,chargedEDBins,0,fChargedEDJetR);
774 fpChargedJetEDProfileScaled->GetXaxis()->SetTitle("p_{T,jet}^{ch} (GeV)");
775 fpChargedJetEDProfileScaled->GetYaxis()->SetTitle(fCentralityTag.Data());
776 fpChargedJetEDProfileScaled->GetZaxis()->SetTitle("R");
778 fOutput->Add(fpFullJetEDProfile);
779 fOutput->Add(fpChargedJetEDProfile);
780 fOutput->Add(fpChargedJetEDProfileScaled);
782 fOutput->Add(fRhoChargedScale->GetOutputHistos());
784 if (fCalculateRhoJet>=2 && fMCPartLevel==kFALSE) // Charged Rho & Raw Jet Spectra
786 fTPCRawJets = new AlipAJetHistos("TPCRawJets",fCentralityTag.Data());
787 fRhoChargedCMS = new AlipAJetHistos("RhoChargedCMS",fCentralityTag.Data());
788 fRhoChargedCMS->SetSignalTrackPtBias(fSignalTrackBias);
790 fOutput->Add(fTPCRawJets->GetOutputHistos());
791 fOutput->Add(fRhoChargedCMS->GetOutputHistos());
793 if (fCalculateRhoJet>=3 && fMCPartLevel==kFALSE) // Basic Rho & Raw Jet Spectra
795 fRhoFull0 = new AlipAJetHistos("RhoFull0",fCentralityTag.Data());
796 fRhoFull0->SetSignalTrackPtBias(fSignalTrackBias);
797 fRhoFull1 = new AlipAJetHistos("RhoFull1",fCentralityTag.Data());
798 fRhoFull1->SetSignalTrackPtBias(fSignalTrackBias);
799 fRhoFull2 = new AlipAJetHistos("RhoFull2",fCentralityTag.Data());
800 fRhoFull2->SetSignalTrackPtBias(fSignalTrackBias);
801 fRhoFullN = new AlipAJetHistos("RhoFullN",fCentralityTag.Data());
802 fRhoFullN->SetSignalTrackPtBias(fSignalTrackBias);
803 fRhoFullDijet = new AlipAJetHistos("RhoFullDijet",fCentralityTag.Data());
804 fRhoFullDijet->SetSignalTrackPtBias(fSignalTrackBias);
805 fRhoFullkT = new AlipAJetHistos("RhoFullkT",fCentralityTag.Data());
806 fRhoFullkT->SetSignalTrackPtBias(fSignalTrackBias);
807 fRhoFullCMS = new AlipAJetHistos("RhoFullCMS",fCentralityTag.Data());
808 fRhoFullCMS->SetSignalTrackPtBias(fSignalTrackBias);
809 fRhoCharged0 = new AlipAJetHistos("RhoCharged0",fCentralityTag.Data());
810 fRhoCharged0->SetSignalTrackPtBias(fSignalTrackBias);
811 fRhoCharged1 = new AlipAJetHistos("RhoCharged1",fCentralityTag.Data());
812 fRhoCharged1->SetSignalTrackPtBias(fSignalTrackBias);
813 fRhoCharged2 = new AlipAJetHistos("RhoCharged2",fCentralityTag.Data());
814 fRhoCharged2->SetSignalTrackPtBias(fSignalTrackBias);
815 fRhoChargedN = new AlipAJetHistos("RhoChargedN",fCentralityTag.Data());
816 fRhoChargedN->SetSignalTrackPtBias(fSignalTrackBias);
817 fRhoChargedkT = new AlipAJetHistos("RhoChargedkT",fCentralityTag.Data());
818 fRhoChargedkT->SetSignalTrackPtBias(fSignalTrackBias);
819 fRhoChargedkTScale = new AlipAJetHistos("RhoChargedkTScale",fCentralityTag.Data());
820 fRhoChargedkTScale->SetSignalTrackPtBias(fSignalTrackBias);
822 fOutput->Add(fRhoFull0->GetOutputHistos());
823 fOutput->Add(fRhoFull1->GetOutputHistos());
824 fOutput->Add(fRhoFull2->GetOutputHistos());
825 fOutput->Add(fRhoFullN->GetOutputHistos());
826 fOutput->Add(fRhoFullDijet->GetOutputHistos());
827 fOutput->Add(fRhoFullkT->GetOutputHistos());
828 fOutput->Add(fRhoFullCMS->GetOutputHistos());
829 fOutput->Add(fRhoCharged0->GetOutputHistos());
830 fOutput->Add(fRhoCharged1->GetOutputHistos());
831 fOutput->Add(fRhoCharged2->GetOutputHistos());
832 fOutput->Add(fRhoChargedN->GetOutputHistos());
833 fOutput->Add(fRhoChargedkT->GetOutputHistos());
834 fOutput->Add(fRhoChargedkTScale->GetOutputHistos());
837 fhCentrality = new TH1F("fhCentrality","Event Centrality Distribution",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
838 fhCentrality->GetXaxis()->SetTitle(fCentralityTag.Data());
839 fhCentrality->GetYaxis()->SetTitle("1/N_{Events}");
840 fhCentrality->Sumw2();
842 fOutput->Add(fhCentrality);
844 if (fMCPartLevel == kFALSE)
846 fhChargeAndNeutralEvents = new TH1F("fhChargeAndNeutralEvents","Events with n_{tracks}>0 & n_{clusters}>0 vs Centrality",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
847 fhChargeAndNeutralEvents->GetXaxis()->SetTitle(fCentralityTag.Data());
848 fhChargeAndNeutralEvents->GetYaxis()->SetTitle("1/N_{Events}");
849 fhChargeAndNeutralEvents->Sumw2();
851 fhChargeOnlyEvents = new TH1F("fhChargeOnlyEvents","Events with n_{tracks}>0 & n_{clusters}=0 vs Centrality",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
852 fhChargeOnlyEvents->GetXaxis()->SetTitle(fCentralityTag.Data());
853 fhChargeOnlyEvents->GetYaxis()->SetTitle("1/N_{Events}");
854 fhChargeOnlyEvents->Sumw2();
856 fhNeutralOnlyEvents = new TH1F("fhNeutralOnlyEvents","Events with n_{tracks}=0 & n_{clusters}>0 vs Centrality",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
857 fhNeutralOnlyEvents->GetXaxis()->SetTitle(fCentralityTag.Data());
858 fhNeutralOnlyEvents->GetYaxis()->SetTitle("1/N_{Events}");
859 fhNeutralOnlyEvents->Sumw2();
861 fhNothingEvents = new TH1F("fhNothingEvents","Events with n_{tracks}=n_{clusters}=0 vs Centrality",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
862 fhNothingEvents->GetXaxis()->SetTitle(fCentralityTag.Data());
863 fhNothingEvents->GetYaxis()->SetTitle("1/N_{Events}");
864 fhNothingEvents->Sumw2();
866 fhEMCalChargeAndNeutralEvents = new TH1F("fhEMCalChargeAndNeutralEvents","Events with n_{emcal tracks}>0 & n_{clusters}>0 vs Centrality",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
867 fhEMCalChargeAndNeutralEvents->GetXaxis()->SetTitle(fCentralityTag.Data());
868 fhEMCalChargeAndNeutralEvents->GetYaxis()->SetTitle("1/N_{Events}");
869 fhEMCalChargeAndNeutralEvents->Sumw2();
871 fhEMCalChargeOnlyEvents = new TH1F("fhEMCalChargeOnlyEvents","Events with n_{emcal tracks}>0 & n_{clusters}=0 vs Centrality",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
872 fhEMCalChargeOnlyEvents->GetXaxis()->SetTitle(fCentralityTag.Data());
873 fhEMCalChargeOnlyEvents->GetYaxis()->SetTitle("1/N_{Events}");
874 fhEMCalChargeOnlyEvents->Sumw2();
876 fhEMCalNeutralOnlyEvents = new TH1F("fhEMCalNeutralOnlyEvents","Events with n_{tracks}>0 & n_{emcal tracks}=0 & n_{clusters}>0 vs Centrality",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
877 fhEMCalNeutralOnlyEvents->GetXaxis()->SetTitle(fCentralityTag.Data());
878 fhEMCalNeutralOnlyEvents->GetYaxis()->SetTitle("1/N_{Events}");
879 fhEMCalNeutralOnlyEvents->Sumw2();
881 fhEMCalNothingEvents = new TH1F("fhEMCalNothingEvents","Events with n_{emcal tracks}=n_{clusters}=0 vs Centrality",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
882 fhEMCalNothingEvents->GetXaxis()->SetTitle(fCentralityTag.Data());
883 fhEMCalNothingEvents->GetYaxis()->SetTitle("1/N_{Events}");
884 fhEMCalNothingEvents->Sumw2();
886 fOutput->Add(fhChargeAndNeutralEvents);
887 fOutput->Add(fhChargeOnlyEvents);
888 fOutput->Add(fhNeutralOnlyEvents);
889 fOutput->Add(fhNothingEvents);
890 fOutput->Add(fhEMCalChargeAndNeutralEvents);
891 fOutput->Add(fhEMCalChargeOnlyEvents);
892 fOutput->Add(fhEMCalNeutralOnlyEvents);
893 fOutput->Add(fhEMCalNothingEvents);
896 // Post data for ALL output slots >0 here,
897 // To get at least an empty histogram
898 // 1 is the outputnumber of a certain weg of task 1
899 PostData(1, fOutput);
902 void AliAnalysisTaskFullpAJets::UserExecOnce()
904 // Get the event tracks
905 fOrgTracks = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fTrackName));
907 // Get the event caloclusters
908 fOrgClusters = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fClusName));
911 fmyKTChargedJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fkTChargedName));
912 fmyAKTChargedJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fAkTChargedName));
915 fmyKTFullJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fkTFullName));
916 fmyAKTFullJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fAkTFullName));
918 fIsInitialized=kTRUE;
920 //________________________________________________________________________
921 void AliAnalysisTaskFullpAJets::UserExec(Option_t *)
923 if (fIsInitialized==kFALSE)
928 // Get pointer to reconstructed event
929 fEvent = InputEvent();
932 AliError("Pointer == 0, this can not happen!");
936 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(fEvent);
937 AliAODEvent* aod = dynamic_cast<AliAODEvent*>(fEvent);
939 fRecoUtil = new AliEMCALRecoUtils();
940 fEMCALGeometry = AliEMCALGeometry::GetInstance();
944 fEventCentrality=esd->GetCentrality()->GetCentralityPercentile(fCentralityTag.Data());
946 if (fDoVertexRCut == kTRUE)
948 // Vertex R cut not done in AliAnalysisTaskEmcal
949 if (TMath::Sqrt(TMath::Power(esd->GetPrimaryVertex()->GetX(),2)+TMath::Power(esd->GetPrimaryVertex()->GetY(),2))>fVertexMaxR)
956 esd->GetPrimaryVertex()->GetXYZ(fVertex);
957 fCells = (AliVCaloCells*) esd->GetEMCALCells();
958 fnCaloClusters = esd->GetNumberOfCaloClusters();
962 fEventCentrality=aod->GetCentrality()->GetCentralityPercentile(fCentralityTag.Data());
964 if (fDoVertexRCut == kTRUE)
966 // Vertex R cut not done in AliAnalysisTaskEmcal
967 if (TMath::Sqrt(TMath::Power(aod->GetPrimaryVertex()->GetX(),2)+TMath::Power(aod->GetPrimaryVertex()->GetY(),2))>fVertexMaxR)
974 aod->GetPrimaryVertex()->GetXYZ(fVertex);
975 fCells = (AliVCaloCells*) aod->GetEMCALCells();
976 fnCaloClusters = aod->GetNumberOfCaloClusters();
980 AliError("Cannot get AOD/ESD event. Rejecting Event");
985 // Make sure Centrality isn't exactly 100% (to avoid bin filling errors in profile plots. Make it 99.99
986 if (fEventCentrality>99.99)
988 fEventCentrality=99.99;
990 fhCentrality->Fill(fEventCentrality); // Counts total events
996 // Reject any event that doesn't have any tracks, i.e. TPC is off
1001 fhTPCEventMult->Fill(fEventCentrality,0.0);
1002 fpTPCEventMult->Fill(fEventCentrality,0.0);
1003 fhEMCalTrackEventMult->Fill(fEventCentrality,0.0);
1005 AliWarning("No PicoTracks, Rejecting Event");
1007 PostData(1,fOutput);
1013 AliInfo("No Corrected CaloClusters, using only charged jets");
1015 if (fTrackQA==kTRUE)
1020 GenerateTPCRandomConesPt();
1022 if (fClusterQA==kTRUE)
1024 fhEMCalEventMult->Fill(fEventCentrality,0.0);
1025 fpEMCalEventMult->Fill(fEventCentrality,0.0);
1029 if (fCalculateRhoJet>=1)
1031 if (fDoJetRhoDensity == kTRUE)
1033 ChargedJetEnergyDensityProfile();
1035 if (fMCPartLevel==kTRUE)
1037 EstimateChargedRhoCMS();
1040 if (fCalculateRhoJet>=2 && fMCPartLevel==kFALSE)
1042 EstimateChargedRhoCMS();
1044 if (fCalculateRhoJet>=3 && fMCPartLevel==kFALSE)
1046 EstimateChargedRho0();
1047 EstimateChargedRho1();
1048 EstimateChargedRho2();
1049 EstimateChargedRhoN();
1050 EstimateChargedRhokT();
1055 PostData(1,fOutput);
1059 if (fTrackQA==kTRUE)
1063 if (fClusterQA==kTRUE)
1070 GenerateTPCRandomConesPt();
1073 GenerateEMCalRandomConesPt();
1075 if (fCalculateRhoJet>=0)
1077 EstimateChargedRhoCMSScale();
1079 if (fCalculateRhoJet>=1)
1081 EstimateChargedRhoScale();
1082 if (fDoJetRhoDensity == kTRUE)
1084 ChargedJetEnergyDensityProfile();
1085 FullJetEnergyDensityProfile();
1088 if (fCalculateRhoJet>=2)
1090 EstimateChargedRhoCMS();
1092 if (fCalculateRhoJet>=3)
1094 EstimateChargedRho0();
1095 EstimateChargedRho1();
1096 EstimateChargedRho2();
1097 EstimateChargedRhoN();
1098 EstimateChargedRhokT();
1104 EstimateFullRhokT();
1105 EstimateFullRhoCMS();
1107 EstimateChargedRhokTScale();
1110 if (IsDiJetEvent()==kTRUE)
1112 EstimateFullRhoDijet();
1116 // Delete Dynamic Arrays
1119 PostData(1,fOutput);
1122 //________________________________________________________________________
1123 void AliAnalysisTaskFullpAJets::Terminate(Option_t *) //specify what you want to have done
1125 // Called once at the end of the query. Done nothing here.
1128 /////////////////////////////////////////////////////////////////////////////////////////
1129 ///////////////// User Defined Sub_Routines ///////////////////////////////////////
1130 /////////////////////////////////////////////////////////////////////////////////////////
1132 void AliAnalysisTaskFullpAJets::TrackCuts()
1134 // Fill a TObjArray with the tracks from a TClonesArray which grabs the picotracks.
1138 fmyTracks = new TObjArray();
1139 for (i=0;i<fOrgTracks->GetEntries();i++)
1141 AliVTrack* vtrack = (AliVTrack*) fOrgTracks->At(i);
1142 if (vtrack->Pt()>=fTrackMinPt)
1144 fmyTracks->Add(vtrack);
1145 if (IsInEMCal(vtrack->Phi(),vtrack->Eta()) == kTRUE)
1151 fnTracks = fmyTracks->GetEntries();
1155 void AliAnalysisTaskFullpAJets::ClusterCuts()
1157 // Fill a TObjArray with the clusters from a TClonesArray which grabs the caloclusterscorr.
1160 fmyClusters = new TObjArray();
1161 TLorentzVector *cluster_vec = new TLorentzVector;
1162 for (i=0;i<fOrgClusters->GetEntries();i++)
1164 AliVCluster* vcluster = (AliVCluster*) fOrgClusters->At(i);
1165 vcluster->GetMomentum(*cluster_vec,fVertex);
1167 if (cluster_vec->Pt()>=fClusterMinPt && vcluster->IsEMCAL()==kTRUE)
1169 fmyClusters->Add(vcluster);
1172 fnClusters = fmyClusters->GetEntries();
1176 void AliAnalysisTaskFullpAJets::EventCounts()
1179 if (fMCPartLevel == kTRUE)
1189 fhChargeAndNeutralEvents->Fill(fEventCentrality);
1193 fhChargeOnlyEvents->Fill(fEventCentrality);
1195 if (fnEMCalTracks>0)
1199 fhEMCalChargeAndNeutralEvents->Fill(fEventCentrality);
1203 fhEMCalChargeOnlyEvents->Fill(fEventCentrality);
1210 fhEMCalNeutralOnlyEvents->Fill(fEventCentrality);
1214 fhEMCalNothingEvents->Fill(fEventCentrality);
1222 fhNeutralOnlyEvents->Fill(fEventCentrality);
1226 fhNothingEvents->Fill(fEventCentrality);
1231 void AliAnalysisTaskFullpAJets::TrackHisto()
1233 // Fill track histograms: Phi,Eta,Pt
1236 TH2F *hdummypT= new TH2F("hdummypT","",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax); //!
1238 for (i=0;i<fnTracks;i++)
1240 AliPicoTrack* vtrack = (AliPicoTrack*) fmyTracks->At(i);
1241 fhTrackPt->Fill(vtrack->Pt());
1242 fhTrackEta->Fill(vtrack->Eta());
1243 fhTrackPhi->Fill(vtrack->Phi());
1244 fhTrackEtaPhi->Fill(vtrack->Eta(),vtrack->Phi());
1245 fhTrackPhiPt->Fill(vtrack->Phi(),vtrack->Pt());
1246 fhTrackEtaPt->Fill(vtrack->Eta(),vtrack->Pt());
1248 // Fill Associated Track Distributions for AOD QA Productions
1250 if (vtrack->GetTrackType()==0)
1252 fhGlobalTrackPt->Fill(vtrack->Pt());
1253 fhGlobalTrackEta->Fill(vtrack->Eta());
1254 fhGlobalTrackPhi->Fill(vtrack->Phi());
1255 fhGlobalTrackEtaPhi->Fill(vtrack->Eta(),vtrack->Phi());
1256 fhGlobalTrackPhiPt->Fill(vtrack->Phi(),vtrack->Pt());
1257 fhGlobalTrackEtaPt->Fill(vtrack->Eta(),vtrack->Pt());
1259 // Complementary Tracks
1260 else if (vtrack->GetTrackType()==1)
1262 fhComplementaryTrackPt->Fill(vtrack->Pt());
1263 fhComplementaryTrackEta->Fill(vtrack->Eta());
1264 fhComplementaryTrackPhi->Fill(vtrack->Phi());
1265 fhComplementaryTrackEtaPhi->Fill(vtrack->Eta(),vtrack->Phi());
1266 fhComplementaryTrackPhiPt->Fill(vtrack->Phi(),vtrack->Pt());
1267 fhComplementaryTrackEtaPt->Fill(vtrack->Eta(),vtrack->Pt());
1269 hdummypT->Fill(vtrack->Eta(),vtrack->Phi(),vtrack->Pt());
1271 for (i=1;i<=TCBins;i++)
1273 for (j=1;j<=TCBins;j++)
1275 fpTrackPtProfile->Fill(hdummypT->GetXaxis()->GetBinCenter(i),hdummypT->GetYaxis()->GetBinCenter(j),fTPCArea*TMath::Power(TCBins,-2)*hdummypT->GetBinContent(i,j));
1281 void AliAnalysisTaskFullpAJets::ClusterHisto()
1283 // Fill cluster histograms: Phi,Eta,Pt
1286 TH2F *hdummypT= new TH2F("hdummypT","",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax); //!
1288 TLorentzVector *cluster_vec = new TLorentzVector;
1290 for (i=0;i<fnClusters;i++)
1292 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
1293 vcluster->GetMomentum(*cluster_vec,fVertex);
1295 fhClusterPt->Fill(cluster_vec->Pt());
1296 fhClusterEta->Fill(cluster_vec->Eta());
1297 fhClusterPhi->Fill(cluster_vec->Phi());
1298 fhClusterEtaPhi->Fill(cluster_vec->Eta(),cluster_vec->Phi());
1299 fhClusterPhiPt->Fill(cluster_vec->Phi(),cluster_vec->Pt());
1300 fhClusterEtaPt->Fill(cluster_vec->Eta(),cluster_vec->Pt());
1301 hdummypT->Fill(cluster_vec->Eta(),cluster_vec->Phi(),cluster_vec->Pt());
1302 fEMCALGeometry->GetAbsCellIdFromEtaPhi(cluster_vec->Eta(),cluster_vec->Phi(),myCellID);
1303 fhEMCalCellCounts->Fill(myCellID);
1305 for (i=1;i<=TCBins;i++)
1307 for (j=1;j<=TCBins;j++)
1309 fpClusterPtProfile->Fill(hdummypT->GetXaxis()->GetBinCenter(i),hdummypT->GetYaxis()->GetBinCenter(j),fEMCalArea*TMath::Power(TCBins,-2)*hdummypT->GetBinContent(i,j));
1316 void AliAnalysisTaskFullpAJets::InitChargedJets()
1318 // Preliminary Jet Placement and Selection Cuts
1321 fnAKTChargedJets = fmyAKTChargedJets->GetEntries();
1322 fnKTChargedJets = fmyKTChargedJets->GetEntries();
1324 fTPCJet = new AlipAJetData("fTPCJet",kFALSE,fnAKTChargedJets);
1325 fTPCFullJet = new AlipAJetData("fTPCFullJet",kFALSE,fnAKTChargedJets);
1326 fTPCOnlyJet = new AlipAJetData("fTPCOnlyJet",kFALSE,fnAKTChargedJets);
1327 fTPCJetUnbiased = new AlipAJetData("fTPCJetUnbiased",kFALSE,fnAKTChargedJets);
1329 fTPCJet->SetSignalCut(fTPCJetThreshold);
1330 fTPCJet->SetAreaCutFraction(fJetAreaCutFrac);
1331 fTPCJet->SetJetR(fJetR);
1332 fTPCJet->SetSignalTrackPtBias(fSignalTrackBias);
1333 fTPCFullJet->SetSignalCut(fTPCJetThreshold);
1334 fTPCFullJet->SetAreaCutFraction(fJetAreaCutFrac);
1335 fTPCFullJet->SetJetR(fJetR);
1336 fTPCFullJet->SetSignalTrackPtBias(fSignalTrackBias);
1337 fTPCOnlyJet->SetSignalCut(fTPCJetThreshold);
1338 fTPCOnlyJet->SetAreaCutFraction(fJetAreaCutFrac);
1339 fTPCOnlyJet->SetJetR(fJetR);
1340 fTPCOnlyJet->SetSignalTrackPtBias(fSignalTrackBias);
1341 fTPCJetUnbiased->SetSignalCut(fTPCJetThreshold);
1342 fTPCJetUnbiased->SetAreaCutFraction(fJetAreaCutFrac);
1343 fTPCJetUnbiased->SetJetR(fJetR);
1344 fTPCJetUnbiased->SetSignalTrackPtBias(kFALSE);
1346 // Initialize Jet Data
1347 for (i=0;i<fnAKTChargedJets;i++)
1349 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(i);
1351 fTPCJet->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kFALSE),i);
1352 fTPCFullJet->SetIsJetInArray(IsInTPC(fJetRAccept,myJet->Phi(),myJet->Eta(),kTRUE),i);
1353 fTPCOnlyJet->SetIsJetInArray(IsInTPCFull(fJetR,myJet->Phi(),myJet->Eta()),i);
1354 fTPCJetUnbiased->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kFALSE),i);
1357 fTPCJet->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1358 fTPCFullJet->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1359 fTPCOnlyJet->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1360 fTPCJetUnbiased->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1363 fTPCkTFullJet = new AlipAJetData("fTPCkTFullJet",kFALSE,fnKTChargedJets);
1364 fTPCkTFullJet->SetSignalCut(fTPCJetThreshold);
1365 fTPCkTFullJet->SetAreaCutFraction(0.25*fJetAreaCutFrac);
1366 fTPCkTFullJet->SetJetR(fJetR);
1368 for (i=0;i<fnKTChargedJets;i++)
1370 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(i);
1371 fTPCkTFullJet->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kTRUE),i);
1373 fTPCkTFullJet->InitializeJetData(fmyKTChargedJets,fnKTChargedJets);
1375 // Raw Charged Jet Spectra
1376 if (fCalculateRhoJet>=2 || (fCalculateRhoJet>=1 && fMCPartLevel==kTRUE))
1378 fTPCRawJets->FillBSJS(fEventCentrality,0.0,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1382 void AliAnalysisTaskFullpAJets::InitFullJets()
1384 // Preliminary Jet Placement and Selection Cuts
1387 fnAKTFullJets = fmyAKTFullJets->GetEntries();
1388 fnKTFullJets = fmyKTFullJets->GetEntries();
1390 fEMCalJet = new AlipAJetData("fEMCalJet",kTRUE,fnAKTFullJets);
1391 fEMCalFullJet = new AlipAJetData("fEMCalFullJet",kTRUE,fnAKTFullJets);
1392 fEMCalPartJet = new AlipAJetData("fEMCalPartJet",kTRUE,fnAKTFullJets);
1393 fEMCalPartJetUnbiased = new AlipAJetData("fEMCalPartJetUnbiased",kTRUE,fnAKTFullJets);
1395 fEMCalJet->SetSignalCut(fEMCalJetThreshold);
1396 fEMCalJet->SetAreaCutFraction(fJetAreaCutFrac);
1397 fEMCalJet->SetJetR(fJetR);
1398 fEMCalJet->SetNEF(fNEFSignalJetCut);
1399 fEMCalJet->SetSignalTrackPtBias(fSignalTrackBias);
1400 fEMCalFullJet->SetSignalCut(fEMCalJetThreshold);
1401 fEMCalFullJet->SetAreaCutFraction(fJetAreaCutFrac);
1402 fEMCalFullJet->SetJetR(fJetR);
1403 fEMCalFullJet->SetNEF(fNEFSignalJetCut);
1404 fEMCalFullJet->SetSignalTrackPtBias(fSignalTrackBias);
1405 fEMCalPartJet->SetSignalCut(fEMCalJetThreshold);
1406 fEMCalPartJet->SetAreaCutFraction(fJetAreaCutFrac);
1407 fEMCalPartJet->SetJetR(fJetR);
1408 fEMCalPartJet->SetNEF(fNEFSignalJetCut);
1409 fEMCalPartJet->SetSignalTrackPtBias(fSignalTrackBias);
1410 fEMCalPartJetUnbiased->SetSignalCut(fEMCalJetThreshold);
1411 fEMCalPartJetUnbiased->SetAreaCutFraction(fJetAreaCutFrac);
1412 fEMCalPartJetUnbiased->SetJetR(fJetR);
1413 fEMCalPartJetUnbiased->SetNEF(1.0);
1414 fEMCalPartJetUnbiased->SetSignalTrackPtBias(kFALSE);
1416 // Initialize Jet Data
1417 for (i=0;i<fnAKTFullJets;i++)
1419 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(i);
1421 fEMCalJet->SetIsJetInArray(IsInEMCal(myJet->Phi(),myJet->Eta()),i);
1422 fEMCalFullJet->SetIsJetInArray(IsInEMCalFull(fJetRAccept,myJet->Phi(),myJet->Eta()),i);
1423 fEMCalPartJet->SetIsJetInArray(IsInEMCalPart(fJetR,myJet->Phi(),myJet->Eta()),i);
1424 fEMCalPartJetUnbiased->SetIsJetInArray(IsInEMCalPart(fJetR,myJet->Phi(),myJet->Eta()),i);
1426 fEMCalJet->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1427 fEMCalFullJet->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1428 fEMCalPartJet->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1429 fEMCalPartJetUnbiased->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1432 fEMCalkTFullJet = new AlipAJetData("fEMCalkTFullJet",kTRUE,fnKTFullJets);
1433 fEMCalkTFullJet->SetSignalCut(fEMCalJetThreshold);
1434 fEMCalkTFullJet->SetAreaCutFraction(0.25*fJetAreaCutFrac);
1435 fEMCalkTFullJet->SetJetR(fJetR);
1436 fEMCalkTFullJet->SetNEF(fNEFSignalJetCut);
1437 fEMCalkTFullJet->SetSignalTrackPtBias(fSignalTrackBias);
1439 for (i=0;i<fnKTFullJets;i++)
1441 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(i);
1442 fEMCalkTFullJet->SetIsJetInArray(IsInEMCalFull(fJetR,myJet->Phi(),myJet->Eta()),i);
1444 fEMCalkTFullJet->InitializeJetData(fmyKTFullJets,fnKTFullJets);
1446 // Raw Full Jet Spectra
1447 if (fMCPartLevel==kFALSE)
1449 fEMCalRawJets->FillBSJS(fEventCentrality,0.0,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
1453 void AliAnalysisTaskFullpAJets::GenerateTPCRandomConesPt()
1456 Double_t E_tracks_total=0.;
1457 TRandom3 u(time(NULL));
1459 Double_t Eta_Center=0.5*(fTPCEtaMin+fTPCEtaMax);
1460 Double_t Phi_Center=0.5*(fTPCPhiMin+fTPCPhiMax);
1462 Int_t event_track_mult=0;
1465 for (i=0;i<fnBckgClusters;i++)
1467 fTPCRCBckgFluc[i]=0.0;
1468 fTPCRCBckgFlucSignal[i]=0.0;
1469 fTPCRCBckgFlucNColl[i]=0.0;
1472 TLorentzVector *dummy= new TLorentzVector;
1473 TLorentzVector *temp_jet= new TLorentzVector;
1474 TLorentzVector *track_vec = new TLorentzVector;
1476 // First, consider the RC with no spatial restrictions
1477 for (j=0;j<fnBckgClusters;j++)
1481 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1482 // Loop over all tracks
1483 for (i=0;i<fnTracks;i++)
1485 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1486 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1488 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1489 if (dummy->DeltaR(*track_vec)<fJetR)
1491 E_tracks_total+=vtrack->Pt();
1495 fTPCRCBckgFlucSignal[j]=E_tracks_total;
1498 // Now, consider the RC where the vertex of RC is at least 2R away from the leading signal
1500 if (fTPCJetUnbiased->GetLeadingPt()<0.0)
1502 temp_jet->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1506 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetLeadingIndex());
1507 myJet->GetMom(*temp_jet);
1510 for (j=0;j<fnBckgClusters;j++)
1517 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1518 while (temp_jet->DeltaR(*dummy)<fJetR)
1520 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1522 // Loop over all tracks
1523 for (i=0;i<fnTracks;i++)
1525 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1526 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE) == kTRUE)
1529 if (IsInEMCal(vtrack->Phi(),vtrack->Eta()) == kTRUE)
1533 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1534 if (dummy->DeltaR(*track_vec)<fJetR)
1537 E_tracks_total+=vtrack->Pt();
1541 fTPCRCBckgFluc[j]=E_tracks_total;
1543 if (fTrackQA==kTRUE)
1545 fhTPCEventMult->Fill(fEventCentrality,event_mult);
1546 fpTPCEventMult->Fill(fEventCentrality,event_mult);
1547 fhEMCalTrackEventMult->Fill(fEventCentrality,event_track_mult);
1549 if (fCalculateRhoJet>=2 || (fCalculateRhoJet>=1 && fMCPartLevel==kTRUE))
1551 fTPCRawJets->FillDeltaPt(fEventCentrality,0.0,fJetR,fTPCRCBckgFluc,1);
1554 // For the case of partial exclusion, merely allow a superposition of full and no exclusion with probability p=1/Ncoll
1555 Double_t exclusion_prob;
1556 for (j=0;j<fnBckgClusters;j++)
1558 exclusion_prob = u.Uniform(0,1);
1559 if (exclusion_prob<(1/fNColl))
1561 fTPCRCBckgFlucNColl[j]=fTPCRCBckgFlucSignal[j];
1565 fTPCRCBckgFlucNColl[j]=fTPCRCBckgFluc[j];
1574 void AliAnalysisTaskFullpAJets::GenerateEMCalRandomConesPt()
1577 Double_t E_tracks_total=0.;
1578 Double_t E_caloclusters_total=0.;
1579 TRandom3 u(time(NULL));
1581 Double_t Eta_Center=0.5*(fEMCalEtaMin+fEMCalEtaMax);
1582 Double_t Phi_Center=0.5*(fEMCalPhiMin+fEMCalPhiMax);
1586 for (i=0;i<fnBckgClusters;i++)
1588 fEMCalRCBckgFluc[i]=0.0;
1589 fEMCalRCBckgFlucSignal[i]=0.0;
1590 fEMCalRCBckgFlucNColl[i]=0.0;
1593 TLorentzVector *dummy= new TLorentzVector;
1594 TLorentzVector *temp_jet= new TLorentzVector;
1595 TLorentzVector *track_vec = new TLorentzVector;
1596 TLorentzVector *cluster_vec = new TLorentzVector;
1598 // First, consider the RC with no spatial restrictions
1599 for (j=0;j<fnBckgClusters;j++)
1602 E_caloclusters_total=0.;
1604 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1605 // Loop over all tracks
1606 for (i=0;i<fnTracks;i++)
1608 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1609 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
1611 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1612 if (dummy->DeltaR(*track_vec)<fJetR)
1614 E_tracks_total+=vtrack->Pt();
1619 // Loop over all caloclusters
1620 for (i=0;i<fnClusters;i++)
1622 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
1623 vcluster->GetMomentum(*cluster_vec,fVertex);
1624 if (dummy->DeltaR(*cluster_vec)<fJetR)
1627 E_caloclusters_total+=cluster_vec->Pt();
1630 fEMCalRCBckgFlucSignal[j]=E_tracks_total+E_caloclusters_total;
1633 // Now, consider the RC where the vertex of RC is at least 2R away from the leading signal
1635 E_caloclusters_total=0.;
1636 if (fEMCalPartJetUnbiased->GetLeadingPt()<0.0)
1638 temp_jet->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1642 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
1643 myJet->GetMom(*temp_jet);
1646 for (j=0;j<fnBckgClusters;j++)
1651 E_caloclusters_total=0.;
1653 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1654 while (temp_jet->DeltaR(*dummy)<fJetR)
1656 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1658 // Loop over all tracks
1659 for (i=0;i<fnTracks;i++)
1661 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1662 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
1665 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1666 if (dummy->DeltaR(*track_vec)<fJetR)
1669 E_tracks_total+=vtrack->Pt();
1674 // Loop over all caloclusters
1675 for (i=0;i<fnClusters;i++)
1677 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
1678 vcluster->GetMomentum(*cluster_vec,fVertex);
1680 if (dummy->DeltaR(*cluster_vec)<fJetR)
1683 E_caloclusters_total+=cluster_vec->Pt();
1686 fEMCalRCBckgFluc[j]=E_tracks_total+E_caloclusters_total;
1688 if (fClusterQA==kTRUE)
1690 fhEMCalEventMult->Fill(fEventCentrality,event_mult);
1691 fpEMCalEventMult->Fill(fEventCentrality,event_mult);
1693 fEMCalRawJets->FillDeltaPt(fEventCentrality,0.0,fJetR,fEMCalRCBckgFluc,1);
1695 // For the case of partial exclusion, merely allow a superposition of full and no exclusion with probability p=1/Ncoll
1696 Double_t exclusion_prob;
1697 for (j=0;j<fnBckgClusters;j++)
1699 exclusion_prob = u.Uniform(0,1);
1700 if (exclusion_prob<(1/fNColl))
1702 fEMCalRCBckgFlucNColl[j]=fEMCalRCBckgFlucSignal[j];
1706 fEMCalRCBckgFlucNColl[j]=fEMCalRCBckgFluc[j];
1717 void AliAnalysisTaskFullpAJets::EstimateChargedRho0()
1720 Double_t E_tracks_total=0.0;
1721 Double_t TPC_rho=0.0;
1723 // Loop over all tracks
1724 for (i=0;i<fnTracks;i++)
1726 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1727 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1729 E_tracks_total+=vtrack->Pt();
1733 // Calculate the mean Background density
1734 TPC_rho=E_tracks_total/fTPCArea;
1736 fRhoCharged = TPC_rho;
1739 fRhoCharged0->FillRho(fEventCentrality,TPC_rho);
1740 fRhoCharged0->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCJet->GetJets(),fTPCJet->GetTotalJets());
1741 fRhoCharged0->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1742 fRhoCharged0->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1743 fRhoCharged0->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1744 fRhoCharged0->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1745 fRhoCharged0->FillLeadingJetPtRho(fTPCJet->GetLeadingPt(),TPC_rho);
1749 void AliAnalysisTaskFullpAJets::EstimateChargedRho1()
1752 Double_t E_tracks_total=0.0;
1753 Double_t TPC_rho=0.;
1755 TLorentzVector *temp_jet= new TLorentzVector;
1756 TLorentzVector *track_vec = new TLorentzVector;
1758 if (fTPCJetUnbiased->GetLeadingPt()>=fTPCJetThreshold)
1760 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1761 myJet->GetMom(*temp_jet);
1763 // Loop over all tracks
1764 for (i=0;i<fnTracks;i++)
1766 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1767 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1769 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1770 if (temp_jet->DeltaR(*track_vec)>fJetRForRho)
1772 E_tracks_total+=vtrack->Pt();
1777 // Calculate the mean Background density
1778 TPC_rho=E_tracks_total/(fTPCArea-AreaWithinTPC(fJetR,myJet->Eta()));
1780 else // i.e. No signal jets -> same as total background density
1782 // Loop over all tracks
1783 for (i=0;i<fnTracks;i++)
1785 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1786 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1788 E_tracks_total+=vtrack->Pt();
1791 // Calculate the mean Background density
1792 TPC_rho=E_tracks_total/fTPCArea;
1798 fRhoCharged1->FillRho(fEventCentrality,TPC_rho);
1799 fRhoCharged1->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1800 fRhoCharged1->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1801 fRhoCharged1->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1802 fRhoCharged1->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1803 fRhoCharged1->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1804 fRhoCharged1->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),TPC_rho);
1807 void AliAnalysisTaskFullpAJets::EstimateChargedRho2()
1810 Double_t E_tracks_total=0.0;
1811 Double_t TPC_rho=0.;
1813 TLorentzVector *temp_jet1= new TLorentzVector;
1814 TLorentzVector *temp_jet2= new TLorentzVector;
1815 TLorentzVector *track_vec = new TLorentzVector;
1817 if ((fTPCJetUnbiased->GetLeadingPt()>=fTPCJetThreshold) && (fTPCJetUnbiased->GetSubLeadingPt()>=fTPCJetThreshold))
1819 AliEmcalJet *myhJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1820 myhJet->GetMom(*temp_jet1);
1822 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetSubLeadingIndex());
1823 myJet->GetMom(*temp_jet2);
1825 // Loop over all tracks
1826 for (i=0;i<fnTracks;i++)
1828 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1829 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1831 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1832 if ((temp_jet1->DeltaR(*track_vec)>fJetRForRho) && (temp_jet2->DeltaR(*track_vec)>fJetRForRho))
1834 E_tracks_total+=vtrack->Pt();
1839 // Calculate the mean Background density
1840 TPC_rho=E_tracks_total/(fTPCArea-AreaWithinTPC(fJetR,myhJet->Eta())-AreaWithinTPC(fJetR,myJet->Eta()));
1842 else if (fTPCJetUnbiased->GetLeadingPt()>=fTPCJetThreshold)
1844 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1845 myJet->GetMom(*temp_jet1);
1847 // Loop over all tracks
1848 for (i=0;i<fnTracks;i++)
1850 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1851 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1853 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1854 if (temp_jet1->DeltaR(*track_vec)>fJetRForRho)
1856 E_tracks_total+=vtrack->Pt();
1861 // Calculate the mean Background density
1862 TPC_rho=E_tracks_total/(fTPCArea-AreaWithinTPC(fJetR,myJet->Eta()));
1864 else // i.e. No signal jets -> same as total background density
1866 // Loop over all tracks
1867 for (i=0;i<fnTracks;i++)
1869 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1870 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1872 E_tracks_total+=vtrack->Pt();
1876 // Calculate the mean Background density
1877 TPC_rho=E_tracks_total/fTPCArea;
1884 fRhoCharged2->FillRho(fEventCentrality,TPC_rho);
1885 fRhoCharged2->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1886 fRhoCharged2->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1887 fRhoCharged2->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1888 fRhoCharged2->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1889 fRhoCharged2->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1890 fRhoCharged2->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),TPC_rho);
1893 void AliAnalysisTaskFullpAJets::EstimateChargedRhoN()
1896 Bool_t track_away_from_jet;
1897 Double_t E_tracks_total=0.0;
1898 Double_t TPC_rho=0.0;
1899 Double_t jet_area_total=0.0;
1901 TLorentzVector *jet_vec= new TLorentzVector;
1902 TLorentzVector *track_vec = new TLorentzVector;
1904 // First, sum all tracks within the EMCal that are away from jet(s) above Pt Threshold
1905 for (i=0;i<fnTracks;i++)
1907 // First, check if track is in the EMCal!!
1908 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(i);
1909 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1911 if (fTPCJetUnbiased->GetTotalSignalJets()<1)
1913 E_tracks_total+=vtrack->Pt();
1917 track_away_from_jet=kTRUE;
1919 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1920 while (track_away_from_jet==kTRUE && j<fTPCJetUnbiased->GetTotalSignalJets())
1922 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(j));
1923 myJet->GetMom(*jet_vec);
1924 if (track_vec->DeltaR(*jet_vec)<=fJetRForRho)
1926 track_away_from_jet=kFALSE;
1930 if (track_away_from_jet==kTRUE)
1932 E_tracks_total+=vtrack->Pt();
1938 // Determine area of all Jets that are within the EMCal
1939 if (fTPCJetUnbiased->GetTotalSignalJets()==0)
1945 for (i=0;i<fTPCJetUnbiased->GetTotalSignalJets();i++)
1947 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(i));
1948 jet_area_total+=AreaWithinTPC(fJetR,myJet->Eta());
1955 TPC_rho = E_tracks_total/(fTPCArea-jet_area_total);
1958 fRhoChargedN->FillRho(fEventCentrality,TPC_rho);
1959 fRhoChargedN->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1960 fRhoChargedN->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1961 fRhoChargedN->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1962 fRhoChargedN->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1963 fRhoChargedN->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1964 fRhoChargedN->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),TPC_rho);
1968 void AliAnalysisTaskFullpAJets::EstimateChargedRhoScale()
1971 Bool_t track_away_from_jet;
1972 Double_t E_tracks_total=0.0;
1973 Double_t TPC_rho=0.0;
1974 Double_t jet_area_total=0.0;
1976 TLorentzVector *jet_vec= new TLorentzVector;
1977 TLorentzVector *track_vec = new TLorentzVector;
1979 // First, sum all tracks within the EMCal that are away from jet(s) above Pt Threshold
1980 for (i=0;i<fnTracks;i++)
1982 // First, check if track is in the EMCal!!
1983 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(i);
1984 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1986 if (fTPCJetUnbiased->GetTotalSignalJets()<1)
1988 E_tracks_total+=vtrack->Pt();
1992 track_away_from_jet=kTRUE;
1994 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1995 while (track_away_from_jet==kTRUE && j<fTPCJetUnbiased->GetTotalSignalJets())
1997 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(j));
1998 myJet->GetMom(*jet_vec);
1999 if (track_vec->DeltaR(*jet_vec)<=fJetRForRho)
2001 track_away_from_jet=kFALSE;
2005 if (track_away_from_jet==kTRUE)
2007 E_tracks_total+=vtrack->Pt();
2013 // Determine area of all Jets that are within the TPC
2014 if (fTPCJetUnbiased->GetTotalSignalJets()==0)
2020 for (i=0;i<fTPCJetUnbiased->GetTotalSignalJets();i++)
2022 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(i));
2023 jet_area_total+=AreaWithinTPC(fJetR,myJet->Eta());
2030 TPC_rho = E_tracks_total/(fTPCArea-jet_area_total);
2031 TPC_rho*=fScaleFactor;
2034 fRhoChargedScale->FillRho(fEventCentrality,TPC_rho);
2035 fRhoChargedScale->FillBSJS(fEventCentrality,TPC_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2036 fRhoChargedScale->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFluc,1);
2037 fRhoChargedScale->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2038 fRhoChargedScale->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2039 fRhoChargedScale->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
2040 fRhoChargedScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),TPC_rho);
2041 fRhoChargedScale->FillMiscJetStats(fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fOrgTracks,fOrgClusters,fVertex);
2044 void AliAnalysisTaskFullpAJets::EstimateChargedRhokT()
2047 Double_t kTRho = 0.0;
2048 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2049 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2051 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2053 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2054 pTArray[i]=myJet->Pt();
2055 RhoArray[i]=myJet->Pt()/myJet->Area();
2058 if (fTPCkTFullJet->GetTotalJets()>=2)
2060 kTRho=MedianRhokT(pTArray,RhoArray,fTPCkTFullJet->GetTotalJets());
2062 fRhoChargedkT->FillRho(fEventCentrality,kTRho);
2063 fRhoChargedkT->FillBSJS(fEventCentrality,kTRho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
2064 fRhoChargedkT->FillDeltaPt(fEventCentrality,kTRho,fJetR,fTPCRCBckgFluc,1);
2065 fRhoChargedkT->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucSignal,1);
2066 fRhoChargedkT->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucNColl,1);
2067 fRhoChargedkT->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2068 fRhoChargedkT->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),kTRho);
2074 void AliAnalysisTaskFullpAJets::EstimateChargedRhokTScale()
2077 Double_t kTRho = 0.0;
2078 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2079 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2081 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2083 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2084 pTArray[i]=myJet->Pt();
2085 RhoArray[i]=myJet->Pt()/myJet->Area();
2088 if (fTPCkTFullJet->GetTotalJets()>=2)
2090 kTRho=MedianRhokT(pTArray,RhoArray,fTPCkTFullJet->GetTotalJets());
2091 kTRho*=fScaleFactor;
2093 fRhoChargedkTScale->FillRho(fEventCentrality,kTRho);
2094 fRhoChargedkTScale->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2095 fRhoChargedkTScale->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2096 fRhoChargedkTScale->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
2097 fRhoChargedkTScale->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
2098 fRhoChargedkTScale->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2099 fRhoChargedkTScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2105 void AliAnalysisTaskFullpAJets::EstimateChargedRhoCMS()
2108 Double_t kTRho = 0.0;
2109 Double_t CMSTotalkTArea = 0.0;
2110 Double_t CMSTrackArea = 0.0;
2111 Double_t CMSCorrectionFactor = 1.0;
2112 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2113 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2116 if ((fTPCJet->GetLeadingPt()>=fTPCJetThreshold) && (fTPCJet->GetSubLeadingPt()>=fTPCJetThreshold))
2118 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
2119 AliEmcalJet *myJet2 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetSubLeadingIndex());
2121 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2123 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2125 CMSTotalkTArea+=myJet->Area();
2126 if (myJet->GetNumberOfTracks()>0)
2128 CMSTrackArea+=myJet->Area();
2130 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE && IsJetOverlap(myJet,myJet2,kFALSE)==kFALSE)
2132 pTArray[k]=myJet->Pt();
2133 RhoArray[k]=myJet->Pt()/myJet->Area();
2139 kTRho=MedianRhokT(pTArray,RhoArray,k);
2146 else if (fTPCJet->GetLeadingPt()>=fTPCJetThreshold)
2148 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
2150 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2152 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2154 CMSTotalkTArea+=myJet->Area();
2155 if (myJet->GetNumberOfTracks()>0)
2157 CMSTrackArea+=myJet->Area();
2159 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE)
2161 pTArray[k]=myJet->Pt();
2162 RhoArray[k]=myJet->Pt()/myJet->Area();
2168 kTRho=MedianRhokT(pTArray,RhoArray,k);
2177 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2179 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2181 CMSTotalkTArea+=myJet->Area();
2182 if (myJet->GetNumberOfTracks()>0)
2184 CMSTrackArea+=myJet->Area();
2186 pTArray[k]=myJet->Pt();
2187 RhoArray[k]=myJet->Pt()/myJet->Area();
2192 kTRho=MedianRhokT(pTArray,RhoArray,k);
2199 // Scale CMS Rho by Correction factor
2200 if (CMSTotalkTArea==0.0)
2202 CMSCorrectionFactor = 1.0;
2206 //CMSCorrectionFactor = CMSTrackArea/CMSTotalkTArea;
2207 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
2209 kTRho*=CMSCorrectionFactor;
2210 fRhoChargedCMS->FillRho(fEventCentrality,kTRho);
2211 fRhoChargedCMS->FillBSJS(fEventCentrality,kTRho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
2212 fRhoChargedCMS->FillDeltaPt(fEventCentrality,kTRho,fJetR,fTPCRCBckgFluc,1);
2213 fRhoChargedCMS->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucSignal,1);
2214 fRhoChargedCMS->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucNColl,1);
2215 fRhoChargedCMS->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2216 fRhoChargedCMS->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),kTRho);
2221 void AliAnalysisTaskFullpAJets::EstimateChargedRhoCMSScale()
2224 Double_t kTRho = 0.0;
2225 Double_t CMSTotalkTArea = 0.0;
2226 Double_t CMSTrackArea = 0.0;
2227 Double_t CMSCorrectionFactor = 1.0;
2228 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2229 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2232 if ((fTPCJet->GetLeadingPt()>=fTPCJetThreshold) && (fTPCJet->GetSubLeadingPt()>=fTPCJetThreshold))
2234 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
2235 AliEmcalJet *myJet2 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetSubLeadingIndex());
2237 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2239 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2241 CMSTotalkTArea+=myJet->Area();
2242 if (myJet->GetNumberOfTracks()>0)
2244 CMSTrackArea+=myJet->Area();
2246 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE && IsJetOverlap(myJet,myJet2,kFALSE)==kFALSE)
2248 pTArray[k]=myJet->Pt();
2249 RhoArray[k]=myJet->Pt()/myJet->Area();
2255 kTRho=MedianRhokT(pTArray,RhoArray,k);
2262 else if (fTPCJet->GetLeadingPt()>=fTPCJetThreshold)
2264 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
2266 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2268 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2270 CMSTotalkTArea+=myJet->Area();
2271 if (myJet->GetNumberOfTracks()>0)
2273 CMSTrackArea+=myJet->Area();
2275 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE)
2277 pTArray[k]=myJet->Pt();
2278 RhoArray[k]=myJet->Pt()/myJet->Area();
2284 kTRho=MedianRhokT(pTArray,RhoArray,k);
2293 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2295 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2297 CMSTotalkTArea+=myJet->Area();
2298 if (myJet->GetNumberOfTracks()>0)
2300 CMSTrackArea+=myJet->Area();
2302 pTArray[k]=myJet->Pt();
2303 RhoArray[k]=myJet->Pt()/myJet->Area();
2308 kTRho=MedianRhokT(pTArray,RhoArray,k);
2315 kTRho*=fScaleFactor;
2316 // Scale CMS Rho by Correction factor
2317 if (CMSTotalkTArea==0.0)
2319 CMSCorrectionFactor = 1.0;
2323 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
2325 kTRho*=CMSCorrectionFactor;
2327 fRhoChargedCMSScale->FillRho(fEventCentrality,kTRho);
2328 fRhoChargedCMSScale->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2329 fRhoChargedCMSScale->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2330 fRhoChargedCMSScale->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
2331 fRhoChargedCMSScale->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
2332 fRhoChargedCMSScale->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2333 fRhoChargedCMSScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2334 fRhoChargedCMSScale->DoNEFAnalysis(fNEFSignalJetCut,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fmyClusters,fOrgClusters,fEvent,fEMCALGeometry,fRecoUtil,fCells);
2335 fRhoChargedCMSScale->FillMiscJetStats(fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fOrgTracks,fOrgClusters,fVertex);
2336 fRhoChargedCMSScale->FillJetEventCentrality(fEMCalFullJet->GetLeadingPt(),fEvent);
2343 void AliAnalysisTaskFullpAJets::EstimateFullRho0()
2346 Double_t E_tracks_total=0.0;
2347 Double_t E_caloclusters_total=0.0;
2348 Double_t EMCal_rho=0.0;
2350 TLorentzVector *cluster_vec = new TLorentzVector;
2352 // Loop over all tracks
2353 for (i=0;i<fnTracks;i++)
2355 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2356 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2358 E_tracks_total+=vtrack->Pt();
2362 // Loop over all caloclusters
2363 for (i=0;i<fnClusters;i++)
2365 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2366 vcluster->GetMomentum(*cluster_vec,fVertex);
2367 E_caloclusters_total+=cluster_vec->Pt();
2371 // Calculate the mean Background density
2372 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2376 fRhoFull0->FillRho(fEventCentrality,EMCal_rho);
2377 fRhoFull0->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2378 fRhoFull0->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2379 fRhoFull0->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2380 fRhoFull0->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2381 fRhoFull0->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2382 fRhoFull0->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2385 void AliAnalysisTaskFullpAJets::EstimateFullRho1()
2388 Double_t E_tracks_total=0.0;
2389 Double_t E_caloclusters_total=0.0;
2390 Double_t EMCal_rho=0.0;
2392 TLorentzVector *temp_jet= new TLorentzVector;
2393 TLorentzVector *track_vec = new TLorentzVector;
2394 TLorentzVector *cluster_vec = new TLorentzVector;
2396 if (fEMCalPartJetUnbiased->GetLeadingPt()>=fEMCalJetThreshold)
2398 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
2399 myJet->GetMom(*temp_jet);
2401 // Loop over all tracks
2402 for (i=0;i<fnTracks;i++)
2404 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2405 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2407 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2408 if (temp_jet->DeltaR(*track_vec)>fJetRForRho)
2410 E_tracks_total+=vtrack->Pt();
2415 // Loop over all caloclusters
2416 for (i=0;i<fnClusters;i++)
2418 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2419 vcluster->GetMomentum(*cluster_vec,fVertex);
2420 if (temp_jet->DeltaR(*cluster_vec)>fJetRForRho)
2422 E_caloclusters_total+=cluster_vec->Pt();
2425 // Calculate the mean Background density
2426 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta()));
2428 else // i.e. No signal jets -> same as total background density
2430 // Loop over all tracks
2431 for (i=0;i<fnTracks;i++)
2433 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2434 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2436 E_tracks_total+=vtrack->Pt();
2440 // Loop over all caloclusters
2441 for (i=0;i<fnClusters;i++)
2443 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2444 vcluster->GetMomentum(*cluster_vec,fVertex);
2445 E_caloclusters_total+=cluster_vec->Pt();
2447 // Calculate the mean Background density
2448 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2455 fRhoFull1->FillRho(fEventCentrality,EMCal_rho);
2456 fRhoFull1->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2457 fRhoFull1->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2458 fRhoFull1->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2459 fRhoFull1->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2460 fRhoFull1->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2461 fRhoFull1->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2464 void AliAnalysisTaskFullpAJets::EstimateFullRho2()
2467 Double_t E_tracks_total=0.0;
2468 Double_t E_caloclusters_total=0.0;
2469 Double_t EMCal_rho=0.0;
2471 TLorentzVector *temp_jet1 = new TLorentzVector;
2472 TLorentzVector *temp_jet2 = new TLorentzVector;
2473 TLorentzVector *track_vec = new TLorentzVector;
2474 TLorentzVector *cluster_vec = new TLorentzVector;
2476 if ((fEMCalPartJetUnbiased->GetLeadingPt()>=fEMCalJetThreshold) && (fEMCalPartJetUnbiased->GetSubLeadingPt()>=fEMCalJetThreshold))
2478 AliEmcalJet *myhJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
2479 myhJet->GetMom(*temp_jet1);
2481 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSubLeadingIndex());
2482 myJet->GetMom(*temp_jet2);
2484 // Loop over all tracks
2485 for (i=0;i<fnTracks;i++)
2487 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2488 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2490 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2491 if ((temp_jet1->DeltaR(*track_vec)>fJetRForRho) && (temp_jet2->DeltaR(*track_vec)>fJetRForRho))
2493 E_tracks_total+=vtrack->Pt();
2498 // Loop over all caloclusters
2499 for (i=0;i<fnClusters;i++)
2501 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2502 vcluster->GetMomentum(*cluster_vec,fVertex);
2503 if ((temp_jet1->DeltaR(*cluster_vec)>fJetRForRho) && (temp_jet2->DeltaR(*cluster_vec)>fJetRForRho))
2505 E_caloclusters_total+=cluster_vec->Pt();
2509 // Calculate the mean Background density
2510 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-AreaWithinEMCal(fJetR,myhJet->Phi(),myhJet->Eta())-AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta()));
2512 else if (fEMCalPartJetUnbiased->GetLeadingPt()>=fEMCalJetThreshold)
2514 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
2515 myJet->GetMom(*temp_jet1);
2517 // Loop over all tracks
2518 for (i=0;i<fnTracks;i++)
2520 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2521 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2523 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2524 if (temp_jet1->DeltaR(*track_vec)>fJetRForRho)
2526 E_tracks_total+=vtrack->Pt();
2531 // Loop over all caloclusters
2532 for (i=0;i<fnClusters;i++)
2534 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2535 vcluster->GetMomentum(*cluster_vec,fVertex);
2536 if (temp_jet1->DeltaR(*cluster_vec)>fJetRForRho)
2538 E_caloclusters_total+=cluster_vec->Pt();
2541 // Calculate the mean Background density
2542 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta()));
2544 else // i.e. No signal jets -> same as total background density
2546 // Loop over all tracks
2547 for (i=0;i<fnTracks;i++)
2549 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2550 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2552 E_tracks_total+=vtrack->Pt();
2556 // Loop over all caloclusters
2557 for (i=0;i<fnClusters;i++)
2559 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2560 vcluster->GetMomentum(*cluster_vec,fVertex);
2561 E_caloclusters_total+=cluster_vec->Pt();
2563 // Calculate the mean Background density
2564 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2572 fRhoFull2->FillRho(fEventCentrality,EMCal_rho);
2573 fRhoFull2->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2574 fRhoFull2->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2575 fRhoFull2->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2576 fRhoFull2->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2577 fRhoFull2->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2578 fRhoFull2->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2581 void AliAnalysisTaskFullpAJets::EstimateFullRhoN()
2584 Bool_t track_away_from_jet;
2585 Bool_t cluster_away_from_jet;
2586 Double_t E_tracks_total=0.0;
2587 Double_t E_caloclusters_total=0.0;
2588 Double_t EMCal_rho=0.0;
2589 Double_t jet_area_total=0.0;
2591 TLorentzVector *jet_vec= new TLorentzVector;
2592 TLorentzVector *track_vec = new TLorentzVector;
2593 TLorentzVector *cluster_vec = new TLorentzVector;
2595 // First, sum all tracks within the EMCal that are away from jet(s) above Pt Threshold
2596 for (i=0;i<fnTracks;i++)
2598 // First, check if track is in the EMCal!!
2599 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(i);
2600 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2602 if (fEMCalPartJetUnbiased->GetTotalSignalJets()<1)
2604 E_tracks_total+=vtrack->Pt();
2608 track_away_from_jet=kTRUE;
2610 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2611 while (track_away_from_jet==kTRUE && j<fEMCalPartJetUnbiased->GetTotalSignalJets())
2613 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(j));
2614 myJet->GetMom(*jet_vec);
2615 if (track_vec->DeltaR(*jet_vec)<=fJetRForRho)
2617 track_away_from_jet=kFALSE;
2621 if (track_away_from_jet==kTRUE)
2623 E_tracks_total+=vtrack->Pt();
2629 // Next, sum all CaloClusters within the EMCal (obviously all clusters must be within EMCal!!) that are away from jet(s) above Pt Threshold
2630 for (i=0;i<fnClusters;i++)
2632 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2633 vcluster->GetMomentum(*cluster_vec,fVertex);
2634 if (fEMCalPartJet->GetTotalSignalJets()<1)
2636 E_caloclusters_total+=cluster_vec->Pt();
2640 cluster_away_from_jet=kTRUE;
2643 while (cluster_away_from_jet==kTRUE && j<fEMCalPartJetUnbiased->GetTotalSignalJets())
2645 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(j));
2646 myJet->GetMom(*jet_vec);
2647 if (cluster_vec->DeltaR(*jet_vec)<=fJetRForRho)
2649 cluster_away_from_jet=kFALSE;
2653 if (cluster_away_from_jet==kTRUE)
2655 E_caloclusters_total+=cluster_vec->Pt();
2660 // Determine area of all Jets that are within the EMCal
2661 if (fEMCalPartJet->GetTotalSignalJets()==0)
2667 for (i=0;i<fEMCalPartJetUnbiased->GetTotalSignalJets();i++)
2669 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(i));
2670 jet_area_total+=AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta());
2678 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-jet_area_total);
2681 fRhoFullN->FillRho(fEventCentrality,EMCal_rho);
2682 fRhoFullN->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2683 fRhoFullN->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2684 fRhoFullN->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2685 fRhoFullN->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2686 fRhoFullN->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2687 fRhoFullN->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2690 void AliAnalysisTaskFullpAJets::EstimateFullRhoDijet()
2693 Double_t E_tracks_total=0.0;
2694 Double_t E_caloclusters_total=0.0;
2695 Double_t EMCal_rho=0.0;
2697 TLorentzVector *cluster_vec = new TLorentzVector;
2699 // Loop over all tracks
2700 for (i=0;i<fnTracks;i++)
2702 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2703 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2705 E_tracks_total+=vtrack->Pt();
2709 // Loop over all caloclusters
2710 for (i=0;i<fnClusters;i++)
2712 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2713 vcluster->GetMomentum(*cluster_vec,fVertex);
2714 E_caloclusters_total+=cluster_vec->Pt();
2719 // Calculate the mean Background density
2720 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2723 fRhoFullDijet->FillRho(fEventCentrality,EMCal_rho);
2724 fRhoFullDijet->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2725 fRhoFullDijet->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2726 fRhoFullDijet->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2727 fRhoFullDijet->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2728 fRhoFullDijet->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2729 fRhoFullDijet->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2732 void AliAnalysisTaskFullpAJets::EstimateFullRhokT()
2735 Double_t kTRho = 0.0;
2736 Double_t *pTArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2737 Double_t *RhoArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2739 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2741 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2742 pTArray[i]=myJet->Pt();
2743 RhoArray[i]=myJet->Pt()/myJet->Area();
2746 if (fEMCalkTFullJet->GetTotalJets()>0)
2748 kTRho=MedianRhokT(pTArray,RhoArray,fEMCalkTFullJet->GetTotalJets());
2754 fRhoFullkT->FillRho(fEventCentrality,kTRho);
2755 fRhoFullkT->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2756 fRhoFullkT->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2757 fRhoFullkT->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
2758 fRhoFullkT->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
2759 fRhoFullkT->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2760 fRhoFullkT->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2765 void AliAnalysisTaskFullpAJets::EstimateFullRhoCMS()
2768 Double_t kTRho = 0.0;
2769 Double_t CMSTotalkTArea = 0.0;
2770 Double_t CMSParticleArea = 0.0;
2771 Double_t CMSCorrectionFactor = 1.0;
2772 Double_t *pTArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2773 Double_t *RhoArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2776 if ((fEMCalPartJet->GetLeadingPt()>=fEMCalJetThreshold) && (fEMCalPartJet->GetSubLeadingPt()>=fEMCalJetThreshold))
2778 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJet->GetLeadingIndex());
2779 AliEmcalJet *myJet2 =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJet->GetSubLeadingIndex());
2781 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2783 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2785 CMSTotalkTArea+=myJet->Area();
2786 if (myJet->GetNumberOfTracks()>0 || myJet->GetNumberOfClusters()>0)
2788 CMSParticleArea+=myJet->Area();
2790 if (IsJetOverlap(myJet,myJet1,kTRUE)==kFALSE && IsJetOverlap(myJet,myJet2,kFALSE)==kTRUE)
2792 pTArray[k]=myJet->Pt();
2793 RhoArray[k]=myJet->Pt()/myJet->Area();
2799 kTRho=MedianRhokT(pTArray,RhoArray,k);
2806 else if (fEMCalJet->GetLeadingPt()>=fEMCalJetThreshold)
2808 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalJet->GetLeadingIndex());
2810 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2812 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2814 CMSTotalkTArea+=myJet->Area();
2815 if (myJet->GetNumberOfTracks()>0 || myJet->GetNumberOfClusters()>0)
2817 CMSParticleArea+=myJet->Area();
2819 if (IsJetOverlap(myJet,myJet1,kTRUE)==kFALSE)
2821 pTArray[k]=myJet->Pt();
2822 RhoArray[k]=myJet->Pt()/myJet->Area();
2828 kTRho=MedianRhokT(pTArray,RhoArray,k);
2837 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2839 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2841 CMSTotalkTArea+=myJet->Area();
2842 if (myJet->GetNumberOfTracks()>0 || myJet->GetNumberOfClusters()>0)
2844 CMSParticleArea+=myJet->Area();
2846 pTArray[k]=myJet->Pt();
2847 RhoArray[k]=myJet->Pt()/myJet->Area();
2852 kTRho=MedianRhokT(pTArray,RhoArray,k);
2859 // Scale CMS Rho by Correction factor
2860 if (CMSTotalkTArea==0.0)
2862 CMSCorrectionFactor = 1.0;
2866 //CMSCorrectionFactor = CMSTrackArea/CMSTotalkTArea;
2867 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
2869 kTRho*=CMSCorrectionFactor;
2871 fRhoFullCMS->FillRho(fEventCentrality,kTRho);
2872 fRhoFullCMS->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2873 fRhoFullCMS->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2874 fRhoFullCMS->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
2875 fRhoFullCMS->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
2876 fRhoFullCMS->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2877 fRhoFullCMS->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2882 void AliAnalysisTaskFullpAJets::FullJetEnergyDensityProfile()
2887 Double_t fullEDR = fFullEDJetR*100;
2888 const Int_t fullEDBins = (Int_t) fullEDR;
2889 Double_t ED_pT[fullEDBins];
2890 dR = fFullEDJetR/Double_t(fullEDBins); // Should be 0.01 be default
2892 TLorentzVector *jet_vec= new TLorentzVector;
2893 TLorentzVector *track_vec = new TLorentzVector;
2894 TLorentzVector *cluster_vec = new TLorentzVector;
2896 for (i=0;i<fEMCalFullJet->GetTotalSignalJets();i++)
2898 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTFullJets->At(fEMCalFullJet->GetSignalJetIndex(i));
2900 if (IsInEMCalFull(fFullEDJetR,myJet->Phi(),myJet->Eta())==kTRUE)
2902 for (j=0;j<fullEDBins;j++)
2906 myJet->GetMom(*jet_vec);
2908 // Sum all tracks in concentric rings around jet vertex
2909 for (j=0;j<fnTracks;j++)
2911 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(j);
2912 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2913 delta_R=jet_vec->DeltaR(*track_vec);
2914 if (delta_R<fFullEDJetR)
2916 ED_pT[TMath::FloorNint((delta_R/fFullEDJetR)*fullEDBins)]+=vtrack->Pt();
2920 // Sum all clusters in concentric rings around jet vertex
2921 for (j=0;j<fnClusters;j++)
2923 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(j);
2924 vcluster->GetMomentum(*cluster_vec,fVertex);
2925 delta_R=jet_vec->DeltaR(*cluster_vec);
2926 if (delta_R<fFullEDJetR)
2928 ED_pT[TMath::FloorNint((delta_R/fFullEDJetR)*fullEDBins)]+=cluster_vec->Pt();
2932 for (j=0;j<fullEDBins;j++)
2934 ED_pT[j] /= TMath::Pi()*dR*dR*(2*j+1);
2935 fpFullJetEDProfile->Fill(myJet->Pt(),fEventCentrality,j*dR,ED_pT[j]);
2944 // Although this calculates the charged pT density in concentric rings around a charged jet contained fudically within the TPC (R=0.8), we actually scale the density by the scale factor (fScaleFactor) in order to compare to 'Full Charge Density' and 'Rho Median Occupancy Approach' (RhoChargedCMSScaled). We still keep the charged value for completeness.
2945 void AliAnalysisTaskFullpAJets::ChargedJetEnergyDensityProfile()
2950 Double_t chargedEDR = fChargedEDJetR*100;
2951 const Int_t chargedEDBins = (Int_t) chargedEDR;
2952 Double_t ED_pT[chargedEDBins];
2953 dR = fChargedEDJetR/Double_t(chargedEDBins); // Should be 0.01 be default
2955 TLorentzVector *jet_vec= new TLorentzVector;
2956 TLorentzVector *track_vec = new TLorentzVector;
2958 for (i=0;i<fTPCFullJet->GetTotalSignalJets();i++)
2960 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCFullJet->GetSignalJetIndex(i));
2961 if (IsInTPC(fChargedEDJetR,myJet->Phi(),myJet->Eta(),kTRUE)==kTRUE)
2963 for (j=0;j<chargedEDBins;j++)
2967 myJet->GetMom(*jet_vec);
2969 // Sum all tracks in concentric rings around jet vertex
2970 for (j=0;j<fnTracks;j++)
2972 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(j);
2973 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2974 delta_R=jet_vec->DeltaR(*track_vec);
2975 if (delta_R<fChargedEDJetR)
2977 ED_pT[TMath::FloorNint((delta_R/fChargedEDJetR)*chargedEDBins)]+=vtrack->Pt();
2980 for (j=0;j<chargedEDBins;j++)
2982 ED_pT[j] /= TMath::Pi()*dR*dR*(2*j+1);
2983 fpChargedJetEDProfile->Fill(myJet->Pt(),fEventCentrality,j*dR,ED_pT[j]);
2984 fpChargedJetEDProfileScaled->Fill(myJet->Pt(),fEventCentrality,j*dR,fScaleFactor*ED_pT[j]);
2992 void AliAnalysisTaskFullpAJets::DeleteJetData(Int_t delOption)
3000 else if (delOption==1)
3010 else if (delOption==2)
3018 delete fTPCJetUnbiased;
3019 delete fTPCkTFullJet;
3027 fTPCJetUnbiased = NULL;
3028 fTPCkTFullJet = NULL;
3038 delete fTPCJetUnbiased;
3039 delete fTPCkTFullJet;
3041 delete fEMCalFullJet;
3042 delete fEMCalPartJet;
3043 delete fEMCalPartJetUnbiased;
3044 delete fEMCalkTFullJet;
3052 fTPCJetUnbiased = NULL;
3054 fEMCalFullJet = NULL;
3055 fEMCalPartJet = NULL;
3056 fEMCalPartJetUnbiased = NULL;
3057 fEMCalkTFullJet = NULL;
3061 /////////////////////////////////////////////////////////////////////////////////////////
3062 ///////////////// User Defined Functions ///////////////////////////////////////
3063 /////////////////////////////////////////////////////////////////////////////////////////
3065 Bool_t AliAnalysisTaskFullpAJets::IsDiJetEvent()
3067 // Determine if event contains a di-jet within the detector. Uses charged jets.
3068 // Requires the delta phi of the jets to be 180 +/- 15 degrees.
3069 // Requires both jets to be outside of the EMCal
3070 // Requires both jets to be signal jets
3072 const Double_t dijet_delta_phi=(180/360.)*2*TMath::Pi();
3073 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
3074 Double_t dummy_phi=0.0;
3076 if (fTPCOnlyJet->GetTotalSignalJets()>1)
3078 AliEmcalJet *myhJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCOnlyJet->GetLeadingIndex());
3079 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCOnlyJet->GetSubLeadingIndex());
3080 dummy_phi=TMath::Min(TMath::Abs(myhJet->Phi()-myJet->Phi()),2*TMath::Pi()-TMath::Abs(myhJet->Phi()-myJet->Phi()));
3081 if (dummy_phi>(dijet_delta_phi-dijet_phi_acceptance))
3090 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)
3092 if (phi>phi_min && phi<phi_max)
3094 if (eta>eta_min && eta<eta_max)
3102 Bool_t AliAnalysisTaskFullpAJets::IsInEMCal(Double_t phi,Double_t eta)
3104 return InsideRect(phi,fEMCalPhiMin,fEMCalPhiMax,eta,fEMCalEtaMin,fEMCalEtaMax);
3107 Bool_t AliAnalysisTaskFullpAJets::IsInEMCalFull(Double_t r,Double_t phi,Double_t eta)
3109 return InsideRect(phi,fEMCalPhiMin+r,fEMCalPhiMax-r,eta,fEMCalEtaMin+r,fEMCalEtaMax-r);
3112 Bool_t AliAnalysisTaskFullpAJets::IsInEMCalPart(Double_t r,Double_t phi,Double_t eta)
3114 return InsideRect(phi,fEMCalPhiMin-r,fEMCalPhiMax+r,eta,fEMCalEtaMin-r,fEMCalEtaMax+r);
3117 Bool_t AliAnalysisTaskFullpAJets::IsInTPCFull(Double_t r,Double_t phi,Double_t eta)
3119 Bool_t in_EMCal= InsideRect(phi,fEMCalPhiMin-r,fEMCalPhiMax+r,eta,fEMCalEtaMin-r,fEMCalEtaMax+r);
3120 Bool_t in_TPC= InsideRect(phi,fTPCPhiMin,fTPCPhiMax,eta,fTPCEtaMin+r,fTPCEtaMax-r);
3122 if (in_EMCal==kFALSE && in_TPC==kTRUE)
3129 Bool_t AliAnalysisTaskFullpAJets::IsInTPC(Double_t r,Double_t phi,Double_t eta,Bool_t Complete)
3131 if (Complete==kTRUE)
3133 return InsideRect(phi,fTPCPhiMin,fTPCPhiMax,eta,fTPCEtaMin+r,fTPCEtaMax-r);
3135 return InsideRect(phi,fTPCPhiMin,fTPCPhiMax,eta,fTPCEtaMin,fTPCEtaMax);
3138 Bool_t AliAnalysisTaskFullpAJets::IsJetOverlap(AliEmcalJet *jet1,AliEmcalJet *jet2,Bool_t EMCalOn)
3143 Int_t jetCluster1=0;
3144 Int_t jetCluster2=0;
3146 for (i=0;i<jet1->GetNumberOfTracks();i++)
3148 jetTrack1=jet1->TrackAt(i);
3149 for (j=0;j<jet2->GetNumberOfTracks();j++)
3151 jetTrack2=jet2->TrackAt(j);
3152 if (jetTrack1 == jetTrack2)
3158 if (EMCalOn == kTRUE)
3160 for (i=0;i<jet1->GetNumberOfClusters();i++)
3162 jetCluster1=jet1->ClusterAt(i);
3163 for (j=0;j<jet2->GetNumberOfClusters();j++)
3165 jetCluster2=jet2->ClusterAt(j);
3166 if (jetCluster1 == jetCluster2)
3176 Double_t AliAnalysisTaskFullpAJets::AreaWithinTPC(Double_t r,Double_t eta)
3179 if (eta<(fTPCEtaMin+r))
3183 else if(eta>(fTPCEtaMax-r))
3191 return r*r*TMath::Pi()-AreaEdge(r,z);
3194 Double_t AliAnalysisTaskFullpAJets::AreaWithinEMCal(Double_t r,Double_t phi,Double_t eta)
3198 if (phi<(fEMCalPhiMin-r) || phi>(fEMCalPhiMax+r))
3202 else if (phi<(fEMCalPhiMin+r))
3206 else if (phi>(fEMCalPhiMin+r) && phi<(fEMCalPhiMax-r))
3215 if (eta<(fEMCalEtaMin-r) || eta>(fEMCalEtaMax+r))
3219 else if (eta<(fEMCalEtaMin+r))
3223 else if (eta>(fEMCalEtaMin+r) && eta<(fEMCalEtaMax-r))
3234 if (TMath::Sqrt(x*x+y*y)>=r)
3236 return r*r*TMath::Pi()-AreaEdge(r,x)-AreaEdge(r,y);
3238 return r*r*TMath::Pi()-AreaEdge(r,x)-AreaEdge(r,y)+AreaOverlap(r,x,y);
3240 else if ((x>=r && y<0) || (y>=r && x<0))
3242 return r*r*TMath::Pi()-AreaEdge(r,x)-AreaEdge(r,y);
3244 else if (x>0 && x<r && y<0)
3246 Double_t a=TMath::Sqrt(r*r-x*x);
3247 Double_t b=TMath::Sqrt(r*r-y*y);
3250 return r*r*TMath::ASin(b/r)+y*b;
3254 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);
3257 else if (y>0 && y<r && x<0)
3259 Double_t a=TMath::Sqrt(r*r-x*x);
3260 Double_t b=TMath::Sqrt(r*r-y*y);
3263 return r*r*TMath::ASin(a/r)+x*a;
3267 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);
3272 Double_t a=TMath::Sqrt(r*r-x*x);
3273 Double_t b=TMath::Sqrt(r*r-y*y);
3280 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);
3285 Double_t AliAnalysisTaskFullpAJets::AreaEdge(Double_t r,Double_t z)
3287 Double_t a=TMath::Sqrt(r*r-z*z);
3288 return r*r*TMath::ASin(a/r)-a*z;
3291 Double_t AliAnalysisTaskFullpAJets::AreaOverlap(Double_t r,Double_t x,Double_t y)
3293 Double_t a=TMath::Sqrt(r*r-x*x);
3294 Double_t b=TMath::Sqrt(r*r-y*y);
3295 return x*y-0.5*(x*a+y*b)+0.5*r*r*(TMath::ASin(b/r)-TMath::ASin(x/r));
3298 Double_t AliAnalysisTaskFullpAJets::TransverseArea(Double_t r,Double_t psi0,Double_t phi,Double_t eta)
3300 Double_t area_left=0;
3301 Double_t area_right=0;
3305 Double_t eta_down=0;
3307 Double_t u=eta-fEMCalEtaMin;
3308 Double_t v=fEMCalEtaMax-eta;
3310 Double_t phi1=phi+u*TMath::Tan(psi0);
3311 Double_t phi2=phi-u*TMath::Tan(psi0);
3312 Double_t phi3=phi+v*TMath::Tan(psi0);
3313 Double_t phi4=phi-v*TMath::Tan(psi0);
3315 //Calculate the Left side area
3316 if (phi1>=fEMCalPhiMax)
3318 eta_a=eta-u*((fEMCalPhiMax-phi)/(phi1-phi));
3320 if (phi2<=fEMCalPhiMin)
3322 eta_b=eta-u*((phi-fEMCalPhiMin)/(phi-phi2));
3325 if ((phi1>=fEMCalPhiMax) && (phi2<=fEMCalPhiMin))
3327 eta_up=TMath::Max(eta_a,eta_b);
3328 eta_down=TMath::Min(eta_a,eta_b);
3330 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);
3332 else if (phi1>=fEMCalPhiMax)
3334 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);
3336 else if (phi2<=fEMCalPhiMin)
3338 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);
3342 area_left=0.5*(phi1-phi2+2*r*TMath::Tan(psi0))*(u-r);
3345 // Calculate the Right side area
3346 if (phi3>=fEMCalPhiMax)
3348 eta_a=eta+v*((fEMCalPhiMax-phi)/(phi3-phi));
3350 if (phi4<=fEMCalPhiMin)
3352 eta_b=eta+v*((phi-fEMCalPhiMin)/(phi-phi4));
3355 if ((phi3>=fEMCalPhiMax) && (phi4<=fEMCalPhiMin))
3357 eta_up=TMath::Max(eta_a,eta_b);
3358 eta_down=TMath::Min(eta_a,eta_b);
3360 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);
3362 else if (phi3>=fEMCalPhiMax)
3364 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);
3366 else if (phi4<=fEMCalPhiMin)
3368 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);
3372 area_right=0.5*(phi3-phi4+2*r*TMath::Tan(psi0))*(v-r);
3374 return area_left+area_right;
3377 Double_t AliAnalysisTaskFullpAJets::MedianRhokT(Double_t *pTkTEntries, Double_t *RhokTEntries, Int_t nEntries)
3379 // This function is used to calculate the median Rho kT value. The procedure is:
3380 // - Order the kT cluster array from highest rho value to lowest
3381 // - Exclude highest rho kT cluster
3382 // - Return the median rho value of the remaining subset
3385 const Double_t rho_min=-9.9999E+99;
3387 Double_t w[nEntries]; // Used for sorting
3388 Double_t smax=rho_min;
3394 for (j=0;j<nEntries;j++)
3399 for (j=0;j<nEntries;j++)
3401 if (pTkTEntries[j]>pTmax)
3403 pTmax=pTkTEntries[j];
3408 for (j=0;j<nEntries;j++)
3410 for (k=0;k<nEntries;k++)
3412 if (RhokTEntries[k]>smax)
3414 smax=RhokTEntries[k];
3419 RhokTEntries[sindex]=rho_min;
3423 return w[nEntries/2];
3427 // AlipAJetData Class Member Defs
3429 AliAnalysisTaskFullpAJets::AlipAJetData::AlipAJetData() :
3440 fSignalTrackBias(0),
3443 fPtSubLeadingIndex(0),
3451 // Dummy constructor ALWAYS needed for I/O.
3454 AliAnalysisTaskFullpAJets::AlipAJetData::AlipAJetData(const char *name, Bool_t isFull, Int_t nEntries) :
3465 fSignalTrackBias(0),
3468 fPtSubLeadingIndex(0),
3476 SetIsJetsFull(isFull);
3477 SetTotalEntries(nEntries);
3478 SetLeading(0,-9.99E+099);
3479 SetSubLeading(0,-9.99E+099);
3481 SetAreaCutFraction(0.6);
3483 SetSignalTrackPtBias(0);
3487 AliAnalysisTaskFullpAJets::AlipAJetData::~AlipAJetData()
3490 SetIsJetsFull(kFALSE);
3492 SetTotalSignalJets(0);
3496 SetAreaCutFraction(0);
3499 SetSignalTrackPtBias(kFALSE);
3501 delete [] fJetsIndex;
3502 delete [] fJetsSCIndex;
3503 delete [] fIsJetInArray;
3504 delete [] fJetMaxChargedPt;
3509 // User Defined Sub-Routines
3510 void AliAnalysisTaskFullpAJets::AlipAJetData::InitializeJetData(TClonesArray *jetList, Int_t nEntries)
3515 Double_t AreaThreshold = fAreaCutFrac*TMath::Pi()*TMath::Power(fJetR,2);
3517 // Initialize Jet Data
3518 for (i=0;i<nEntries;i++)
3520 AliEmcalJet *myJet =(AliEmcalJet*) jetList->At(i);
3522 if (fIsJetInArray[i]==kTRUE && myJet->Area()>AreaThreshold)
3525 if (myJet->Pt()>fPtMax)
3527 SetSubLeading(fPtMaxIndex,fPtMax);
3528 SetLeading(i,myJet->Pt());
3530 else if (myJet->Pt()>fPtSubLeading)
3532 SetSubLeading(i,myJet->Pt());
3534 // require leading charged constituent to have a pT greater then the signal threshold & Jet NEF to be less then the Signal Jet NEF cut
3535 fJetMaxChargedPt[i] = myJet->MaxTrackPt();
3536 if (fSignalTrackBias==kTRUE)
3538 if (fJetMaxChargedPt[i]>=fSignalPt && myJet->NEF()<=fNEF)
3540 SetSignalJetIndex(i,l);
3546 if (myJet->Pt()>=fSignalPt && myJet->NEF()<=fNEF)
3548 SetSignalJetIndex(i,l);
3556 SetTotalSignalJets(l);
3560 void AliAnalysisTaskFullpAJets::AlipAJetData::SetName(const char *name)
3565 void AliAnalysisTaskFullpAJets::AlipAJetData::SetIsJetsFull(Bool_t isFull)
3567 fIsJetsFull = isFull;
3570 void AliAnalysisTaskFullpAJets::AlipAJetData::SetTotalEntries(Int_t nEntries)
3573 fJetsIndex = new Int_t[fnTotal];
3574 fJetsSCIndex = new Int_t[fnTotal];
3575 fIsJetInArray = new Bool_t[fnTotal];
3576 fJetMaxChargedPt = new Double_t[fnTotal];
3579 void AliAnalysisTaskFullpAJets::AlipAJetData::SetTotalJets(Int_t nJets)
3584 void AliAnalysisTaskFullpAJets::AlipAJetData::SetTotalSignalJets(Int_t nSignalJets)
3586 fnJetsSC = nSignalJets;
3589 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSignalCut(Double_t Pt)
3594 void AliAnalysisTaskFullpAJets::AlipAJetData::SetLeading(Int_t index, Double_t Pt)
3596 fPtMaxIndex = index;
3600 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSubLeading(Int_t index, Double_t Pt)
3602 fPtSubLeadingIndex = index;
3606 void AliAnalysisTaskFullpAJets::AlipAJetData::SetJetIndex(Int_t index, Int_t At)
3608 fJetsIndex[At] = index;
3611 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSignalJetIndex(Int_t index, Int_t At)
3613 fJetsSCIndex[At] = index;
3616 void AliAnalysisTaskFullpAJets::AlipAJetData::SetIsJetInArray(Bool_t isInArray, Int_t At)
3618 fIsJetInArray[At] = isInArray;
3621 void AliAnalysisTaskFullpAJets::AlipAJetData::SetAreaCutFraction(Double_t areaFraction)
3623 fAreaCutFrac = areaFraction;
3626 void AliAnalysisTaskFullpAJets::AlipAJetData::SetJetR(Double_t jetR)
3631 void AliAnalysisTaskFullpAJets::AlipAJetData::SetNEF(Double_t nef)
3636 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSignalTrackPtBias(Bool_t chargedBias)
3638 fSignalTrackBias = chargedBias;
3642 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetTotalEntries()
3647 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetTotalJets()
3652 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetTotalSignalJets()
3657 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSignalCut()
3662 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetLeadingIndex()
3667 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetLeadingPt()
3672 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSubLeadingIndex()
3674 return fPtSubLeadingIndex;
3677 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSubLeadingPt()
3679 return fPtSubLeading;
3682 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetJetIndex(Int_t At)
3684 return fJetsIndex[At];
3687 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSignalJetIndex(Int_t At)
3689 return fJetsSCIndex[At];
3692 Bool_t AliAnalysisTaskFullpAJets::AlipAJetData::GetIsJetInArray(Int_t At)
3694 return fIsJetInArray[At];
3697 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetJetMaxChargedPt(Int_t At)
3699 return fJetMaxChargedPt[At];
3702 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetNEF()
3707 // AlipAJetHistos Class Member Defs
3709 AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos() :
3722 fh80100BSPtSignal(0),
3729 fh020DeltaPtSignal(0),
3730 fh80100DeltaPtSignal(0),
3732 fhDeltaPtCenSignal(0),
3733 fh020DeltaPtNColl(0),
3734 fh80100DeltaPtNColl(0),
3736 fhDeltaPtCenNColl(0),
3738 fh80100BckgFlucPt(0),
3747 fhJetConstituentPt(0),
3750 fhJetConstituentCounts(0),
3751 fhJetTracksCounts(0),
3752 fhJetClustersCounts(0),
3753 fhJetPtZConstituent(0),
3756 fhJetPtZLeadingConstituent(0),
3757 fhJetPtZLeadingTrack(0),
3758 fhJetPtZLeadingCluster(0),
3760 fhEventCentralityVsZNA(0),
3761 fhEventCentralityVsZNAPt(0),
3766 fhJetNEFSignalInfo(0),
3767 fhClusterNEFInfo(0),
3768 fhClusterNEFSignalInfo(0),
3769 fhClusterShapeAll(0),
3770 fhClusterPtCellAll(0),
3793 fLChargedTrackPtBins(0),
3794 fLChargedTrackPtLow(0),
3795 fLChargedTrackPtUp(0),
3797 fDoNEFSignalOnly(1),
3798 fSignalTrackBias(0),
3805 fEMCalPhiMin(1.39626),
3806 fEMCalPhiMax(3.26377),
3811 // Dummy constructor ALWAYS needed for I/O.
3814 AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos(const char *name) :
3827 fh80100BSPtSignal(0),
3834 fh020DeltaPtSignal(0),
3835 fh80100DeltaPtSignal(0),
3837 fhDeltaPtCenSignal(0),
3838 fh020DeltaPtNColl(0),
3839 fh80100DeltaPtNColl(0),
3841 fhDeltaPtCenNColl(0),
3843 fh80100BckgFlucPt(0),
3852 fhJetConstituentPt(0),
3855 fhJetConstituentCounts(0),
3856 fhJetTracksCounts(0),
3857 fhJetClustersCounts(0),
3858 fhJetPtZConstituent(0),
3861 fhJetPtZLeadingConstituent(0),
3862 fhJetPtZLeadingTrack(0),
3863 fhJetPtZLeadingCluster(0),
3865 fhEventCentralityVsZNA(0),
3866 fhEventCentralityVsZNAPt(0),
3871 fhJetNEFSignalInfo(0),
3872 fhClusterNEFInfo(0),
3873 fhClusterNEFSignalInfo(0),
3874 fhClusterShapeAll(0),
3875 fhClusterPtCellAll(0),
3898 fLChargedTrackPtBins(0),
3899 fLChargedTrackPtLow(0),
3900 fLChargedTrackPtUp(0),
3902 fDoNEFSignalOnly(1),
3903 fSignalTrackBias(0),
3910 fEMCalPhiMin(1.39626),
3911 fEMCalPhiMax(3.26377),
3917 SetCentralityTag("ZNA");
3918 SetCentralityRange(100,0,100);
3919 SetPtRange(250,-50,200);
3920 SetRhoPtRange(500,0,50);
3921 SetDeltaPtRange(200,-100,100);
3922 SetBackgroundFluctuationsPtRange(100,0,100);
3923 SetLeadingJetPtRange(200,0,200);
3924 SetLeadingChargedTrackPtRange(100,0,100);
3925 SetNEFRange(100,0,1);
3926 DoNEFQAPlots(kFALSE);
3931 AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos(const char *name, TString centag, Bool_t doNEF) :
3944 fh80100BSPtSignal(0),
3951 fh020DeltaPtSignal(0),
3952 fh80100DeltaPtSignal(0),
3954 fhDeltaPtCenSignal(0),
3955 fh020DeltaPtNColl(0),
3956 fh80100DeltaPtNColl(0),
3958 fhDeltaPtCenNColl(0),
3960 fh80100BckgFlucPt(0),
3969 fhJetConstituentPt(0),
3972 fhJetConstituentCounts(0),
3973 fhJetTracksCounts(0),
3974 fhJetClustersCounts(0),
3975 fhJetPtZConstituent(0),
3978 fhJetPtZLeadingConstituent(0),
3979 fhJetPtZLeadingTrack(0),
3980 fhJetPtZLeadingCluster(0),
3982 fhEventCentralityVsZNA(0),
3983 fhEventCentralityVsZNAPt(0),
3988 fhJetNEFSignalInfo(0),
3989 fhClusterNEFInfo(0),
3990 fhClusterNEFSignalInfo(0),
3991 fhClusterShapeAll(0),
3992 fhClusterPtCellAll(0),
4015 fLChargedTrackPtBins(0),
4016 fLChargedTrackPtLow(0),
4017 fLChargedTrackPtUp(0),
4019 fDoNEFSignalOnly(1),
4020 fSignalTrackBias(0),
4027 fEMCalPhiMin(1.39626),
4028 fEMCalPhiMax(3.26377),
4034 SetCentralityTag(centag.Data());
4035 SetCentralityRange(100,0,100);
4036 SetPtRange(250,-50,200);
4037 SetRhoPtRange(500,0,50);
4038 SetDeltaPtRange(200,-100,100);
4039 SetBackgroundFluctuationsPtRange(100,0,100);
4040 SetLeadingJetPtRange(200,0,200);
4041 SetLeadingChargedTrackPtRange(100,0,100);
4042 SetNEFRange(100,0,1);
4043 DoNEFQAPlots(doNEF);
4048 AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos(const char *name, TString centag, Bool_t doNEF, Bool_t doNEFSignalOnly, Bool_t doTHnSparse) :
4061 fh80100BSPtSignal(0),
4068 fh020DeltaPtSignal(0),
4069 fh80100DeltaPtSignal(0),
4071 fhDeltaPtCenSignal(0),
4072 fh020DeltaPtNColl(0),
4073 fh80100DeltaPtNColl(0),
4075 fhDeltaPtCenNColl(0),
4077 fh80100BckgFlucPt(0),
4086 fhJetConstituentPt(0),
4089 fhJetConstituentCounts(0),
4090 fhJetTracksCounts(0),
4091 fhJetClustersCounts(0),
4092 fhJetPtZConstituent(0),
4095 fhJetPtZLeadingConstituent(0),
4096 fhJetPtZLeadingTrack(0),
4097 fhJetPtZLeadingCluster(0),
4099 fhEventCentralityVsZNA(0),
4100 fhEventCentralityVsZNAPt(0),
4105 fhJetNEFSignalInfo(0),
4106 fhClusterNEFInfo(0),
4107 fhClusterNEFSignalInfo(0),
4108 fhClusterShapeAll(0),
4109 fhClusterPtCellAll(0),
4132 fLChargedTrackPtBins(0),
4133 fLChargedTrackPtLow(0),
4134 fLChargedTrackPtUp(0),
4136 fDoNEFSignalOnly(1),
4137 fSignalTrackBias(0),
4144 fEMCalPhiMin(1.39626),
4145 fEMCalPhiMax(3.26377),
4151 SetCentralityTag(centag.Data());
4152 SetCentralityRange(100,0,100);
4153 SetPtRange(250,-50,200);
4154 SetRhoPtRange(500,0,50);
4155 SetDeltaPtRange(200,-100,100);
4156 SetBackgroundFluctuationsPtRange(100,0,100);
4157 SetLeadingJetPtRange(200,0,200);
4158 SetLeadingChargedTrackPtRange(100,0,100);
4159 SetNEFRange(100,0,1);
4160 DoNEFQAPlots(doNEF);
4161 DoNEFSignalOnly(doNEFSignalOnly);
4162 DoTHnSparse(doTHnSparse);
4168 AliAnalysisTaskFullpAJets::AlipAJetHistos::~AlipAJetHistos()
4176 void AliAnalysisTaskFullpAJets::AlipAJetHistos::Init()
4180 // Initialize Private Variables
4182 fEMCalPhiMin=(80/(double)360)*2*TMath::Pi();
4183 fEMCalPhiMax=(187/(double)360)*2*TMath::Pi();
4187 fOutput = new TList();
4188 fOutput->SetOwner();
4189 fOutput->SetName(fName);
4191 TString RhoString="";
4192 TString PtString="";
4193 TString DeltaPtString="";
4194 TString BckgFlucPtString="";
4195 TString CentralityString;
4196 TString EventCentralityString;
4197 CentralityString = Form("Centrality (%s) ",fCentralityTag.Data());
4198 EventCentralityString = Form("%s vs ZNA Centrality ",fCentralityTag.Data());
4200 // Rho Spectral Plots
4201 RhoString = Form("%d-%d Centrality, Rho Spectrum",0,20);
4202 fh020Rho = new TH1F("fh020Rho",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp);
4203 fh020Rho->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
4204 fh020Rho->GetYaxis()->SetTitle("1/N_{Events} dN/d#rho");
4207 RhoString = Form("%d-%d Centrality, Rho Spectrum",80,100);
4208 fh80100Rho = new TH1F("fh80100Rho",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp);
4209 fh80100Rho->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
4210 fh80100Rho->GetYaxis()->SetTitle("1/N_{Events} dN/d#rho");
4211 fh80100Rho->Sumw2();
4213 RhoString = Form("%d-%d Centrality, Rho Spectrum",0,100);
4214 fhRho = new TH1F("fhRho",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp);
4215 fhRho->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
4216 fhRho->GetYaxis()->SetTitle("1/N_{Events} dN/d#rho");
4219 RhoString = "Rho Spectrum vs Centrality";
4220 fhRhoCen = new TH2F("fhRhoCen",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4221 fhRhoCen->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
4222 fhRhoCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4223 fhRhoCen->GetZaxis()->SetTitle("1/N_{Events} dN/d#rho");
4226 // Background Subtracted Plots
4227 PtString = Form("%d-%d Centrality, Background Subtracted Jet Spectrum",0,20);
4228 fh020BSPt = new TH1F("fh020BSPt",PtString,fPtBins,fPtLow,fPtUp);
4229 fh020BSPt->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4230 fh020BSPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4233 PtString = Form("%d-%d Centrality, Background Subtracted Jet Spectrum",80,100);
4234 fh80100BSPt = new TH1F("fh80100BSPt",PtString,fPtBins,fPtLow,fPtUp);
4235 fh80100BSPt->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4236 fh80100BSPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4237 fh80100BSPt->Sumw2();
4239 PtString = Form("%d-%d Centrality, Background Subtracted Jet Spectrum",0,100);
4240 fhBSPt = new TH1F("fhBSPt",PtString,fPtBins,fPtLow,fPtUp);
4241 fhBSPt->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4242 fhBSPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4245 PtString = "Background Subtracted Jet Spectrum vs Centrality";
4246 fhBSPtCen = new TH2F("fhBSPtCen",PtString,fPtBins,fPtLow,fPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4247 fhBSPtCen->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4248 fhBSPtCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4249 fhBSPtCen->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4252 PtString = Form("%d-%d Centrality, Background Subtracted Signal Jet Spectrum",0,20);
4253 fh020BSPtSignal = new TH1F("fh020BSPtSignal",PtString,fPtBins,fPtLow,fPtUp);
4254 fh020BSPtSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4255 fh020BSPtSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4256 fh020BSPtSignal->Sumw2();
4258 PtString = Form("%d-%d Centrality, Background Subtracted Signal Jet Spectrum",80,100);
4259 fh80100BSPtSignal = new TH1F("fh80100BSPtSignal",PtString,fPtBins,fPtLow,fPtUp);
4260 fh80100BSPtSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4261 fh80100BSPtSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4262 fh80100BSPtSignal->Sumw2();
4264 PtString = Form("%d-%d Centrality, Background Subtracted Signal Jet Spectrum",0,100);
4265 fhBSPtSignal = new TH1F("fhBSPtSignal",PtString,fPtBins,fPtLow,fPtUp);
4266 fhBSPtSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4267 fhBSPtSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4268 fhBSPtSignal->Sumw2();
4270 PtString = "Background Subtracted Signal Jet Spectrum vs Centrality";
4271 fhBSPtCenSignal = new TH2F("fhBSPtCenSignal",PtString,fPtBins,fPtLow,fPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4272 fhBSPtCenSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4273 fhBSPtCenSignal->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4274 fhBSPtCenSignal->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4275 fhBSPtCenSignal->Sumw2();
4277 // Delta Pt Plots with RC at least 2R away from Leading Signal
4278 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,20);
4279 fh020DeltaPt = new TH1F("fh020DeltaPt",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4280 fh020DeltaPt->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4281 fh020DeltaPt->GetYaxis()->SetTitle("Probability Density");
4282 fh020DeltaPt->Sumw2();
4284 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",80,100);
4285 fh80100DeltaPt = new TH1F("fh80100DeltaPt",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4286 fh80100DeltaPt->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4287 fh80100DeltaPt->GetYaxis()->SetTitle("Probability Density");
4288 fh80100DeltaPt->Sumw2();
4290 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,100);
4291 fhDeltaPt = new TH1F("fhDeltaPt",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4292 fhDeltaPt->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4293 fhDeltaPt->GetYaxis()->SetTitle("Probability Density");
4296 DeltaPtString = "#deltap_{T} Spectrum vs Centrality";
4297 fhDeltaPtCen = new TH2F("fhDeltaPtCen",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4298 fhDeltaPtCen->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4299 fhDeltaPtCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4300 fhDeltaPtCen->GetZaxis()->SetTitle("Probability Density");
4301 fhDeltaPtCen->Sumw2();
4303 // Delta Pt Plots with no spatial restrictions on RC
4304 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,20);
4305 fh020DeltaPtSignal = new TH1F("fh020DeltaPtSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4306 fh020DeltaPtSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4307 fh020DeltaPtSignal->GetYaxis()->SetTitle("Probability Density");
4308 fh020DeltaPtSignal->Sumw2();
4310 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",80,100);
4311 fh80100DeltaPtSignal = new TH1F("fh80100DeltaPtSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4312 fh80100DeltaPtSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4313 fh80100DeltaPtSignal->GetYaxis()->SetTitle("Probability Density");
4314 fh80100DeltaPtSignal->Sumw2();
4316 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,100);
4317 fhDeltaPtSignal = new TH1F("fhDeltaPtSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4318 fhDeltaPtSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4319 fhDeltaPtSignal->GetYaxis()->SetTitle("Probability Density");
4320 fhDeltaPtSignal->Sumw2();
4322 DeltaPtString = "#deltap_{T} Spectrum vs Centrality";
4323 fhDeltaPtCenSignal = new TH2F("fhDeltaPtCenSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4324 fhDeltaPtCenSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4325 fhDeltaPtCenSignal->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4326 fhDeltaPtCenSignal->GetZaxis()->SetTitle("Probability Density");
4327 fhDeltaPtCenSignal->Sumw2();
4329 // Delta Pt Plots with NColl restrictions on RC
4330 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,20);
4331 fh020DeltaPtNColl = new TH1F("fh020DeltaPtNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4332 fh020DeltaPtNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4333 fh020DeltaPtNColl->GetYaxis()->SetTitle("Probability Density");
4334 fh020DeltaPtNColl->Sumw2();
4336 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",80,100);
4337 fh80100DeltaPtNColl = new TH1F("fh80100DeltaPtNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4338 fh80100DeltaPtNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4339 fh80100DeltaPtNColl->GetYaxis()->SetTitle("Probability Density");
4340 fh80100DeltaPtNColl->Sumw2();
4342 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,100);
4343 fhDeltaPtNColl = new TH1F("fhDeltaPtNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4344 fhDeltaPtNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4345 fhDeltaPtNColl->GetYaxis()->SetTitle("Probability Density");
4346 fhDeltaPtNColl->Sumw2();
4348 DeltaPtString = "#deltap_{T} Spectrum vs Centrality";
4349 fhDeltaPtCenNColl = new TH2F("fhDeltaPtCenNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4350 fhDeltaPtCenNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4351 fhDeltaPtCenNColl->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4352 fhDeltaPtCenNColl->GetZaxis()->SetTitle("Probability Density");
4353 fhDeltaPtCenNColl->Sumw2();
4355 // Background Fluctuations Pt Plots
4356 BckgFlucPtString = Form("%d-%d Centrality, Background Fluctuation p_{T} Spectrum",0,20);
4357 fh020BckgFlucPt = new TH1F("fh020BckgFlucPt",PtString,fPtBins,fPtLow,fPtUp);
4358 fh020BckgFlucPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
4359 fh020BckgFlucPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4360 fh020BckgFlucPt->Sumw2();
4362 BckgFlucPtString = Form("%d-%d Centrality, Background Fluctuation p_{T} Spectrum",80,100);
4363 fh80100BckgFlucPt = new TH1F("fh80100BckgFlucPt",BckgFlucPtString,fBckgFlucPtBins,fBckgFlucPtLow,fBckgFlucPtUp);
4364 fh80100BckgFlucPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
4365 fh80100BckgFlucPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4366 fh80100BckgFlucPt->Sumw2();
4368 BckgFlucPtString = Form("%d-%d Centrality, Background Fluctuation p_{T} Spectrum",0,100);
4369 fhBckgFlucPt = new TH1F("fhBckgFlucPt",BckgFlucPtString,fBckgFlucPtBins,fBckgFlucPtLow,fBckgFlucPtUp);
4370 fhBckgFlucPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
4371 fhBckgFlucPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4372 fhBckgFlucPt->Sumw2();
4374 BckgFlucPtString = "Background Fluctuation p_{T} Spectrum vs Centrality";
4375 fhBckgFlucPtCen = new TH2F("fhBckgFlucPtCen",BckgFlucPtString,fBckgFlucPtBins,fBckgFlucPtLow,fBckgFlucPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4376 fhBckgFlucPtCen->GetXaxis()->SetTitle("#p_{T} (GeV/c)");
4377 fhBckgFlucPtCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4378 fhBckgFlucPtCen->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4379 fhBckgFlucPtCen->Sumw2();
4381 // Background Density vs Centrality Profile
4382 RhoString = "Background Density vs Centrality";
4383 fpRho = new TProfile("fpRho",RhoString,fCentralityBins,fCentralityLow,fCentralityUp);
4384 fpRho->GetXaxis()->SetTitle(Form("%s",CentralityString.Data()));
4385 fpRho->GetYaxis()->SetTitle("p_{T}/Area (GeV/c)");
4387 // Background Density vs Leading Jet Profile
4388 fpLJetRho = new TProfile("fpLJetRho","#rho vs Leading Jet p_{T}",fLJetPtBins,fLJetPtLow,fLJetPtUp);
4389 fpLJetRho->GetXaxis()->SetTitle("Leading Jet p_{T}");
4390 fpLJetRho->GetYaxis()->SetTitle("p_{T}/Area (GeV/c)");
4393 fhJetPtEtaPhi = new TH3F("fhJetPtEtaPhi","Jet p_{T} vs #eta-#varphi",fPtBins,fPtLow,fPtUp,TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax);
4394 fhJetPtEtaPhi->GetXaxis()->SetTitle("p_{T} (GeV/c)");
4395 fhJetPtEtaPhi->GetYaxis()->SetTitle("#eta");
4396 fhJetPtEtaPhi->GetZaxis()->SetTitle("#varphi");
4397 fhJetPtEtaPhi->Sumw2();
4400 Int_t JetPtAreaBins=200;
4401 Double_t JetPtAreaLow=0.0;
4402 Double_t JetPtAreaUp=2.0;
4404 fhJetPtArea = new TH2F("fhJetPtArea","Jet Area Distribution",fPtBins,fPtLow,fPtUp,JetPtAreaBins,JetPtAreaLow,JetPtAreaUp);
4405 fhJetPtArea->GetXaxis()->SetTitle("p_{T} (GeV/c)");
4406 fhJetPtArea->GetYaxis()->SetTitle("A_{jet}");
4407 fhJetPtArea->GetZaxis()->SetTitle("1/N_{Events} dN/dA_{jet}dp_{T}");
4408 fhJetPtArea->Sumw2();
4410 // Jet pT vs Constituent pT
4411 fhJetConstituentPt = new TH2F("fhJetConstituentPt","Jet constituents p_{T} distribution",fPtBins,fPtLow,fPtUp,10*fPtBins,fPtLow,fPtUp);
4412 fhJetConstituentPt->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4413 fhJetConstituentPt->GetYaxis()->SetTitle("Constituent p_{T} (GeV/c)");
4414 fhJetConstituentPt->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dp_{T,track}");
4415 fhJetConstituentPt->Sumw2();
4417 fhJetTracksPt = new TH2F("fhJetTracksPt","Jet constituents Tracks p_{T} distribution",fPtBins,fPtLow,fPtUp,10*fPtBins,fPtLow,fPtUp);
4418 fhJetTracksPt->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4419 fhJetTracksPt->GetYaxis()->SetTitle("Constituent Track p_{T} (GeV/c)");
4420 fhJetTracksPt->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dp_{T,track}");
4421 fhJetTracksPt->Sumw2();
4423 fhJetClustersPt = new TH2F("fhJetClustersPt","Jet constituents Clusters p_{T} distribution",fPtBins,fPtLow,fPtUp,10*fPtBins,fPtLow,fPtUp);
4424 fhJetClustersPt->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4425 fhJetClustersPt->GetYaxis()->SetTitle("Constituent Cluster p_{T} (GeV/c)");
4426 fhJetClustersPt->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dp_{T,cluster}");
4427 fhJetClustersPt->Sumw2();
4429 // Jet pT vs Constituent Counts
4430 fhJetConstituentCounts = new TH2F("fhJetConstituentCounts","Jet constituents distribution",fPtBins,fPtLow,fPtUp,TCBins,0,(Double_t)TCBins);
4431 fhJetConstituentCounts->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4432 fhJetConstituentCounts->GetYaxis()->SetTitle("Constituent Count");
4433 fhJetConstituentCounts->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dN_{constituent}");
4434 fhJetConstituentCounts->Sumw2();
4436 fhJetTracksCounts = new TH2F("fhJetTracksCounts","Jet constituents Tracks distribution",fPtBins,fPtLow,fPtUp,TCBins,0,(Double_t)TCBins);
4437 fhJetTracksCounts->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4438 fhJetTracksCounts->GetYaxis()->SetTitle("Constituent Track Count");
4439 fhJetTracksCounts->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dN_{track}");
4440 fhJetTracksCounts->Sumw2();
4442 fhJetClustersCounts = new TH2F("fhJetClustersCounts","Jet constituents Clusters distribution",fPtBins,fPtLow,fPtUp,TCBins,0,(Double_t)TCBins);
4443 fhJetClustersCounts->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4444 fhJetClustersCounts->GetYaxis()->SetTitle("Constituent Cluster Count");
4445 fhJetClustersCounts->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dN_{cluster}");
4446 fhJetClustersCounts->Sumw2();
4448 // Jet pT vs z_{constituent/track/cluster}
4449 fhJetPtZConstituent = new TH2F("fhJetPtZConstituent","Jet z_{constituent} distribution",fPtBins,fPtLow,fPtUp,TCBins,0,1.0);
4450 fhJetPtZConstituent->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4451 fhJetPtZConstituent->GetYaxis()->SetTitle("z_{constituent}");
4452 fhJetPtZConstituent->GetZaxis()->SetTitle("1/N_{Events} dN_{jet}/dp_{T,jet}dz_{constituent}");
4453 fhJetPtZConstituent->Sumw2();
4455 fhJetPtZTrack = new TH2F("fhJetPtZTrack","Jet z_{track} distribution",fPtBins,fPtLow,fPtUp,TCBins,0,1.0);
4456 fhJetPtZTrack->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4457 fhJetPtZTrack->GetYaxis()->SetTitle("z_{track}");
4458 fhJetPtZTrack->GetZaxis()->SetTitle("1/N_{Events} dN_{jet}/dp_{T,jet}dz_{track}");
4459 fhJetPtZTrack->Sumw2();
4461 fhJetPtZCluster = new TH2F("fhJetPtZCluster","Jet z_{cluster} distribution",fPtBins,fPtLow,fPtUp,TCBins,0,1.0);
4462 fhJetPtZCluster->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4463 fhJetPtZCluster->GetYaxis()->SetTitle("z_{cluster}");
4464 fhJetPtZCluster->GetZaxis()->SetTitle("1/N_{Events} dN_{jet}/dp_{T,jet}dz_{cluster}");
4465 fhJetPtZCluster->Sumw2();
4467 // Jet pT vs z_Leading{constituent/track/cluster}
4468 fhJetPtZLeadingConstituent = new TH2F("fhJetPtZLeadingConstituent","Jet z_{Leading,constituent} distribution",fPtBins,fPtLow,fPtUp,TCBins,0,1.0);
4469 fhJetPtZLeadingConstituent->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4470 fhJetPtZLeadingConstituent->GetYaxis()->SetTitle("z_{Leading,constituent}");
4471 fhJetPtZLeadingConstituent->GetZaxis()->SetTitle("1/N_{Events} dN_{jet}/dp_{T,jet}dz_{constituent}");
4472 fhJetPtZLeadingConstituent->Sumw2();
4474 fhJetPtZLeadingTrack = new TH2F("fhJetPtZLeadingTrack","Jet z_{Leading,track} distribution",fPtBins,fPtLow,fPtUp,TCBins,0,1.0);
4475 fhJetPtZLeadingTrack->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4476 fhJetPtZLeadingTrack->GetYaxis()->SetTitle("z_{Leading,track}");
4477 fhJetPtZLeadingTrack->GetZaxis()->SetTitle("1/N_{Events} dN_{jet}/dp_{T,jet}dz_{track}");
4478 fhJetPtZLeadingTrack->Sumw2();
4480 fhJetPtZLeadingCluster = new TH2F("fhJetPtZLeadingCluster","Jet z_{Leading,cluster} distribution",fPtBins,fPtLow,fPtUp,TCBins,0,1.0);
4481 fhJetPtZLeadingCluster->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4482 fhJetPtZLeadingCluster->GetYaxis()->SetTitle("z_{Leading,cluster}");
4483 fhJetPtZLeadingCluster->GetZaxis()->SetTitle("1/N_{Events} dN_{jet}/dp_{T,jet}dz_{cluster}");
4484 fhJetPtZLeadingCluster->Sumw2();
4486 // Event Centralities vs Leading Jet Pt
4487 fhEventCentralityVsZNA = new TH2F("fhEventCentralityVsZNA",EventCentralityString,fCentralityBins,fCentralityLow,fCentralityUp,fCentralityBins,fCentralityLow,fCentralityUp);
4488 fhEventCentralityVsZNA->GetXaxis()->SetTitle(Form("%s",CentralityString.Data()));
4489 fhEventCentralityVsZNA->GetYaxis()->SetTitle("Centrality (ZNA)");
4490 fhEventCentralityVsZNA->GetZaxis()->SetTitle("Probability Density");
4491 fhEventCentralityVsZNA->Sumw2();
4493 EventCentralityString = Form("%s vs ZNA Centrality vs Leading Jet p_{T} ",fCentralityTag.Data());
4494 fhEventCentralityVsZNAPt = new TH3F("fhEventCentralityVsZNAPt",EventCentralityString,fCentralityBins,fCentralityLow,fCentralityUp,fCentralityBins,fCentralityLow,fCentralityUp,fPtBins,fPtLow,fPtUp);
4495 fhEventCentralityVsZNAPt->GetXaxis()->SetTitle(Form("%s",CentralityString.Data()));
4496 fhEventCentralityVsZNAPt->GetYaxis()->SetTitle("Centrality (ZNA)");
4497 fhEventCentralityVsZNAPt->GetZaxis()->SetTitle("Leading Jet p_{T} (GeV/c)");
4498 fhEventCentralityVsZNAPt->Sumw2();
4500 // Neutral Energy Fraction Histograms & QA
4501 if (fDoNEFQAPlots==kTRUE)
4503 fNEFOutput = new TList();
4504 fNEFOutput->SetOwner();
4505 fNEFOutput->SetName("ListNEFQAPlots");
4507 fhJetPtNEF = new TH2F("fhJetPtNEF","Jet p_{T} vs NEF",fPtBins,fPtLow,fPtUp,fNEFBins,fNEFLow,fNEFUp);
4508 fhJetPtNEF->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4509 fhJetPtNEF->GetYaxis()->SetTitle("Neutral Energy Fraction");
4510 fhJetPtNEF->GetZaxis()->SetTitle("1/N_{Events} dN_{jet}/dp_{T}dNEF");
4511 fhJetPtNEF->Sumw2();
4513 SetNEFJetDimensions(10); // Order: nef,Jet Pt,Eta,Phi,Centrality,Constituent mult,Charged mult, Neutral mult, z_leading
4514 SetNEFClusterDimensions(11); // Order: nef,Jet Pt,Eta,Phi,Centrality,F_Cross,z_leading,t_cell,deltat_cell,Cell Count, E_Cluster
4516 Int_t dimJetBins[fnDimJet];
4517 Double_t dimJetLow[fnDimJet];
4518 Double_t dimJetUp[fnDimJet];
4520 Int_t dimClusterBins[fnDimCluster];
4521 Double_t dimClusterLow[fnDimCluster];
4522 Double_t dimClusterUp[fnDimCluster];
4524 // Establish dimensinality bin counts and bounds
4526 dimJetBins[0] = dimClusterBins[0] = fNEFBins;
4527 dimJetLow[0] = dimClusterLow[0] = fNEFLow;
4528 dimJetUp[0] = dimClusterUp[0] = fNEFUp;
4531 dimJetBins[1] = dimClusterBins[1] = fPtBins;
4532 dimJetLow[1] = dimClusterLow[1] = fPtLow;
4533 dimJetUp[1] = dimClusterUp[1] = fPtUp;
4536 dimJetBins[2] = dimJetBins[3] = dimClusterBins[2] = dimClusterBins[3] = TCBins;
4537 dimJetLow[2] = dimClusterLow[2] = fEMCalEtaMin;
4538 dimJetUp[2] = dimClusterUp[2] = fEMCalEtaMax;
4539 dimJetLow[3] = dimClusterLow[3] = fEMCalPhiMin;
4540 dimJetUp[3] = dimClusterUp[3] = fEMCalPhiMax;
4543 dimJetBins[4] = dimClusterBins[4] = fCentralityBins;
4544 dimJetLow[4] = dimClusterLow[4] = fCentralityLow;
4545 dimJetUp[4] = dimClusterUp[4] = fCentralityUp;
4548 dimJetBins[5] = dimClusterBins[5] = TCBins;
4549 dimJetLow[5] = dimClusterLow[5] = 0.0;
4550 dimJetUp[5] = dimClusterUp[5] = 1.0;
4552 // Jets Constituent Multiplicity Info {Total,Charged,Neutral}
4555 dimJetBins[i] = TCBins;
4557 dimJetUp[i] = (Double_t)TCBins;
4561 dimJetBins[9] = TCBins;
4566 dimClusterBins[6] = fPtBins;
4567 dimClusterLow[6] = fPtLow;
4568 dimClusterUp[6] = fPtUp;
4571 dimClusterBins[7] = TCBins;
4572 dimClusterLow[7] = 0.0;
4573 dimClusterUp[7] = 1.0;
4576 dimClusterBins[8] = 400;
4577 dimClusterLow[8] = -2e-07;
4578 dimClusterUp[8] = 2e-07;
4580 // Cluster delta t_cell
4581 dimClusterBins[9] = 100;
4582 dimClusterLow[9] = 0.0;
4583 dimClusterUp[9] = 1e-07;
4585 // Cluster Cell Count
4586 dimClusterBins[10] = TCBins;
4587 dimClusterLow[10] = 0.0;
4588 dimClusterUp[10] = 100.0;
4590 if (fDoTHnSparse == kTRUE)
4592 fhJetNEFSignalInfo = new THnSparseF("fhJetNEFSignalInfo","Signal Jet NEF Information Histogram",fnDimJet,dimJetBins,dimJetLow,dimJetUp);
4593 fhJetNEFSignalInfo->Sumw2();
4595 fhClusterNEFSignalInfo = new THnSparseF("fhClusterNEFSignalInfo","Signal Jet NEF Cluster Information Histogram",fnDimCluster,dimClusterBins,dimClusterLow,dimClusterUp);
4596 fhClusterNEFSignalInfo->Sumw2();
4599 fhClusterShapeAll = new TH1F("fhClusterShapeAll","Cluster Shape of all CaloClustersCorr",10*TCBins,0,10*TCBins);
4600 fhClusterShapeAll->GetXaxis()->SetTitle("Cells");
4601 fhClusterShapeAll->GetYaxis()->SetTitle("1/N_{Events} dN/dCells");
4602 fhClusterShapeAll->Sumw2();
4604 fhClusterPtCellAll = new TH2F("fhClusterPtCellAll","Cluster p_{T} vs Cluster Shape of all CaloClustersCorr",fPtBins,fPtLow,fPtUp,10*TCBins,0,10*TCBins);
4605 fhClusterPtCellAll->GetXaxis()->SetTitle("p_{T} (GeV/c)");
4606 fhClusterPtCellAll->GetYaxis()->SetTitle("Cells");
4607 fhClusterPtCellAll->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}dCells");
4608 fhClusterPtCellAll->Sumw2();
4610 if (fDoNEFSignalOnly == kFALSE)
4612 fhJetNEFInfo = new THnSparseF("fhJetNEFInfo","Jet NEF Information Histogram",fnDimJet,dimJetBins,dimJetLow,dimJetUp);
4613 fhJetNEFInfo->Sumw2();
4615 fhClusterNEFInfo = new THnSparseF("fhClusterNEFInfo","Jet NEF Cluster Information Histogram",fnDimCluster,dimClusterBins,dimClusterLow,dimClusterUp);
4616 fhClusterNEFInfo->Sumw2();
4618 fNEFOutput->Add(fhJetNEFInfo);
4619 fNEFOutput->Add(fhClusterNEFInfo);
4621 fNEFOutput->Add(fhJetNEFSignalInfo);
4622 fNEFOutput->Add(fhClusterNEFSignalInfo);
4623 fNEFOutput->Add(fhClusterShapeAll);
4624 fNEFOutput->Add(fhClusterPtCellAll);
4626 fNEFOutput->Add(fhJetPtNEF);
4627 fOutput->Add(fNEFOutput);
4630 // Add Histos & Profiles to List
4631 fOutput->Add(fh020Rho);
4632 fOutput->Add(fh80100Rho);
4633 fOutput->Add(fhRho);
4634 fOutput->Add(fhRhoCen);
4635 fOutput->Add(fh020BSPt);
4636 fOutput->Add(fh80100BSPt);
4637 fOutput->Add(fhBSPt);
4638 fOutput->Add(fhBSPtCen);
4639 fOutput->Add(fh020BSPtSignal);
4640 fOutput->Add(fh80100BSPtSignal);
4641 fOutput->Add(fhBSPtSignal);
4642 fOutput->Add(fhBSPtCenSignal);
4643 fOutput->Add(fh020DeltaPt);
4644 fOutput->Add(fh80100DeltaPt);
4645 fOutput->Add(fhDeltaPt);
4646 fOutput->Add(fhDeltaPtCen);
4647 fOutput->Add(fh020DeltaPtSignal);
4648 fOutput->Add(fh80100DeltaPtSignal);
4649 fOutput->Add(fhDeltaPtSignal);
4650 fOutput->Add(fhDeltaPtCenSignal);
4651 fOutput->Add(fh020DeltaPtNColl);
4652 fOutput->Add(fh80100DeltaPtNColl);
4653 fOutput->Add(fhDeltaPtNColl);
4654 fOutput->Add(fhDeltaPtCenNColl);
4655 fOutput->Add(fh020BckgFlucPt);
4656 fOutput->Add(fh80100BckgFlucPt);
4657 fOutput->Add(fhBckgFlucPt);
4658 fOutput->Add(fhBckgFlucPtCen);
4659 fOutput->Add(fpRho);
4660 fOutput->Add(fpLJetRho);
4661 fOutput->Add(fhJetPtEtaPhi);
4662 fOutput->Add(fhJetPtArea);
4663 fOutput->Add(fhJetConstituentPt);
4664 fOutput->Add(fhJetTracksPt);
4665 fOutput->Add(fhJetClustersPt);
4666 fOutput->Add(fhJetConstituentCounts);
4667 fOutput->Add(fhJetTracksCounts);
4668 fOutput->Add(fhJetClustersCounts);
4669 fOutput->Add(fhJetPtZConstituent);
4670 fOutput->Add(fhJetPtZTrack);
4671 fOutput->Add(fhJetPtZCluster);
4672 fOutput->Add(fhJetPtZLeadingConstituent);
4673 fOutput->Add(fhJetPtZLeadingTrack);
4674 fOutput->Add(fhJetPtZLeadingCluster);
4675 fOutput->Add(fhEventCentralityVsZNA);
4676 fOutput->Add(fhEventCentralityVsZNAPt);
4679 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetName(const char *name)
4684 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetCentralityTag(TString name)
4686 fCentralityTag = name.Data();
4689 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetCentralityRange(Int_t bins, Double_t low, Double_t up)
4691 fCentralityBins=bins;
4696 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetPtRange(Int_t bins, Double_t low, Double_t up)
4703 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetRhoPtRange(Int_t bins, Double_t low, Double_t up)
4710 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetDeltaPtRange(Int_t bins, Double_t low, Double_t up)
4717 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetBackgroundFluctuationsPtRange(Int_t bins, Double_t low, Double_t up)
4719 fBckgFlucPtBins=bins;
4724 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetLeadingJetPtRange(Int_t bins, Double_t low, Double_t up)
4731 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetLeadingChargedTrackPtRange(Int_t bins, Double_t low, Double_t up)
4733 fLChargedTrackPtBins=bins;
4734 fLChargedTrackPtLow=low;
4735 fLChargedTrackPtUp=up;
4738 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetNEFRange(Int_t bins, Double_t low, Double_t up)
4745 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetSignalTrackPtBias(Bool_t chargedBias)
4747 fSignalTrackBias = chargedBias;
4750 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetNEFJetDimensions(Int_t n)
4755 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetNEFClusterDimensions(Int_t n)
4760 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetRhoValue(Double_t value)
4765 void AliAnalysisTaskFullpAJets::AlipAJetHistos::DoTHnSparse(Bool_t doTHnSparse)
4767 fDoTHnSparse = doTHnSparse;
4770 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillRho(Double_t eventCentrality, Double_t rho)
4774 fhRhoCen->Fill(rho,eventCentrality);
4775 fpRho->Fill(eventCentrality,rho);
4777 if (eventCentrality<=20)
4779 fh020Rho->Fill(rho);
4781 else if (eventCentrality>=80)
4783 fh80100Rho->Fill(rho);
4787 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillBSJS(Double_t eventCentrality, Double_t rho, Double_t signalCut, TClonesArray *jetList, Int_t *indexJetList, Int_t nIndexJetList)
4790 Double_t tempPt=0.0;
4791 Double_t tempChargedHighPt=0.0;
4793 for (i=0;i<nIndexJetList;i++)
4795 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
4796 tempPt=myJet->Pt()-rho*myJet->Area();
4797 tempChargedHighPt = myJet->MaxTrackPt();
4799 fhBSPt->Fill(tempPt);
4800 fhBSPtCen->Fill(tempPt,eventCentrality);
4801 if (eventCentrality<=20)
4803 fh020BSPt->Fill(tempPt);
4805 else if (eventCentrality>=80)
4807 fh80100BSPt->Fill(tempPt);
4809 if (fSignalTrackBias==kTRUE)
4811 if (tempChargedHighPt>=signalCut)
4813 fhBSPtSignal->Fill(tempPt);
4814 fhBSPtCenSignal->Fill(tempPt,eventCentrality);
4815 if (eventCentrality<=20)
4817 fh020BSPtSignal->Fill(tempPt);
4819 else if (eventCentrality>=80)
4821 fh80100BSPtSignal->Fill(tempPt);
4827 if (tempPt>=signalCut)
4829 fhBSPtSignal->Fill(tempPt);
4830 fhBSPtCenSignal->Fill(tempPt,eventCentrality);
4831 if (eventCentrality<=20)
4833 fh020BSPtSignal->Fill(tempPt);
4835 else if (eventCentrality>=80)
4837 fh80100BSPtSignal->Fill(tempPt);
4842 tempChargedHighPt=0.0;
4846 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillDeltaPt(Double_t eventCentrality, Double_t rho, Double_t jetRadius, Double_t *RCArray, Int_t nRC)
4849 Double_t tempPt=0.0;
4853 tempPt=RCArray[i]-rho*TMath::Power(jetRadius,2);
4854 fhDeltaPt->Fill(tempPt);
4855 fhDeltaPtCen->Fill(tempPt,eventCentrality);
4856 if (eventCentrality<=20)
4858 fh020DeltaPt->Fill(tempPt);
4860 else if (eventCentrality>=80)
4862 fh80100DeltaPt->Fill(tempPt);
4868 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillDeltaPtSignal(Double_t eventCentrality, Double_t rho, Double_t jetRadius, Double_t *RCArray, Int_t nRC)
4871 Double_t tempPt=0.0;
4875 tempPt=RCArray[i]-rho*TMath::Power(jetRadius,2);
4876 fhDeltaPtSignal->Fill(tempPt);
4877 fhDeltaPtCenSignal->Fill(tempPt,eventCentrality);
4878 if (eventCentrality<=20)
4880 fh020DeltaPtSignal->Fill(tempPt);
4882 else if (eventCentrality>=80)
4884 fh80100DeltaPtSignal->Fill(tempPt);
4890 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillDeltaPtNColl(Double_t eventCentrality, Double_t rho, Double_t jetRadius, Double_t *RCArray, Int_t nRC)
4893 Double_t tempPt=0.0;
4897 tempPt=RCArray[i]-rho*TMath::Power(jetRadius,2);
4898 fhDeltaPtNColl->Fill(tempPt);
4899 fhDeltaPtCenNColl->Fill(tempPt,eventCentrality);
4900 if (eventCentrality<=20)
4902 fh020DeltaPtNColl->Fill(tempPt);
4904 else if (eventCentrality>=80)
4906 fh80100DeltaPtNColl->Fill(tempPt);
4912 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillBackgroundFluctuations(Double_t eventCentrality, Double_t rho, Double_t jetRadius)
4914 Double_t tempPt=0.0;
4916 tempPt=rho*TMath::Power(jetRadius,2);
4917 fhBckgFlucPt->Fill(tempPt);
4918 fhBckgFlucPtCen->Fill(tempPt,eventCentrality);
4919 if (eventCentrality<=20)
4921 fh020BckgFlucPt->Fill(tempPt);
4923 else if (eventCentrality>=80)
4925 fh80100BckgFlucPt->Fill(tempPt);
4929 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillLeadingJetPtRho(Double_t jetPt, Double_t rho)
4931 fpLJetRho->Fill(jetPt,rho);
4934 void AliAnalysisTaskFullpAJets::AlipAJetHistos::DoNEFQAPlots(Bool_t doNEFAna)
4936 fDoNEFQAPlots = doNEFAna;
4939 void AliAnalysisTaskFullpAJets::AlipAJetHistos::DoNEFSignalOnly(Bool_t doNEFSignalOnly)
4941 fDoNEFSignalOnly = doNEFSignalOnly;
4944 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)
4946 if (fDoNEFQAPlots==kFALSE)
4951 if (fDoTHnSparse == kFALSE)
4957 Double_t tempChargedHighPt=0.0;
4959 for (i=0;i<nIndexJetList;i++)
4961 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
4962 tempChargedHighPt = myJet->MaxTrackPt();
4966 if (fSignalTrackBias==kTRUE)
4968 if (tempChargedHighPt>=signalCut && nef<=nefCut)
4970 fhJetPtNEF->Fill(jetPt,nef);
4975 if (jetPt>=signalCut && nef<=nefCut)
4977 fhJetPtNEF->Fill(jetPt,nef);
4983 tempChargedHighPt=0.0;
4990 Double_t valJet[fnDimJet];
4991 Double_t valCluster[fnDimJet];
4992 for (i=0;i<fnDimJet;i++)
5000 Double_t tempChargedHighPt=0.0;
5004 Int_t chargedMult=0;
5005 Int_t neutralMult=0;
5006 Int_t iSupMod = -1, absId = -1, ieta = -1, iphi = -1;
5007 Bool_t shared = kFALSE;
5009 Double_t zLeading=0.0;
5010 Double_t zLeadingTrack=0.0;
5011 Double_t ECluster=0.0;
5014 Double_t eCross=0.0;
5015 Double_t FCross=0.0;
5017 Double_t lowTime=9.99e99;
5018 Double_t upTime=-9.99e99;
5020 Double_t tempCellTime=0.0;
5022 Double_t event_centrality = event->GetCentrality()->GetCentralityPercentile(fCentralityTag);
5023 valJet[4] = valCluster[4] = event_centrality;
5026 for (i=0;i<nIndexJetList;i++)
5028 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
5029 tempChargedHighPt = myJet->MaxTrackPt();
5034 totalMult=myJet->GetNumberOfConstituents();
5035 chargedMult = myJet->GetNumberOfTracks();
5036 neutralMult=myJet->GetNumberOfClusters();
5037 zLeading=myJet->MaxPartPt()/myJet->Pt();
5038 zLeadingTrack=myJet->MaxTrackPt()/myJet->Pt();
5040 valJet[0] = valCluster[0] = nef;
5041 valJet[1] = valCluster[1] = jetPt;
5042 valJet[2] = valCluster[2] = eta;
5043 valJet[3] = valCluster[3] = phi;
5044 valJet[5] = valCluster[5] = zLeading;
5045 valJet[9] = zLeadingTrack;
5047 valJet[6] = totalMult;
5048 valJet[7] = chargedMult;
5049 valJet[8] = neutralMult;
5051 // Supress filling of this histogram due to memory size of THnSparse when running over large datasets
5052 if (fDoNEFSignalOnly == kFALSE)
5054 fhJetNEFInfo->Fill(valJet);
5057 if (fSignalTrackBias==kTRUE)
5059 if (tempChargedHighPt>=signalCut && nef<=nefCut)
5061 fhJetNEFSignalInfo->Fill(valJet);
5062 fhJetPtNEF->Fill(jetPt,nef);
5067 if (jetPt>=signalCut && nef<=nefCut)
5069 fhJetNEFSignalInfo->Fill(valJet);
5070 fhJetPtNEF->Fill(jetPt,nef);
5074 for (j=0;j<neutralMult;j++)
5076 AliVCluster* vcluster = (AliVCluster*) orgClusterList->At(myJet->ClusterAt(j));
5077 ECluster = vcluster->E();
5078 recoUtils->GetMaxEnergyCell(geometry,cells,vcluster,absId,iSupMod,ieta,iphi,shared);
5079 eSeed = cells->GetCellAmplitude(absId);
5080 tCell = cells->GetCellTime(absId);
5081 eCross = recoUtils->GetECross(absId,tCell,cells,event->GetBunchCrossNumber());
5082 FCross = 1 - eCross/eSeed;
5084 // Obtain Delta t of Cluster
5087 for (k=0;k<vcluster->GetNCells();k++)
5089 tempCellID=vcluster->GetCellAbsId(k);
5090 tempCellTime=cells->GetCellTime(tempCellID);
5091 if (tempCellTime>upTime)
5093 upTime=tempCellTime;
5095 if (tempCellTime<lowTime)
5097 lowTime=tempCellTime;
5100 valCluster[6] = ECluster;
5101 valCluster[7] = FCross;
5102 valCluster[8] = tCell;
5103 valCluster[9] = upTime-lowTime;
5104 valCluster[10] = vcluster->GetNCells();
5106 if (fDoNEFSignalOnly == kFALSE)
5108 fhClusterNEFInfo->Fill(valCluster);
5111 if (fSignalTrackBias==kTRUE)
5113 if (tempChargedHighPt>=signalCut && nef<=nefCut)
5115 fhClusterNEFSignalInfo->Fill(valCluster);
5120 if (myJet->Pt()>=signalCut && nef<=nefCut)
5122 fhClusterNEFSignalInfo->Fill(valCluster);
5131 iSupMod=-1,absId=-1,ieta=-1,iphi=-1;
5136 tempChargedHighPt=0.0;
5147 // Now do Cluster QA
5148 for (i=0;i<clusterList->GetEntries();i++)
5150 AliVCluster *vcluster = (AliVCluster*) clusterList->At(i);
5151 fhClusterShapeAll->Fill(vcluster->GetNCells());
5152 fhClusterPtCellAll->Fill(vcluster->E(),vcluster->GetNCells());
5156 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillMiscJetStats(TClonesArray *jetList, Int_t *indexJetList, Int_t nIndexJetList, TClonesArray *trackList, TClonesArray *clusterList, Double_t *vertex)
5160 TLorentzVector *cluster_vec = new TLorentzVector;
5161 for (i=0;i<nIndexJetList;i++)
5163 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
5165 fhJetPtEtaPhi->Fill(myJet->Pt(),myJet->Eta(),myJet->Phi());
5166 fhJetPtArea->Fill(myJet->Pt(),myJet->Area());
5167 fhJetConstituentCounts->Fill(myJet->Pt(),myJet->GetNumberOfConstituents());
5168 fhJetTracksCounts->Fill(myJet->Pt(),myJet->GetNumberOfTracks());
5169 fhJetClustersCounts->Fill(myJet->Pt(),myJet->GetNumberOfClusters());
5170 fhJetPtZLeadingConstituent->Fill(myJet->Pt(),myJet->MaxPartPt()/myJet->Pt());
5171 fhJetPtZLeadingTrack->Fill(myJet->Pt(),myJet->MaxTrackPt()/myJet->Pt());
5172 fhJetPtZLeadingCluster->Fill(myJet->Pt(),myJet->MaxClusterPt()/myJet->Pt());
5173 for (j=0;j<myJet->GetNumberOfTracks();j++)
5175 AliVTrack *vtrack = (AliVTrack*) myJet->TrackAt(j,trackList);
5176 fhJetConstituentPt->Fill(myJet->Pt(),vtrack->Pt());
5177 fhJetTracksPt->Fill(myJet->Pt(),vtrack->Pt());
5178 fhJetPtZTrack->Fill(myJet->Pt(),vtrack->Pt()/myJet->Pt());
5179 fhJetPtZConstituent->Fill(myJet->Pt(),vtrack->Pt()/myJet->Pt());
5181 for (j=0;j<myJet->GetNumberOfClusters();j++)
5183 AliVCluster *vcluster = (AliVCluster*) myJet->ClusterAt(j,clusterList);
5184 vcluster->GetMomentum(*cluster_vec,vertex);
5185 fhJetConstituentPt->Fill(myJet->Pt(),cluster_vec->Pt());
5186 fhJetClustersPt->Fill(myJet->Pt(),vcluster->E());
5187 fhJetPtZCluster->Fill(myJet->Pt(),cluster_vec->Pt()/myJet->Pt());
5188 fhJetPtZConstituent->Fill(myJet->Pt(),cluster_vec->Pt()/myJet->Pt());
5194 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillJetEventCentrality(Double_t leadingJetPt, AliVEvent *event)
5196 Double_t event_centrality = event->GetCentrality()->GetCentralityPercentile(fCentralityTag);
5197 Double_t event_centrality_ZNA = event->GetCentrality()->GetCentralityPercentile("ZNA");
5199 fhEventCentralityVsZNA->Fill(event_centrality,event_centrality_ZNA);
5200 fhEventCentralityVsZNAPt->Fill(event_centrality,event_centrality_ZNA,leadingJetPt);
5203 TList* AliAnalysisTaskFullpAJets::AlipAJetHistos::GetOutputHistos()
5208 Double_t AliAnalysisTaskFullpAJets::AlipAJetHistos::GetRho()