6 #include <TClonesArray.h>
11 #include <THnSparse.h>
14 #include <TLorentzVector.h>
20 #include <AliAnalysisDataSlot.h>
21 #include <AliAnalysisDataContainer.h>
23 #include "TMatrixDSym.h"
24 #include "TMatrixDSymEigen.h"
27 #include "AliVCluster.h"
28 #include "AliVTrack.h"
33 #include "AliMCEvent.h"
34 #include "AliGenPythiaEventHeader.h"
35 #include "AliAODMCHeader.h"
36 #include "AliMCEvent.h"
37 #include "AliAnalysisManager.h"
44 #include "AliAODEvent.h"
46 #include "AliMultSelection.h"
72 fMinFractionShared(0),
75 fJetSelection(kInclusive),
78 fPtMinTriggerHadron(20.),
79 fPtMaxTriggerHadron(50.),
80 fRecoilAngularWindow(0.6),
92 fSharedFractionPtMin(0.5),
107 fhNumberOfJetTracks(0x0),
111 fhGroomedPtvJetPt(0x0),
112 fhDroppedBranches(0x0),
113 fhPtTriggerHadron(0x0),
114 fh2PtTriggerHadronJet(0x0),
115 fhPhiTriggerHadronJet(0x0),
116 fhPhiTriggerHadronEventPlane(0x0),
117 fhPhiTriggerHadronEventPlaneTPC(0x0),
118 fhDetJetPt_Incl(0x0),
119 fhDetJetPt_Matched(0x0),
128 fhJetRadius_Det(0x0),
129 fhJetRadius_True(0x0),
130 fhJetCounter_Det(0x0),
131 fhJetCounter_True(0x0),
132 fhNumberOfJetTracks_Det(0x0),
133 fhNumberOfJetTracks_True(0x0),
142 SetMakeGeneralHistograms(kTRUE);
143 DefineOutput(1, TList::Class());
144 DefineOutput(2, TTree::Class());
151 fMinFractionShared(0),
152 fJetShapeType(
kData),
153 fJetShapeSub(kNoSub),
154 fJetSelection(kInclusive),
155 fPtThreshold(-9999.),
157 fPtMinTriggerHadron(20.),
158 fPtMaxTriggerHadron(50.),
159 fRecoilAngularWindow(0.6),
163 fCentSelectOn(kTRUE),
171 fSharedFractionPtMin(0.5),
178 fNsubMeasure(kFALSE),
186 fhNumberOfJetTracks(0x0),
190 fhGroomedPtvJetPt(0x0),
191 fhDroppedBranches(0x0),
192 fhPtTriggerHadron(0x0),
193 fh2PtTriggerHadronJet(0x0),
194 fhPhiTriggerHadronJet(0x0),
195 fhPhiTriggerHadronEventPlane(0x0),
196 fhPhiTriggerHadronEventPlaneTPC(0x0),
197 fhDetJetPt_Incl(0x0),
198 fhDetJetPt_Matched(0x0),
207 fhJetRadius_Det(0x0),
208 fhJetRadius_True(0x0),
209 fhJetCounter_Det(0x0),
210 fhJetCounter_True(0x0),
211 fhNumberOfJetTracks_Det(0x0),
212 fhNumberOfJetTracks_True(0x0),
223 DefineOutput(1, TList::Class());
224 DefineOutput(2, TTree::Class());
240 Bool_t oldStatus = TH1::AddDirectoryStatus();
241 TH1::AddDirectory(kFALSE);
242 TH1::AddDirectory(oldStatus);
243 const char* nameoutput = GetOutputSlot(2)->GetContainer()->GetName();
247 const Int_t nVarMin = 18;
250 fJetInfoVarNames[0] =
"Pt";
251 fJetInfoVarNames[1] =
"Pt_Truth";
252 fJetInfoVarNames[2] =
"SymParam";
253 fJetInfoVarNames[3] =
"SymParam_Truth";
254 fJetInfoVarNames[4] =
"Tau1";
255 fJetInfoVarNames[5] =
"Tau1_Truth";
256 fJetInfoVarNames[6] =
"Tau2";
257 fJetInfoVarNames[7] =
"Tau2_Truth";
258 fJetInfoVarNames[8] =
"PTD";
259 fJetInfoVarNames[9] =
"PTD_Truth";
260 fJetInfoVarNames[10] =
"Angularity";
261 fJetInfoVarNames[11] =
"Angularity_Truth";
262 fJetInfoVarNames[12] =
"DelR";
263 fJetInfoVarNames[13] =
"DelR_Truth";
264 fJetInfoVarNames[14] =
"N_Groomed_Branches";
265 fJetInfoVarNames[15] =
"N_Groomed_Branches_Truth";
266 fJetInfoVarNames[16] =
"Groomed_Jet_Pt";
267 fJetInfoVarNames[17] =
"Groomed_Jet_Pt_Truth";
271 for(
Int_t ivar=0; ivar < nVarMin; ivar++){
272 cout<<
"looping over variables"<<endl;
277 fhPtTriggerHadron=
new TH1F(
"fhPtTriggerHadron",
"fhPtTriggerHadron",1500,-0.5,149.5);
281 fhPhiTriggerHadronJet=
new TH1F(
"fhPhiTriggerHadronJet",
"fhPhiTriggerHadronJet",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
283 fhPhiTriggerHadronEventPlane=
new TH1F(
"fhPhiTriggerHadronEventPlane",
"fhPhiTriggerHadronEventPlane",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
285 fhPhiTriggerHadronEventPlaneTPC=
new TH1F(
"fhPhiTriggerHadronEventPlaneTPC",
"fhPhiTriggerHadronEventPlaneTPC",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
293 fhJetPt=
new TH1F(
"fhJetPt",
"Jet Pt",150,-0.5,149.5 );
295 fhJetPhi=
new TH1F(
"fhJetPhi",
"Jet Phi",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
299 fhJetMass=
new TH1F(
"fhJetMass",
"Jet Mass", 4000,-0.5, 39.5);
301 fhJetRadius=
new TH1F(
"fhJetRadius",
"Jet Radius", 100, -0.05,0.995);
303 fhNumberOfJetTracks=
new TH1F(
"fhNumberOfJetTracks",
"Number of Tracks within a Jet", 300, -0.5,299.5);
305 fhJetCounter=
new TH1F(
"fhJetCounter",
"Jet Counter", 150, -0.5, 149.5);
307 fhJetArea=
new TH1F(
"fhJetArea",
"Jet Area", 400,-0.5, 1.95);
309 fhTrackPt=
new TH1F(
"fhTrackPt",
"Track Pt",600,-0.5,59.5);
311 fhGroomedPtvJetPt=
new TH2F(
"fhGroomedPtvJetPt",
"Groomed Jet p_{T} v Original Jet p_{T}",150,0,150,150,0,150);
313 fhDroppedBranches=
new TH1F(
"fhDroppedBranches",
"Number of Softdropped branches",50,0,50);
315 fhDetJetPt_Incl=
new TH1F(
"fhDetJetPt_Incl",
"Jet Pt",200,-0.5,199.5 );
323 fhJetPt_Det=
new TH1F(
"fhJetPt_Det",
"Jet Pt Detector Level",1500,-0.5,149.5 );
325 fhJetPt_True=
new TH1F(
"fhJetPt_True",
"Jet Pt Particle Level",1500,-0.5,149.5 );
327 fhJetPhi_Det=
new TH1F(
"fhJetPhi_Det",
"Jet Phi Detector Level",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
329 fhJetPhi_True=
new TH1F(
"fhJetPhi_True",
"Jet Phi Particle Level",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
335 fhJetMass_Det=
new TH1F(
"fhJetMass_Det",
"Jet Mass Detector Level", 4000,-0.5, 39.5);
337 fhJetMass_True=
new TH1F(
"fhJetMass_True",
"Jet Mass Particle Level", 4000,-0.5, 39.5);
339 fhJetRadius_Det=
new TH1F(
"fhJetRadius_Det",
"Jet Radius Detector Level", 100, -0.05,0.995);
341 fhJetRadius_True=
new TH1F(
"fhJetRadius_True",
"Jet Radius Particle Level", 100, -0.05,0.995);
343 fhNumberOfJetTracks_Det=
new TH1F(
"fhNumberOfJetTracks_Det",
"Number of Tracks within a Jet Detector Level", 300, -0.5,299.5);
345 fhNumberOfJetTracks_True=
new TH1F(
"fhNumberOfJetTracks_True",
"Number of Tracks within a Jet Particle Level", 300, -0.5,299.5);
348 fhJetCounter_Det=
new TH1F(
"fhJetCounter_Det",
"Jet Counter Detector Level", 150, -0.5, 149.5);
350 fhJetCounter_True=
new TH1F(
"fhJetCounter_True",
"Jet Counter Particle Level", 150, -0.5, 149.5);
352 fh2PtRatio=
new TH2F(
"fhPtRatio",
"MC pt for detector level vs particle level jets",1500,-0.5,149.5,1500,-0.5,149.5);
374 Error(
"UserExec",
"AOD not available");
390 AliAODTrack *TriggerHadron = 0x0;
394 if (TriggerHadronLabel==-99999)
return 0;
405 TClonesArray *TrackArray = NULL;
406 TClonesArray *TrackArrayMC = NULL;
408 else TrackArray = PartCont->GetArray();
410 else TriggerHadron =
static_cast<AliAODTrack*
>(TrackArray->At(TriggerHadronLabel));
411 if (!TriggerHadron)
return 0;
433 Bool_t EventCounter=kFALSE;
437 JetCont->ResetCurrentID();
441 else JetPt_ForThreshold = Jet1->
Pt();
460 if(JetPhi < -1*TMath::Pi()) JetPhi += (2*TMath::Pi());
461 else if (JetPhi > TMath::Pi()) JetPhi -= (2*TMath::Pi());
520 Bool_t JetsMatched = kFALSE;
522 JetContHybridS->ResetCurrentID();
523 JetContHybridUS->ResetCurrentID();
524 JetContPythDet->ResetCurrentID();
525 JetContPythTrue->ResetCurrentID();
534 else JetPtThreshold=JetHybridS->
Pt()-(
GetRhoVal(0)*JetHybridS->
Area());
535 if ( (!JetHybridS) || (JetPtThreshold<
fPtThreshold))
continue;
538 JetHybridUS = JetContHybridUS->
GetJet(i);
539 if (!JetHybridUS)
continue;
545 if(JetNumber==-1)
continue;
546 JetHybridUS=JetContHybridUS->
GetJet(JetNumber);
555 Printf(
"Unsubtracted embedded jet does not exist, returning");
558 if (!JetPythDet)
continue;
559 UInt_t rejectionReason = 0;
560 if (!(JetContPythDet->
AcceptJet(JetPythDet,rejectionReason)))
continue;
563 if(!JetPythTrue)
continue;
604 Bool_t JetsMatched=kFALSE;
606 Bool_t EventCounter=kFALSE;
607 Int_t JetCounter_Det=0,JetCounter_True=0;
608 JetContDet->ResetCurrentID();
609 JetContTrue->ResetCurrentID();
623 RecoilDeltaPhi =
RelativePhi(TriggerHadron->Phi(), JetDet->
Phi());
630 JetPhiDet=JetDet->
Phi();
631 if(JetPhiDet < -1*TMath::Pi()) JetPhiDet += (2*TMath::Pi());
632 else if (JetPhiDet > TMath::Pi()) JetPhiDet -= (2*TMath::Pi());
642 JetPhiTrue=JetTrue->
Phi();
643 if(JetPhiTrue < -1*TMath::Pi()) JetPhiTrue += (2*TMath::Pi());
644 else if (JetPhiTrue > TMath::Pi()) JetPhiTrue -= (2*TMath::Pi());
696 Bool_t EventCounter=kFALSE;
700 JetCont->ResetCurrentID();
704 else JetPt_ForThreshold = Jet1->
Pt();
723 if(JetPhi < -1*TMath::Pi()) JetPhi += (2*TMath::Pi());
724 else if (JetPhi > TMath::Pi()) JetPhi -= (2*TMath::Pi());
770 if(Phi < -1*TMath::Pi()) Phi += (2*TMath::Pi());
771 else if (Phi > TMath::Pi()) Phi -= (2*TMath::Pi());
773 if(DeltaPhi < -1*TMath::Pi()) DeltaPhi += (2*TMath::Pi());
774 else if (DeltaPhi > TMath::Pi()) DeltaPhi -= (2*TMath::Pi());
780 if(Phi1 < -1*TMath::Pi()) Phi1 += (2*TMath::Pi());
781 else if (Phi1 > TMath::Pi()) Phi1 -= (2*TMath::Pi());
782 if(Phi2 < -1*TMath::Pi()) Phi2 += (2*TMath::Pi());
783 else if (Phi2 > TMath::Pi()) Phi2 -= (2*TMath::Pi());
785 if(DeltaPhi < -1*TMath::Pi()) DeltaPhi += (2*TMath::Pi());
786 else if (DeltaPhi > TMath::Pi()) DeltaPhi -= (2*TMath::Pi());
799 AliVParticle *Particle=0x0;
805 if(!Particle)
continue;
807 Angularity_Numerator=Angularity_Numerator+(Particle->Pt()*TMath::Sqrt(((Particle->Eta()-Jet->
Eta())*(Particle->Eta()-Jet->
Eta()))+(DeltaPhi*
DeltaPhi)));
808 Angularity_Denominator= Angularity_Denominator+Particle->Pt();
810 if(Angularity_Denominator!=0)
return Angularity_Numerator/Angularity_Denominator;
823 AliVParticle *Particle=0x0;
827 if(!Particle)
continue;
828 PTD_Numerator=PTD_Numerator+(Particle->Pt()*Particle->Pt());
829 PTD_Denominator=PTD_Denominator+Particle->Pt();
831 if(PTD_Denominator!=0)
return TMath::Sqrt(PTD_Numerator)/PTD_Denominator;
838 std::vector<fastjet::PseudoJet> fInputVectors;
839 Double_t JetInvMass=0, PseudJetInvMass=0, TrackMom = 0, TrackEnergy = 0;
842 Double_t FJTrackEta[9999],FJTrackPhi[9999],FJTrackPt[9999],EmcalJetTrackEta[9999],EmcalJetTrackPhi[9999],EmcalJetTrackPt[9999];
843 UShort_t FJNTracks=0,EmcalJetNTracks=0;
845 AliVParticle *fTrk = fJet->
TrackAt(i, fTrackCont->GetArray());
846 JetInvMass += fTrk->M();
848 fastjet::PseudoJet PseudoTracks(fTrk->Px(), fTrk->Py(), fTrk->Pz(),fTrk->E());
849 TrackMom += TMath::Sqrt(TMath::Power(fTrk->Px(),2)+TMath::Power(fTrk->Py(),2)+TMath::Power(fTrk->Pz(),2));
850 TrackEnergy += fTrk->E();
851 PseudoTracks.set_user_index(fJet->
TrackAt(i)+100);
852 PseudJetInvMass += PseudoTracks.m();
853 fInputVectors.push_back(PseudoTracks);
854 EmcalJetTrackEta[i]=fTrk->Eta();
855 EmcalJetTrackPhi[i]=fTrk->Phi();
856 EmcalJetTrackPt[i]=fTrk->Pt();
859 fastjet::JetDefinition *fJetDef;
860 fastjet::ClusterSequence *fClustSeqSA;
863 fJetDef =
new fastjet::JetDefinition(fastjet::antikt_algorithm,
fJetRadius*2, static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
866 fClustSeqSA =
new fastjet::ClusterSequence(fInputVectors, *fJetDef);
867 }
catch (fastjet::Error) {
868 AliError(
" [w] FJ Exception caught.");
872 std::vector<fastjet::PseudoJet> fOutputJets;
874 fOutputJets=fClustSeqSA->inclusive_jets(0);
876 std::vector<fastjet::PseudoJet> jet_constituents = fOutputJets[0].constituents();
877 Float_t NSubjettinessResult[3], NSubBeta = 1, R0=0.4;
878 std::vector<fastjet::PseudoJet> Subjet_Axes;
879 fastjet::PseudoJet SubJet1_Axis,SubJet2_Axis;
883 for(
Int_t j=1; j<3; j++){
884 if(jet_constituents.size() < j){
896 fastjet::contrib::Nsubjettiness nSub(j,fastjet::contrib::KT_Axes(),fastjet::contrib::NormalizedMeasure(NSubBeta,R0));
897 NSubjettinessResult[j] = nSub.result(fOutputJets[0]);
899 Subjet_Axes = nSub.currentAxes();
900 SubJet1_Axis = Subjet_Axes[0];
901 SubJet2_Axis = Subjet_Axes[1];
903 Double_t SubJet1_Eta=SubJet1_Axis.pseudorapidity();
904 Double_t SubJet2_Eta=SubJet2_Axis.pseudorapidity();
905 Double_t SubJet1_Phi=SubJet1_Axis.phi();
906 if(SubJet1_Phi < -1*TMath::Pi()) SubJet1_Phi += (2*TMath::Pi());
907 else if (SubJet1_Phi > TMath::Pi()) SubJet1_Phi -= (2*TMath::Pi());
908 Double_t SubJet2_Phi=SubJet2_Axis.phi();
909 if(SubJet1_Phi < -1*TMath::Pi()) SubJet1_Phi += (2*TMath::Pi());
910 else if (SubJet1_Phi > TMath::Pi()) SubJet1_Phi -= (2*TMath::Pi());
912 Double_t DeltaPhiSubJets,DeltaEtaSubJets;
913 DeltaPhiSubJets=SubJet1_Phi-SubJet2_Phi;
914 DeltaEtaSubJets=SubJet1_Eta-SubJet2_Eta;
915 if(DeltaPhiSubJets < -1*TMath::Pi()) DeltaPhiSubJets += (2*TMath::Pi());
916 else if (DeltaPhiSubJets > TMath::Pi()) DeltaPhiSubJets -= (2*TMath::Pi());
918 DelR = TMath::Power(TMath::Power(DeltaPhiSubJets,2)+TMath::Power(DeltaEtaSubJets,2),0.5);
935 fastjet::contrib::SoftDrop softdrop(beta, zcut);
937 softdrop.set_verbose_structure(kTRUE);
940 fastjet::contrib::Recluster *recluster;
941 if(
fReclusterAlgo == 2) recluster =
new fastjet::contrib::Recluster(fastjet::kt_algorithm,1,
true);
942 if(
fReclusterAlgo == 1) recluster =
new fastjet::contrib::Recluster(fastjet::antikt_algorithm,1,
true);
943 if(
fReclusterAlgo == 0) recluster =
new fastjet::contrib::Recluster(fastjet::cambridge_algorithm,1,
true);
944 softdrop.set_reclustering(
true,recluster);
945 fastjet::PseudoJet finaljet = softdrop(fOutputJets[0]);
952 std::vector<fastjet::PseudoJet> fSDTracks=finaljet.constituents();
953 Double_t FastjetTrackDelR,EmcalTrackDelR;
955 if(i<=finaljet.constituents().size()){
956 FastjetTrackDelR = TMath::Sqrt(TMath::Power(fSDTracks[i].eta()-JetEta,2)+TMath::Power(fSDTracks[i].phi()-JetPhi,2));
957 FJTrackEta[i]=fSDTracks[i].eta();
958 FJTrackPhi[i]=fSDTracks[i].phi();
959 FJTrackPt[i]=fSDTracks[i].perp();
962 AliVParticle *fTrk = fJet->
TrackAt(i, fTrackCont->GetArray());
963 EmcalTrackDelR = TMath::Sqrt(TMath::Power(fTrk->Eta()-JetEta,2)+TMath::Power(fTrk->Phi()-JetPhi,2));
966 Int_t nConstituents(fClustSeqSA->constituents(finaljet).size());
969 SymParam=(finaljet.structure_of<fastjet::contrib::SoftDrop>().symmetry());
970 Mu=(finaljet.structure_of<fastjet::contrib::SoftDrop>().mu());
971 DeltaR=(finaljet.structure_of<fastjet::contrib::SoftDrop>().delta_R());
978 if(!fTruthJet)
fJetInfoVar[14]=finaljet.structure_of<fastjet::contrib::SoftDrop>().dropped_count();
979 else fJetInfoVar[15]=finaljet.structure_of<fastjet::contrib::SoftDrop>().dropped_count();
1010 TClonesArray *TracksArray = NULL;
1011 TClonesArray *TracksArrayMC = NULL;
1013 else TracksArray = PartCont->GetArray();
1016 if(!PartContMC || !TracksArrayMC)
return -99999;
1019 if(!PartCont || !TracksArray)
return -99999;
1022 AliAODTrack *Track = 0x0;
1023 Int_t Trigger_Index[100];
1024 for (
Int_t i=0; i<100; i++) Trigger_Index[i] = 0;
1025 Int_t Trigger_Counter = 0;
1028 else NTracks = TracksArray->GetEntriesFast();
1029 for(
Int_t i=0; i < NTracks; i++){
1032 if (!Track)
continue;
1033 if(TMath::Abs(Track->Eta())>0.9)
continue;
1034 if (Track->Pt()<0.15)
continue;
1035 if ((Track->Pt() >= PtMin) && (Track->Pt()< PtMax)) {
1036 Trigger_Index[Trigger_Counter] = i;
1042 if((Track = static_cast<AliAODTrack*>(PartCont->
GetAcceptTrack(i)))){
1043 if (!Track)
continue;
1044 if(TMath::Abs(Track->Eta())>0.9)
continue;
1045 if (Track->Pt()<0.15)
continue;
1046 if ((Track->Pt() >= PtMin) && (Track->Pt()< PtMax)) {
1047 Trigger_Index[Trigger_Counter] = i;
1053 if (Trigger_Counter == 0)
return -99999;
1054 Int_t RandomNumber = 0, Index = 0 ;
1055 TRandom3* Random =
new TRandom3(0);
1056 RandomNumber = Random->Integer(Trigger_Counter);
1057 Index = Trigger_Index[RandomNumber];
1066 if (!jet2)
return -1;
1069 if (jetPt2 <= 0)
return -1;
1071 Int_t bgeom = kTRUE;
1072 if (!cont2) bgeom = kFALSE;
1074 AliVParticle *vpf = 0x0;
1079 AliVParticle *p2 = 0x0;
1080 if (bgeom) p2 =
static_cast<AliVParticle*
>(jet2->
TrackAt(icc, cont2->GetArray()));
1083 if (!bgeom && idx == jet1->
TrackAt(icf) && iFound == 0 ) {
1085 vpf = jet1->
Track(icf);
1086 if (vpf) sumPt += vpf->Pt();
1090 vpf = jet1->
Track(icf);
1098 Double_t fraction = sumPt / jetPt2;
1106 if(!part1)
return kFALSE;
1107 if(!part2)
return kFALSE;
1108 Double_t dPhi = TMath::Abs(part1->Phi() - part2->Phi());
1109 dPhi = TVector2::Phi_mpi_pi(dPhi);
1110 if (dPhi > dist)
return kFALSE;
virtual ~AliAnalysisTaskRecoilJetYield()
Bool_t RetrieveEventObjects()
Retrieve common objects from event.
JetShapeType fJetShapeType
Double_t PTD(AliEmcalJet *Jet, Int_t JetContNb)
static Double_t DeltaPhi(Double_t phia, Double_t phib, Double_t rMin=-TMath::Pi()/2, Double_t rMax=3 *TMath::Pi()/2)
AliEmcalJet * ClosestJet() const
AliJetContainer * GetJetContainer(Int_t i=0) const
Bool_t FillHistograms()
Function filling histograms.
ClassImp(AliAnalysisTaskRecoilJetYield) AliAnalysisTaskRecoilJetYield
Container with name, TClonesArray and cuts for particles.
Double_t fEPV0
!event plane V0
AliVParticle * Track(Int_t idx) const
virtual Bool_t AcceptJet(Int_t i, UInt_t &rejectionReason) const
void SoftDrop(AliEmcalJet *fJet, AliJetContainer *fJetCont, double zcut, double beta, Bool_t fTruthJet)
Bool_t RetrieveEventObjects()
UShort_t GetNumberOfConstituents() const
Container for particles within the EMCAL framework.
Int_t TrackAt(Int_t idx) const
UShort_t GetNumberOfTracks() const
TString kData
Declare data MC or deltaAOD.
AliParticleContainer * GetParticleContainer(Int_t i=0) const
Get particle container attached to this task.
AliParticleContainer * GetParticleContainer() const
void Terminate(Option_t *option)
TH1F * fhPhiTriggerHadronEventPlane
TH1F * fhPhiTriggerHadronJet
Int_t SelectTriggerHadron(Float_t PtMin, Float_t PtMax)
TH1F * fhDetJetPt_Matched
Double_t GetFractionSharedPt_SubMatching(const AliEmcalJet *jet, AliParticleContainer *cont2=0x0) const
TH1F * fhNumberOfJetTracks_True
virtual AliVParticle * GetAcceptParticle(Int_t i=-1) const
Double_t fCent
!event centrality
Double_t Angularity(AliEmcalJet *Jet, Int_t JetContNb)
Float_t fPtMinTriggerHadron
AliEmcalJet * GetNextAcceptJet()
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
Double_t RelativePhi(Double_t Phi1, Double_t Phi2)
static Bool_t SameParticle(const AliVParticle *part1, const AliVParticle *part2, Double_t dist=1.e-4)
void UserCreateOutputObjects()
Double_t GetRhoVal(Int_t i=0) const
AliAnalysisTaskRecoilJetYield()
AliEmcalList * fOutput
!output list
TH1F * fhNumberOfJetTracks
AliTrackContainer * GetTrackContainer(Int_t i=0) const
Double_t DeltaR(const AliVParticle *part1, const AliVParticle *part2)
TH1F * fhNumberOfJetTracks_Det
void SetMakeGeneralHistograms(Bool_t g)
virtual AliVTrack * GetAcceptTrack(Int_t i=-1) const
Base task in the EMCAL jet framework.
Double_t fSharedFractionPtMin
Represent a jet reconstructed using the EMCal jet framework.
Double_t fJetInfoVar[nBranch]
void SetNumberOfTracks(Int_t n)
Float_t fPtMaxTriggerHadron
TH1F * fhPhiTriggerHadronEventPlaneTPC
void UserCreateOutputObjects()
Main initialization function on the worker.
Float_t fRecoilAngularWindow
TH2F * fh2PtTriggerHadronJet
JetSelectionType fJetSelection
Bool_t Run()
Run function. This is the core function of the analysis and contains the user code. Therefore users have to implement this function.
Double_t RelativePhiEventPlane(Double_t EventPlane, Double_t Phi)
Container for jet within the EMCAL jet framework.
AliEmcalJet * GetJet(Int_t i) const