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),
151 fEMCalPhiMin(1.39626),
152 fEMCalPhiMax(3.26377),
153 fEMCalPhiTotal(1.86750),
160 fTPCPhiTotal(6.28319),
166 fParticlePtUp(200.0),
167 fParticlePtBins(200),
173 fJetAreaCutFrac(0.6),
174 fJetAreaThreshold(0.30159),
180 fNEFSignalJetCut(0.9),
181 fCentralityTag("V0A"),
198 fEMCalJetThreshold(5),
210 fmyAKTChargedJets(0),
217 fEMCalRCBckgFlucSignal(0),
218 fTPCRCBckgFlucSignal(0),
219 fEMCalRCBckgFlucNColl(0),
220 fTPCRCBckgFlucNColl(0)
222 // Dummy constructor ALWAYS needed for I/O.
223 fVertex[0]=0.0,fVertex[1]=0.0,fVertex[2]=0.0;
226 //________________________________________________________________________
227 AliAnalysisTaskFullpAJets::AliAnalysisTaskFullpAJets(const char *name) :
228 AliAnalysisTaskEmcalJet(name),
239 fhComplementaryTrackPt(0),
240 fhComplementaryTrackEta(0),
241 fhComplementaryTrackPhi(0),
246 fhEMCalCellCounts(0),
248 fhChargeAndNeutralEvents(0),
249 fhChargeOnlyEvents(0),
250 fhNeutralOnlyEvents(0),
252 fhEMCalChargeAndNeutralEvents(0),
253 fhEMCalChargeOnlyEvents(0),
254 fhEMCalNeutralOnlyEvents(0),
255 fhEMCalNothingEvents(0),
260 fhGlobalTrackEtaPhi(0),
261 fhGlobalTrackPhiPt(0),
262 fhGlobalTrackEtaPt(0),
263 fhComplementaryTrackEtaPhi(0),
264 fhComplementaryTrackPhiPt(0),
265 fhComplementaryTrackEtaPt(0),
271 fhEMCalTrackEventMult(0),
277 fpClusterPtProfile(0),
279 fpFullJetEDProfile(0),
280 fpChargedJetEDProfile(0),
281 fpChargedJetEDProfileScaled(0),
285 fRhoChargedCMSScale(0),
299 fRhoChargedkTScale(0),
310 fEMCalPartJetUnbiased(0),
331 fEMCalPhiMin(1.39626),
332 fEMCalPhiMax(3.26377),
333 fEMCalPhiTotal(1.86750),
340 fTPCPhiTotal(6.28319),
346 fParticlePtUp(200.0),
347 fParticlePtBins(2000),
353 fJetAreaCutFrac(0.6),
354 fJetAreaThreshold(0.30159),
360 fNEFSignalJetCut(0.9),
361 fCentralityTag("V0A"),
378 fEMCalJetThreshold(5),
390 fmyAKTChargedJets(0),
397 fEMCalRCBckgFlucSignal(0),
398 fTPCRCBckgFlucSignal(0),
399 fEMCalRCBckgFlucNColl(0),
400 fTPCRCBckgFlucNColl(0)
403 // Define input and output slots here (never in the dummy constructor)
404 // Input slot #0 works with a TChain - it is connected to the default input container
405 // Output slot #1 writes into a TH1 container
406 fVertex[0]=0.0,fVertex[1]=0.0,fVertex[2]=0.0;
408 DefineOutput(1,TList::Class()); // for output list
411 //________________________________________________________________________
412 AliAnalysisTaskFullpAJets::~AliAnalysisTaskFullpAJets()
414 // Destructor. Clean-up the output list, but not the histograms that are put inside
415 // (the list is owner and will clean-up these histograms). Protect in PROOF case.
416 if (fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode())
422 //________________________________________________________________________
423 void AliAnalysisTaskFullpAJets::UserCreateOutputObjects()
426 // Called once (on the worker node)
427 fIsInitialized=kFALSE;
428 fOutput = new TList();
429 fOutput->SetOwner(); // IMPORTANT!
431 // Initialize Global Variables
436 // fRJET=4 -> fJetR=0.4 && fRJET=25 -> fJetR=0.25, but for writing files, should be 4 and 25 respectively
439 fJetR=(Double_t)fRJET/100.0;
443 fJetR=(Double_t)fRJET/10.0;
447 fEMCalPhiMin=(80/(double)360)*2*TMath::Pi();
448 fEMCalPhiMax=(187/(double)360)*2*TMath::Pi();
449 fEMCalPhiTotal= fEMCalPhiMax-fEMCalPhiMin;
452 fEMCalEtaTotal=fEMCalEtaMax-fEMCalEtaMin;
453 fEMCalArea=fEMCalPhiTotal*fEMCalEtaTotal;
455 fTPCPhiMin=(0/(double)360)*2*TMath::Pi();
456 fTPCPhiMax=(360/(double)360)*2*TMath::Pi();
457 fTPCPhiTotal= fTPCPhiMax-fTPCPhiMin;
460 fTPCEtaTotal=fTPCEtaMax-fTPCEtaMin;
461 fTPCArea=fTPCPhiTotal*fTPCEtaTotal;
465 fParticlePtBins=Int_t(fParticlePtUp-fParticlePtLow);
470 Int_t CentralityBinMult=10;
472 fJetAreaCutFrac =0.6; // Fudge factor for selecting on jets with threshold Area or higher
473 fJetAreaThreshold=fJetAreaCutFrac*TMath::Pi()*fJetR*fJetR;
474 fTPCJetThreshold=5.0; // Threshold required for an Anti-kT Charged jet to be considered a "true" jet in TPC
475 fEMCalJetThreshold=5.0; // Threshold required for an Anti-kT Charged+Neutral jet to be considered a "true" jet in EMCal
480 fEMCalRCBckgFluc = new Double_t[fnBckgClusters];
481 fTPCRCBckgFluc = new Double_t[fnBckgClusters];
482 fEMCalRCBckgFlucSignal = new Double_t[fnBckgClusters];
483 fTPCRCBckgFlucSignal = new Double_t[fnBckgClusters];
484 fEMCalRCBckgFlucNColl = new Double_t[fnBckgClusters];
485 fTPCRCBckgFlucNColl = new Double_t[fnBckgClusters];
486 for (Int_t i=0;i<fnBckgClusters;i++)
488 fEMCalRCBckgFluc[i]=0.0;
489 fTPCRCBckgFluc[i]=0.0;
490 fEMCalRCBckgFlucSignal[i]=0.0;
491 fTPCRCBckgFlucSignal[i]=0.0;
492 fEMCalRCBckgFlucNColl[i]=0.0;
493 fTPCRCBckgFlucNColl[i]=0.0;
496 fnEMCalCells=12288; // sMods 1-10 have 24x48 cells, sMods 11&12 have 8x48 cells...
506 flTrack = new TList();
507 flTrack->SetName("TrackQA");
510 fhTrackPt = new TH1F("fhTrackPt","p_{T} distribution of tracks in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
511 fhTrackPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
512 fhTrackPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
515 fhTrackPhi = new TH1F("fhTrackPhi","#varphi distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax);
516 fhTrackPhi->GetXaxis()->SetTitle("#varphi");
517 fhTrackPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
520 fhTrackEta = new TH1F("fhTrackEta","#eta distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax);
521 fhTrackEta->GetXaxis()->SetTitle("#eta");
522 fhTrackEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
525 fhTrackEtaPhi = new TH2F("fhTrackEtaPhi","#eta-#varphi distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
526 fhTrackEtaPhi->GetXaxis()->SetTitle("#eta");
527 fhTrackEtaPhi->GetYaxis()->SetTitle("#varphi");
528 fhTrackEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
529 fhTrackEtaPhi->Sumw2();
531 fhTrackPhiPt = new TH2F("fhTrackPhiPt","#varphi-p_{T} distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
532 fhTrackPhiPt->GetXaxis()->SetTitle("#varphi");
533 fhTrackPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
534 fhTrackPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
535 fhTrackPhiPt->Sumw2();
537 fhTrackEtaPt = new TH2F("fhTrackEtaPt","#eta-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
538 fhTrackEtaPt->GetXaxis()->SetTitle("#varphi");
539 fhTrackEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
540 fhTrackEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
541 fhTrackEtaPt->Sumw2();
544 fhGlobalTrackPt = new TH1F("fhGlobalTrackPt","Global p_{T} distribution of tracks in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
545 fhGlobalTrackPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
546 fhGlobalTrackPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
547 fhGlobalTrackPt->Sumw2();
549 fhGlobalTrackPhi = new TH1F("fhGlobalTrackPhi","Global #varphi distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax);
550 fhGlobalTrackPhi->GetXaxis()->SetTitle("#varphi");
551 fhGlobalTrackPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
552 fhGlobalTrackPhi->Sumw2();
554 fhGlobalTrackEta = new TH1F("fhGlobalTrackEta","Global #eta distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax);
555 fhGlobalTrackEta->GetXaxis()->SetTitle("#eta");
556 fhGlobalTrackEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
557 fhGlobalTrackEta->Sumw2();
559 fhGlobalTrackEtaPhi = new TH2F("fhGlobalTrackEtaPhi","Global #eta-#varphi distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
560 fhGlobalTrackEtaPhi->GetXaxis()->SetTitle("#eta");
561 fhGlobalTrackEtaPhi->GetYaxis()->SetTitle("#varphi");
562 fhGlobalTrackEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
563 fhGlobalTrackEtaPhi->Sumw2();
565 fhGlobalTrackPhiPt = new TH2F("fhGlobalTrackPhiPt","Global #varphi-p_{T} distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
566 fhGlobalTrackPhiPt->GetXaxis()->SetTitle("#varphi");
567 fhGlobalTrackPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
568 fhGlobalTrackPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
569 fhGlobalTrackPhiPt->Sumw2();
571 fhGlobalTrackEtaPt = new TH2F("fhGlobalTrackEtaPt","Global #eta-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
572 fhGlobalTrackEtaPt->GetXaxis()->SetTitle("#varphi");
573 fhGlobalTrackEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
574 fhGlobalTrackEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
575 fhGlobalTrackEtaPt->Sumw2();
577 // Complementary Tracks
578 fhComplementaryTrackPt = new TH1F("fhComplementaryTrackPt","Complementary p_{T} distribution of tracks in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
579 fhComplementaryTrackPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
580 fhComplementaryTrackPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
581 fhComplementaryTrackPt->Sumw2();
583 fhComplementaryTrackPhi = new TH1F("fhComplementaryTrackPhi","Complementary #varphi distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax);
584 fhComplementaryTrackPhi->GetXaxis()->SetTitle("#varphi");
585 fhComplementaryTrackPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
586 fhComplementaryTrackPhi->Sumw2();
588 fhComplementaryTrackEta = new TH1F("fhComplementaryTrackEta","Complementary #eta distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax);
589 fhComplementaryTrackEta->GetXaxis()->SetTitle("#eta");
590 fhComplementaryTrackEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
591 fhComplementaryTrackEta->Sumw2();
593 fhComplementaryTrackEtaPhi = new TH2F("fhComplementaryTrackEtaPhi","Complementary #eta-#varphi distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
594 fhComplementaryTrackEtaPhi->GetXaxis()->SetTitle("#eta");
595 fhComplementaryTrackEtaPhi->GetYaxis()->SetTitle("#varphi");
596 fhComplementaryTrackEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
597 fhComplementaryTrackEtaPhi->Sumw2();
599 fhComplementaryTrackPhiPt = new TH2F("fhComplementaryTrackPhiPt","Complementary #varphi-p_{T} distribution of tracks in event",TCBins,fTPCPhiMin,fTPCPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
600 fhComplementaryTrackPhiPt->GetXaxis()->SetTitle("#varphi");
601 fhComplementaryTrackPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
602 fhComplementaryTrackPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
603 fhComplementaryTrackPhiPt->Sumw2();
605 fhComplementaryTrackEtaPt = new TH2F("fhComplementaryTrackEtaPt","Complementary #eta-p_{T} distribution of tracks in event",TCBins,fTPCEtaMin,fTPCEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
606 fhComplementaryTrackEtaPt->GetXaxis()->SetTitle("#varphi");
607 fhComplementaryTrackEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
608 fhComplementaryTrackEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
609 fhComplementaryTrackEtaPt->Sumw2();
611 fhTPCEventMult = new TH2F("fhTPCEventMult","TPC Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp,multBins,multLow,multUp);
612 fhTPCEventMult->GetXaxis()->SetTitle(fCentralityTag.Data());
613 fhTPCEventMult->GetYaxis()->SetTitle("Multiplicity");
614 fhTPCEventMult->GetZaxis()->SetTitle("1/N_{Events} dN/dCentdN_{Charged}");
615 fhTPCEventMult->Sumw2();
617 fhEMCalTrackEventMult = new TH2F("fhEMCalTrackEventMult","EMCal Track Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp,multBins,multLow,multUp);
618 fhEMCalTrackEventMult->GetXaxis()->SetTitle(fCentralityTag.Data());
619 fhEMCalTrackEventMult->GetYaxis()->SetTitle("Multiplicity");
620 fhEMCalTrackEventMult->GetZaxis()->SetTitle("1/N_{Events} dN/dCentdN_{Neutral}");
621 fhEMCalTrackEventMult->Sumw2();
623 fpTPCEventMult = new TProfile("fpTPCEventMult","TPC Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp);
624 fpTPCEventMult->GetXaxis()->SetTitle(fCentralityTag.Data());
625 fpTPCEventMult->GetYaxis()->SetTitle("Multiplicity");
627 // QA::2D Energy Density Profiles for Tracks and Clusters
628 fpTrackPtProfile = new TProfile2D("fpTrackPtProfile","2D Profile of track pT density throughout the TPC",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax);
629 fpTrackPtProfile->GetXaxis()->SetTitle("#eta");
630 fpTrackPtProfile->GetYaxis()->SetTitle("#varphi");
631 fpTrackPtProfile->GetZaxis()->SetTitle("p_{T} density (GeV/Area)");
633 flTrack->Add(fhTrackPt);
634 flTrack->Add(fhTrackEta);
635 flTrack->Add(fhTrackPhi);
636 flTrack->Add(fhTrackEtaPhi);
637 flTrack->Add(fhTrackPhiPt);
638 flTrack->Add(fhTrackEtaPt);
639 flTrack->Add(fhGlobalTrackPt);
640 flTrack->Add(fhGlobalTrackEta);
641 flTrack->Add(fhGlobalTrackPhi);
642 flTrack->Add(fhGlobalTrackEtaPhi);
643 flTrack->Add(fhGlobalTrackPhiPt);
644 flTrack->Add(fhGlobalTrackEtaPt);
645 flTrack->Add(fhComplementaryTrackPt);
646 flTrack->Add(fhComplementaryTrackEta);
647 flTrack->Add(fhComplementaryTrackPhi);
648 flTrack->Add(fhComplementaryTrackEtaPhi);
649 flTrack->Add(fhComplementaryTrackPhiPt);
650 flTrack->Add(fhComplementaryTrackEtaPt);
651 flTrack->Add(fhTPCEventMult);
652 flTrack->Add(fhEMCalTrackEventMult);
653 flTrack->Add(fpTPCEventMult);
654 flTrack->Add(fpTrackPtProfile);
655 fOutput->Add(flTrack);
658 if (fClusterQA==kTRUE)
660 flCluster = new TList();
661 flCluster->SetName("ClusterQA");
663 fhClusterPt = new TH1F("fhClusterPt","p_{T} distribution of clusters in event",10*fParticlePtBins,fParticlePtLow,fParticlePtUp);
664 fhClusterPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
665 fhClusterPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}");
666 fhClusterPt->Sumw2();
668 fhClusterPhi = new TH1F("fhClusterPhi","#varphi distribution of clusters in event",TCBins,fTPCPhiMin,fTPCPhiMax);
669 fhClusterPhi->GetXaxis()->SetTitle("#varphi");
670 fhClusterPhi->GetYaxis()->SetTitle("1/N_{Events} dN/d#varphi");
671 fhClusterPhi->Sumw2();
673 fhClusterEta = new TH1F("fhClusterEta","#eta distribution of clusters in event",TCBins,fTPCEtaMin,fTPCEtaMax);
674 fhClusterEta->GetXaxis()->SetTitle("#eta");
675 fhClusterEta->GetYaxis()->SetTitle("1/N_{Events} dN/d#eta");
676 fhClusterEta->Sumw2();
678 fhClusterEtaPhi = new TH2F("fhClusterEtaPhi","#eta-#varphi distribution of clusters in event",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax);
679 fhClusterEtaPhi->GetXaxis()->SetTitle("#eta");
680 fhClusterEtaPhi->GetYaxis()->SetTitle("#varphi");
681 fhClusterEtaPhi->GetZaxis()->SetTitle("1/N_{Events} dN/d#etad#varphi");
682 fhClusterEtaPhi->Sumw2();
684 fhClusterPhiPt = new TH2F("fhClusterPhiPt","#varphi-p_{T} distribution of clusters in event",TCBins,fEMCalPhiMin,fEMCalPhiMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
685 fhClusterPhiPt->GetXaxis()->SetTitle("#varphi");
686 fhClusterPhiPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
687 fhClusterPhiPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#varphidp_{T}");
688 fhClusterPhiPt->Sumw2();
690 fhClusterEtaPt = new TH2F("fhClusterEtaPt","#eta-p_{T} distribution of clusters in event",TCBins,fEMCalEtaMin,fEMCalEtaMax,fParticlePtBins,fParticlePtLow,fParticlePtUp);
691 fhClusterEtaPt->GetXaxis()->SetTitle("#varphi");
692 fhClusterEtaPt->GetYaxis()->SetTitle("p_{T} (GeV/c)");
693 fhClusterEtaPt->GetZaxis()->SetTitle("1/N_{Events} dN/d#etadp_{T}");
694 fhClusterEtaPt->Sumw2();
696 fhEMCalEventMult = new TH2F("fhEMCalEventMult","EMCal Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp,multBins,multLow,multUp);
697 fhEMCalEventMult->GetXaxis()->SetTitle(fCentralityTag.Data());
698 fhEMCalEventMult->GetYaxis()->SetTitle("Multiplicity");
699 fhEMCalEventMult->GetZaxis()->SetTitle("1/N_{Events} dN/dCentdN_{Neutral}");
700 fhEMCalEventMult->Sumw2();
702 fpEMCalEventMult = new TProfile("fpEMCalEventMult","EMCal Event Multiplcity vs Centrality",CentralityBinMult*fCentralityBins,fCentralityLow,fCentralityUp);
703 fpEMCalEventMult->GetXaxis()->SetTitle(fCentralityTag.Data());
704 fpEMCalEventMult->GetYaxis()->SetTitle("Multiplicity");
706 fpClusterPtProfile = new TProfile2D("fpClusterPtProfile","2D Profile of cluster pT density throughout the EMCal",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax);
707 fpClusterPtProfile->GetXaxis()->SetTitle("#eta");
708 fpClusterPtProfile->GetYaxis()->SetTitle("#varphi");
709 fpClusterPtProfile->GetZaxis()->SetTitle("p_{T} density (GeV/Area)");
711 fhEMCalCellCounts = new TH1F("fhEMCalCellCounts","Distribtuion of cluster counts across the EMCal",fnEMCalCells,1,fnEMCalCells);
712 fhEMCalCellCounts->GetXaxis()->SetTitle("Absoulute Cell Id");
713 fhEMCalCellCounts->GetYaxis()->SetTitle("Counts per Event");
714 fhEMCalCellCounts->Sumw2();
716 flCluster->Add(fhClusterPt);
717 flCluster->Add(fhClusterEta);
718 flCluster->Add(fhClusterPhi);
719 flCluster->Add(fhClusterEtaPhi);
720 flCluster->Add(fhClusterPhiPt);
721 flCluster->Add(fhClusterEtaPt);
722 flCluster->Add(fhEMCalEventMult);
723 flCluster->Add(fpEMCalEventMult);
724 flCluster->Add(fpClusterPtProfile);
725 flCluster->Add(fhEMCalCellCounts);
726 fOutput->Add(flCluster);
729 if (fCalculateRhoJet>=0 && fMCPartLevel==kFALSE) // Default Rho & Raw Jet Spectra
731 fEMCalRawJets = new AlipAJetHistos("EMCalRawJets",fCentralityTag.Data());
733 fRhoChargedCMSScale = new AlipAJetHistos("RhoChargedCMSScale",fCentralityTag.Data(),fDoNEF,fDoNEFSignalOnly,fDoTHnSparse);
734 fRhoChargedCMSScale->SetSignalTrackPtBias(fSignalTrackBias);
735 fOutput->Add(fEMCalRawJets->GetOutputHistos());
736 fOutput->Add(fRhoChargedCMSScale->GetOutputHistos());
739 if (fCalculateRhoJet>=1) // Basic Rho & Raw Jet Spectra
741 fRhoChargedScale = new AlipAJetHistos("RhoChargedScale",fCentralityTag.Data());
742 fRhoChargedScale->SetSignalTrackPtBias(fSignalTrackBias);
744 if (fMCPartLevel==kTRUE)
746 fTPCRawJets = new AlipAJetHistos("TPCRawJets",fCentralityTag.Data());
747 fRhoChargedCMS = new AlipAJetHistos("RhoChargedCMS",fCentralityTag.Data());
748 fRhoChargedCMS->SetSignalTrackPtBias(fSignalTrackBias);
750 fOutput->Add(fTPCRawJets->GetOutputHistos());
751 fOutput->Add(fRhoChargedCMS->GetOutputHistos());
754 Double_t fullEDR = fFullEDJetR *100;
755 Double_t chargedEDR = fChargedEDJetR *100;
756 const Int_t fullEDBins = (Int_t) fullEDR;
757 const Int_t chargedEDBins = (Int_t) chargedEDR;
759 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);
760 fpFullJetEDProfile->GetXaxis()->SetTitle("p_{T,jet}^{ch+em} (GeV)");
761 fpFullJetEDProfile->GetYaxis()->SetTitle(fCentralityTag.Data());
762 fpFullJetEDProfile->GetZaxis()->SetTitle("R");
764 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);
765 fpChargedJetEDProfile->GetXaxis()->SetTitle("p_{T,jet}^{ch} (GeV)");
766 fpChargedJetEDProfile->GetYaxis()->SetTitle(fCentralityTag.Data());
767 fpChargedJetEDProfile->GetZaxis()->SetTitle("R");
769 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);
770 fpChargedJetEDProfileScaled->GetXaxis()->SetTitle("p_{T,jet}^{ch} (GeV)");
771 fpChargedJetEDProfileScaled->GetYaxis()->SetTitle(fCentralityTag.Data());
772 fpChargedJetEDProfileScaled->GetZaxis()->SetTitle("R");
774 fOutput->Add(fRhoChargedScale->GetOutputHistos());
775 fOutput->Add(fpFullJetEDProfile);
776 fOutput->Add(fpChargedJetEDProfile);
777 fOutput->Add(fpChargedJetEDProfileScaled);
779 if (fCalculateRhoJet>=2 && fMCPartLevel==kFALSE) // Charged Rho & Raw Jet Spectra
781 fTPCRawJets = new AlipAJetHistos("TPCRawJets",fCentralityTag.Data());
782 fRhoChargedCMS = new AlipAJetHistos("RhoChargedCMS",fCentralityTag.Data());
783 fRhoChargedCMS->SetSignalTrackPtBias(fSignalTrackBias);
785 fOutput->Add(fTPCRawJets->GetOutputHistos());
786 fOutput->Add(fRhoChargedCMS->GetOutputHistos());
788 if (fCalculateRhoJet>=3 && fMCPartLevel==kFALSE) // Basic Rho & Raw Jet Spectra
790 fRhoFull0 = new AlipAJetHistos("RhoFull0",fCentralityTag.Data());
791 fRhoFull0->SetSignalTrackPtBias(fSignalTrackBias);
792 fRhoFull1 = new AlipAJetHistos("RhoFull1",fCentralityTag.Data());
793 fRhoFull1->SetSignalTrackPtBias(fSignalTrackBias);
794 fRhoFull2 = new AlipAJetHistos("RhoFull2",fCentralityTag.Data());
795 fRhoFull2->SetSignalTrackPtBias(fSignalTrackBias);
796 fRhoFullN = new AlipAJetHistos("RhoFullN",fCentralityTag.Data());
797 fRhoFullN->SetSignalTrackPtBias(fSignalTrackBias);
798 fRhoFullDijet = new AlipAJetHistos("RhoFullDijet",fCentralityTag.Data());
799 fRhoFullDijet->SetSignalTrackPtBias(fSignalTrackBias);
800 fRhoFullkT = new AlipAJetHistos("RhoFullkT",fCentralityTag.Data());
801 fRhoFullkT->SetSignalTrackPtBias(fSignalTrackBias);
802 fRhoFullCMS = new AlipAJetHistos("RhoFullCMS",fCentralityTag.Data());
803 fRhoFullCMS->SetSignalTrackPtBias(fSignalTrackBias);
804 fRhoCharged0 = new AlipAJetHistos("RhoCharged0",fCentralityTag.Data());
805 fRhoCharged0->SetSignalTrackPtBias(fSignalTrackBias);
806 fRhoCharged1 = new AlipAJetHistos("RhoCharged1",fCentralityTag.Data());
807 fRhoCharged1->SetSignalTrackPtBias(fSignalTrackBias);
808 fRhoCharged2 = new AlipAJetHistos("RhoCharged2",fCentralityTag.Data());
809 fRhoCharged2->SetSignalTrackPtBias(fSignalTrackBias);
810 fRhoChargedN = new AlipAJetHistos("RhoChargedN",fCentralityTag.Data());
811 fRhoChargedN->SetSignalTrackPtBias(fSignalTrackBias);
812 fRhoChargedkT = new AlipAJetHistos("RhoChargedkT",fCentralityTag.Data());
813 fRhoChargedkT->SetSignalTrackPtBias(fSignalTrackBias);
814 fRhoChargedkTScale = new AlipAJetHistos("RhoChargedkTScale",fCentralityTag.Data());
815 fRhoChargedkTScale->SetSignalTrackPtBias(fSignalTrackBias);
817 fOutput->Add(fRhoFull0->GetOutputHistos());
818 fOutput->Add(fRhoFull1->GetOutputHistos());
819 fOutput->Add(fRhoFull2->GetOutputHistos());
820 fOutput->Add(fRhoFullN->GetOutputHistos());
821 fOutput->Add(fRhoFullDijet->GetOutputHistos());
822 fOutput->Add(fRhoFullkT->GetOutputHistos());
823 fOutput->Add(fRhoFullCMS->GetOutputHistos());
824 fOutput->Add(fRhoCharged0->GetOutputHistos());
825 fOutput->Add(fRhoCharged1->GetOutputHistos());
826 fOutput->Add(fRhoCharged2->GetOutputHistos());
827 fOutput->Add(fRhoChargedN->GetOutputHistos());
828 fOutput->Add(fRhoChargedkT->GetOutputHistos());
829 fOutput->Add(fRhoChargedkTScale->GetOutputHistos());
832 fhCentrality = new TH1F("fhCentrality","Event Centrality Distribution",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
833 fhCentrality->GetXaxis()->SetTitle(fCentralityTag.Data());
834 fhCentrality->GetYaxis()->SetTitle("1/N_{Events}");
835 fhCentrality->Sumw2();
837 fOutput->Add(fhCentrality);
839 if (fMCPartLevel == kFALSE)
841 fhChargeAndNeutralEvents = new TH1F("fhChargeAndNeutralEvents","Events with n_{tracks}>0 & n_{clusters}>0 vs Centrality",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
842 fhChargeAndNeutralEvents->GetXaxis()->SetTitle(fCentralityTag.Data());
843 fhChargeAndNeutralEvents->GetYaxis()->SetTitle("1/N_{Events}");
844 fhChargeAndNeutralEvents->Sumw2();
846 fhChargeOnlyEvents = new TH1F("fhChargeOnlyEvents","Events with n_{tracks}>0 & n_{clusters}=0 vs Centrality",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
847 fhChargeOnlyEvents->GetXaxis()->SetTitle(fCentralityTag.Data());
848 fhChargeOnlyEvents->GetYaxis()->SetTitle("1/N_{Events}");
849 fhChargeOnlyEvents->Sumw2();
851 fhNeutralOnlyEvents = new TH1F("fhNeutralOnlyEvents","Events with n_{tracks}=0 & n_{clusters}>0 vs Centrality",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
852 fhNeutralOnlyEvents->GetXaxis()->SetTitle(fCentralityTag.Data());
853 fhNeutralOnlyEvents->GetYaxis()->SetTitle("1/N_{Events}");
854 fhNeutralOnlyEvents->Sumw2();
856 fhNothingEvents = new TH1F("fhNothingEvents","Events with n_{tracks}=n_{clusters}=0 vs Centrality",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
857 fhNothingEvents->GetXaxis()->SetTitle(fCentralityTag.Data());
858 fhNothingEvents->GetYaxis()->SetTitle("1/N_{Events}");
859 fhNothingEvents->Sumw2();
861 fhEMCalChargeAndNeutralEvents = new TH1F("fhEMCalChargeAndNeutralEvents","Events with n_{emcal tracks}>0 & n_{clusters}>0 vs Centrality",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
862 fhEMCalChargeAndNeutralEvents->GetXaxis()->SetTitle(fCentralityTag.Data());
863 fhEMCalChargeAndNeutralEvents->GetYaxis()->SetTitle("1/N_{Events}");
864 fhEMCalChargeAndNeutralEvents->Sumw2();
866 fhEMCalChargeOnlyEvents = new TH1F("fhEMCalChargeOnlyEvents","Events with n_{emcal tracks}>0 & n_{clusters}=0 vs Centrality",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
867 fhEMCalChargeOnlyEvents->GetXaxis()->SetTitle(fCentralityTag.Data());
868 fhEMCalChargeOnlyEvents->GetYaxis()->SetTitle("1/N_{Events}");
869 fhEMCalChargeOnlyEvents->Sumw2();
871 fhEMCalNeutralOnlyEvents = new TH1F("fhEMCalNeutralOnlyEvents","Events with n_{tracks}>0 & n_{emcal tracks}=0 & n_{clusters}>0 vs Centrality",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
872 fhEMCalNeutralOnlyEvents->GetXaxis()->SetTitle(fCentralityTag.Data());
873 fhEMCalNeutralOnlyEvents->GetYaxis()->SetTitle("1/N_{Events}");
874 fhEMCalNeutralOnlyEvents->Sumw2();
876 fhEMCalNothingEvents = new TH1F("fhEMCalNothingEvents","Events with n_{emcal tracks}=n_{clusters}=0 vs Centrality",fCentralityBins*CentralityBinMult,fCentralityLow,fCentralityUp);
877 fhEMCalNothingEvents->GetXaxis()->SetTitle(fCentralityTag.Data());
878 fhEMCalNothingEvents->GetYaxis()->SetTitle("1/N_{Events}");
879 fhEMCalNothingEvents->Sumw2();
881 fOutput->Add(fhChargeAndNeutralEvents);
882 fOutput->Add(fhChargeOnlyEvents);
883 fOutput->Add(fhNeutralOnlyEvents);
884 fOutput->Add(fhNothingEvents);
885 fOutput->Add(fhEMCalChargeAndNeutralEvents);
886 fOutput->Add(fhEMCalChargeOnlyEvents);
887 fOutput->Add(fhEMCalNeutralOnlyEvents);
888 fOutput->Add(fhEMCalNothingEvents);
891 // Post data for ALL output slots >0 here,
892 // To get at least an empty histogram
893 // 1 is the outputnumber of a certain weg of task 1
894 PostData(1, fOutput);
897 void AliAnalysisTaskFullpAJets::UserExecOnce()
899 // Get the event tracks
900 fOrgTracks = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fTrackName));
902 // Get the event caloclusters
903 fOrgClusters = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fClusName));
906 fmyKTChargedJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fkTChargedName));
907 fmyAKTChargedJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fAkTChargedName));
910 fmyKTFullJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fkTFullName));
911 fmyAKTFullJets = dynamic_cast <TClonesArray*>(InputEvent()->FindListObject(fAkTFullName));
913 fIsInitialized=kTRUE;
915 //________________________________________________________________________
916 void AliAnalysisTaskFullpAJets::UserExec(Option_t *)
918 if (fIsInitialized==kFALSE)
923 // Get pointer to reconstructed event
924 fEvent = InputEvent();
927 AliError("Pointer == 0, this can not happen!");
931 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(fEvent);
932 AliAODEvent* aod = dynamic_cast<AliAODEvent*>(fEvent);
934 fRecoUtil = new AliEMCALRecoUtils();
935 fEMCALGeometry = AliEMCALGeometry::GetInstance();
939 fEventCentrality=esd->GetCentrality()->GetCentralityPercentile(fCentralityTag.Data());
941 if (fDoVertexRCut == kTRUE)
943 // Vertex R cut not done in AliAnalysisTaskEmcal
944 if (TMath::Sqrt(TMath::Power(esd->GetPrimaryVertex()->GetX(),2)+TMath::Power(esd->GetPrimaryVertex()->GetY(),2))>fVertexMaxR)
950 esd->GetPrimaryVertex()->GetXYZ(fVertex);
951 fCells = (AliVCaloCells*) esd->GetEMCALCells();
952 fnCaloClusters = esd->GetNumberOfCaloClusters();
956 fEventCentrality=aod->GetCentrality()->GetCentralityPercentile(fCentralityTag.Data());
958 if (fDoVertexRCut == kTRUE)
960 // Vertex R cut not done in AliAnalysisTaskEmcal
961 if (TMath::Sqrt(TMath::Power(aod->GetPrimaryVertex()->GetX(),2)+TMath::Power(aod->GetPrimaryVertex()->GetY(),2))>fVertexMaxR)
967 aod->GetPrimaryVertex()->GetXYZ(fVertex);
968 fCells = (AliVCaloCells*) aod->GetEMCALCells();
969 fnCaloClusters = aod->GetNumberOfCaloClusters();
973 AliError("Cannot get AOD/ESD event. Rejecting Event");
977 // Make sure Centrality isn't exactly 100% (to avoid bin filling errors in profile plots. Make it 99.99
978 if (fEventCentrality>99.99)
980 fEventCentrality=99.99;
982 fhCentrality->Fill(fEventCentrality); // Counts total events
988 // Reject any event that doesn't have any tracks, i.e. TPC is off
993 fhTPCEventMult->Fill(fEventCentrality,0.0);
994 fpTPCEventMult->Fill(fEventCentrality,0.0);
995 fhEMCalTrackEventMult->Fill(fEventCentrality,0.0);
997 AliWarning("No PicoTracks, Rejecting Event");
1003 AliInfo("No Corrected CaloClusters, using only charged jets");
1005 if (fTrackQA==kTRUE)
1010 GenerateTPCRandomConesPt();
1012 if (fClusterQA==kTRUE)
1014 fhEMCalEventMult->Fill(fEventCentrality,0.0);
1015 fpEMCalEventMult->Fill(fEventCentrality,0.0);
1019 if (fCalculateRhoJet>=1)
1021 ChargedJetEnergyDensityProfile();
1023 if (fMCPartLevel==kTRUE)
1025 EstimateChargedRhoCMS();
1028 if (fCalculateRhoJet>=2 && fMCPartLevel==kFALSE)
1030 EstimateChargedRhoCMS();
1032 if (fCalculateRhoJet>=3 && fMCPartLevel==kFALSE)
1034 EstimateChargedRho0();
1035 EstimateChargedRho1();
1036 EstimateChargedRho2();
1037 EstimateChargedRhoN();
1038 EstimateChargedRhokT();
1041 DeleteJetData(kFALSE);
1045 PostData(1, fOutput);
1049 if (fTrackQA==kTRUE)
1053 if (fClusterQA==kTRUE)
1061 GenerateTPCRandomConesPt();
1062 GenerateEMCalRandomConesPt();
1064 if (fCalculateRhoJet>=0)
1066 EstimateChargedRhoCMSScale();
1068 if (fCalculateRhoJet>=1)
1070 EstimateChargedRhoScale();
1071 ChargedJetEnergyDensityProfile();
1072 FullJetEnergyDensityProfile();
1074 if (fCalculateRhoJet>=2)
1076 EstimateChargedRhoCMS();
1078 if (fCalculateRhoJet>=3)
1080 EstimateChargedRho0();
1081 EstimateChargedRho1();
1082 EstimateChargedRho2();
1083 EstimateChargedRhoN();
1084 EstimateChargedRhokT();
1090 EstimateFullRhokT();
1091 EstimateFullRhoCMS();
1093 EstimateChargedRhokTScale();
1096 if (IsDiJetEvent()==kTRUE)
1098 EstimateFullRhoDijet();
1102 // Delete Dynamic Arrays
1103 DeleteJetData(kTRUE);
1107 PostData(1, fOutput);
1110 //________________________________________________________________________
1111 void AliAnalysisTaskFullpAJets::Terminate(Option_t *) //specify what you want to have done
1113 // Called once at the end of the query. Done nothing here.
1116 /////////////////////////////////////////////////////////////////////////////////////////
1117 ///////////////// User Defined Sub_Routines ///////////////////////////////////////
1118 /////////////////////////////////////////////////////////////////////////////////////////
1120 void AliAnalysisTaskFullpAJets::TrackCuts()
1122 // Fill a TObjArray with the tracks from a TClonesArray which grabs the picotracks.
1126 fmyTracks = new TObjArray();
1127 for (i=0;i<fOrgTracks->GetEntries();i++)
1129 AliVTrack* vtrack = (AliVTrack*) fOrgTracks->At(i);
1130 if (vtrack->Pt()>=fTrackMinPt)
1132 fmyTracks->Add(vtrack);
1133 if (IsInEMCal(vtrack->Phi(),vtrack->Eta()) == kTRUE)
1139 fnTracks = fmyTracks->GetEntries();
1143 void AliAnalysisTaskFullpAJets::ClusterCuts()
1145 // Fill a TObjArray with the clusters from a TClonesArray which grabs the caloclusterscorr.
1148 fmyClusters = new TObjArray();
1149 TLorentzVector *cluster_vec = new TLorentzVector;
1150 for (i=0;i<fOrgClusters->GetEntries();i++)
1152 AliVCluster* vcluster = (AliVCluster*) fOrgClusters->At(i);
1153 vcluster->GetMomentum(*cluster_vec,fVertex);
1155 if (cluster_vec->Pt()>=fClusterMinPt && vcluster->IsEMCAL()==kTRUE)
1157 fmyClusters->Add(vcluster);
1160 fnClusters = fmyClusters->GetEntries();
1164 void AliAnalysisTaskFullpAJets::EventCounts()
1167 if (fMCPartLevel == kTRUE)
1177 fhChargeAndNeutralEvents->Fill(fEventCentrality);
1181 fhChargeOnlyEvents->Fill(fEventCentrality);
1183 if (fnEMCalTracks>0)
1187 fhEMCalChargeAndNeutralEvents->Fill(fEventCentrality);
1191 fhEMCalChargeOnlyEvents->Fill(fEventCentrality);
1198 fhEMCalNeutralOnlyEvents->Fill(fEventCentrality);
1202 fhEMCalNothingEvents->Fill(fEventCentrality);
1210 fhNeutralOnlyEvents->Fill(fEventCentrality);
1214 fhNothingEvents->Fill(fEventCentrality);
1219 void AliAnalysisTaskFullpAJets::TrackHisto()
1221 // Fill track histograms: Phi,Eta,Pt
1224 TH2F *hdummypT= new TH2F("hdummypT","",TCBins,fTPCEtaMin,fTPCEtaMax,TCBins,fTPCPhiMin,fTPCPhiMax); //!
1226 for (i=0;i<fnTracks;i++)
1228 AliPicoTrack* vtrack = (AliPicoTrack*) fmyTracks->At(i);
1229 fhTrackPt->Fill(vtrack->Pt());
1230 fhTrackEta->Fill(vtrack->Eta());
1231 fhTrackPhi->Fill(vtrack->Phi());
1232 fhTrackEtaPhi->Fill(vtrack->Eta(),vtrack->Phi());
1233 fhTrackPhiPt->Fill(vtrack->Phi(),vtrack->Pt());
1234 fhTrackEtaPt->Fill(vtrack->Eta(),vtrack->Pt());
1236 // Fill Associated Track Distributions for AOD QA Productions
1238 if (vtrack->GetTrackType()==0)
1240 fhGlobalTrackPt->Fill(vtrack->Pt());
1241 fhGlobalTrackEta->Fill(vtrack->Eta());
1242 fhGlobalTrackPhi->Fill(vtrack->Phi());
1243 fhGlobalTrackEtaPhi->Fill(vtrack->Eta(),vtrack->Phi());
1244 fhGlobalTrackPhiPt->Fill(vtrack->Phi(),vtrack->Pt());
1245 fhGlobalTrackEtaPt->Fill(vtrack->Eta(),vtrack->Pt());
1247 // Complementary Tracks
1248 else if (vtrack->GetTrackType()==1)
1250 fhComplementaryTrackPt->Fill(vtrack->Pt());
1251 fhComplementaryTrackEta->Fill(vtrack->Eta());
1252 fhComplementaryTrackPhi->Fill(vtrack->Phi());
1253 fhComplementaryTrackEtaPhi->Fill(vtrack->Eta(),vtrack->Phi());
1254 fhComplementaryTrackPhiPt->Fill(vtrack->Phi(),vtrack->Pt());
1255 fhComplementaryTrackEtaPt->Fill(vtrack->Eta(),vtrack->Pt());
1257 hdummypT->Fill(vtrack->Eta(),vtrack->Phi(),vtrack->Pt());
1259 for (i=1;i<=TCBins;i++)
1261 for (j=1;j<=TCBins;j++)
1263 fpTrackPtProfile->Fill(hdummypT->GetXaxis()->GetBinCenter(i),hdummypT->GetYaxis()->GetBinCenter(j),fTPCArea*TMath::Power(TCBins,-2)*hdummypT->GetBinContent(i,j));
1269 void AliAnalysisTaskFullpAJets::ClusterHisto()
1271 // Fill cluster histograms: Phi,Eta,Pt
1274 TH2F *hdummypT= new TH2F("hdummypT","",TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax); //!
1276 TLorentzVector *cluster_vec = new TLorentzVector;
1278 for (i=0;i<fnClusters;i++)
1280 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
1281 vcluster->GetMomentum(*cluster_vec,fVertex);
1283 fhClusterPt->Fill(cluster_vec->Pt());
1284 fhClusterEta->Fill(cluster_vec->Eta());
1285 fhClusterPhi->Fill(cluster_vec->Phi());
1286 fhClusterEtaPhi->Fill(cluster_vec->Eta(),cluster_vec->Phi());
1287 fhClusterPhiPt->Fill(cluster_vec->Phi(),cluster_vec->Pt());
1288 fhClusterEtaPt->Fill(cluster_vec->Eta(),cluster_vec->Pt());
1289 hdummypT->Fill(cluster_vec->Eta(),cluster_vec->Phi(),cluster_vec->Pt());
1290 fEMCALGeometry->GetAbsCellIdFromEtaPhi(cluster_vec->Eta(),cluster_vec->Phi(),myCellID);
1291 fhEMCalCellCounts->Fill(myCellID);
1293 for (i=1;i<=TCBins;i++)
1295 for (j=1;j<=TCBins;j++)
1297 fpClusterPtProfile->Fill(hdummypT->GetXaxis()->GetBinCenter(i),hdummypT->GetYaxis()->GetBinCenter(j),fEMCalArea*TMath::Power(TCBins,-2)*hdummypT->GetBinContent(i,j));
1304 void AliAnalysisTaskFullpAJets::InitChargedJets()
1306 // Preliminary Jet Placement and Selection Cuts
1309 fnAKTChargedJets = fmyAKTChargedJets->GetEntries();
1310 fnKTChargedJets = fmyKTChargedJets->GetEntries();
1312 fTPCJet = new AlipAJetData("fTPCJet",kFALSE,fnAKTChargedJets);
1313 fTPCFullJet = new AlipAJetData("fTPCFullJet",kFALSE,fnAKTChargedJets);
1314 fTPCOnlyJet = new AlipAJetData("fTPCOnlyJet",kFALSE,fnAKTChargedJets);
1315 fTPCJetUnbiased = new AlipAJetData("fTPCJetUnbiased",kFALSE,fnAKTChargedJets);
1317 fTPCJet->SetSignalCut(fTPCJetThreshold);
1318 fTPCJet->SetAreaCutFraction(fJetAreaCutFrac);
1319 fTPCJet->SetJetR(fJetR);
1320 fTPCJet->SetSignalTrackPtBias(fSignalTrackBias);
1321 fTPCFullJet->SetSignalCut(fTPCJetThreshold);
1322 fTPCFullJet->SetAreaCutFraction(fJetAreaCutFrac);
1323 fTPCFullJet->SetJetR(fJetR);
1324 fTPCFullJet->SetSignalTrackPtBias(fSignalTrackBias);
1325 fTPCOnlyJet->SetSignalCut(fTPCJetThreshold);
1326 fTPCOnlyJet->SetAreaCutFraction(fJetAreaCutFrac);
1327 fTPCOnlyJet->SetJetR(fJetR);
1328 fTPCOnlyJet->SetSignalTrackPtBias(fSignalTrackBias);
1329 fTPCJetUnbiased->SetSignalCut(fTPCJetThreshold);
1330 fTPCJetUnbiased->SetAreaCutFraction(fJetAreaCutFrac);
1331 fTPCJetUnbiased->SetJetR(fJetR);
1332 fTPCJetUnbiased->SetSignalTrackPtBias(kFALSE);
1334 // Initialize Jet Data
1335 for (i=0;i<fnAKTChargedJets;i++)
1337 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(i);
1339 fTPCJet->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kFALSE),i);
1340 fTPCFullJet->SetIsJetInArray(IsInTPC(fJetRAccept,myJet->Phi(),myJet->Eta(),kTRUE),i);
1341 fTPCOnlyJet->SetIsJetInArray(IsInTPCFull(fJetR,myJet->Phi(),myJet->Eta()),i);
1342 fTPCJetUnbiased->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kFALSE),i);
1344 fTPCJet->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1345 fTPCFullJet->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1346 fTPCOnlyJet->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1347 fTPCJetUnbiased->InitializeJetData(fmyAKTChargedJets,fnAKTChargedJets);
1350 fTPCkTFullJet = new AlipAJetData("fTPCkTFullJet",kFALSE,fnKTChargedJets);
1351 fTPCkTFullJet->SetSignalCut(fTPCJetThreshold);
1352 fTPCkTFullJet->SetAreaCutFraction(0.25*fJetAreaCutFrac);
1353 fTPCkTFullJet->SetJetR(fJetR);
1355 for (i=0;i<fnKTChargedJets;i++)
1357 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(i);
1358 fTPCkTFullJet->SetIsJetInArray(IsInTPC(fJetR,myJet->Phi(),myJet->Eta(),kTRUE),i);
1360 fTPCkTFullJet->InitializeJetData(fmyKTChargedJets,fnKTChargedJets);
1362 // Raw Charged Jet Spectra
1363 if (fCalculateRhoJet>=2 || (fCalculateRhoJet>=1 && fMCPartLevel==kTRUE))
1365 fTPCRawJets->FillBSJS(fEventCentrality,0.0,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1369 void AliAnalysisTaskFullpAJets::InitFullJets()
1371 // Preliminary Jet Placement and Selection Cuts
1374 fnAKTFullJets = fmyAKTFullJets->GetEntries();
1375 fnKTFullJets = fmyKTFullJets->GetEntries();
1377 fEMCalJet = new AlipAJetData("fEMCalJet",kTRUE,fnAKTFullJets);
1378 fEMCalFullJet = new AlipAJetData("fEMCalFullJet",kTRUE,fnAKTFullJets);
1379 fEMCalPartJet = new AlipAJetData("fEMCalPartJet",kTRUE,fnAKTFullJets);
1380 fEMCalPartJetUnbiased = new AlipAJetData("fEMCalPartJetUnbiased",kTRUE,fnAKTFullJets);
1382 fEMCalJet->SetSignalCut(fEMCalJetThreshold);
1383 fEMCalJet->SetAreaCutFraction(fJetAreaCutFrac);
1384 fEMCalJet->SetJetR(fJetR);
1385 fEMCalJet->SetNEF(fNEFSignalJetCut);
1386 fEMCalJet->SetSignalTrackPtBias(fSignalTrackBias);
1387 fEMCalFullJet->SetSignalCut(fEMCalJetThreshold);
1388 fEMCalFullJet->SetAreaCutFraction(fJetAreaCutFrac);
1389 fEMCalFullJet->SetJetR(fJetR);
1390 fEMCalFullJet->SetNEF(fNEFSignalJetCut);
1391 fEMCalFullJet->SetSignalTrackPtBias(fSignalTrackBias);
1392 fEMCalPartJet->SetSignalCut(fEMCalJetThreshold);
1393 fEMCalPartJet->SetAreaCutFraction(fJetAreaCutFrac);
1394 fEMCalPartJet->SetJetR(fJetR);
1395 fEMCalPartJet->SetNEF(fNEFSignalJetCut);
1396 fEMCalPartJet->SetSignalTrackPtBias(fSignalTrackBias);
1397 fEMCalPartJetUnbiased->SetSignalCut(fEMCalJetThreshold);
1398 fEMCalPartJetUnbiased->SetAreaCutFraction(fJetAreaCutFrac);
1399 fEMCalPartJetUnbiased->SetJetR(fJetR);
1400 fEMCalPartJetUnbiased->SetNEF(1.0);
1401 fEMCalPartJetUnbiased->SetSignalTrackPtBias(kFALSE);
1403 // Initialize Jet Data
1404 for (i=0;i<fnAKTFullJets;i++)
1406 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(i);
1408 fEMCalJet->SetIsJetInArray(IsInEMCal(myJet->Phi(),myJet->Eta()),i);
1409 fEMCalFullJet->SetIsJetInArray(IsInEMCalFull(fJetRAccept,myJet->Phi(),myJet->Eta()),i);
1410 fEMCalPartJet->SetIsJetInArray(IsInEMCalPart(fJetR,myJet->Phi(),myJet->Eta()),i);
1411 fEMCalPartJetUnbiased->SetIsJetInArray(IsInEMCalPart(fJetR,myJet->Phi(),myJet->Eta()),i);
1413 fEMCalJet->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1414 fEMCalFullJet->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1415 fEMCalPartJet->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1416 fEMCalPartJetUnbiased->InitializeJetData(fmyAKTFullJets,fnAKTFullJets);
1419 fEMCalkTFullJet = new AlipAJetData("fEMCalkTFullJet",kTRUE,fnKTFullJets);
1420 fEMCalkTFullJet->SetSignalCut(fEMCalJetThreshold);
1421 fEMCalkTFullJet->SetAreaCutFraction(0.25*fJetAreaCutFrac);
1422 fEMCalkTFullJet->SetJetR(fJetR);
1423 fEMCalkTFullJet->SetNEF(fNEFSignalJetCut);
1424 fEMCalkTFullJet->SetSignalTrackPtBias(fSignalTrackBias);
1426 for (i=0;i<fnKTFullJets;i++)
1428 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(i);
1429 fEMCalkTFullJet->SetIsJetInArray(IsInEMCalFull(fJetR,myJet->Phi(),myJet->Eta()),i);
1431 fEMCalkTFullJet->InitializeJetData(fmyKTFullJets,fnKTFullJets);
1433 // Raw Full Jet Spectra
1434 if (fMCPartLevel==kFALSE)
1436 fEMCalRawJets->FillBSJS(fEventCentrality,0.0,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
1440 void AliAnalysisTaskFullpAJets::GenerateTPCRandomConesPt()
1443 Double_t E_tracks_total=0.;
1444 TRandom3 u(time(NULL));
1446 Double_t Eta_Center=0.5*(fTPCEtaMin+fTPCEtaMax);
1447 Double_t Phi_Center=0.5*(fTPCPhiMin+fTPCPhiMax);
1449 Int_t event_track_mult=0;
1452 for (i=0;i<fnBckgClusters;i++)
1454 fTPCRCBckgFluc[i]=0.0;
1455 fTPCRCBckgFlucSignal[i]=0.0;
1456 fTPCRCBckgFlucNColl[i]=0.0;
1459 TLorentzVector *dummy= new TLorentzVector;
1460 TLorentzVector *temp_jet= new TLorentzVector;
1461 TLorentzVector *track_vec = new TLorentzVector;
1463 // First, consider the RC with no spatial restrictions
1464 for (j=0;j<fnBckgClusters;j++)
1468 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1469 // Loop over all tracks
1470 for (i=0;i<fnTracks;i++)
1472 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1473 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1475 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1476 if (dummy->DeltaR(*track_vec)<fJetR)
1478 E_tracks_total+=vtrack->Pt();
1482 fTPCRCBckgFlucSignal[j]=E_tracks_total;
1485 // Now, consider the RC where the vertex of RC is at least 2R away from the leading signal
1487 if (fTPCJetUnbiased->GetLeadingPt()<0.0)
1489 temp_jet->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1493 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetLeadingIndex());
1494 myJet->GetMom(*temp_jet);
1497 for (j=0;j<fnBckgClusters;j++)
1504 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1505 while (temp_jet->DeltaR(*dummy)<fJetR)
1507 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1509 // Loop over all tracks
1510 for (i=0;i<fnTracks;i++)
1512 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1513 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE) == kTRUE)
1516 if (IsInEMCal(vtrack->Phi(),vtrack->Eta()) == kTRUE)
1520 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1521 if (dummy->DeltaR(*track_vec)<fJetR)
1524 E_tracks_total+=vtrack->Pt();
1528 fTPCRCBckgFluc[j]=E_tracks_total;
1530 if (fTrackQA==kTRUE)
1532 fhTPCEventMult->Fill(fEventCentrality,event_mult);
1533 fpTPCEventMult->Fill(fEventCentrality,event_mult);
1534 fhEMCalTrackEventMult->Fill(fEventCentrality,event_track_mult);
1536 if (fCalculateRhoJet>=2 || (fCalculateRhoJet>=1 && fMCPartLevel==kTRUE))
1538 fTPCRawJets->FillDeltaPt(fEventCentrality,0.0,fJetR,fTPCRCBckgFluc,1);
1541 // For the case of partial exclusion, merely allow a superposition of full and no exclusion with probability p=1/Ncoll
1542 Double_t exclusion_prob;
1543 for (j=0;j<fnBckgClusters;j++)
1545 exclusion_prob = u.Uniform(0,1);
1546 if (exclusion_prob<(1/fNColl))
1548 fTPCRCBckgFlucNColl[j]=fTPCRCBckgFlucSignal[j];
1552 fTPCRCBckgFlucNColl[j]=fTPCRCBckgFluc[j];
1561 void AliAnalysisTaskFullpAJets::GenerateEMCalRandomConesPt()
1564 Double_t E_tracks_total=0.;
1565 Double_t E_caloclusters_total=0.;
1566 TRandom3 u(time(NULL));
1568 Double_t Eta_Center=0.5*(fEMCalEtaMin+fEMCalEtaMax);
1569 Double_t Phi_Center=0.5*(fEMCalPhiMin+fEMCalPhiMax);
1573 for (i=0;i<fnBckgClusters;i++)
1575 fEMCalRCBckgFluc[i]=0.0;
1576 fEMCalRCBckgFlucSignal[i]=0.0;
1577 fEMCalRCBckgFlucNColl[i]=0.0;
1580 TLorentzVector *dummy= new TLorentzVector;
1581 TLorentzVector *temp_jet= new TLorentzVector;
1582 TLorentzVector *track_vec = new TLorentzVector;
1583 TLorentzVector *cluster_vec = new TLorentzVector;
1585 // First, consider the RC with no spatial restrictions
1586 for (j=0;j<fnBckgClusters;j++)
1589 E_caloclusters_total=0.;
1591 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1592 // Loop over all tracks
1593 for (i=0;i<fnTracks;i++)
1595 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1596 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
1598 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1599 if (dummy->DeltaR(*track_vec)<fJetR)
1601 E_tracks_total+=vtrack->Pt();
1606 // Loop over all caloclusters
1607 for (i=0;i<fnClusters;i++)
1609 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
1610 vcluster->GetMomentum(*cluster_vec,fVertex);
1611 if (dummy->DeltaR(*cluster_vec)<fJetR)
1614 E_caloclusters_total+=cluster_vec->Pt();
1617 fEMCalRCBckgFlucSignal[j]=E_tracks_total+E_caloclusters_total;
1620 // Now, consider the RC where the vertex of RC is at least 2R away from the leading signal
1622 E_caloclusters_total=0.;
1623 if (fEMCalPartJetUnbiased->GetLeadingPt()<0.0)
1625 temp_jet->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1629 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
1630 myJet->GetMom(*temp_jet);
1633 for (j=0;j<fnBckgClusters;j++)
1638 E_caloclusters_total=0.;
1640 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1641 while (temp_jet->DeltaR(*dummy)<fJetR)
1643 dummy->SetPtEtaPhiE(1,u.Uniform(Eta_Center-fJetR,Eta_Center+fJetR),u.Uniform(Phi_Center-fJetR,Phi_Center+fJetR),0);
1645 // Loop over all tracks
1646 for (i=0;i<fnTracks;i++)
1648 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1649 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
1652 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1653 if (dummy->DeltaR(*track_vec)<fJetR)
1656 E_tracks_total+=vtrack->Pt();
1661 // Loop over all caloclusters
1662 for (i=0;i<fnClusters;i++)
1664 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
1665 vcluster->GetMomentum(*cluster_vec,fVertex);
1667 if (dummy->DeltaR(*cluster_vec)<fJetR)
1670 E_caloclusters_total+=cluster_vec->Pt();
1673 fEMCalRCBckgFluc[j]=E_tracks_total+E_caloclusters_total;
1675 if (fClusterQA==kTRUE)
1677 fhEMCalEventMult->Fill(fEventCentrality,event_mult);
1678 fpEMCalEventMult->Fill(fEventCentrality,event_mult);
1680 fEMCalRawJets->FillDeltaPt(fEventCentrality,0.0,fJetR,fEMCalRCBckgFluc,1);
1682 // For the case of partial exclusion, merely allow a superposition of full and no exclusion with probability p=1/Ncoll
1683 Double_t exclusion_prob;
1684 for (j=0;j<fnBckgClusters;j++)
1686 exclusion_prob = u.Uniform(0,1);
1687 if (exclusion_prob<(1/fNColl))
1689 fEMCalRCBckgFlucNColl[j]=fEMCalRCBckgFlucSignal[j];
1693 fEMCalRCBckgFlucNColl[j]=fEMCalRCBckgFluc[j];
1704 void AliAnalysisTaskFullpAJets::EstimateChargedRho0()
1707 Double_t E_tracks_total=0.0;
1708 Double_t TPC_rho=0.0;
1710 // Loop over all tracks
1711 for (i=0;i<fnTracks;i++)
1713 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1714 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1716 E_tracks_total+=vtrack->Pt();
1720 // Calculate the mean Background density
1721 TPC_rho=E_tracks_total/fTPCArea;
1723 fRhoCharged = TPC_rho;
1726 fRhoCharged0->FillRho(fEventCentrality,TPC_rho);
1727 fRhoCharged0->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCJet->GetJets(),fTPCJet->GetTotalJets());
1728 fRhoCharged0->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1729 fRhoCharged0->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1730 fRhoCharged0->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1731 fRhoCharged0->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1732 fRhoCharged0->FillLeadingJetPtRho(fTPCJet->GetLeadingPt(),TPC_rho);
1736 void AliAnalysisTaskFullpAJets::EstimateChargedRho1()
1739 Double_t E_tracks_total=0.0;
1740 Double_t TPC_rho=0.;
1742 TLorentzVector *temp_jet= new TLorentzVector;
1743 TLorentzVector *track_vec = new TLorentzVector;
1745 if (fTPCJetUnbiased->GetLeadingPt()>=fTPCJetThreshold)
1747 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1748 myJet->GetMom(*temp_jet);
1750 // Loop over all tracks
1751 for (i=0;i<fnTracks;i++)
1753 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1754 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1756 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1757 if (temp_jet->DeltaR(*track_vec)>fJetRForRho)
1759 E_tracks_total+=vtrack->Pt();
1764 // Calculate the mean Background density
1765 TPC_rho=E_tracks_total/(fTPCArea-AreaWithinTPC(fJetR,myJet->Eta()));
1767 else // i.e. No signal jets -> same as total background density
1769 // Loop over all tracks
1770 for (i=0;i<fnTracks;i++)
1772 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1773 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1775 E_tracks_total+=vtrack->Pt();
1778 // Calculate the mean Background density
1779 TPC_rho=E_tracks_total/fTPCArea;
1785 fRhoCharged1->FillRho(fEventCentrality,TPC_rho);
1786 fRhoCharged1->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1787 fRhoCharged1->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1788 fRhoCharged1->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1789 fRhoCharged1->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1790 fRhoCharged1->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1791 fRhoCharged1->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),TPC_rho);
1794 void AliAnalysisTaskFullpAJets::EstimateChargedRho2()
1797 Double_t E_tracks_total=0.0;
1798 Double_t TPC_rho=0.;
1800 TLorentzVector *temp_jet1= new TLorentzVector;
1801 TLorentzVector *temp_jet2= new TLorentzVector;
1802 TLorentzVector *track_vec = new TLorentzVector;
1804 if ((fTPCJetUnbiased->GetLeadingPt()>=fTPCJetThreshold) && (fTPCJetUnbiased->GetSubLeadingPt()>=fTPCJetThreshold))
1806 AliEmcalJet *myhJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1807 myhJet->GetMom(*temp_jet1);
1809 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetSubLeadingIndex());
1810 myJet->GetMom(*temp_jet2);
1812 // Loop over all tracks
1813 for (i=0;i<fnTracks;i++)
1815 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1816 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1818 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1819 if ((temp_jet1->DeltaR(*track_vec)>fJetRForRho) && (temp_jet2->DeltaR(*track_vec)>fJetRForRho))
1821 E_tracks_total+=vtrack->Pt();
1826 // Calculate the mean Background density
1827 TPC_rho=E_tracks_total/(fTPCArea-AreaWithinTPC(fJetR,myhJet->Eta())-AreaWithinTPC(fJetR,myJet->Eta()));
1829 else if (fTPCJetUnbiased->GetLeadingPt()>=fTPCJetThreshold)
1831 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
1832 myJet->GetMom(*temp_jet1);
1834 // Loop over all tracks
1835 for (i=0;i<fnTracks;i++)
1837 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1838 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1840 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1841 if (temp_jet1->DeltaR(*track_vec)>fJetRForRho)
1843 E_tracks_total+=vtrack->Pt();
1848 // Calculate the mean Background density
1849 TPC_rho=E_tracks_total/(fTPCArea-AreaWithinTPC(fJetR,myJet->Eta()));
1851 else // i.e. No signal jets -> same as total background density
1853 // Loop over all tracks
1854 for (i=0;i<fnTracks;i++)
1856 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
1857 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1859 E_tracks_total+=vtrack->Pt();
1863 // Calculate the mean Background density
1864 TPC_rho=E_tracks_total/fTPCArea;
1871 fRhoCharged2->FillRho(fEventCentrality,TPC_rho);
1872 fRhoCharged2->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1873 fRhoCharged2->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1874 fRhoCharged2->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1875 fRhoCharged2->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1876 fRhoCharged2->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1877 fRhoCharged2->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),TPC_rho);
1880 void AliAnalysisTaskFullpAJets::EstimateChargedRhoN()
1883 Bool_t track_away_from_jet;
1884 Double_t E_tracks_total=0.0;
1885 Double_t TPC_rho=0.0;
1886 Double_t jet_area_total=0.0;
1888 TLorentzVector *jet_vec= new TLorentzVector;
1889 TLorentzVector *track_vec = new TLorentzVector;
1891 // First, sum all tracks within the EMCal that are away from jet(s) above Pt Threshold
1892 for (i=0;i<fnTracks;i++)
1894 // First, check if track is in the EMCal!!
1895 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(i);
1896 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1898 if (fTPCJetUnbiased->GetTotalSignalJets()<1)
1900 E_tracks_total+=vtrack->Pt();
1904 track_away_from_jet=kTRUE;
1906 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1907 while (track_away_from_jet==kTRUE && j<fTPCJetUnbiased->GetTotalSignalJets())
1909 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(j));
1910 myJet->GetMom(*jet_vec);
1911 if (track_vec->DeltaR(*jet_vec)<=fJetRForRho)
1913 track_away_from_jet=kFALSE;
1917 if (track_away_from_jet==kTRUE)
1919 E_tracks_total+=vtrack->Pt();
1925 // Determine area of all Jets that are within the EMCal
1926 if (fTPCJetUnbiased->GetTotalSignalJets()==0)
1932 for (i=0;i<fTPCJetUnbiased->GetTotalSignalJets();i++)
1934 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(i));
1935 jet_area_total+=AreaWithinTPC(fJetR,myJet->Eta());
1942 TPC_rho = E_tracks_total/(fTPCArea-jet_area_total);
1945 fRhoChargedN->FillRho(fEventCentrality,TPC_rho);
1946 fRhoChargedN->FillBSJS(fEventCentrality,TPC_rho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
1947 fRhoChargedN->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFluc,1);
1948 fRhoChargedN->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucSignal,1);
1949 fRhoChargedN->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fTPCRCBckgFlucNColl,1);
1950 fRhoChargedN->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
1951 fRhoChargedN->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),TPC_rho);
1955 void AliAnalysisTaskFullpAJets::EstimateChargedRhoScale()
1958 Bool_t track_away_from_jet;
1959 Double_t E_tracks_total=0.0;
1960 Double_t TPC_rho=0.0;
1961 Double_t jet_area_total=0.0;
1963 TLorentzVector *jet_vec= new TLorentzVector;
1964 TLorentzVector *track_vec = new TLorentzVector;
1966 // First, sum all tracks within the EMCal that are away from jet(s) above Pt Threshold
1967 for (i=0;i<fnTracks;i++)
1969 // First, check if track is in the EMCal!!
1970 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(i);
1971 if (IsInTPC(fJetR,vtrack->Phi(),vtrack->Eta(),kFALSE)==kTRUE)
1973 if (fTPCJetUnbiased->GetTotalSignalJets()<1)
1975 E_tracks_total+=vtrack->Pt();
1979 track_away_from_jet=kTRUE;
1981 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
1982 while (track_away_from_jet==kTRUE && j<fTPCJetUnbiased->GetTotalSignalJets())
1984 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(j));
1985 myJet->GetMom(*jet_vec);
1986 if (track_vec->DeltaR(*jet_vec)<=fJetRForRho)
1988 track_away_from_jet=kFALSE;
1992 if (track_away_from_jet==kTRUE)
1994 E_tracks_total+=vtrack->Pt();
2000 // Determine area of all Jets that are within the TPC
2001 if (fTPCJetUnbiased->GetTotalSignalJets()==0)
2007 for (i=0;i<fTPCJetUnbiased->GetTotalSignalJets();i++)
2009 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCJetUnbiased->GetSignalJetIndex(i));
2010 jet_area_total+=AreaWithinTPC(fJetR,myJet->Eta());
2017 TPC_rho = E_tracks_total/(fTPCArea-jet_area_total);
2018 TPC_rho*=fScaleFactor;
2021 fRhoChargedScale->FillRho(fEventCentrality,TPC_rho);
2022 fRhoChargedScale->FillBSJS(fEventCentrality,TPC_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2023 fRhoChargedScale->FillDeltaPt(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFluc,1);
2024 fRhoChargedScale->FillDeltaPtSignal(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2025 fRhoChargedScale->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2026 fRhoChargedScale->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
2027 fRhoChargedScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),TPC_rho);
2028 fRhoChargedScale->FillMiscJetStats(fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fOrgTracks,fOrgClusters,fVertex);
2032 void AliAnalysisTaskFullpAJets::EstimateChargedRhokT()
2035 Double_t kTRho = 0.0;
2036 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2037 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2039 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2041 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2042 pTArray[i]=myJet->Pt();
2043 RhoArray[i]=myJet->Pt()/myJet->Area();
2046 if (fTPCkTFullJet->GetTotalJets()>=2)
2048 kTRho=MedianRhokT(pTArray,RhoArray,fTPCkTFullJet->GetTotalJets());
2050 fRhoChargedkT->FillRho(fEventCentrality,kTRho);
2051 fRhoChargedkT->FillBSJS(fEventCentrality,kTRho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
2052 fRhoChargedkT->FillDeltaPt(fEventCentrality,kTRho,fJetR,fTPCRCBckgFluc,1);
2053 fRhoChargedkT->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucSignal,1);
2054 fRhoChargedkT->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucNColl,1);
2055 fRhoChargedkT->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2056 fRhoChargedkT->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),kTRho);
2062 void AliAnalysisTaskFullpAJets::EstimateChargedRhokTScale()
2065 Double_t kTRho = 0.0;
2066 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2067 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2069 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2071 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2072 pTArray[i]=myJet->Pt();
2073 RhoArray[i]=myJet->Pt()/myJet->Area();
2076 if (fTPCkTFullJet->GetTotalJets()>=2)
2078 kTRho=MedianRhokT(pTArray,RhoArray,fTPCkTFullJet->GetTotalJets());
2079 kTRho*=fScaleFactor;
2081 fRhoChargedkTScale->FillRho(fEventCentrality,kTRho);
2082 fRhoChargedkTScale->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2083 fRhoChargedkTScale->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2084 fRhoChargedkTScale->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
2085 fRhoChargedkTScale->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
2086 fRhoChargedkTScale->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2087 fRhoChargedkTScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2093 void AliAnalysisTaskFullpAJets::EstimateChargedRhoCMS()
2096 Double_t kTRho = 0.0;
2097 Double_t CMSTotalkTArea = 0.0;
2098 Double_t CMSTrackArea = 0.0;
2099 Double_t CMSCorrectionFactor = 1.0;
2100 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2101 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2104 if ((fTPCJet->GetLeadingPt()>=fTPCJetThreshold) && (fTPCJet->GetSubLeadingPt()>=fTPCJetThreshold))
2106 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
2107 AliEmcalJet *myJet2 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetSubLeadingIndex());
2109 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2111 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2113 CMSTotalkTArea+=myJet->Area();
2114 if (myJet->GetNumberOfTracks()>0)
2116 CMSTrackArea+=myJet->Area();
2118 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE && IsJetOverlap(myJet,myJet2,kFALSE)==kFALSE)
2120 pTArray[k]=myJet->Pt();
2121 RhoArray[k]=myJet->Pt()/myJet->Area();
2127 kTRho=MedianRhokT(pTArray,RhoArray,k);
2134 else if (fTPCJet->GetLeadingPt()>=fTPCJetThreshold)
2136 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
2138 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2140 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2142 CMSTotalkTArea+=myJet->Area();
2143 if (myJet->GetNumberOfTracks()>0)
2145 CMSTrackArea+=myJet->Area();
2147 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE)
2149 pTArray[k]=myJet->Pt();
2150 RhoArray[k]=myJet->Pt()/myJet->Area();
2156 kTRho=MedianRhokT(pTArray,RhoArray,k);
2165 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2167 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2169 CMSTotalkTArea+=myJet->Area();
2170 if (myJet->GetNumberOfTracks()>0)
2172 CMSTrackArea+=myJet->Area();
2174 pTArray[k]=myJet->Pt();
2175 RhoArray[k]=myJet->Pt()/myJet->Area();
2180 kTRho=MedianRhokT(pTArray,RhoArray,k);
2187 // Scale CMS Rho by Correction factor
2188 if (CMSTotalkTArea==0.0)
2190 CMSCorrectionFactor = 1.0;
2194 //CMSCorrectionFactor = CMSTrackArea/CMSTotalkTArea;
2195 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
2197 kTRho*=CMSCorrectionFactor;
2198 fRhoChargedCMS->FillRho(fEventCentrality,kTRho);
2199 fRhoChargedCMS->FillBSJS(fEventCentrality,kTRho,fTPCJetThreshold,fmyAKTChargedJets,fTPCFullJet->GetJets(),fTPCFullJet->GetTotalJets());
2200 fRhoChargedCMS->FillDeltaPt(fEventCentrality,kTRho,fJetR,fTPCRCBckgFluc,1);
2201 fRhoChargedCMS->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucSignal,1);
2202 fRhoChargedCMS->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fTPCRCBckgFlucNColl,1);
2203 fRhoChargedCMS->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2204 fRhoChargedCMS->FillLeadingJetPtRho(fTPCFullJet->GetLeadingPt(),kTRho);
2209 void AliAnalysisTaskFullpAJets::EstimateChargedRhoCMSScale()
2212 Double_t kTRho = 0.0;
2213 Double_t CMSTotalkTArea = 0.0;
2214 Double_t CMSTrackArea = 0.0;
2215 Double_t CMSCorrectionFactor = 1.0;
2216 Double_t *pTArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2217 Double_t *RhoArray = new Double_t[fTPCkTFullJet->GetTotalJets()];
2220 if ((fTPCJet->GetLeadingPt()>=fTPCJetThreshold) && (fTPCJet->GetSubLeadingPt()>=fTPCJetThreshold))
2222 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
2223 AliEmcalJet *myJet2 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetSubLeadingIndex());
2225 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2227 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2229 CMSTotalkTArea+=myJet->Area();
2230 if (myJet->GetNumberOfTracks()>0)
2232 CMSTrackArea+=myJet->Area();
2234 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE && IsJetOverlap(myJet,myJet2,kFALSE)==kFALSE)
2236 pTArray[k]=myJet->Pt();
2237 RhoArray[k]=myJet->Pt()/myJet->Area();
2243 kTRho=MedianRhokT(pTArray,RhoArray,k);
2250 else if (fTPCJet->GetLeadingPt()>=fTPCJetThreshold)
2252 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCJet->GetLeadingIndex());
2254 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2256 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2258 CMSTotalkTArea+=myJet->Area();
2259 if (myJet->GetNumberOfTracks()>0)
2261 CMSTrackArea+=myJet->Area();
2263 if (IsJetOverlap(myJet,myJet1,kFALSE)==kFALSE)
2265 pTArray[k]=myJet->Pt();
2266 RhoArray[k]=myJet->Pt()/myJet->Area();
2272 kTRho=MedianRhokT(pTArray,RhoArray,k);
2281 for (i=0;i<fTPCkTFullJet->GetTotalJets();i++)
2283 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTChargedJets->At(fTPCkTFullJet->GetJetIndex(i));
2285 CMSTotalkTArea+=myJet->Area();
2286 if (myJet->GetNumberOfTracks()>0)
2288 CMSTrackArea+=myJet->Area();
2290 pTArray[k]=myJet->Pt();
2291 RhoArray[k]=myJet->Pt()/myJet->Area();
2296 kTRho=MedianRhokT(pTArray,RhoArray,k);
2303 kTRho*=fScaleFactor;
2304 // Scale CMS Rho by Correction factor
2305 if (CMSTotalkTArea==0.0)
2307 CMSCorrectionFactor = 1.0;
2311 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
2313 kTRho*=CMSCorrectionFactor;
2315 fRhoChargedCMSScale->FillRho(fEventCentrality,kTRho);
2316 fRhoChargedCMSScale->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2317 fRhoChargedCMSScale->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2318 fRhoChargedCMSScale->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
2319 fRhoChargedCMSScale->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
2320 fRhoChargedCMSScale->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2321 fRhoChargedCMSScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2322 fRhoChargedCMSScale->DoNEFAnalysis(fNEFSignalJetCut,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fmyClusters,fOrgClusters,fEvent,fEMCALGeometry,fRecoUtil,fCells);
2323 fRhoChargedCMSScale->FillMiscJetStats(fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fOrgTracks,fOrgClusters,fVertex);
2330 void AliAnalysisTaskFullpAJets::EstimateFullRho0()
2333 Double_t E_tracks_total=0.0;
2334 Double_t E_caloclusters_total=0.0;
2335 Double_t EMCal_rho=0.0;
2337 TLorentzVector *cluster_vec = new TLorentzVector;
2339 // Loop over all tracks
2340 for (i=0;i<fnTracks;i++)
2342 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2343 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2345 E_tracks_total+=vtrack->Pt();
2349 // Loop over all caloclusters
2350 for (i=0;i<fnClusters;i++)
2352 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2353 vcluster->GetMomentum(*cluster_vec,fVertex);
2354 E_caloclusters_total+=cluster_vec->Pt();
2358 // Calculate the mean Background density
2359 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2363 fRhoFull0->FillRho(fEventCentrality,EMCal_rho);
2364 fRhoFull0->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2365 fRhoFull0->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2366 fRhoFull0->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2367 fRhoFull0->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2368 fRhoFull0->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2369 fRhoFull0->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2372 void AliAnalysisTaskFullpAJets::EstimateFullRho1()
2375 Double_t E_tracks_total=0.0;
2376 Double_t E_caloclusters_total=0.0;
2377 Double_t EMCal_rho=0.0;
2379 TLorentzVector *temp_jet= new TLorentzVector;
2380 TLorentzVector *track_vec = new TLorentzVector;
2381 TLorentzVector *cluster_vec = new TLorentzVector;
2383 if (fEMCalPartJetUnbiased->GetLeadingPt()>=fEMCalJetThreshold)
2385 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
2386 myJet->GetMom(*temp_jet);
2388 // Loop over all tracks
2389 for (i=0;i<fnTracks;i++)
2391 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2392 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2394 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2395 if (temp_jet->DeltaR(*track_vec)>fJetRForRho)
2397 E_tracks_total+=vtrack->Pt();
2402 // Loop over all caloclusters
2403 for (i=0;i<fnClusters;i++)
2405 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2406 vcluster->GetMomentum(*cluster_vec,fVertex);
2407 if (temp_jet->DeltaR(*cluster_vec)>fJetRForRho)
2409 E_caloclusters_total+=cluster_vec->Pt();
2412 // Calculate the mean Background density
2413 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta()));
2415 else // i.e. No signal jets -> same as total background density
2417 // Loop over all tracks
2418 for (i=0;i<fnTracks;i++)
2420 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2421 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2423 E_tracks_total+=vtrack->Pt();
2427 // Loop over all caloclusters
2428 for (i=0;i<fnClusters;i++)
2430 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2431 vcluster->GetMomentum(*cluster_vec,fVertex);
2432 E_caloclusters_total+=cluster_vec->Pt();
2434 // Calculate the mean Background density
2435 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2442 fRhoFull1->FillRho(fEventCentrality,EMCal_rho);
2443 fRhoFull1->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2444 fRhoFull1->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2445 fRhoFull1->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2446 fRhoFull1->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2447 fRhoFull1->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2448 fRhoFull1->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2451 void AliAnalysisTaskFullpAJets::EstimateFullRho2()
2454 Double_t E_tracks_total=0.0;
2455 Double_t E_caloclusters_total=0.0;
2456 Double_t EMCal_rho=0.0;
2458 TLorentzVector *temp_jet1 = new TLorentzVector;
2459 TLorentzVector *temp_jet2 = new TLorentzVector;
2460 TLorentzVector *track_vec = new TLorentzVector;
2461 TLorentzVector *cluster_vec = new TLorentzVector;
2463 if ((fEMCalPartJetUnbiased->GetLeadingPt()>=fEMCalJetThreshold) && (fEMCalPartJetUnbiased->GetSubLeadingPt()>=fEMCalJetThreshold))
2465 AliEmcalJet *myhJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
2466 myhJet->GetMom(*temp_jet1);
2468 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSubLeadingIndex());
2469 myJet->GetMom(*temp_jet2);
2471 // Loop over all tracks
2472 for (i=0;i<fnTracks;i++)
2474 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2475 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2477 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2478 if ((temp_jet1->DeltaR(*track_vec)>fJetRForRho) && (temp_jet2->DeltaR(*track_vec)>fJetRForRho))
2480 E_tracks_total+=vtrack->Pt();
2485 // Loop over all caloclusters
2486 for (i=0;i<fnClusters;i++)
2488 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2489 vcluster->GetMomentum(*cluster_vec,fVertex);
2490 if ((temp_jet1->DeltaR(*cluster_vec)>fJetRForRho) && (temp_jet2->DeltaR(*cluster_vec)>fJetRForRho))
2492 E_caloclusters_total+=cluster_vec->Pt();
2496 // Calculate the mean Background density
2497 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-AreaWithinEMCal(fJetR,myhJet->Phi(),myhJet->Eta())-AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta()));
2499 else if (fEMCalPartJetUnbiased->GetLeadingPt()>=fEMCalJetThreshold)
2501 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetLeadingIndex());
2502 myJet->GetMom(*temp_jet1);
2504 // Loop over all tracks
2505 for (i=0;i<fnTracks;i++)
2507 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2508 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2510 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2511 if (temp_jet1->DeltaR(*track_vec)>fJetRForRho)
2513 E_tracks_total+=vtrack->Pt();
2518 // Loop over all caloclusters
2519 for (i=0;i<fnClusters;i++)
2521 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2522 vcluster->GetMomentum(*cluster_vec,fVertex);
2523 if (temp_jet1->DeltaR(*cluster_vec)>fJetRForRho)
2525 E_caloclusters_total+=cluster_vec->Pt();
2528 // Calculate the mean Background density
2529 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta()));
2531 else // i.e. No signal jets -> same as total background density
2533 // Loop over all tracks
2534 for (i=0;i<fnTracks;i++)
2536 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2537 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2539 E_tracks_total+=vtrack->Pt();
2543 // Loop over all caloclusters
2544 for (i=0;i<fnClusters;i++)
2546 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2547 vcluster->GetMomentum(*cluster_vec,fVertex);
2548 E_caloclusters_total+=cluster_vec->Pt();
2550 // Calculate the mean Background density
2551 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2559 fRhoFull2->FillRho(fEventCentrality,EMCal_rho);
2560 fRhoFull2->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2561 fRhoFull2->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2562 fRhoFull2->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2563 fRhoFull2->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2564 fRhoFull2->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2565 fRhoFull2->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2568 void AliAnalysisTaskFullpAJets::EstimateFullRhoN()
2571 Bool_t track_away_from_jet;
2572 Bool_t cluster_away_from_jet;
2573 Double_t E_tracks_total=0.0;
2574 Double_t E_caloclusters_total=0.0;
2575 Double_t EMCal_rho=0.0;
2576 Double_t jet_area_total=0.0;
2578 TLorentzVector *jet_vec= new TLorentzVector;
2579 TLorentzVector *track_vec = new TLorentzVector;
2580 TLorentzVector *cluster_vec = new TLorentzVector;
2582 // First, sum all tracks within the EMCal that are away from jet(s) above Pt Threshold
2583 for (i=0;i<fnTracks;i++)
2585 // First, check if track is in the EMCal!!
2586 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(i);
2587 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2589 if (fEMCalPartJetUnbiased->GetTotalSignalJets()<1)
2591 E_tracks_total+=vtrack->Pt();
2595 track_away_from_jet=kTRUE;
2597 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2598 while (track_away_from_jet==kTRUE && j<fEMCalPartJetUnbiased->GetTotalSignalJets())
2600 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(j));
2601 myJet->GetMom(*jet_vec);
2602 if (track_vec->DeltaR(*jet_vec)<=fJetRForRho)
2604 track_away_from_jet=kFALSE;
2608 if (track_away_from_jet==kTRUE)
2610 E_tracks_total+=vtrack->Pt();
2616 // Next, sum all CaloClusters within the EMCal (obviously all clusters must be within EMCal!!) that are away from jet(s) above Pt Threshold
2617 for (i=0;i<fnClusters;i++)
2619 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2620 vcluster->GetMomentum(*cluster_vec,fVertex);
2621 if (fEMCalPartJet->GetTotalSignalJets()<1)
2623 E_caloclusters_total+=cluster_vec->Pt();
2627 cluster_away_from_jet=kTRUE;
2630 while (cluster_away_from_jet==kTRUE && j<fEMCalPartJetUnbiased->GetTotalSignalJets())
2632 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(j));
2633 myJet->GetMom(*jet_vec);
2634 if (cluster_vec->DeltaR(*jet_vec)<=fJetRForRho)
2636 cluster_away_from_jet=kFALSE;
2640 if (cluster_away_from_jet==kTRUE)
2642 E_caloclusters_total+=cluster_vec->Pt();
2647 // Determine area of all Jets that are within the EMCal
2648 if (fEMCalPartJet->GetTotalSignalJets()==0)
2654 for (i=0;i<fEMCalPartJetUnbiased->GetTotalSignalJets();i++)
2656 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(i));
2657 jet_area_total+=AreaWithinEMCal(fJetR,myJet->Phi(),myJet->Eta());
2665 EMCal_rho=(E_tracks_total+E_caloclusters_total)/(fEMCalArea-jet_area_total);
2668 fRhoFullN->FillRho(fEventCentrality,EMCal_rho);
2669 fRhoFullN->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2670 fRhoFullN->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2671 fRhoFullN->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2672 fRhoFullN->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2673 fRhoFullN->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2674 fRhoFullN->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2677 void AliAnalysisTaskFullpAJets::EstimateFullRhoDijet()
2680 Double_t E_tracks_total=0.0;
2681 Double_t E_caloclusters_total=0.0;
2682 Double_t EMCal_rho=0.0;
2684 TLorentzVector *cluster_vec = new TLorentzVector;
2686 // Loop over all tracks
2687 for (i=0;i<fnTracks;i++)
2689 AliVTrack* vtrack =(AliVTrack*) fmyTracks->At(i);
2690 if (IsInEMCal(vtrack->Phi(),vtrack->Eta())==kTRUE)
2692 E_tracks_total+=vtrack->Pt();
2696 // Loop over all caloclusters
2697 for (i=0;i<fnClusters;i++)
2699 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
2700 vcluster->GetMomentum(*cluster_vec,fVertex);
2701 E_caloclusters_total+=cluster_vec->Pt();
2706 // Calculate the mean Background density
2707 EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
2710 fRhoFullDijet->FillRho(fEventCentrality,EMCal_rho);
2711 fRhoFullDijet->FillBSJS(fEventCentrality,EMCal_rho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2712 fRhoFullDijet->FillDeltaPt(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFluc,1);
2713 fRhoFullDijet->FillDeltaPtSignal(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucSignal,1);
2714 fRhoFullDijet->FillDeltaPtNColl(fEventCentrality,EMCal_rho,fJetR,fEMCalRCBckgFlucNColl,1);
2715 fRhoFullDijet->FillBackgroundFluctuations(fEventCentrality,EMCal_rho,fJetR);
2716 fRhoFullDijet->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),EMCal_rho);
2719 void AliAnalysisTaskFullpAJets::EstimateFullRhokT()
2722 Double_t kTRho = 0.0;
2723 Double_t *pTArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2724 Double_t *RhoArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2726 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2728 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2729 pTArray[i]=myJet->Pt();
2730 RhoArray[i]=myJet->Pt()/myJet->Area();
2733 if (fEMCalkTFullJet->GetTotalJets()>0)
2735 kTRho=MedianRhokT(pTArray,RhoArray,fEMCalkTFullJet->GetTotalJets());
2741 fRhoFullkT->FillRho(fEventCentrality,kTRho);
2742 fRhoFullkT->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2743 fRhoFullkT->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2744 fRhoFullkT->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
2745 fRhoFullkT->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
2746 fRhoFullkT->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2747 fRhoFullkT->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2752 void AliAnalysisTaskFullpAJets::EstimateFullRhoCMS()
2755 Double_t kTRho = 0.0;
2756 Double_t CMSTotalkTArea = 0.0;
2757 Double_t CMSParticleArea = 0.0;
2758 Double_t CMSCorrectionFactor = 1.0;
2759 Double_t *pTArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2760 Double_t *RhoArray = new Double_t[fEMCalkTFullJet->GetTotalJets()];
2763 if ((fEMCalPartJet->GetLeadingPt()>=fEMCalJetThreshold) && (fEMCalPartJet->GetSubLeadingPt()>=fEMCalJetThreshold))
2765 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJet->GetLeadingIndex());
2766 AliEmcalJet *myJet2 =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJet->GetSubLeadingIndex());
2768 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2770 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2772 CMSTotalkTArea+=myJet->Area();
2773 if (myJet->GetNumberOfTracks()>0 || myJet->GetNumberOfClusters()>0)
2775 CMSParticleArea+=myJet->Area();
2777 if (IsJetOverlap(myJet,myJet1,kTRUE)==kFALSE && IsJetOverlap(myJet,myJet2,kFALSE)==kTRUE)
2779 pTArray[k]=myJet->Pt();
2780 RhoArray[k]=myJet->Pt()/myJet->Area();
2786 kTRho=MedianRhokT(pTArray,RhoArray,k);
2793 else if (fEMCalJet->GetLeadingPt()>=fEMCalJetThreshold)
2795 AliEmcalJet *myJet1 =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalJet->GetLeadingIndex());
2797 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2799 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2801 CMSTotalkTArea+=myJet->Area();
2802 if (myJet->GetNumberOfTracks()>0 || myJet->GetNumberOfClusters()>0)
2804 CMSParticleArea+=myJet->Area();
2806 if (IsJetOverlap(myJet,myJet1,kTRUE)==kFALSE)
2808 pTArray[k]=myJet->Pt();
2809 RhoArray[k]=myJet->Pt()/myJet->Area();
2815 kTRho=MedianRhokT(pTArray,RhoArray,k);
2824 for (i=0;i<fEMCalkTFullJet->GetTotalJets();i++)
2826 AliEmcalJet *myJet =(AliEmcalJet*) fmyKTFullJets->At(fEMCalkTFullJet->GetJetIndex(i));
2828 CMSTotalkTArea+=myJet->Area();
2829 if (myJet->GetNumberOfTracks()>0 || myJet->GetNumberOfClusters()>0)
2831 CMSParticleArea+=myJet->Area();
2833 pTArray[k]=myJet->Pt();
2834 RhoArray[k]=myJet->Pt()/myJet->Area();
2839 kTRho=MedianRhokT(pTArray,RhoArray,k);
2846 // Scale CMS Rho by Correction factor
2847 if (CMSTotalkTArea==0.0)
2849 CMSCorrectionFactor = 1.0;
2853 //CMSCorrectionFactor = CMSTrackArea/CMSTotalkTArea;
2854 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
2856 kTRho*=CMSCorrectionFactor;
2858 fRhoFullCMS->FillRho(fEventCentrality,kTRho);
2859 fRhoFullCMS->FillBSJS(fEventCentrality,kTRho,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets());
2860 fRhoFullCMS->FillDeltaPt(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFluc,1);
2861 fRhoFullCMS->FillDeltaPtSignal(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucSignal,1);
2862 fRhoFullCMS->FillDeltaPtNColl(fEventCentrality,kTRho,fJetR,fEMCalRCBckgFlucNColl,1);
2863 fRhoFullCMS->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
2864 fRhoFullCMS->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
2869 void AliAnalysisTaskFullpAJets::FullJetEnergyDensityProfile()
2874 Double_t fullEDR = fFullEDJetR*100;
2875 const Int_t fullEDBins = (Int_t) fullEDR;
2876 Double_t ED_pT[fullEDBins];
2877 dR = fFullEDJetR/Double_t(fullEDBins); // Should be 0.01 be default
2879 TLorentzVector *jet_vec= new TLorentzVector;
2880 TLorentzVector *track_vec = new TLorentzVector;
2881 TLorentzVector *cluster_vec = new TLorentzVector;
2883 for (i=0;i<fEMCalFullJet->GetTotalSignalJets();i++)
2885 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTFullJets->At(fEMCalFullJet->GetSignalJetIndex(i));
2887 if (IsInEMCalFull(fFullEDJetR,myJet->Phi(),myJet->Eta())==kTRUE)
2889 for (j=0;j<fullEDBins;j++)
2893 myJet->GetMom(*jet_vec);
2895 // Sum all tracks in concentric rings around jet vertex
2896 for (j=0;j<fnTracks;j++)
2898 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(j);
2899 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2900 delta_R=jet_vec->DeltaR(*track_vec);
2901 if (delta_R<fFullEDJetR)
2903 ED_pT[TMath::FloorNint((delta_R/fFullEDJetR)*fullEDBins)]+=vtrack->Pt();
2907 // Sum all clusters in concentric rings around jet vertex
2908 for (j=0;j<fnClusters;j++)
2910 AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(j);
2911 vcluster->GetMomentum(*cluster_vec,fVertex);
2912 delta_R=jet_vec->DeltaR(*cluster_vec);
2913 if (delta_R<fFullEDJetR)
2915 ED_pT[TMath::FloorNint((delta_R/fFullEDJetR)*fullEDBins)]+=cluster_vec->Pt();
2919 for (j=0;j<fullEDBins;j++)
2921 ED_pT[j] /= TMath::Pi()*dR*dR*(2*j+1);
2922 fpFullJetEDProfile->Fill(myJet->Pt(),fEventCentrality,j*dR,ED_pT[j]);
2931 // 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.
2932 void AliAnalysisTaskFullpAJets::ChargedJetEnergyDensityProfile()
2937 Double_t chargedEDR = fChargedEDJetR*100;
2938 const Int_t chargedEDBins = (Int_t) chargedEDR;
2939 Double_t ED_pT[chargedEDBins];
2940 dR = fChargedEDJetR/Double_t(chargedEDBins); // Should be 0.01 be default
2942 TLorentzVector *jet_vec= new TLorentzVector;
2943 TLorentzVector *track_vec = new TLorentzVector;
2945 for (i=0;i<fTPCFullJet->GetTotalSignalJets();i++)
2947 AliEmcalJet *myJet = (AliEmcalJet*) fmyAKTChargedJets->At(fTPCFullJet->GetSignalJetIndex(i));
2948 if (IsInTPC(fChargedEDJetR,myJet->Phi(),myJet->Eta(),kTRUE)==kTRUE)
2950 for (j=0;j<chargedEDBins;j++)
2954 myJet->GetMom(*jet_vec);
2956 // Sum all tracks in concentric rings around jet vertex
2957 for (j=0;j<fnTracks;j++)
2959 AliVTrack* vtrack = (AliVTrack*) fmyTracks->At(j);
2960 track_vec->SetPtEtaPhiE(vtrack->Pt(),vtrack->Eta(),vtrack->Phi(),vtrack->E());
2961 delta_R=jet_vec->DeltaR(*track_vec);
2962 if (delta_R<fChargedEDJetR)
2964 ED_pT[TMath::FloorNint((delta_R/fChargedEDJetR)*chargedEDBins)]+=vtrack->Pt();
2967 for (j=0;j<chargedEDBins;j++)
2969 ED_pT[j] /= TMath::Pi()*dR*dR*(2*j+1);
2970 fpChargedJetEDProfile->Fill(myJet->Pt(),fEventCentrality,j*dR,ED_pT[j]);
2971 fpChargedJetEDProfileScaled->Fill(myJet->Pt(),fEventCentrality,j*dR,fScaleFactor*ED_pT[j]);
2979 void AliAnalysisTaskFullpAJets::DeleteJetData(Bool_t EMCalOn)
2985 delete fTPCkTFullJet;
2990 delete fEMCalFullJet;
2991 delete fEMCalPartJet;
2992 delete fEMCalkTFullJet;
2996 /////////////////////////////////////////////////////////////////////////////////////////
2997 ///////////////// User Defined Functions ///////////////////////////////////////
2998 /////////////////////////////////////////////////////////////////////////////////////////
3000 Bool_t AliAnalysisTaskFullpAJets::IsDiJetEvent()
3002 // Determine if event contains a di-jet within the detector. Uses charged jets.
3003 // Requires the delta phi of the jets to be 180 +/- 15 degrees.
3004 // Requires both jets to be outside of the EMCal
3005 // Requires both jets to be signal jets
3007 const Double_t dijet_delta_phi=(180/360.)*2*TMath::Pi();
3008 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
3009 Double_t dummy_phi=0.0;
3011 if (fTPCOnlyJet->GetTotalSignalJets()>1)
3013 AliEmcalJet *myhJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCOnlyJet->GetLeadingIndex());
3014 AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTChargedJets->At(fTPCOnlyJet->GetSubLeadingIndex());
3015 dummy_phi=TMath::Min(TMath::Abs(myhJet->Phi()-myJet->Phi()),2*TMath::Pi()-TMath::Abs(myhJet->Phi()-myJet->Phi()));
3016 if (dummy_phi>(dijet_delta_phi-dijet_phi_acceptance))
3025 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)
3027 if (phi>phi_min && phi<phi_max)
3029 if (eta>eta_min && eta<eta_max)
3037 Bool_t AliAnalysisTaskFullpAJets::IsInEMCal(Double_t phi,Double_t eta)
3039 return InsideRect(phi,fEMCalPhiMin,fEMCalPhiMax,eta,fEMCalEtaMin,fEMCalEtaMax);
3042 Bool_t AliAnalysisTaskFullpAJets::IsInEMCalFull(Double_t r,Double_t phi,Double_t eta)
3044 return InsideRect(phi,fEMCalPhiMin+r,fEMCalPhiMax-r,eta,fEMCalEtaMin+r,fEMCalEtaMax-r);
3047 Bool_t AliAnalysisTaskFullpAJets::IsInEMCalPart(Double_t r,Double_t phi,Double_t eta)
3049 return InsideRect(phi,fEMCalPhiMin-r,fEMCalPhiMax+r,eta,fEMCalEtaMin-r,fEMCalEtaMax+r);
3052 Bool_t AliAnalysisTaskFullpAJets::IsInTPCFull(Double_t r,Double_t phi,Double_t eta)
3054 Bool_t in_EMCal= InsideRect(phi,fEMCalPhiMin-r,fEMCalPhiMax+r,eta,fEMCalEtaMin-r,fEMCalEtaMax+r);
3055 Bool_t in_TPC= InsideRect(phi,fTPCPhiMin,fTPCPhiMax,eta,fTPCEtaMin+r,fTPCEtaMax-r);
3057 if (in_EMCal==kFALSE && in_TPC==kTRUE)
3064 Bool_t AliAnalysisTaskFullpAJets::IsInTPC(Double_t r,Double_t phi,Double_t eta,Bool_t Complete)
3066 if (Complete==kTRUE)
3068 return InsideRect(phi,fTPCPhiMin,fTPCPhiMax,eta,fTPCEtaMin+r,fTPCEtaMax-r);
3070 return InsideRect(phi,fTPCPhiMin,fTPCPhiMax,eta,fTPCEtaMin,fTPCEtaMax);
3073 Bool_t AliAnalysisTaskFullpAJets::IsJetOverlap(AliEmcalJet *jet1,AliEmcalJet *jet2,Bool_t EMCalOn)
3078 Int_t jetCluster1=0;
3079 Int_t jetCluster2=0;
3081 for (i=0;i<jet1->GetNumberOfTracks();i++)
3083 jetTrack1=jet1->TrackAt(i);
3084 for (j=0;j<jet2->GetNumberOfTracks();j++)
3086 jetTrack2=jet2->TrackAt(j);
3087 if (jetTrack1 == jetTrack2)
3093 if (EMCalOn == kTRUE)
3095 for (i=0;i<jet1->GetNumberOfClusters();i++)
3097 jetCluster1=jet1->ClusterAt(i);
3098 for (j=0;j<jet2->GetNumberOfClusters();j++)
3100 jetCluster2=jet2->ClusterAt(j);
3101 if (jetCluster1 == jetCluster2)
3111 Double_t AliAnalysisTaskFullpAJets::AreaWithinTPC(Double_t r,Double_t eta)
3114 if (eta<(fTPCEtaMin+r))
3118 else if(eta>(fTPCEtaMax-r))
3126 return r*r*TMath::Pi()-AreaEdge(r,z);
3129 Double_t AliAnalysisTaskFullpAJets::AreaWithinEMCal(Double_t r,Double_t phi,Double_t eta)
3133 if (phi<(fEMCalPhiMin-r) || phi>(fEMCalPhiMax+r))
3137 else if (phi<(fEMCalPhiMin+r))
3141 else if (phi>(fEMCalPhiMin+r) && phi<(fEMCalPhiMax-r))
3150 if (eta<(fEMCalEtaMin-r) || eta>(fEMCalEtaMax+r))
3154 else if (eta<(fEMCalEtaMin+r))
3158 else if (eta>(fEMCalEtaMin+r) && eta<(fEMCalEtaMax-r))
3169 if (TMath::Sqrt(x*x+y*y)>=r)
3171 return r*r*TMath::Pi()-AreaEdge(r,x)-AreaEdge(r,y);
3173 return r*r*TMath::Pi()-AreaEdge(r,x)-AreaEdge(r,y)+AreaOverlap(r,x,y);
3175 else if ((x>=r && y<0) || (y>=r && x<0))
3177 return r*r*TMath::Pi()-AreaEdge(r,x)-AreaEdge(r,y);
3179 else if (x>0 && x<r && y<0)
3181 Double_t a=TMath::Sqrt(r*r-x*x);
3182 Double_t b=TMath::Sqrt(r*r-y*y);
3185 return r*r*TMath::ASin(b/r)+y*b;
3189 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);
3192 else if (y>0 && y<r && x<0)
3194 Double_t a=TMath::Sqrt(r*r-x*x);
3195 Double_t b=TMath::Sqrt(r*r-y*y);
3198 return r*r*TMath::ASin(a/r)+x*a;
3202 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);
3207 Double_t a=TMath::Sqrt(r*r-x*x);
3208 Double_t b=TMath::Sqrt(r*r-y*y);
3215 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);
3220 Double_t AliAnalysisTaskFullpAJets::AreaEdge(Double_t r,Double_t z)
3222 Double_t a=TMath::Sqrt(r*r-z*z);
3223 return r*r*TMath::ASin(a/r)-a*z;
3226 Double_t AliAnalysisTaskFullpAJets::AreaOverlap(Double_t r,Double_t x,Double_t y)
3228 Double_t a=TMath::Sqrt(r*r-x*x);
3229 Double_t b=TMath::Sqrt(r*r-y*y);
3230 return x*y-0.5*(x*a+y*b)+0.5*r*r*(TMath::ASin(b/r)-TMath::ASin(x/r));
3233 Double_t AliAnalysisTaskFullpAJets::TransverseArea(Double_t r,Double_t psi0,Double_t phi,Double_t eta)
3235 Double_t area_left=0;
3236 Double_t area_right=0;
3240 Double_t eta_down=0;
3242 Double_t u=eta-fEMCalEtaMin;
3243 Double_t v=fEMCalEtaMax-eta;
3245 Double_t phi1=phi+u*TMath::Tan(psi0);
3246 Double_t phi2=phi-u*TMath::Tan(psi0);
3247 Double_t phi3=phi+v*TMath::Tan(psi0);
3248 Double_t phi4=phi-v*TMath::Tan(psi0);
3250 //Calculate the Left side area
3251 if (phi1>=fEMCalPhiMax)
3253 eta_a=eta-u*((fEMCalPhiMax-phi)/(phi1-phi));
3255 if (phi2<=fEMCalPhiMin)
3257 eta_b=eta-u*((phi-fEMCalPhiMin)/(phi-phi2));
3260 if ((phi1>=fEMCalPhiMax) && (phi2<=fEMCalPhiMin))
3262 eta_up=TMath::Max(eta_a,eta_b);
3263 eta_down=TMath::Min(eta_a,eta_b);
3265 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);
3267 else if (phi1>=fEMCalPhiMax)
3269 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);
3271 else if (phi2<=fEMCalPhiMin)
3273 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);
3277 area_left=0.5*(phi1-phi2+2*r*TMath::Tan(psi0))*(u-r);
3280 // Calculate the Right side area
3281 if (phi3>=fEMCalPhiMax)
3283 eta_a=eta+v*((fEMCalPhiMax-phi)/(phi3-phi));
3285 if (phi4<=fEMCalPhiMin)
3287 eta_b=eta+v*((phi-fEMCalPhiMin)/(phi-phi4));
3290 if ((phi3>=fEMCalPhiMax) && (phi4<=fEMCalPhiMin))
3292 eta_up=TMath::Max(eta_a,eta_b);
3293 eta_down=TMath::Min(eta_a,eta_b);
3295 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);
3297 else if (phi3>=fEMCalPhiMax)
3299 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);
3301 else if (phi4<=fEMCalPhiMin)
3303 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);
3307 area_right=0.5*(phi3-phi4+2*r*TMath::Tan(psi0))*(v-r);
3309 return area_left+area_right;
3312 Double_t AliAnalysisTaskFullpAJets::MedianRhokT(Double_t *pTkTEntries, Double_t *RhokTEntries, Int_t nEntries)
3314 // This function is used to calculate the median Rho kT value. The procedure is:
3315 // - Order the kT cluster array from highest rho value to lowest
3316 // - Exclude highest rho kT cluster
3317 // - Return the median rho value of the remaining subset
3320 const Double_t rho_min=-9.9999E+99;
3322 Double_t w[nEntries]; // Used for sorting
3323 Double_t smax=rho_min;
3329 for (j=0;j<nEntries;j++)
3334 for (j=0;j<nEntries;j++)
3336 if (pTkTEntries[j]>pTmax)
3338 pTmax=pTkTEntries[j];
3343 for (j=0;j<nEntries;j++)
3345 for (k=0;k<nEntries;k++)
3347 if (RhokTEntries[k]>smax)
3349 smax=RhokTEntries[k];
3354 RhokTEntries[sindex]=rho_min;
3358 return w[nEntries/2];
3362 // AlipAJetData Class Member Defs
3364 AliAnalysisTaskFullpAJets::AlipAJetData::AlipAJetData() :
3375 fSignalTrackBias(0),
3378 fPtSubLeadingIndex(0),
3386 // Dummy constructor ALWAYS needed for I/O.
3389 AliAnalysisTaskFullpAJets::AlipAJetData::AlipAJetData(const char *name, Bool_t isFull, Int_t nEntries) :
3400 fSignalTrackBias(0),
3403 fPtSubLeadingIndex(0),
3411 SetIsJetsFull(isFull);
3412 SetTotalEntries(nEntries);
3413 SetLeading(0,-9.99E+099);
3414 SetSubLeading(0,-9.99E+099);
3416 SetAreaCutFraction(0.6);
3418 SetSignalTrackPtBias(0);
3422 AliAnalysisTaskFullpAJets::AlipAJetData::~AlipAJetData()
3427 SetIsJetsFull(kFALSE);
3430 SetTotalSignalJets(0);
3434 SetAreaCutFraction(0);
3437 SetSignalTrackPtBias(kFALSE);
3439 delete [] fJetsIndex;
3440 delete [] fJetsSCIndex;
3441 delete [] fIsJetInArray;
3442 delete [] fJetMaxChargedPt;
3446 // User Defined Sub-Routines
3447 void AliAnalysisTaskFullpAJets::AlipAJetData::InitializeJetData(TClonesArray *jetList, Int_t nEntries)
3452 Double_t AreaThreshold = fAreaCutFrac*TMath::Pi()*TMath::Power(fJetR,2);
3454 // Initialize Jet Data
3455 for (i=0;i<nEntries;i++)
3457 AliEmcalJet *myJet =(AliEmcalJet*) jetList->At(i);
3459 if (fIsJetInArray[i]==kTRUE && myJet->Area()>AreaThreshold)
3462 if (myJet->Pt()>fPtMax)
3464 SetSubLeading(fPtMaxIndex,fPtMax);
3465 SetLeading(i,myJet->Pt());
3467 else if (myJet->Pt()>fPtSubLeading)
3469 SetSubLeading(i,myJet->Pt());
3471 // require leading charged constituent to have a pT greater then the signal threshold & Jet NEF to be less then the Signal Jet NEF cut
3472 fJetMaxChargedPt[i] = myJet->MaxTrackPt();
3473 if (fSignalTrackBias==kTRUE)
3475 if (fJetMaxChargedPt[i]>=fSignalPt && myJet->NEF()<=fNEF)
3477 SetSignalJetIndex(i,l);
3483 if (myJet->Pt()>=fSignalPt && myJet->NEF()<=fNEF)
3485 SetSignalJetIndex(i,l);
3493 SetTotalSignalJets(l);
3497 void AliAnalysisTaskFullpAJets::AlipAJetData::SetName(const char *name)
3502 void AliAnalysisTaskFullpAJets::AlipAJetData::SetIsJetsFull(Bool_t isFull)
3504 fIsJetsFull = isFull;
3507 void AliAnalysisTaskFullpAJets::AlipAJetData::SetTotalEntries(Int_t nEntries)
3510 fJetsIndex = new Int_t[fnTotal];
3511 fJetsSCIndex = new Int_t[fnTotal];
3512 fIsJetInArray = new Bool_t[fnTotal];
3513 fJetMaxChargedPt = new Double_t[fnTotal];
3516 void AliAnalysisTaskFullpAJets::AlipAJetData::SetTotalJets(Int_t nJets)
3521 void AliAnalysisTaskFullpAJets::AlipAJetData::SetTotalSignalJets(Int_t nSignalJets)
3523 fnJetsSC = nSignalJets;
3526 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSignalCut(Double_t Pt)
3531 void AliAnalysisTaskFullpAJets::AlipAJetData::SetLeading(Int_t index, Double_t Pt)
3533 fPtMaxIndex = index;
3537 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSubLeading(Int_t index, Double_t Pt)
3539 fPtSubLeadingIndex = index;
3543 void AliAnalysisTaskFullpAJets::AlipAJetData::SetJetIndex(Int_t index, Int_t At)
3545 fJetsIndex[At] = index;
3548 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSignalJetIndex(Int_t index, Int_t At)
3550 fJetsSCIndex[At] = index;
3553 void AliAnalysisTaskFullpAJets::AlipAJetData::SetIsJetInArray(Bool_t isInArray, Int_t At)
3555 fIsJetInArray[At] = isInArray;
3558 void AliAnalysisTaskFullpAJets::AlipAJetData::SetAreaCutFraction(Double_t areaFraction)
3560 fAreaCutFrac = areaFraction;
3563 void AliAnalysisTaskFullpAJets::AlipAJetData::SetJetR(Double_t jetR)
3568 void AliAnalysisTaskFullpAJets::AlipAJetData::SetNEF(Double_t nef)
3573 void AliAnalysisTaskFullpAJets::AlipAJetData::SetSignalTrackPtBias(Bool_t chargedBias)
3575 fSignalTrackBias = chargedBias;
3579 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetTotalEntries()
3584 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetTotalJets()
3589 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetTotalSignalJets()
3594 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSignalCut()
3599 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetLeadingIndex()
3604 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetLeadingPt()
3609 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSubLeadingIndex()
3611 return fPtSubLeadingIndex;
3614 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSubLeadingPt()
3616 return fPtSubLeading;
3619 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetJetIndex(Int_t At)
3621 return fJetsIndex[At];
3624 Int_t AliAnalysisTaskFullpAJets::AlipAJetData::GetSignalJetIndex(Int_t At)
3626 return fJetsSCIndex[At];
3629 Bool_t AliAnalysisTaskFullpAJets::AlipAJetData::GetIsJetInArray(Int_t At)
3631 return fIsJetInArray[At];
3634 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetJetMaxChargedPt(Int_t At)
3636 return fJetMaxChargedPt[At];
3639 Double_t AliAnalysisTaskFullpAJets::AlipAJetData::GetNEF()
3644 // AlipAJetHistos Class Member Defs
3646 AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos() :
3659 fh80100BSPtSignal(0),
3666 fh020DeltaPtSignal(0),
3667 fh80100DeltaPtSignal(0),
3669 fhDeltaPtCenSignal(0),
3670 fh020DeltaPtNColl(0),
3671 fh80100DeltaPtNColl(0),
3673 fhDeltaPtCenNColl(0),
3675 fh80100BckgFlucPt(0),
3684 fhJetConstituentPt(0),
3687 fhJetConstituentCounts(0),
3688 fhJetTracksCounts(0),
3689 fhJetClustersCounts(0),
3690 fhJetPtZConstituent(0),
3693 fhJetPtZLeadingConstituent(0),
3694 fhJetPtZLeadingTrack(0),
3695 fhJetPtZLeadingCluster(0),
3700 fhJetNEFSignalInfo(0),
3701 fhClusterNEFInfo(0),
3702 fhClusterNEFSignalInfo(0),
3703 fhClusterShapeAll(0),
3704 fhClusterPtCellAll(0),
3727 fLChargedTrackPtBins(0),
3728 fLChargedTrackPtLow(0),
3729 fLChargedTrackPtUp(0),
3731 fDoNEFSignalOnly(1),
3732 fSignalTrackBias(0),
3739 fEMCalPhiMin(1.39626),
3740 fEMCalPhiMax(3.26377),
3745 // Dummy constructor ALWAYS needed for I/O.
3748 AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos(const char *name) :
3761 fh80100BSPtSignal(0),
3768 fh020DeltaPtSignal(0),
3769 fh80100DeltaPtSignal(0),
3771 fhDeltaPtCenSignal(0),
3772 fh020DeltaPtNColl(0),
3773 fh80100DeltaPtNColl(0),
3775 fhDeltaPtCenNColl(0),
3777 fh80100BckgFlucPt(0),
3786 fhJetConstituentPt(0),
3789 fhJetConstituentCounts(0),
3790 fhJetTracksCounts(0),
3791 fhJetClustersCounts(0),
3792 fhJetPtZConstituent(0),
3795 fhJetPtZLeadingConstituent(0),
3796 fhJetPtZLeadingTrack(0),
3797 fhJetPtZLeadingCluster(0),
3802 fhJetNEFSignalInfo(0),
3803 fhClusterNEFInfo(0),
3804 fhClusterNEFSignalInfo(0),
3805 fhClusterShapeAll(0),
3806 fhClusterPtCellAll(0),
3829 fLChargedTrackPtBins(0),
3830 fLChargedTrackPtLow(0),
3831 fLChargedTrackPtUp(0),
3833 fDoNEFSignalOnly(1),
3834 fSignalTrackBias(0),
3841 fEMCalPhiMin(1.39626),
3842 fEMCalPhiMax(3.26377),
3848 SetCentralityTag("ZNA");
3849 SetCentralityRange(100,0,100);
3850 SetPtRange(250,-50,200);
3851 SetRhoPtRange(500,0,50);
3852 SetDeltaPtRange(200,-100,100);
3853 SetBackgroundFluctuationsPtRange(100,0,100);
3854 SetLeadingJetPtRange(200,0,200);
3855 SetLeadingChargedTrackPtRange(100,0,100);
3856 SetNEFRange(100,0,1);
3857 DoNEFQAPlots(kFALSE);
3862 AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos(const char *name, TString centag, Bool_t doNEF) :
3875 fh80100BSPtSignal(0),
3882 fh020DeltaPtSignal(0),
3883 fh80100DeltaPtSignal(0),
3885 fhDeltaPtCenSignal(0),
3886 fh020DeltaPtNColl(0),
3887 fh80100DeltaPtNColl(0),
3889 fhDeltaPtCenNColl(0),
3891 fh80100BckgFlucPt(0),
3900 fhJetConstituentPt(0),
3903 fhJetConstituentCounts(0),
3904 fhJetTracksCounts(0),
3905 fhJetClustersCounts(0),
3906 fhJetPtZConstituent(0),
3909 fhJetPtZLeadingConstituent(0),
3910 fhJetPtZLeadingTrack(0),
3911 fhJetPtZLeadingCluster(0),
3916 fhJetNEFSignalInfo(0),
3917 fhClusterNEFInfo(0),
3918 fhClusterNEFSignalInfo(0),
3919 fhClusterShapeAll(0),
3920 fhClusterPtCellAll(0),
3943 fLChargedTrackPtBins(0),
3944 fLChargedTrackPtLow(0),
3945 fLChargedTrackPtUp(0),
3947 fDoNEFSignalOnly(1),
3948 fSignalTrackBias(0),
3955 fEMCalPhiMin(1.39626),
3956 fEMCalPhiMax(3.26377),
3962 SetCentralityTag(centag.Data());
3963 SetCentralityRange(100,0,100);
3964 SetPtRange(250,-50,200);
3965 SetRhoPtRange(500,0,50);
3966 SetDeltaPtRange(200,-100,100);
3967 SetBackgroundFluctuationsPtRange(100,0,100);
3968 SetLeadingJetPtRange(200,0,200);
3969 SetLeadingChargedTrackPtRange(100,0,100);
3970 SetNEFRange(100,0,1);
3971 DoNEFQAPlots(doNEF);
3976 AliAnalysisTaskFullpAJets::AlipAJetHistos::AlipAJetHistos(const char *name, TString centag, Bool_t doNEF, Bool_t doNEFSignalOnly, Bool_t doTHnSparse) :
3989 fh80100BSPtSignal(0),
3996 fh020DeltaPtSignal(0),
3997 fh80100DeltaPtSignal(0),
3999 fhDeltaPtCenSignal(0),
4000 fh020DeltaPtNColl(0),
4001 fh80100DeltaPtNColl(0),
4003 fhDeltaPtCenNColl(0),
4005 fh80100BckgFlucPt(0),
4014 fhJetConstituentPt(0),
4017 fhJetConstituentCounts(0),
4018 fhJetTracksCounts(0),
4019 fhJetClustersCounts(0),
4020 fhJetPtZConstituent(0),
4023 fhJetPtZLeadingConstituent(0),
4024 fhJetPtZLeadingTrack(0),
4025 fhJetPtZLeadingCluster(0),
4030 fhJetNEFSignalInfo(0),
4031 fhClusterNEFInfo(0),
4032 fhClusterNEFSignalInfo(0),
4033 fhClusterShapeAll(0),
4034 fhClusterPtCellAll(0),
4057 fLChargedTrackPtBins(0),
4058 fLChargedTrackPtLow(0),
4059 fLChargedTrackPtUp(0),
4061 fDoNEFSignalOnly(1),
4062 fSignalTrackBias(0),
4069 fEMCalPhiMin(1.39626),
4070 fEMCalPhiMax(3.26377),
4076 SetCentralityTag(centag.Data());
4077 SetCentralityRange(100,0,100);
4078 SetPtRange(250,-50,200);
4079 SetRhoPtRange(500,0,50);
4080 SetDeltaPtRange(200,-100,100);
4081 SetBackgroundFluctuationsPtRange(100,0,100);
4082 SetLeadingJetPtRange(200,0,200);
4083 SetLeadingChargedTrackPtRange(100,0,100);
4084 SetNEFRange(100,0,1);
4085 DoNEFQAPlots(doNEF);
4086 DoNEFSignalOnly(doNEFSignalOnly);
4087 DoTHnSparse(doTHnSparse);
4093 AliAnalysisTaskFullpAJets::AlipAJetHistos::~AlipAJetHistos()
4101 void AliAnalysisTaskFullpAJets::AlipAJetHistos::Init()
4105 // Initialize Private Variables
4107 fEMCalPhiMin=(80/(double)360)*2*TMath::Pi();
4108 fEMCalPhiMax=(187/(double)360)*2*TMath::Pi();
4112 fOutput = new TList();
4113 fOutput->SetOwner();
4114 fOutput->SetName(fName);
4116 TString RhoString="";
4117 TString PtString="";
4118 TString DeltaPtString="";
4119 TString BckgFlucPtString="";
4120 TString CentralityString;
4121 CentralityString = Form("Centrality (%s) ",fCentralityTag.Data());
4123 // Rho Spectral Plots
4124 RhoString = Form("%d-%d Centrality, Rho Spectrum",0,20);
4125 fh020Rho = new TH1F("fh020Rho",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp);
4126 fh020Rho->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
4127 fh020Rho->GetYaxis()->SetTitle("1/N_{Events} dN/d#rho");
4130 RhoString = Form("%d-%d Centrality, Rho Spectrum",80,100);
4131 fh80100Rho = new TH1F("fh80100Rho",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp);
4132 fh80100Rho->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
4133 fh80100Rho->GetYaxis()->SetTitle("1/N_{Events} dN/d#rho");
4134 fh80100Rho->Sumw2();
4136 RhoString = Form("%d-%d Centrality, Rho Spectrum",0,100);
4137 fhRho = new TH1F("fhRho",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp);
4138 fhRho->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
4139 fhRho->GetYaxis()->SetTitle("1/N_{Events} dN/d#rho");
4142 RhoString = "Rho Spectrum vs Centrality";
4143 fhRhoCen = new TH2F("fhRhoCen",RhoString,fRhoPtBins,fRhoPtLow,fRhoPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4144 fhRhoCen->GetXaxis()->SetTitle("p_{T}/Area (GeV/c)");
4145 fhRhoCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4146 fhRhoCen->GetZaxis()->SetTitle("1/N_{Events} dN/d#rho");
4149 // Background Subtracted Plots
4150 PtString = Form("%d-%d Centrality, Background Subtracted Jet Spectrum",0,20);
4151 fh020BSPt = new TH1F("fh020BSPt",PtString,fPtBins,fPtLow,fPtUp);
4152 fh020BSPt->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4153 fh020BSPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4156 PtString = Form("%d-%d Centrality, Background Subtracted Jet Spectrum",80,100);
4157 fh80100BSPt = new TH1F("fh80100BSPt",PtString,fPtBins,fPtLow,fPtUp);
4158 fh80100BSPt->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4159 fh80100BSPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4160 fh80100BSPt->Sumw2();
4162 PtString = Form("%d-%d Centrality, Background Subtracted Jet Spectrum",0,100);
4163 fhBSPt = new TH1F("fhBSPt",PtString,fPtBins,fPtLow,fPtUp);
4164 fhBSPt->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4165 fhBSPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4168 PtString = "Background Subtracted Jet Spectrum vs Centrality";
4169 fhBSPtCen = new TH2F("fhBSPtCen",PtString,fPtBins,fPtLow,fPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4170 fhBSPtCen->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4171 fhBSPtCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4172 fhBSPtCen->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4175 PtString = Form("%d-%d Centrality, Background Subtracted Signal Jet Spectrum",0,20);
4176 fh020BSPtSignal = new TH1F("fh020BSPtSignal",PtString,fPtBins,fPtLow,fPtUp);
4177 fh020BSPtSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4178 fh020BSPtSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4179 fh020BSPtSignal->Sumw2();
4181 PtString = Form("%d-%d Centrality, Background Subtracted Signal Jet Spectrum",80,100);
4182 fh80100BSPtSignal = new TH1F("fh80100BSPtSignal",PtString,fPtBins,fPtLow,fPtUp);
4183 fh80100BSPtSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4184 fh80100BSPtSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4185 fh80100BSPtSignal->Sumw2();
4187 PtString = Form("%d-%d Centrality, Background Subtracted Signal Jet Spectrum",0,100);
4188 fhBSPtSignal = new TH1F("fhBSPtSignal",PtString,fPtBins,fPtLow,fPtUp);
4189 fhBSPtSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4190 fhBSPtSignal->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4191 fhBSPtSignal->Sumw2();
4193 PtString = "Background Subtracted Signal Jet Spectrum vs Centrality";
4194 fhBSPtCenSignal = new TH2F("fhBSPtCenSignal",PtString,fPtBins,fPtLow,fPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4195 fhBSPtCenSignal->GetXaxis()->SetTitle("p_{T} - #rhoA (GeV/c)");
4196 fhBSPtCenSignal->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4197 fhBSPtCenSignal->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4198 fhBSPtCenSignal->Sumw2();
4200 // Delta Pt Plots with RC at least 2R away from Leading Signal
4201 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,20);
4202 fh020DeltaPt = new TH1F("fh020DeltaPt",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4203 fh020DeltaPt->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4204 fh020DeltaPt->GetYaxis()->SetTitle("Probability Density");
4205 fh020DeltaPt->Sumw2();
4207 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",80,100);
4208 fh80100DeltaPt = new TH1F("fh80100DeltaPt",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4209 fh80100DeltaPt->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4210 fh80100DeltaPt->GetYaxis()->SetTitle("Probability Density");
4211 fh80100DeltaPt->Sumw2();
4213 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,100);
4214 fhDeltaPt = new TH1F("fhDeltaPt",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4215 fhDeltaPt->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4216 fhDeltaPt->GetYaxis()->SetTitle("Probability Density");
4219 DeltaPtString = "#deltap_{T} Spectrum vs Centrality";
4220 fhDeltaPtCen = new TH2F("fhDeltaPtCen",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4221 fhDeltaPtCen->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4222 fhDeltaPtCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4223 fhDeltaPtCen->GetZaxis()->SetTitle("Probability Density");
4224 fhDeltaPtCen->Sumw2();
4226 // Delta Pt Plots with no spatial restrictions on RC
4227 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,20);
4228 fh020DeltaPtSignal = new TH1F("fh020DeltaPtSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4229 fh020DeltaPtSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4230 fh020DeltaPtSignal->GetYaxis()->SetTitle("Probability Density");
4231 fh020DeltaPtSignal->Sumw2();
4233 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",80,100);
4234 fh80100DeltaPtSignal = new TH1F("fh80100DeltaPtSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4235 fh80100DeltaPtSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4236 fh80100DeltaPtSignal->GetYaxis()->SetTitle("Probability Density");
4237 fh80100DeltaPtSignal->Sumw2();
4239 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,100);
4240 fhDeltaPtSignal = new TH1F("fhDeltaPtSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4241 fhDeltaPtSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4242 fhDeltaPtSignal->GetYaxis()->SetTitle("Probability Density");
4243 fhDeltaPtSignal->Sumw2();
4245 DeltaPtString = "#deltap_{T} Spectrum vs Centrality";
4246 fhDeltaPtCenSignal = new TH2F("fhDeltaPtCenSignal",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4247 fhDeltaPtCenSignal->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4248 fhDeltaPtCenSignal->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4249 fhDeltaPtCenSignal->GetZaxis()->SetTitle("Probability Density");
4250 fhDeltaPtCenSignal->Sumw2();
4252 // Delta Pt Plots with NColl restrictions on RC
4253 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,20);
4254 fh020DeltaPtNColl = new TH1F("fh020DeltaPtNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4255 fh020DeltaPtNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4256 fh020DeltaPtNColl->GetYaxis()->SetTitle("Probability Density");
4257 fh020DeltaPtNColl->Sumw2();
4259 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",80,100);
4260 fh80100DeltaPtNColl = new TH1F("fh80100DeltaPtNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4261 fh80100DeltaPtNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4262 fh80100DeltaPtNColl->GetYaxis()->SetTitle("Probability Density");
4263 fh80100DeltaPtNColl->Sumw2();
4265 DeltaPtString = Form("%d-%d Centrality, #deltap_{T} Spectrum",0,100);
4266 fhDeltaPtNColl = new TH1F("fhDeltaPtNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp);
4267 fhDeltaPtNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4268 fhDeltaPtNColl->GetYaxis()->SetTitle("Probability Density");
4269 fhDeltaPtNColl->Sumw2();
4271 DeltaPtString = "#deltap_{T} Spectrum vs Centrality";
4272 fhDeltaPtCenNColl = new TH2F("fhDeltaPtCenNColl",DeltaPtString,fDeltaPtBins,fDeltaPtLow,fDeltaPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4273 fhDeltaPtCenNColl->GetXaxis()->SetTitle("#deltap_{T} (GeV/c)");
4274 fhDeltaPtCenNColl->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4275 fhDeltaPtCenNColl->GetZaxis()->SetTitle("Probability Density");
4276 fhDeltaPtCenNColl->Sumw2();
4278 // Background Fluctuations Pt Plots
4279 BckgFlucPtString = Form("%d-%d Centrality, Background Fluctuation p_{T} Spectrum",0,20);
4280 fh020BckgFlucPt = new TH1F("fh020BckgFlucPt",PtString,fPtBins,fPtLow,fPtUp);
4281 fh020BckgFlucPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
4282 fh020BckgFlucPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4283 fh020BckgFlucPt->Sumw2();
4285 BckgFlucPtString = Form("%d-%d Centrality, Background Fluctuation p_{T} Spectrum",80,100);
4286 fh80100BckgFlucPt = new TH1F("fh80100BckgFlucPt",BckgFlucPtString,fBckgFlucPtBins,fBckgFlucPtLow,fBckgFlucPtUp);
4287 fh80100BckgFlucPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
4288 fh80100BckgFlucPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4289 fh80100BckgFlucPt->Sumw2();
4291 BckgFlucPtString = Form("%d-%d Centrality, Background Fluctuation p_{T} Spectrum",0,100);
4292 fhBckgFlucPt = new TH1F("fhBckgFlucPt",BckgFlucPtString,fBckgFlucPtBins,fBckgFlucPtLow,fBckgFlucPtUp);
4293 fhBckgFlucPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
4294 fhBckgFlucPt->GetYaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4295 fhBckgFlucPt->Sumw2();
4297 BckgFlucPtString = "Background Fluctuation p_{T} Spectrum vs Centrality";
4298 fhBckgFlucPtCen = new TH2F("fhBckgFlucPtCen",BckgFlucPtString,fBckgFlucPtBins,fBckgFlucPtLow,fBckgFlucPtUp,fCentralityBins,fCentralityLow,fCentralityUp);
4299 fhBckgFlucPtCen->GetXaxis()->SetTitle("#p_{T} (GeV/c)");
4300 fhBckgFlucPtCen->GetYaxis()->SetTitle(Form("%s",CentralityString.Data()));
4301 fhBckgFlucPtCen->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}d#etad#varphi");
4302 fhBckgFlucPtCen->Sumw2();
4304 // Background Density vs Centrality Profile
4305 RhoString = "Background Density vs Centrality";
4306 fpRho = new TProfile("fpRho",RhoString,fCentralityBins,fCentralityLow,fCentralityUp);
4307 fpRho->GetXaxis()->SetTitle(Form("%s",CentralityString.Data()));
4308 fpRho->GetYaxis()->SetTitle("p_{T}/Area (GeV/c)");
4310 // Background Density vs Leading Jet Profile
4311 fpLJetRho = new TProfile("fpLJetRho","#rho vs Leading Jet p_{T}",fLJetPtBins,fLJetPtLow,fLJetPtUp);
4312 fpLJetRho->GetXaxis()->SetTitle("Leading Jet p_{T}");
4313 fpLJetRho->GetYaxis()->SetTitle("p_{T}/Area (GeV/c)");
4316 fhJetPtEtaPhi = new TH3F("fhJetPtEtaPhi","Jet p_{T} vs #eta-#varphi",fPtBins,fPtLow,fPtUp,TCBins,fEMCalEtaMin,fEMCalEtaMax,TCBins,fEMCalPhiMin,fEMCalPhiMax);
4317 fhJetPtEtaPhi->GetXaxis()->SetTitle("p_{T} (GeV/c)");
4318 fhJetPtEtaPhi->GetYaxis()->SetTitle("#eta");
4319 fhJetPtEtaPhi->GetZaxis()->SetTitle("#varphi");
4320 fhJetPtEtaPhi->Sumw2();
4323 Int_t JetPtAreaBins=200;
4324 Double_t JetPtAreaLow=0.0;
4325 Double_t JetPtAreaUp=2.0;
4327 fhJetPtArea = new TH2F("fhJetPtArea","Jet Area Distribution",fPtBins,fPtLow,fPtUp,JetPtAreaBins,JetPtAreaLow,JetPtAreaUp);
4328 fhJetPtArea->GetXaxis()->SetTitle("p_{T} (GeV/c)");
4329 fhJetPtArea->GetYaxis()->SetTitle("A_{jet}");
4330 fhJetPtArea->GetZaxis()->SetTitle("1/N_{Events} dN/dA_{jet}dp_{T}");
4331 fhJetPtArea->Sumw2();
4333 // Jet pT vs Constituent pT
4334 fhJetConstituentPt = new TH2F("fhJetConstituentPt","Jet constituents p_{T} distribution",fPtBins,fPtLow,fPtUp,10*fPtBins,fPtLow,fPtUp);
4335 fhJetConstituentPt->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4336 fhJetConstituentPt->GetYaxis()->SetTitle("Constituent p_{T} (GeV/c)");
4337 fhJetConstituentPt->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dp_{T,track}");
4338 fhJetConstituentPt->Sumw2();
4340 fhJetTracksPt = new TH2F("fhJetTracksPt","Jet constituents Tracks p_{T} distribution",fPtBins,fPtLow,fPtUp,10*fPtBins,fPtLow,fPtUp);
4341 fhJetTracksPt->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4342 fhJetTracksPt->GetYaxis()->SetTitle("Constituent Track p_{T} (GeV/c)");
4343 fhJetTracksPt->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dp_{T,track}");
4344 fhJetTracksPt->Sumw2();
4346 fhJetClustersPt = new TH2F("fhJetClustersPt","Jet constituents Clusters p_{T} distribution",fPtBins,fPtLow,fPtUp,10*fPtBins,fPtLow,fPtUp);
4347 fhJetClustersPt->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4348 fhJetClustersPt->GetYaxis()->SetTitle("Constituent Cluster p_{T} (GeV/c)");
4349 fhJetClustersPt->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dp_{T,cluster}");
4350 fhJetClustersPt->Sumw2();
4352 // Jet pT vs Constituent Counts
4353 fhJetConstituentCounts = new TH2F("fhJetConstituentCounts","Jet constituents distribution",fPtBins,fPtLow,fPtUp,TCBins,0,(Double_t)TCBins);
4354 fhJetConstituentCounts->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4355 fhJetConstituentCounts->GetYaxis()->SetTitle("Constituent Count");
4356 fhJetConstituentCounts->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dN_{constituent}");
4357 fhJetConstituentCounts->Sumw2();
4359 fhJetTracksCounts = new TH2F("fhJetTracksCounts","Jet constituents Tracks distribution",fPtBins,fPtLow,fPtUp,TCBins,0,(Double_t)TCBins);
4360 fhJetTracksCounts->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4361 fhJetTracksCounts->GetYaxis()->SetTitle("Constituent Track Count");
4362 fhJetTracksCounts->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dN_{track}");
4363 fhJetTracksCounts->Sumw2();
4365 fhJetClustersCounts = new TH2F("fhJetClustersCounts","Jet constituents Clusters distribution",fPtBins,fPtLow,fPtUp,TCBins,0,(Double_t)TCBins);
4366 fhJetClustersCounts->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4367 fhJetClustersCounts->GetYaxis()->SetTitle("Constituent Cluster Count");
4368 fhJetClustersCounts->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dN_{cluster}");
4369 fhJetClustersCounts->Sumw2();
4371 // Jet pT vs z_{constituent/track/cluster}
4372 fhJetPtZConstituent = new TH2F("fhJetPtZConstituent","Jet z_{constituent} distribution",fPtBins,fPtLow,fPtUp,TCBins,0,1.0);
4373 fhJetPtZConstituent->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4374 fhJetPtZConstituent->GetYaxis()->SetTitle("z_{constituent}");
4375 fhJetPtZConstituent->GetZaxis()->SetTitle("1/N_{Events} dN_{jet}/dp_{T,jet}dz_{constituent}");
4376 fhJetPtZConstituent->Sumw2();
4378 fhJetPtZTrack = new TH2F("fhJetPtZTrack","Jet z_{track} distribution",fPtBins,fPtLow,fPtUp,TCBins,0,1.0);
4379 fhJetPtZTrack->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4380 fhJetPtZTrack->GetYaxis()->SetTitle("z_{track}");
4381 fhJetPtZTrack->GetZaxis()->SetTitle("1/N_{Events} dN_{jet}/dp_{T,jet}dz_{track}");
4382 fhJetPtZTrack->Sumw2();
4384 fhJetPtZCluster = new TH2F("fhJetPtZCluster","Jet z_{cluster} distribution",fPtBins,fPtLow,fPtUp,TCBins,0,1.0);
4385 fhJetPtZCluster->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4386 fhJetPtZCluster->GetYaxis()->SetTitle("z_{cluster}");
4387 fhJetPtZCluster->GetZaxis()->SetTitle("1/N_{Events} dN_{jet}/dp_{T,jet}dz_{cluster}");
4388 fhJetPtZCluster->Sumw2();
4390 // Jet pT vs z_Leading{constituent/track/cluster}
4391 fhJetPtZLeadingConstituent = new TH2F("fhJetPtZLeadingConstituent","Jet z_{Leading,constituent} distribution",fPtBins,fPtLow,fPtUp,TCBins,0,1.0);
4392 fhJetPtZLeadingConstituent->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4393 fhJetPtZLeadingConstituent->GetYaxis()->SetTitle("z_{Leading,constituent}");
4394 fhJetPtZLeadingConstituent->GetZaxis()->SetTitle("1/N_{Events} dN_{jet}/dp_{T,jet}dz_{constituent}");
4395 fhJetPtZLeadingConstituent->Sumw2();
4397 fhJetPtZLeadingTrack = new TH2F("fhJetPtZLeadingTrack","Jet z_{Leading,track} distribution",fPtBins,fPtLow,fPtUp,TCBins,0,1.0);
4398 fhJetPtZLeadingTrack->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4399 fhJetPtZLeadingTrack->GetYaxis()->SetTitle("z_{Leading,track}");
4400 fhJetPtZLeadingTrack->GetZaxis()->SetTitle("1/N_{Events} dN_{jet}/dp_{T,jet}dz_{track}");
4401 fhJetPtZLeadingTrack->Sumw2();
4403 fhJetPtZLeadingCluster = new TH2F("fhJetPtZLeadingCluster","Jet z_{Leading,cluster} distribution",fPtBins,fPtLow,fPtUp,TCBins,0,1.0);
4404 fhJetPtZLeadingCluster->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4405 fhJetPtZLeadingCluster->GetYaxis()->SetTitle("z_{Leading,cluster}");
4406 fhJetPtZLeadingCluster->GetZaxis()->SetTitle("1/N_{Events} dN_{jet}/dp_{T,jet}dz_{cluster}");
4407 fhJetPtZLeadingCluster->Sumw2();
4409 // Neutral Energy Fraction Histograms & QA
4410 if (fDoNEFQAPlots==kTRUE)
4412 fNEFOutput = new TList();
4413 fNEFOutput->SetOwner();
4414 fNEFOutput->SetName("ListNEFQAPlots");
4416 fhJetPtNEF = new TH2F("fhJetPtNEF","Jet p_{T} vs NEF",fPtBins,fPtLow,fPtUp,fNEFBins,fNEFLow,fNEFUp);
4417 fhJetPtNEF->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
4418 fhJetPtNEF->GetYaxis()->SetTitle("Neutral Energy Fraction");
4419 fhJetPtNEF->GetZaxis()->SetTitle("1/N_{Events} dN_{jet}/dp_{T}dNEF");
4420 fhJetPtNEF->Sumw2();
4422 SetNEFJetDimensions(10); // Order: nef,Jet Pt,Eta,Phi,Centrality,Constituent mult,Charged mult, Neutral mult, z_leading
4423 SetNEFClusterDimensions(11); // Order: nef,Jet Pt,Eta,Phi,Centrality,F_Cross,z_leading,t_cell,deltat_cell,Cell Count, E_Cluster
4425 Int_t dimJetBins[fnDimJet];
4426 Double_t dimJetLow[fnDimJet];
4427 Double_t dimJetUp[fnDimJet];
4429 Int_t dimClusterBins[fnDimCluster];
4430 Double_t dimClusterLow[fnDimCluster];
4431 Double_t dimClusterUp[fnDimCluster];
4433 // Establish dimensinality bin counts and bounds
4435 dimJetBins[0] = dimClusterBins[0] = fNEFBins;
4436 dimJetLow[0] = dimClusterLow[0] = fNEFLow;
4437 dimJetUp[0] = dimClusterUp[0] = fNEFUp;
4440 dimJetBins[1] = dimClusterBins[1] = fPtBins;
4441 dimJetLow[1] = dimClusterLow[1] = fPtLow;
4442 dimJetUp[1] = dimClusterUp[1] = fPtUp;
4445 dimJetBins[2] = dimJetBins[3] = dimClusterBins[2] = dimClusterBins[3] = TCBins;
4446 dimJetLow[2] = dimClusterLow[2] = fEMCalEtaMin;
4447 dimJetUp[2] = dimClusterUp[2] = fEMCalEtaMax;
4448 dimJetLow[3] = dimClusterLow[3] = fEMCalPhiMin;
4449 dimJetUp[3] = dimClusterUp[3] = fEMCalPhiMax;
4452 dimJetBins[4] = dimClusterBins[4] = fCentralityBins;
4453 dimJetLow[4] = dimClusterLow[4] = fCentralityLow;
4454 dimJetUp[4] = dimClusterUp[4] = fCentralityUp;
4457 dimJetBins[5] = dimClusterBins[5] = TCBins;
4458 dimJetLow[5] = dimClusterLow[5] = 0.0;
4459 dimJetUp[5] = dimClusterUp[5] = 1.0;
4461 // Jets Constituent Multiplicity Info {Total,Charged,Neutral}
4464 dimJetBins[i] = TCBins;
4466 dimJetUp[i] = (Double_t)TCBins;
4470 dimJetBins[9] = TCBins;
4475 dimClusterBins[6] = fPtBins;
4476 dimClusterLow[6] = fPtLow;
4477 dimClusterUp[6] = fPtUp;
4480 dimClusterBins[7] = TCBins;
4481 dimClusterLow[7] = 0.0;
4482 dimClusterUp[7] = 1.0;
4485 dimClusterBins[8] = 400;
4486 dimClusterLow[8] = -2e-07;
4487 dimClusterUp[8] = 2e-07;
4489 // Cluster delta t_cell
4490 dimClusterBins[9] = 100;
4491 dimClusterLow[9] = 0.0;
4492 dimClusterUp[9] = 1e-07;
4494 // Cluster Cell Count
4495 dimClusterBins[10] = TCBins;
4496 dimClusterLow[10] = 0.0;
4497 dimClusterUp[10] = 100.0;
4499 if (fDoTHnSparse == kTRUE)
4501 fhJetNEFSignalInfo = new THnSparseF("fhJetNEFSignalInfo","Signal Jet NEF Information Histogram",fnDimJet,dimJetBins,dimJetLow,dimJetUp);
4502 fhJetNEFSignalInfo->Sumw2();
4504 fhClusterNEFSignalInfo = new THnSparseF("fhClusterNEFSignalInfo","Signal Jet NEF Cluster Information Histogram",fnDimCluster,dimClusterBins,dimClusterLow,dimClusterUp);
4505 fhClusterNEFSignalInfo->Sumw2();
4508 fhClusterShapeAll = new TH1F("fhClusterShapeAll","Cluster Shape of all CaloClustersCorr",10*TCBins,0,10*TCBins);
4509 fhClusterShapeAll->GetXaxis()->SetTitle("Cells");
4510 fhClusterShapeAll->GetYaxis()->SetTitle("1/N_{Events} dN/dCells");
4511 fhClusterShapeAll->Sumw2();
4513 fhClusterPtCellAll = new TH2F("fhClusterPtCellAll","Cluster p_{T} vs Cluster Shape of all CaloClustersCorr",fPtBins,fPtLow,fPtUp,10*TCBins,0,10*TCBins);
4514 fhClusterPtCellAll->GetXaxis()->SetTitle("p_{T} (GeV/c)");
4515 fhClusterPtCellAll->GetYaxis()->SetTitle("Cells");
4516 fhClusterPtCellAll->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T}dCells");
4517 fhClusterPtCellAll->Sumw2();
4519 if (fDoNEFSignalOnly == kFALSE)
4521 fhJetNEFInfo = new THnSparseF("fhJetNEFInfo","Jet NEF Information Histogram",fnDimJet,dimJetBins,dimJetLow,dimJetUp);
4522 fhJetNEFInfo->Sumw2();
4524 fhClusterNEFInfo = new THnSparseF("fhClusterNEFInfo","Jet NEF Cluster Information Histogram",fnDimCluster,dimClusterBins,dimClusterLow,dimClusterUp);
4525 fhClusterNEFInfo->Sumw2();
4527 fNEFOutput->Add(fhJetNEFInfo);
4528 fNEFOutput->Add(fhClusterNEFInfo);
4530 fNEFOutput->Add(fhJetNEFSignalInfo);
4531 fNEFOutput->Add(fhClusterNEFSignalInfo);
4532 fNEFOutput->Add(fhClusterShapeAll);
4533 fNEFOutput->Add(fhClusterPtCellAll);
4535 fNEFOutput->Add(fhJetPtNEF);
4536 fOutput->Add(fNEFOutput);
4539 // Add Histos & Profiles to List
4540 fOutput->Add(fh020Rho);
4541 fOutput->Add(fh80100Rho);
4542 fOutput->Add(fhRho);
4543 fOutput->Add(fhRhoCen);
4544 fOutput->Add(fh020BSPt);
4545 fOutput->Add(fh80100BSPt);
4546 fOutput->Add(fhBSPt);
4547 fOutput->Add(fhBSPtCen);
4548 fOutput->Add(fh020BSPtSignal);
4549 fOutput->Add(fh80100BSPtSignal);
4550 fOutput->Add(fhBSPtSignal);
4551 fOutput->Add(fhBSPtCenSignal);
4552 fOutput->Add(fh020DeltaPt);
4553 fOutput->Add(fh80100DeltaPt);
4554 fOutput->Add(fhDeltaPt);
4555 fOutput->Add(fhDeltaPtCen);
4556 fOutput->Add(fh020DeltaPtSignal);
4557 fOutput->Add(fh80100DeltaPtSignal);
4558 fOutput->Add(fhDeltaPtSignal);
4559 fOutput->Add(fhDeltaPtCenSignal);
4560 fOutput->Add(fh020DeltaPtNColl);
4561 fOutput->Add(fh80100DeltaPtNColl);
4562 fOutput->Add(fhDeltaPtNColl);
4563 fOutput->Add(fhDeltaPtCenNColl);
4564 fOutput->Add(fh020BckgFlucPt);
4565 fOutput->Add(fh80100BckgFlucPt);
4566 fOutput->Add(fhBckgFlucPt);
4567 fOutput->Add(fhBckgFlucPtCen);
4568 fOutput->Add(fpRho);
4569 fOutput->Add(fpLJetRho);
4570 fOutput->Add(fhJetPtEtaPhi);
4571 fOutput->Add(fhJetPtArea);
4572 fOutput->Add(fhJetConstituentPt);
4573 fOutput->Add(fhJetTracksPt);
4574 fOutput->Add(fhJetClustersPt);
4575 fOutput->Add(fhJetConstituentCounts);
4576 fOutput->Add(fhJetTracksCounts);
4577 fOutput->Add(fhJetClustersCounts);
4578 fOutput->Add(fhJetPtZConstituent);
4579 fOutput->Add(fhJetPtZTrack);
4580 fOutput->Add(fhJetPtZCluster);
4581 fOutput->Add(fhJetPtZLeadingConstituent);
4582 fOutput->Add(fhJetPtZLeadingTrack);
4583 fOutput->Add(fhJetPtZLeadingCluster);
4586 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetName(const char *name)
4591 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetCentralityTag(TString name)
4593 fCentralityTag = name.Data();
4596 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetCentralityRange(Int_t bins, Double_t low, Double_t up)
4598 fCentralityBins=bins;
4603 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetPtRange(Int_t bins, Double_t low, Double_t up)
4610 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetRhoPtRange(Int_t bins, Double_t low, Double_t up)
4617 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetDeltaPtRange(Int_t bins, Double_t low, Double_t up)
4624 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetBackgroundFluctuationsPtRange(Int_t bins, Double_t low, Double_t up)
4626 fBckgFlucPtBins=bins;
4631 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetLeadingJetPtRange(Int_t bins, Double_t low, Double_t up)
4638 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetLeadingChargedTrackPtRange(Int_t bins, Double_t low, Double_t up)
4640 fLChargedTrackPtBins=bins;
4641 fLChargedTrackPtLow=low;
4642 fLChargedTrackPtUp=up;
4645 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetNEFRange(Int_t bins, Double_t low, Double_t up)
4652 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetSignalTrackPtBias(Bool_t chargedBias)
4654 fSignalTrackBias = chargedBias;
4657 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetNEFJetDimensions(Int_t n)
4662 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetNEFClusterDimensions(Int_t n)
4667 void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetRhoValue(Double_t value)
4672 void AliAnalysisTaskFullpAJets::AlipAJetHistos::DoTHnSparse(Bool_t doTHnSparse)
4674 fDoTHnSparse = doTHnSparse;
4677 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillRho(Double_t eventCentrality, Double_t rho)
4681 fhRhoCen->Fill(rho,eventCentrality);
4682 fpRho->Fill(eventCentrality,rho);
4684 if (eventCentrality<=20)
4686 fh020Rho->Fill(rho);
4688 else if (eventCentrality>=80)
4690 fh80100Rho->Fill(rho);
4694 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillBSJS(Double_t eventCentrality, Double_t rho, Double_t signalCut, TClonesArray *jetList, Int_t *indexJetList, Int_t nIndexJetList)
4697 Double_t tempPt=0.0;
4698 Double_t tempChargedHighPt=0.0;
4700 for (i=0;i<nIndexJetList;i++)
4702 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
4703 tempPt=myJet->Pt()-rho*myJet->Area();
4704 tempChargedHighPt = myJet->MaxTrackPt();
4706 fhBSPt->Fill(tempPt);
4707 fhBSPtCen->Fill(tempPt,eventCentrality);
4708 if (eventCentrality<=20)
4710 fh020BSPt->Fill(tempPt);
4712 else if (eventCentrality>=80)
4714 fh80100BSPt->Fill(tempPt);
4716 if (fSignalTrackBias==kTRUE)
4718 if (tempChargedHighPt>=signalCut)
4720 fhBSPtSignal->Fill(tempPt);
4721 fhBSPtCenSignal->Fill(tempPt,eventCentrality);
4722 if (eventCentrality<=20)
4724 fh020BSPtSignal->Fill(tempPt);
4726 else if (eventCentrality>=80)
4728 fh80100BSPtSignal->Fill(tempPt);
4734 if (tempPt>=signalCut)
4736 fhBSPtSignal->Fill(tempPt);
4737 fhBSPtCenSignal->Fill(tempPt,eventCentrality);
4738 if (eventCentrality<=20)
4740 fh020BSPtSignal->Fill(tempPt);
4742 else if (eventCentrality>=80)
4744 fh80100BSPtSignal->Fill(tempPt);
4749 tempChargedHighPt=0.0;
4753 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillDeltaPt(Double_t eventCentrality, Double_t rho, Double_t jetRadius, Double_t *RCArray, Int_t nRC)
4756 Double_t tempPt=0.0;
4760 tempPt=RCArray[i]-rho*TMath::Power(jetRadius,2);
4761 fhDeltaPt->Fill(tempPt);
4762 fhDeltaPtCen->Fill(tempPt,eventCentrality);
4763 if (eventCentrality<=20)
4765 fh020DeltaPt->Fill(tempPt);
4767 else if (eventCentrality>=80)
4769 fh80100DeltaPt->Fill(tempPt);
4775 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillDeltaPtSignal(Double_t eventCentrality, Double_t rho, Double_t jetRadius, Double_t *RCArray, Int_t nRC)
4778 Double_t tempPt=0.0;
4782 tempPt=RCArray[i]-rho*TMath::Power(jetRadius,2);
4783 fhDeltaPtSignal->Fill(tempPt);
4784 fhDeltaPtCenSignal->Fill(tempPt,eventCentrality);
4785 if (eventCentrality<=20)
4787 fh020DeltaPtSignal->Fill(tempPt);
4789 else if (eventCentrality>=80)
4791 fh80100DeltaPtSignal->Fill(tempPt);
4797 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillDeltaPtNColl(Double_t eventCentrality, Double_t rho, Double_t jetRadius, Double_t *RCArray, Int_t nRC)
4800 Double_t tempPt=0.0;
4804 tempPt=RCArray[i]-rho*TMath::Power(jetRadius,2);
4805 fhDeltaPtNColl->Fill(tempPt);
4806 fhDeltaPtCenNColl->Fill(tempPt,eventCentrality);
4807 if (eventCentrality<=20)
4809 fh020DeltaPtNColl->Fill(tempPt);
4811 else if (eventCentrality>=80)
4813 fh80100DeltaPtNColl->Fill(tempPt);
4819 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillBackgroundFluctuations(Double_t eventCentrality, Double_t rho, Double_t jetRadius)
4821 Double_t tempPt=0.0;
4823 tempPt=rho*TMath::Power(jetRadius,2);
4824 fhBckgFlucPt->Fill(tempPt);
4825 fhBckgFlucPtCen->Fill(tempPt,eventCentrality);
4826 if (eventCentrality<=20)
4828 fh020BckgFlucPt->Fill(tempPt);
4830 else if (eventCentrality>=80)
4832 fh80100BckgFlucPt->Fill(tempPt);
4836 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillLeadingJetPtRho(Double_t jetPt, Double_t rho)
4838 fpLJetRho->Fill(jetPt,rho);
4841 void AliAnalysisTaskFullpAJets::AlipAJetHistos::DoNEFQAPlots(Bool_t doNEFAna)
4843 fDoNEFQAPlots = doNEFAna;
4846 void AliAnalysisTaskFullpAJets::AlipAJetHistos::DoNEFSignalOnly(Bool_t doNEFSignalOnly)
4848 fDoNEFSignalOnly = doNEFSignalOnly;
4851 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)
4853 if (fDoNEFQAPlots==kFALSE)
4858 if (fDoTHnSparse == kFALSE)
4864 Double_t tempChargedHighPt=0.0;
4866 for (i=0;i<nIndexJetList;i++)
4868 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
4869 tempChargedHighPt = myJet->MaxTrackPt();
4873 if (fSignalTrackBias==kTRUE)
4875 if (tempChargedHighPt>=signalCut && nef<=nefCut)
4877 fhJetPtNEF->Fill(jetPt,nef);
4882 if (jetPt>=signalCut && nef<=nefCut)
4884 fhJetPtNEF->Fill(jetPt,nef);
4890 tempChargedHighPt=0.0;
4897 Double_t valJet[fnDimJet];
4898 Double_t valCluster[fnDimJet];
4899 for (i=0;i<fnDimJet;i++)
4907 Double_t tempChargedHighPt=0.0;
4911 Int_t chargedMult=0;
4912 Int_t neutralMult=0;
4913 Int_t iSupMod = -1, absId = -1, ieta = -1, iphi = -1;
4914 Bool_t shared = kFALSE;
4916 Double_t zLeading=0.0;
4917 Double_t zLeadingTrack=0.0;
4918 Double_t ECluster=0.0;
4921 Double_t eCross=0.0;
4922 Double_t FCross=0.0;
4924 Double_t lowTime=9.99e99;
4925 Double_t upTime=-9.99e99;
4927 Double_t tempCellTime=0.0;
4929 Double_t event_centrality = event->GetCentrality()->GetCentralityPercentile(fCentralityTag);
4930 valJet[4] = valCluster[4] = event_centrality;
4933 for (i=0;i<nIndexJetList;i++)
4935 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
4936 tempChargedHighPt = myJet->MaxTrackPt();
4941 totalMult=myJet->GetNumberOfConstituents();
4942 chargedMult = myJet->GetNumberOfTracks();
4943 neutralMult=myJet->GetNumberOfClusters();
4944 zLeading=myJet->MaxPartPt()/myJet->Pt();
4945 zLeadingTrack=myJet->MaxTrackPt()/myJet->Pt();
4947 valJet[0] = valCluster[0] = nef;
4948 valJet[1] = valCluster[1] = jetPt;
4949 valJet[2] = valCluster[2] = eta;
4950 valJet[3] = valCluster[3] = phi;
4951 valJet[5] = valCluster[5] = zLeading;
4952 valJet[9] = zLeadingTrack;
4954 valJet[6] = totalMult;
4955 valJet[7] = chargedMult;
4956 valJet[8] = neutralMult;
4958 // Supress filling of this histogram due to memory size of THnSparse when running over large datasets
4959 if (fDoNEFSignalOnly == kFALSE)
4961 fhJetNEFInfo->Fill(valJet);
4964 if (fSignalTrackBias==kTRUE)
4966 if (tempChargedHighPt>=signalCut && nef<=nefCut)
4968 fhJetNEFSignalInfo->Fill(valJet);
4969 fhJetPtNEF->Fill(jetPt,nef);
4974 if (jetPt>=signalCut && nef<=nefCut)
4976 fhJetNEFSignalInfo->Fill(valJet);
4977 fhJetPtNEF->Fill(jetPt,nef);
4981 for (j=0;j<neutralMult;j++)
4983 AliVCluster* vcluster = (AliVCluster*) orgClusterList->At(myJet->ClusterAt(j));
4984 ECluster = vcluster->E();
4985 recoUtils->GetMaxEnergyCell(geometry,cells,vcluster,absId,iSupMod,ieta,iphi,shared);
4986 eSeed = cells->GetCellAmplitude(absId);
4987 tCell = cells->GetCellTime(absId);
4988 eCross = recoUtils->GetECross(absId,tCell,cells,event->GetBunchCrossNumber());
4989 FCross = 1 - eCross/eSeed;
4991 // Obtain Delta t of Cluster
4994 for (k=0;k<vcluster->GetNCells();k++)
4996 tempCellID=vcluster->GetCellAbsId(k);
4997 tempCellTime=cells->GetCellTime(tempCellID);
4998 if (tempCellTime>upTime)
5000 upTime=tempCellTime;
5002 if (tempCellTime<lowTime)
5004 lowTime=tempCellTime;
5007 valCluster[6] = ECluster;
5008 valCluster[7] = FCross;
5009 valCluster[8] = tCell;
5010 valCluster[9] = upTime-lowTime;
5011 valCluster[10] = vcluster->GetNCells();
5013 if (fDoNEFSignalOnly == kFALSE)
5015 fhClusterNEFInfo->Fill(valCluster);
5018 if (fSignalTrackBias==kTRUE)
5020 if (tempChargedHighPt>=signalCut && nef<=nefCut)
5022 fhClusterNEFSignalInfo->Fill(valCluster);
5027 if (myJet->Pt()>=signalCut && nef<=nefCut)
5029 fhClusterNEFSignalInfo->Fill(valCluster);
5038 iSupMod=-1,absId=-1,ieta=-1,iphi=-1;
5043 tempChargedHighPt=0.0;
5054 // Now do Cluster QA
5055 for (i=0;i<clusterList->GetEntries();i++)
5057 AliVCluster *vcluster = (AliVCluster*) clusterList->At(i);
5058 fhClusterShapeAll->Fill(vcluster->GetNCells());
5059 fhClusterPtCellAll->Fill(vcluster->E(),vcluster->GetNCells());
5063 void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillMiscJetStats(TClonesArray *jetList, Int_t *indexJetList, Int_t nIndexJetList, TClonesArray *trackList, TClonesArray *clusterList, Double_t *vertex)
5067 TLorentzVector *cluster_vec = new TLorentzVector;
5068 for (i=0;i<nIndexJetList;i++)
5070 AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
5072 fhJetPtEtaPhi->Fill(myJet->Pt(),myJet->Eta(),myJet->Phi());
5073 fhJetPtArea->Fill(myJet->Pt(),myJet->Area());
5074 fhJetConstituentCounts->Fill(myJet->Pt(),myJet->GetNumberOfConstituents());
5075 fhJetTracksCounts->Fill(myJet->Pt(),myJet->GetNumberOfTracks());
5076 fhJetClustersCounts->Fill(myJet->Pt(),myJet->GetNumberOfClusters());
5077 fhJetPtZLeadingConstituent->Fill(myJet->Pt(),myJet->MaxPartPt()/myJet->Pt());
5078 fhJetPtZLeadingTrack->Fill(myJet->Pt(),myJet->MaxTrackPt()/myJet->Pt());
5079 fhJetPtZLeadingCluster->Fill(myJet->Pt(),myJet->MaxClusterPt()/myJet->Pt());
5080 for (j=0;j<myJet->GetNumberOfTracks();j++)
5082 AliVTrack *vtrack = (AliVTrack*) myJet->TrackAt(j,trackList);
5083 fhJetConstituentPt->Fill(myJet->Pt(),vtrack->Pt());
5084 fhJetTracksPt->Fill(myJet->Pt(),vtrack->Pt());
5085 fhJetPtZTrack->Fill(myJet->Pt(),vtrack->Pt()/myJet->Pt());
5086 fhJetPtZConstituent->Fill(myJet->Pt(),vtrack->Pt()/myJet->Pt());
5088 for (j=0;j<myJet->GetNumberOfClusters();j++)
5090 AliVCluster *vcluster = (AliVCluster*) myJet->ClusterAt(j,clusterList);
5091 vcluster->GetMomentum(*cluster_vec,vertex);
5092 fhJetConstituentPt->Fill(myJet->Pt(),vcluster->E());
5093 fhJetClustersPt->Fill(myJet->Pt(),vcluster->E());
5094 fhJetPtZCluster->Fill(myJet->Pt(),cluster_vec->Pt()/myJet->Pt());
5095 fhJetPtZConstituent->Fill(myJet->Pt(),cluster_vec->Pt()/myJet->Pt());
5101 TList* AliAnalysisTaskFullpAJets::AlipAJetHistos::GetOutputHistos()
5106 Double_t AliAnalysisTaskFullpAJets::AlipAJetHistos::GetRho()