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 = 20;
250 fJetInfoVarNames[0] =
"Pt";
251 fJetInfoVarNames[1] =
"Pt_Truth";
252 fJetInfoVarNames[2] =
"SymParam";
253 fJetInfoVarNames[3] =
"SymParam_Truth";
254 fJetInfoVarNames[4] =
"Mass";
255 fJetInfoVarNames[5] =
"Mass_Truth";
256 fJetInfoVarNames[6] =
"SLSubJetMass";
257 fJetInfoVarNames[7] =
"SLSubJetMass_Truth";
258 fJetInfoVarNames[8] =
"LeadingParton";
259 fJetInfoVarNames[9] =
"LeadingParton_Truth";
260 fJetInfoVarNames[10] =
"SLSubJetPt";
261 fJetInfoVarNames[11] =
"SLSubJetPt_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";
268 fJetInfoVarNames[18] =
"Groomed_Mass";
269 fJetInfoVarNames[19] =
"Groomed_Mass_Truth";
273 for(
Int_t ivar=0; ivar < nVarMin; ivar++){
274 cout<<
"looping over variables"<<endl;
279 fhPtTriggerHadron=
new TH1F(
"fhPtTriggerHadron",
"fhPtTriggerHadron",1500,-0.5,149.5);
283 fhPhiTriggerHadronJet=
new TH1F(
"fhPhiTriggerHadronJet",
"fhPhiTriggerHadronJet",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
285 fhPhiTriggerHadronEventPlane=
new TH1F(
"fhPhiTriggerHadronEventPlane",
"fhPhiTriggerHadronEventPlane",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
287 fhPhiTriggerHadronEventPlaneTPC=
new TH1F(
"fhPhiTriggerHadronEventPlaneTPC",
"fhPhiTriggerHadronEventPlaneTPC",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
295 fhJetPt=
new TH1F(
"fhJetPt",
"Jet Pt",150,-0.5,149.5 );
297 fhJetPhi=
new TH1F(
"fhJetPhi",
"Jet Phi",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
301 fhJetMass=
new TH1F(
"fhJetMass",
"Jet Mass", 4000,-0.5, 39.5);
303 fhJetRadius=
new TH1F(
"fhJetRadius",
"Jet Radius", 100, -0.05,0.995);
305 fhNumberOfJetTracks=
new TH1F(
"fhNumberOfJetTracks",
"Number of Tracks within a Jet", 300, -0.5,299.5);
307 fhJetCounter=
new TH1F(
"fhJetCounter",
"Jet Counter", 150, -0.5, 149.5);
309 fhJetArea=
new TH1F(
"fhJetArea",
"Jet Area", 400,-0.5, 1.95);
311 fhTrackPt=
new TH1F(
"fhTrackPt",
"Track Pt",600,-0.5,59.5);
313 fhGroomedPtvJetPt=
new TH2F(
"fhGroomedPtvJetPt",
"Groomed Jet p_{T} v Original Jet p_{T}",150,0,150,150,0,150);
315 fhDroppedBranches=
new TH1F(
"fhDroppedBranches",
"Number of Softdropped branches",50,0,50);
317 fhDetJetPt_Incl=
new TH1F(
"fhDetJetPt_Incl",
"Jet Pt",200,-0.5,199.5 );
325 fhJetPt_Det=
new TH1F(
"fhJetPt_Det",
"Jet Pt Detector Level",1500,-0.5,149.5 );
327 fhJetPt_True=
new TH1F(
"fhJetPt_True",
"Jet Pt Particle Level",1500,-0.5,149.5 );
329 fhJetPhi_Det=
new TH1F(
"fhJetPhi_Det",
"Jet Phi Detector Level",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
331 fhJetPhi_True=
new TH1F(
"fhJetPhi_True",
"Jet Phi Particle Level",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
337 fhJetMass_Det=
new TH1F(
"fhJetMass_Det",
"Jet Mass Detector Level", 4000,-0.5, 39.5);
339 fhJetMass_True=
new TH1F(
"fhJetMass_True",
"Jet Mass Particle Level", 4000,-0.5, 39.5);
341 fhJetRadius_Det=
new TH1F(
"fhJetRadius_Det",
"Jet Radius Detector Level", 100, -0.05,0.995);
343 fhJetRadius_True=
new TH1F(
"fhJetRadius_True",
"Jet Radius Particle Level", 100, -0.05,0.995);
345 fhNumberOfJetTracks_Det=
new TH1F(
"fhNumberOfJetTracks_Det",
"Number of Tracks within a Jet Detector Level", 300, -0.5,299.5);
347 fhNumberOfJetTracks_True=
new TH1F(
"fhNumberOfJetTracks_True",
"Number of Tracks within a Jet Particle Level", 300, -0.5,299.5);
350 fhJetCounter_Det=
new TH1F(
"fhJetCounter_Det",
"Jet Counter Detector Level", 150, -0.5, 149.5);
352 fhJetCounter_True=
new TH1F(
"fhJetCounter_True",
"Jet Counter Particle Level", 150, -0.5, 149.5);
354 fh2PtRatio=
new TH2F(
"fhPtRatio",
"MC pt for detector level vs particle level jets",1500,-0.5,149.5,1500,-0.5,149.5);
376 Error(
"UserExec",
"AOD not available");
392 AliAODTrack *TriggerHadron = 0x0;
396 if (TriggerHadronLabel==-99999)
return 0;
407 TClonesArray *TrackArray = NULL;
408 TClonesArray *TrackArrayMC = NULL;
410 else TrackArray = PartCont->GetArray();
412 else TriggerHadron =
static_cast<AliAODTrack*
>(TrackArray->At(TriggerHadronLabel));
413 if (!TriggerHadron)
return 0;
435 Bool_t EventCounter=kFALSE;
439 JetCont->ResetCurrentID();
443 else JetPt_ForThreshold = Jet1->
Pt();
462 if(JetPhi < -1*TMath::Pi()) JetPhi += (2*TMath::Pi());
463 else if (JetPhi > TMath::Pi()) JetPhi -= (2*TMath::Pi());
528 Bool_t JetsMatched = kFALSE;
530 JetContHybridS->ResetCurrentID();
531 JetContHybridUS->ResetCurrentID();
532 JetContPythDet->ResetCurrentID();
533 JetContPythTrue->ResetCurrentID();
542 else JetPtThreshold=JetHybridS->
Pt()-(
GetRhoVal(0)*JetHybridS->
Area());
543 if ( (!JetHybridS) || (JetPtThreshold<
fPtThreshold))
continue;
546 JetHybridUS = JetContHybridUS->
GetJet(i);
547 if (!JetHybridUS)
continue;
553 if(JetNumber==-1)
continue;
554 JetHybridUS=JetContHybridUS->
GetJet(JetNumber);
563 Printf(
"Unsubtracted embedded jet does not exist, returning");
566 if (!JetPythDet)
continue;
567 UInt_t rejectionReason = 0;
568 if (!(JetContPythDet->
AcceptJet(JetPythDet,rejectionReason)))
continue;
571 if(!JetPythTrue)
continue;
616 Bool_t JetsMatched=kFALSE;
618 Bool_t EventCounter=kFALSE;
619 Int_t JetCounter_Det=0,JetCounter_True=0;
620 JetContDet->ResetCurrentID();
621 JetContTrue->ResetCurrentID();
635 RecoilDeltaPhi =
RelativePhi(TriggerHadron->Phi(), JetDet->
Phi());
642 JetPhiDet=JetDet->
Phi();
643 if(JetPhiDet < -1*TMath::Pi()) JetPhiDet += (2*TMath::Pi());
644 else if (JetPhiDet > TMath::Pi()) JetPhiDet -= (2*TMath::Pi());
654 JetPhiTrue=JetTrue->
Phi();
655 if(JetPhiTrue < -1*TMath::Pi()) JetPhiTrue += (2*TMath::Pi());
656 else if (JetPhiTrue > TMath::Pi()) JetPhiTrue -= (2*TMath::Pi());
712 Bool_t EventCounter=kFALSE;
716 JetCont->ResetCurrentID();
720 else JetPt_ForThreshold = Jet1->
Pt();
739 if(JetPhi < -1*TMath::Pi()) JetPhi += (2*TMath::Pi());
740 else if (JetPhi > TMath::Pi()) JetPhi -= (2*TMath::Pi());
790 if(Phi < -1*TMath::Pi()) Phi += (2*TMath::Pi());
791 else if (Phi > TMath::Pi()) Phi -= (2*TMath::Pi());
793 if(DeltaPhi < -1*TMath::Pi()) DeltaPhi += (2*TMath::Pi());
794 else if (DeltaPhi > TMath::Pi()) DeltaPhi -= (2*TMath::Pi());
800 if(Phi1 < -1*TMath::Pi()) Phi1 += (2*TMath::Pi());
801 else if (Phi1 > TMath::Pi()) Phi1 -= (2*TMath::Pi());
802 if(Phi2 < -1*TMath::Pi()) Phi2 += (2*TMath::Pi());
803 else if (Phi2 > TMath::Pi()) Phi2 -= (2*TMath::Pi());
805 if(DeltaPhi < -1*TMath::Pi()) DeltaPhi += (2*TMath::Pi());
806 else if (DeltaPhi > TMath::Pi()) DeltaPhi -= (2*TMath::Pi());
819 AliVParticle *Particle=0x0;
825 if(!Particle)
continue;
827 Angularity_Numerator=Angularity_Numerator+(Particle->Pt()*TMath::Sqrt(((Particle->Eta()-Jet->
Eta())*(Particle->Eta()-Jet->
Eta()))+(DeltaPhi*
DeltaPhi)));
828 Angularity_Denominator= Angularity_Denominator+Particle->Pt();
830 if(Angularity_Denominator!=0)
return Angularity_Numerator/Angularity_Denominator;
843 AliVParticle *Particle=0x0;
847 if(!Particle)
continue;
848 PTD_Numerator=PTD_Numerator+(Particle->Pt()*Particle->Pt());
849 PTD_Denominator=PTD_Denominator+Particle->Pt();
851 if(PTD_Denominator!=0)
return TMath::Sqrt(PTD_Numerator)/PTD_Denominator;
858 std::vector<fastjet::PseudoJet> fInputVectors;
859 Double_t JetInvMass=0, PseudJetInvMass=0, TrackMom = 0, TrackEnergy = 0;
862 Double_t FJTrackEta[9999],FJTrackPhi[9999],FJTrackPt[9999],EmcalJetTrackEta[9999],EmcalJetTrackPhi[9999],EmcalJetTrackPt[9999];
863 UShort_t FJNTracks=0,EmcalJetNTracks=0;
865 AliVParticle *fTrk = fJet->
TrackAt(i, fTrackCont->GetArray());
866 JetInvMass += fTrk->M();
868 fastjet::PseudoJet PseudoTracks(fTrk->Px(), fTrk->Py(), fTrk->Pz(),fTrk->E());
869 TrackMom += TMath::Sqrt(TMath::Power(fTrk->Px(),2)+TMath::Power(fTrk->Py(),2)+TMath::Power(fTrk->Pz(),2));
870 TrackEnergy += fTrk->E();
871 PseudoTracks.set_user_index(fJet->
TrackAt(i)+100);
872 PseudJetInvMass += PseudoTracks.m();
873 fInputVectors.push_back(PseudoTracks);
874 EmcalJetTrackEta[i]=fTrk->Eta();
875 EmcalJetTrackPhi[i]=fTrk->Phi();
876 EmcalJetTrackPt[i]=fTrk->Pt();
879 fastjet::JetDefinition *fJetDef;
880 fastjet::ClusterSequence *fClustSeqSA;
883 fJetDef =
new fastjet::JetDefinition(fastjet::antikt_algorithm,
fJetRadius*2, static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
886 fClustSeqSA =
new fastjet::ClusterSequence(fInputVectors, *fJetDef);
887 }
catch (fastjet::Error) {
888 AliError(
" [w] FJ Exception caught.");
892 std::vector<fastjet::PseudoJet> fOutputJets;
894 fOutputJets=fClustSeqSA->inclusive_jets(0);
896 std::vector<fastjet::PseudoJet> jet_constituents = fOutputJets[0].constituents();
897 Float_t NSubjettinessResult[3], NSubBeta = 1, R0=0.4;
898 std::vector<fastjet::PseudoJet> Subjet_Axes;
899 fastjet::PseudoJet SubJet1_Axis,SubJet2_Axis;
903 for(
Int_t j=1; j<3; j++){
904 if(jet_constituents.size() < j){
916 fastjet::contrib::Nsubjettiness nSub(j,fastjet::contrib::KT_Axes(),fastjet::contrib::NormalizedMeasure(NSubBeta,R0));
917 NSubjettinessResult[j] = nSub.result(fOutputJets[0]);
919 Subjet_Axes = nSub.currentAxes();
920 SubJet1_Axis = Subjet_Axes[0];
921 SubJet2_Axis = Subjet_Axes[1];
923 Double_t SubJet1_Eta=SubJet1_Axis.pseudorapidity();
924 Double_t SubJet2_Eta=SubJet2_Axis.pseudorapidity();
925 Double_t SubJet1_Phi=SubJet1_Axis.phi();
926 if(SubJet1_Phi < -1*TMath::Pi()) SubJet1_Phi += (2*TMath::Pi());
927 else if (SubJet1_Phi > TMath::Pi()) SubJet1_Phi -= (2*TMath::Pi());
928 Double_t SubJet2_Phi=SubJet2_Axis.phi();
929 if(SubJet1_Phi < -1*TMath::Pi()) SubJet1_Phi += (2*TMath::Pi());
930 else if (SubJet1_Phi > TMath::Pi()) SubJet1_Phi -= (2*TMath::Pi());
932 Double_t DeltaPhiSubJets,DeltaEtaSubJets;
933 DeltaPhiSubJets=SubJet1_Phi-SubJet2_Phi;
934 DeltaEtaSubJets=SubJet1_Eta-SubJet2_Eta;
935 if(DeltaPhiSubJets < -1*TMath::Pi()) DeltaPhiSubJets += (2*TMath::Pi());
936 else if (DeltaPhiSubJets > TMath::Pi()) DeltaPhiSubJets -= (2*TMath::Pi());
938 DelR = TMath::Power(TMath::Power(DeltaPhiSubJets,2)+TMath::Power(DeltaEtaSubJets,2),0.5);
955 fastjet::contrib::SoftDrop softdrop(beta, zcut);
957 softdrop.set_verbose_structure(kTRUE);
960 fastjet::contrib::Recluster *recluster;
961 if(
fReclusterAlgo == 2) recluster =
new fastjet::contrib::Recluster(fastjet::kt_algorithm,1,
true);
962 if(
fReclusterAlgo == 1) recluster =
new fastjet::contrib::Recluster(fastjet::antikt_algorithm,1,
true);
963 if(
fReclusterAlgo == 0) recluster =
new fastjet::contrib::Recluster(fastjet::cambridge_algorithm,1,
true);
964 softdrop.set_reclustering(
true,recluster);
965 fastjet::PseudoJet finaljet = softdrop(fOutputJets[0]);
972 std::vector<fastjet::PseudoJet> fSDTracks=finaljet.constituents();
973 Double_t FastjetTrackDelR,EmcalTrackDelR;
975 if(i<=finaljet.constituents().size()){
976 FastjetTrackDelR = TMath::Sqrt(TMath::Power(fSDTracks[i].eta()-JetEta,2)+TMath::Power(fSDTracks[i].phi()-JetPhi,2));
977 FJTrackEta[i]=fSDTracks[i].eta();
978 FJTrackPhi[i]=fSDTracks[i].phi();
979 FJTrackPt[i]=fSDTracks[i].perp();
982 AliVParticle *fTrk = fJet->
TrackAt(i, fTrackCont->GetArray());
983 EmcalTrackDelR = TMath::Sqrt(TMath::Power(fTrk->Eta()-JetEta,2)+TMath::Power(fTrk->Phi()-JetPhi,2));
986 Int_t nConstituents(fClustSeqSA->constituents(finaljet).size());
989 SymParam=(finaljet.structure_of<fastjet::contrib::SoftDrop>().symmetry());
990 Mu=(finaljet.structure_of<fastjet::contrib::SoftDrop>().mu());
991 DeltaR=(finaljet.structure_of<fastjet::contrib::SoftDrop>().delta_R());
994 std::vector<fastjet::PseudoJet> subjets;
995 if ( finaljet.has_pieces() ) {
996 subjets = finaljet.pieces();
997 fastjet::PseudoJet subjet1 = subjets[0];
998 fastjet::PseudoJet subjet2 = subjets[1];
1000 if(subjets[0].perp() > subjets[1].perp()){
1012 if(subjets[0].perp() > subjets[1].perp()){
1040 if(!fTruthJet)
fJetInfoVar[14]=finaljet.structure_of<fastjet::contrib::SoftDrop>().dropped_count();
1041 else fJetInfoVar[15]=finaljet.structure_of<fastjet::contrib::SoftDrop>().dropped_count();
1060 std::vector< fastjet::PseudoJet > constituents = jet.constituents();
1061 fastjet::PseudoJet leadingtrack = constituents[0];
1063 for(
size_t i=0; i<constituents.size(); i++){
1064 track_pt=constituents[i].perp();
1065 if (track_pt > leadingtrack.perp()){
1066 leadingtrack = constituents[i];
1069 return leadingtrack.perp();
1089 TClonesArray *TracksArray = NULL;
1090 TClonesArray *TracksArrayMC = NULL;
1092 else TracksArray = PartCont->GetArray();
1095 if(!PartContMC || !TracksArrayMC)
return -99999;
1098 if(!PartCont || !TracksArray)
return -99999;
1101 AliAODTrack *Track = 0x0;
1102 Int_t Trigger_Index[100];
1103 for (
Int_t i=0; i<100; i++) Trigger_Index[i] = 0;
1104 Int_t Trigger_Counter = 0;
1107 else NTracks = TracksArray->GetEntriesFast();
1108 for(
Int_t i=0; i < NTracks; i++){
1111 if (!Track)
continue;
1112 if(TMath::Abs(Track->Eta())>0.9)
continue;
1113 if (Track->Pt()<0.15)
continue;
1114 if ((Track->Pt() >= PtMin) && (Track->Pt()< PtMax)) {
1115 Trigger_Index[Trigger_Counter] = i;
1121 if((Track = static_cast<AliAODTrack*>(PartCont->
GetAcceptTrack(i)))){
1122 if (!Track)
continue;
1123 if(TMath::Abs(Track->Eta())>0.9)
continue;
1124 if (Track->Pt()<0.15)
continue;
1125 if ((Track->Pt() >= PtMin) && (Track->Pt()< PtMax)) {
1126 Trigger_Index[Trigger_Counter] = i;
1132 if (Trigger_Counter == 0)
return -99999;
1133 Int_t RandomNumber = 0, Index = 0 ;
1134 TRandom3* Random =
new TRandom3(0);
1135 RandomNumber = Random->Integer(Trigger_Counter);
1136 Index = Trigger_Index[RandomNumber];
1145 if (!jet2)
return -1;
1148 if (jetPt2 <= 0)
return -1;
1150 Int_t bgeom = kTRUE;
1151 if (!cont2) bgeom = kFALSE;
1153 AliVParticle *vpf = 0x0;
1158 AliVParticle *p2 = 0x0;
1159 if (bgeom) p2 =
static_cast<AliVParticle*
>(jet2->
TrackAt(icc, cont2->GetArray()));
1162 if (!bgeom && idx == jet1->
TrackAt(icf) && iFound == 0 ) {
1164 vpf = jet1->
Track(icf);
1165 if (vpf) sumPt += vpf->Pt();
1169 vpf = jet1->
Track(icf);
1177 Double_t fraction = sumPt / jetPt2;
1185 if(!part1)
return kFALSE;
1186 if(!part2)
return kFALSE;
1187 Double_t dPhi = TMath::Abs(part1->Phi() - part2->Phi());
1188 dPhi = TVector2::Phi_mpi_pi(dPhi);
1189 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.
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)
Double_t LeadingTrackPt(fastjet::PseudoJet jet)
Container for jet within the EMCAL jet framework.
AliEmcalJet * GetJet(Int_t i) const