30 #include <TDatabasePDG.h> 31 #include <TParticle.h> 33 #include <THnSparse.h> 35 #include <TObjectTable.h> 36 #include "AliMultSelection.h" 39 #include "AliAODHandler.h" 40 #include "AliAnalysisManager.h" 43 #include "AliAODRecoDecay.h" 46 #include "AliAODMCParticle.h" 79 fUseCandArray(kFALSE),
111 fCorrelationMethod(),
121 fAnalyseDBkg(kFALSE),
123 fUseCandArray(kFALSE),
144 Info(
"AliAnalysisTaskFlavourJetCorrelations",
"Calling Constructor");
148 Float_t defaultSigmaD013[20]={0.012, 0.012, 0.012, 0.015, 0.015,0.018,0.018,0.020,0.020,0.030,0.030,0.037,0.040,0.040,0.040,0.040,0.040,0.040,0.040,0.040};
172 AliFatal(Form(
"Default sigma D0 not enough for %d pt bins, use SetSigmaD0ForDStar to set them",nptbins));
183 if(
fUseSBArray) DefineInput(2, TClonesArray::Class());
185 DefineOutput(1,TList::Class());
186 DefineOutput(2,AliRDHFCuts::Class());
197 Info(
"~AliAnalysisTaskFlavourJetCorrelations",
"Calling Destructor");
210 if(fDebug > 1) printf(
"AnalysisTaskRecoJetCorrelations::Init() \n");
216 copyfCuts->SetName(
"AnalysisCutsDzero");
218 PostData(2,copyfCuts);
224 copyfCuts->SetName(
"AnalysisCutsDStar");
226 PostData(2,copyfCuts);
240 Info(
"UserCreateOutputObjects",
"CreateOutputObjects of task %s\n", GetName());
261 if (matchingAODdeltaAODlevel<=0) {
266 TClonesArray *arrayDStartoD0pi=0;
268 if (!aodEvent && AODEvent() && IsStandardAOD()) {
272 aodEvent =
dynamic_cast<AliAODEvent*
> (AODEvent());
276 AliAODHandler* aodHandler = (AliAODHandler*)
277 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
278 if(aodHandler->GetExtensions()) {
279 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
281 arrayDStartoD0pi=(TClonesArray*)aodFromExt->GetList()->FindObject(
fBranchName.Data());
284 arrayDStartoD0pi=(TClonesArray*)aodEvent->GetList()->FindObject(
fBranchName.Data());
287 if (!arrayDStartoD0pi) {
288 AliInfo(Form(
"Could not find array %s, skipping the event",
fBranchName.Data()));
290 }
else AliDebug(2, Form(
"Found %d vertices",arrayDStartoD0pi->GetEntriesFast()));
292 TClonesArray* mcArray = 0x0;
294 mcArray =
dynamic_cast<TClonesArray*
>(aodEvent->FindListObject(AliAODMCParticle::StdBranchName()));
296 printf(
"AliAnalysisTaskSEDStarSpectra::UserExec: MC particles not found!\n");
321 if(!aodEvent->GetPrimaryVertex() || TMath::Abs(aodEvent->GetMagneticField())<0.001)
return kFALSE;
326 if(!iseventselected)
return kFALSE;
329 if(aodEvent->GetRunNumber()>200000)
332 AliMultSelection *MultSelection = 0x0;
333 MultSelection = (AliMultSelection*)aodEvent->FindListObject(
"MultSelection");
336 AliWarning(
"AliMultSelection object not found!");
338 lPercentile = MultSelection->GetMultiplicityPercentile(
"V0M");
352 if(!mcjets)
return kFALSE;
356 mcjets->ResetCurrentID();
361 UInt_t rejectionReason = 0;
375 for(
Int_t itrk=0;itrk<ntrjet;itrk++)
377 AliAODMCParticle* jetTrk=(AliAODMCParticle*)jet->
TrackAt(itrk,MCParticlesCont->GetArray());
378 if (!jetTrk)
continue;
389 if(!MCjet)
return kFALSE;
407 if(!JetCont)
return kFALSE;
415 if(!JetContSB)
return kFALSE;
421 for(
Int_t i=0;i<ntrarr;i++)
423 AliVParticle* jetTrk= ParticlesCont->
GetParticle(i);
424 if (!jetTrk)
continue;
426 if (emcpart) jetTrk = emcpart->
GetTrack();
432 JetCont->ResetCurrentID();
437 UInt_t rejectionReason = 0;
446 JetPtCorr = jet->
Pt();
513 for(
Int_t icand = 0; icand<ncand; icand++)
515 AliVParticle* charm=0x0;
523 JetCont->ResetCurrentID();
527 UInt_t rejectionReason = 0;
557 if(!jet) AliDebug(2,
"No Reconstructed Level Jet Found!");
558 else if(!MCjet) AliDebug(2,
"No Generated Level Jet Found!");
571 AliAODMCParticle* DTrk=(AliAODMCParticle*)Dgen;
573 Double_t pTRes = JetPtGen ? ((JetPtRec - JetPtGen) / JetPtGen) : -999;
574 Double_t zRes = zGen ? ((zRec - zGen) / zGen) : -999;
576 Int_t pdgMeson = 413;
582 DYRec = dzero->Y(pdgMeson);
588 DYRec = dstar->Y(pdgMeson);
592 Double_t fillRM[12] = {zRec,JetPtRec,Drec->Pt(),DYRec,etaRec,zGen,JetPtGen,Dgen->Pt(),DYGen,etaGen,pTRes,zRes};
601 if(!MCjet) AliDebug(2,
"No Generated Level Jet Found!");
608 AliAODMCParticle* DTrk = (AliAODMCParticle*)Dgen;
634 if(rho>0) zRec =
Z(Drec,jet,rho);
635 else zRec =
Z(Drec,jet);
636 JetPtRec = jet->
Pt() - rho*jet->
Area();
637 JetEtaRec = jet->
Eta();
639 pTRes = JetPtGen ? ((JetPtRec - JetPtGen) / JetPtGen) : -999;
640 zRes = zGen ? ((zRec - zGen) / zGen) : -999;
642 Int_t pdgMeson = 413;
648 DYRec = dzero->Y(pdgMeson);
654 DYRec = dstar->Y(pdgMeson);
675 Double_t fillRM[12] = {zRec,JetPtRec,DPtRec,DYRec,JetEtaRec,zGen,JetPtGen,DPtGen,DYGen,JetEtaGen,pTRes,zRes};
689 if(rho>0) z =
Z(Dmeson,jet,rho);
690 else z =
Z(Dmeson,jet);
700 FillHistogramsD0JetCorr(dzero,z,Dmeson->Pt(),JetPtCorr,JetEtaRec,IsBkg,bDInEMCalAcc,bJetInEMCalAcc,aodEvent,-999);
722 JetCont->ResetCurrentID();
725 UInt_t rejectionReason = 0;
730 TString recoDecayClassName(
"AliAODRecoDecayHF2Prong");
734 recoDecayClassName =
"AliAODRecoCascadeHF";
738 for(
Int_t itrk=0;itrk<ntrjet;itrk++)
740 AliVParticle* jetTrk=jet->
TrackAt(itrk,ParticlesCont->GetArray());
741 if(!jetTrk)
continue;
743 if(emcpart) jetTrk = emcpart->
GetTrack();
744 if(strcmp(jetTrk->ClassName(),recoDecayClassName)==0)
755 if(!JetIsHF) jet = 0;
770 mcjets->ResetCurrentID();
780 for(
Int_t itrk=0;itrk<ntrjet;itrk++)
782 AliAODMCParticle* jetTrk=(AliAODMCParticle*)mcjet->
TrackAt(itrk,ParticlesCont->GetArray());
784 if(TMath::Abs(jetTrk->GetPdgCode())==
fPDGmother)
791 if(HFMCjet==kTRUE)
break;
794 if(!HFMCjet) mcjet=0;
805 Info(
"Terminate",
" terminate");
806 AliAnalysisTaskSE::Terminate();
810 printf(
"ERROR: fOutput not available\n");
819 Int_t abspdg=TMath::Abs(pdg);
821 mass=TDatabasePDG::Instance()->GetParticle(abspdg)->Mass();
825 mass1=TDatabasePDG::Instance()->GetParticle(421)->Mass();
849 printf(
"Error! Lower limit larger than upper limit!\n");
859 AliInfo(
"Maximum number of bins allowed is 30!");
862 if(!width)
return kFALSE;
872 Bool_t okpp=part->PxPyPz(p);
877 printf(
"Problems getting momenta\n");
884 pj[0] = jet->
Px() - jet->
Area()*(rho*TMath::Cos(jet->
AreaPhi()));
885 pj[1] = jet->
Py() - jet->
Area()*(rho*TMath::Sin(jet->
AreaPhi()));
886 pj[2] = jet->
Pz() - jet->
Area()*(rho*TMath::SinH(jet->
AreaEta()));
895 Bool_t okpp=part->PxPyPz(p);
900 printf(
"Problems getting momenta\n");
909 Double_t pjet2=pj[0]*pj[0]+pj[1]*pj[1]+pj[2]*pj[2];
910 Double_t z=(p[0]*pj[0]+p[1]*pj[1]+p[2]*pj[2])/(pjet2);
918 Double_t pjet2=pj[0]*pj[0]+pj[1]*pj[1];
919 Double_t z=(p[0]*pj[0]+p[1]*pj[1])/(pjet2);
931 fhstat=
new TH1I(
"hstat",
"Statistics",nbins,-0.5,nbins-0.5);
932 fhstat->GetXaxis()->SetBinLabel(1,
"N ev anal");
933 fhstat->GetXaxis()->SetBinLabel(2,
"N ev sel");
934 fhstat->GetXaxis()->SetBinLabel(3,
"N cand sel");
935 fhstat->GetXaxis()->SetBinLabel(4,
"N jets");
936 fhstat->GetXaxis()->SetBinLabel(5,
"N cand in jet");
937 fhstat->GetXaxis()->SetBinLabel(6,
"N jet rej");
938 fhstat->GetXaxis()->SetBinLabel(7,
"N cand sel & !jet");
939 fhstat->GetXaxis()->SetBinLabel(8,
"N jets & cand");
941 fhstat->GetXaxis()->SetBinLabel(3,
"N Signal sel & jet");
942 fhstat->GetXaxis()->SetBinLabel(5,
"N Signal in jet");
943 fhstat->GetXaxis()->SetBinLabel(9,
"N Bkg sel & jet");
944 fhstat->GetXaxis()->SetBinLabel(10,
"N Bkg in jet");
949 fhCentDjet=
new TH1F(
"hCentDjet",
"Centrality",100,0,100);
952 const Int_t nbinsmass=300;
953 const Int_t nbinspttrack=500;
954 const Int_t nbinsptjet=200;
955 const Int_t nbinsptD=100;
956 const Int_t nbinsphi=200;
957 const Int_t nbinseta=100;
960 const Int_t nbinsSpsmass=280;
961 const Int_t nbinsSpsptjet=200;
962 const Int_t nbinsSpsptD=100;
963 const Int_t nbinsSpsz=160;
964 const Int_t nbinsSpsy=150;
966 const Float_t pttracklims[2]={0.,200.};
967 const Float_t ptjetlims[2]={-50.,150.};
968 const Float_t ptDlims[2]={0.,50.};
969 const Float_t zlims[2]={-1.2,2};
970 const Float_t philims[2]={0.,6.3};
971 const Float_t etalims[2]={-1.5,1.5};
975 fhPhiJetTrks =
new TH1F(
"hPhiJetTrks",
"Jet tracks #phi distribution; #phi (rad)", nbinsphi,philims[0],philims[1]);
977 fhEtaJetTrks =
new TH1F(
"hEtaJetTrks",
"Jet tracks #eta distribution; #eta", nbinseta,etalims[0],etalims[1]);
979 fhPtJetTrks =
new TH1F(
"hPtJetTrks",
"Jet tracks Pt distribution; p_{T} (GeV/c)",nbinspttrack,pttracklims[0],pttracklims[1]);
982 fhPhiJet =
new TH1F(
"hPhiJet",
"Jet #phi distribution; #phi (rad)", nbinsphi,philims[0],philims[1]);
984 fhEtaJet =
new TH1F(
"hEtaJet",
"Jet #eta distribution; #eta", nbinseta,etalims[0],etalims[1]);
986 fhPtJet =
new TH1F(
"hPtJet",
"Jet Pt distribution; p_{T} (GeV/c)",nbinsptjet,ptjetlims[0],ptjetlims[1]);
1007 fhPtPion =
new TH1F(
"hPtPion",
"Primary pions candidates pt ",500,0,10);
1009 fhPtPion->GetXaxis()->SetTitle(
"GeV/c");
1010 fhPtPion->GetYaxis()->SetTitle(
"Entries");
1017 fhInvMassptD =
new TH2F(
"hInvMassptD",
"D (Delta R < Rjet) invariant mass distribution p_{T}^{j} > threshold",nbinsmass,
fMinMass,
fMaxMass,nbinsptD,ptDlims[0],ptDlims[1]);
1020 fhInvMassptD->GetYaxis()->SetTitle(
"#it{p}_{t}^{D} (GeV/c)");
1026 fhInvMassptDbg =
new TH2F(
"hInvMassptDbg",
"Background D (Delta R < Rjet) invariant mass distribution p_{T}^{j} > threshold",nbinsmass,
fMinMass,
fMaxMass,nbinsptD,ptDlims[0],ptDlims[1]);
1038 AliInfo(
"Creating a 9 axes container (MB background candidates)");
1039 const Int_t nAxis=9;
1040 const Int_t nbinsSparse[nAxis]={nbinsSpsz,nbinsSpsptjet,nbinsSpsptD,nbinsSpsmass,nbinsSpsy,nbinsSpsy, 2, 2, 2};
1041 const Double_t minSparse[nAxis]={zlims[0],ptjetlims[0],ptDlims[0],
fMinMass,etalims[0],etalims[0], -0.5,-0.5,-0.5};
1042 const Double_t maxSparse[nAxis]={zlims[1],ptjetlims[1],ptDlims[1],
fMaxMass,etalims[1],etalims[1], 1.5, 1.5 , 1.5};
1044 fhsDphiz=
new THnSparseF(
"hsDphiz",
"Z, p_{T}^{jet}, p_{T}^{D}, mass., y^{D}, #eta^{jet}, Bkg?, D in EMCal acc?, jet in EMCal acc?", nAxis, nbinsSparse, minSparse, maxSparse);
1048 const Int_t nAxis=11;
1049 const Int_t nbinsSparse[nAxis]={nbinsSpsz,nbinsSpsptjet,nbinsSpsptD,nbinsSpsmass,nbinsSpsy,nbinsSpsy,nbinsSpsmass,nbinsSpsmass, 2, 2, 2};
1050 const Double_t minSparse[nAxis]={zlims[0],ptjetlims[0],ptDlims[0],
fMinMass,etalims[0],etalims[0],
fMinMass,
fMinMass, -0.5,-0.5,-0.5};
1051 const Double_t maxSparse[nAxis]={zlims[1],ptjetlims[1],ptDlims[1],
fMaxMass,etalims[1],etalims[1],
fMaxMass,
fMaxMass, 1.5, 1.5 , 1.5};
1053 fhsDphiz=
new THnSparseF(
"hsDphiz",
"Z, p_{T}^{jet}, p_{T}^{D}, mass., y^{D}, #eta^{jet}, mass_{true}, mass_{refl}, Bkg?, D in EMCal acc?, jet in EMCal acc?", nAxis, nbinsSparse, minSparse, maxSparse);
1057 AliInfo(
"Creating a 6 axes container");
1058 const Int_t nAxis=6;
1059 const Int_t nbinsSparse[nAxis]={nbinsSpsz,nbinsSpsptjet,nbinsSpsptD,nbinsSpsmass,nbinsSpsy,nbinsSpsy};
1060 const Double_t minSparse[nAxis]={zlims[0],ptjetlims[0],ptDlims[0],
fMinMass,etalims[0],etalims[0]};
1061 const Double_t maxSparse[nAxis]={zlims[1],ptjetlims[1],ptDlims[1],
fMaxMass,etalims[1],etalims[1]};
1063 fhsDphiz=
new THnSparseF(
"hsDphiz",
"Z, p_{T}^{jet}, p_{T}^{D}, mass., y^{D}, #eta^{jet}", nAxis, nbinsSparse, minSparse, maxSparse);
1066 if(!
fhsDphiz) AliFatal(
"No THnSparse created");
1073 const Int_t nRMAxis=12;
1074 const Int_t RMnbins[nRMAxis] = {nbinsSpsz,nbinsSpsptjet,nbinsSpsptD,nbinsSpsy,nbinsSpsy,nbinsSpsz,nbinsSpsptjet,nbinsSpsptD,nbinsSpsy,nbinsSpsy,100,100};
1075 const Double_t RMmin[nRMAxis]={zlims[0],ptjetlims[0],ptDlims[0],etalims[0],etalims[0],zlims[0],ptjetlims[0],ptDlims[0],etalims[0],etalims[0],-1,-1};
1076 const Double_t RMmax[nRMAxis]={zlims[1],ptjetlims[1],ptDlims[1],etalims[1],etalims[1],zlims[1],ptjetlims[1],ptDlims[1],etalims[1],etalims[1],1,1};
1077 fResponseMatrix =
new THnSparseF(
"ResponseMatrix",
"z, p_{T}^{jet}, p_{T}^{D}, y^{D}, #eta^{jet}: Rec and Gen, p_{T}^{res}, z^{res}",nRMAxis,RMnbins,RMmin,RMmax);
1093 Int_t pdgdaughtersD0[2]={211,321};
1094 Int_t pdgdaughtersD0bar[2]={321,211};
1095 Int_t pdgMeson = 413;
1099 masses[1]=candidate->InvMass(
fNProngs,(
UInt_t*)pdgdaughtersD0bar);
1110 point[4]=candidate->Y(pdgMeson);
1120 point[4]=candidate->Y(pdgMeson);
1124 point[8]=
static_cast<Double_t>(IsBkg ? 1 : 0);
1125 point[9]=
static_cast<Double_t>(bDInEMCalAcc ? 1 : 0);
1126 point[10]=
static_cast<Double_t>(bJetInEMCalAcc ? 1 : 0);
1132 if(isselected==1 || isselected==3)
1146 if(isselected==1 || isselected==3)
1155 else if(isselected==3 && pdgTrue==421){
1159 else if(isselected==3 && pdgTrue==-421){
1173 else if(isselected==3){
1189 AliAODTrack *softpi = (AliAODTrack*)dstar->
GetBachelor();
1191 Int_t pdgMeson = 413;
1204 point[4]=dstar->Y(pdgMeson);
1214 point[4]=dstar->Y(pdgMeson);
1216 point[6]=
static_cast<Double_t>(IsBkg ? 1 : 0);
1217 point[7]=
static_cast<Double_t>(bDInEMCalAcc ? 1 : 0);
1218 point[8]=
static_cast<Double_t>(bJetInEMCalAcc ? 1 : 0);
1222 AliError(Form(
"Numer of THnSparse entries %d not valid",
fNAxesBigSparse));
1238 if(
fCandidateType==
kDstartoKpipi) pdgmass=TDatabasePDG::Instance()->GetParticle(413)->Mass()-TDatabasePDG::Instance()->GetParticle(421)->Mass();
1260 point[7]=
static_cast<Double_t>(bDInEMCalAcc ? 1 : 0);
1261 point[8]=
static_cast<Double_t>(bJetInEMCalAcc ? 1 : 0);
1265 AliError(Form(
"Numer of THnSparse entries %d not valid",
fNAxesBigSparse));
1281 if(!p1 || !p2)
return -1;
1290 printf(
"Problems getting momenta\n");
1293 pj[0] = p1->
Px() - p1->
Area()*(rho*TMath::Cos(p1->
AreaPhi()));
1294 pj[1] = p1->
Py() - p1->
Area()*(rho*TMath::Sin(p1->
AreaPhi()));
1295 pj[2] = p1->
Pz() - p1->
Area()*(rho*TMath::SinH(p1->
AreaEta()));
1299 phi1 = TMath::ACos(pj[0]/TMath::Sqrt(pj[0]*pj[0]+pj[1]*pj[1]));
1300 if(pj[1]<0) phi1 = 2*TMath::Pi() - phi1;
1301 eta1 = TMath::ASinH(pj[2]/TMath::Sqrt(pj[0]*pj[0]+pj[1]*pj[1]));
1304 Double_t phi2 = p2->Phi(),eta2 = p2->Eta() ;
1306 Double_t dPhi=TMath::Abs(phi1-phi2);
1307 if(dPhi>TMath::Pi()) dPhi = (2*TMath::Pi())-dPhi;
1311 Double_t deltaR=TMath::Sqrt(dEta*dEta + dPhi*dPhi );
1318 if(!p1 || !p2)
return -1;
1322 Double_t phi2 = p2->Phi(),eta2 = p2->Eta() ;
1324 Double_t dPhi=TMath::Abs(phi1-phi2);
1325 if(dPhi>TMath::Pi()) dPhi = (2*TMath::Pi())-dPhi;
1329 Double_t deltaR=TMath::Sqrt(dEta*dEta + dPhi*dPhi );
1347 Double_t mPDGD0=TDatabasePDG::Instance()->GetParticle(421)->Mass();
1352 if((invM>=sixSigmal && invM<fourSigmal) || (invM>fourSigmar && invM<=sixSigmar))
return 1;
1362 Double_t phiEMCal[2]={1.405,3.135},etaEMCal[2]={-0.7,0.7};
1364 Double_t phi=vpart->Phi(), eta=vpart->Eta();
1365 if(phi<phiEMCal[0] || phi>phiEMCal[1]) binEMCal=kFALSE;
1366 if(eta<etaEMCal[0] || eta>etaEMCal[1]) binEMCal=kFALSE;
void AddFlavourTag(Int_t tag)
Double_t GetRhoVal() const
const TString & GetRhoName() const
Double_t DeltaInvMass() const
Jet is tagged to contain a D* meson.
AliJetContainer * GetJetContainer(Int_t i=0) const
TH1I * fhstat
Use D meson SB array.
Double_t Z(AliVParticle *part, AliEmcalJet *jet, Double_t rho) const
Int_t GetNParticles() const
Double_t GetLocalVal(Double_t phi, Double_t r, Double_t n) const
static Int_t CheckMatchingAODdeltaAODevents()
void FillHistogramsMCGenDJetCorr(Double_t z, Double_t ptD, Double_t ptjet, Double_t yD, Double_t jetEta, Bool_t bDInEMCalAcc, Bool_t bJetInEMCalAcc)
virtual Bool_t AcceptJet(Int_t i, UInt_t &rejectionReason) const
void SetMassLimits(Double_t range, Int_t pdg)
virtual void Terminate(Option_t *)
AliVTrack * GetTrack() const
void FillHistogramsDstarJetCorr(AliAODRecoCascadeHF *dstar, Double_t z, Double_t ptD, Double_t ptj, Double_t jetEta, Bool_t IsBkg, Bool_t bDInEMCalAcc, Bool_t bJetInEMCalAcc)
void AngularCorrelationMethod(Bool_t IsBkg, AliAODEvent *aodEvent)
AliVParticle * GetFlavourTrack(Int_t i=0) const
Container for particles within the EMCAL framework.
THnSparse * fResponseMatrix
Int_t TrackAt(Int_t idx) const
UShort_t GetNumberOfTracks() const
void CreateResponseMatrix(AliEmcalJet *jet)
void FillHistogramsD0JetCorr(AliAODRecoDecayHF *candidate, Double_t z, Double_t ptD, Double_t ptj, Double_t jetEta, Bool_t IsBkg, Bool_t bDInEMCalAcc, Bool_t bJetInEMCalAcc, AliAODEvent *aodEvent, Int_t pdg)
AliParticleContainer * GetParticleContainer() const
Double_t ZT(Double_t *p, Double_t *pj) const
Bool_t DefineHistoForAnalysis()
void FillDJetHistograms(AliEmcalJet *jet, Double_t rho, Bool_t IsBkg, AliAODEvent *aodEvent)
Int_t IsDzeroSideBand(AliAODRecoCascadeHF *candDstar)
Bool_t fUseSBArray
Use D meson candidates array.
void AddFlavourTrack(AliVParticle *hftrack)
virtual AliVParticle * GetParticle(Int_t i=-1) const
virtual 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.
AliAODTrack * GetBachelor() const
void FindMCJet(AliEmcalJet *&mcjet)
Double_t fCent
!event centrality
virtual void UserCreateOutputObjects()
AliLocalRhoParameter * fLocalRho
! local event rho
Float_t CheckDeltaR(AliEmcalJet *p1, AliVParticle *p2) const
AliEmcalJet * GetNextAcceptJet()
Enhanced TList-derived class that implements correct merging for pt_hard binned production.
Bool_t InEMCalAcceptance(AliVParticle *vpart)
void GetHFJet(AliEmcalJet *&jet, Bool_t IsBkg)
AliEmcalJet * GetNextJet()
Bool_t IsEventSelected(AliVEvent *event)
Jet is tagged to contain a D0 meson.
Float_t GetJetRadius() const
AliEmcalList * fOutput
!output list
void ConstituentCorrelationMethod(Bool_t IsBkg, AliAODEvent *aodEvent)
void CreateMCResponseMatrix(AliEmcalJet *MCjet, AliAODEvent *aodEvent)
TClonesArray * fCandidateArray
AliAnalysisTaskFlavourJetCorrelations()
Bool_t IsSelected(TObject *obj)
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
Bool_t PxPyPz(Double_t p[3]) const
Bool_t SetD0WidthForDStar(Int_t nptbins, Float_t *width)
Double_t InvMassD0() const
void UserCreateOutputObjects()
Main initialization function on the worker.
virtual ~AliAnalysisTaskFlavourJetCorrelations()
Int_t PtBin(Double_t pt) const
Float_t DeltaR(AliEmcalJet *p1, AliVParticle *p2, Double_t rho) const
Container for jet within the EMCAL jet framework.
TClonesArray * fSideBandArray
contains candidates selected by AliRDHFCuts
Bool_t fAnalyseDBkg
contains candidates selected by AliRDHFCuts::IsSelected(kTracks), to be used for side bands (DStar ca...