#include <TParticle.h>\r
#include "TROOT.h"\r
#include <TH3F.h>\r
+#include <THnSparse.h>\r
\r
#include "AliAnalysisTaskFlavourJetCorrelations.h"\r
#include "AliAODMCHeader.h"\r
fmyOutput->Add(hstat);\r
\r
const Int_t nbinsmass=200;\r
+ const Int_t nbinsptjet=500;\r
+ const Int_t nbinsptD=100;\r
+ const Int_t nbinsz=100;\r
+ const Int_t nbinsphi=200;\r
\r
+ const Float_t ptjetlims[2]={0.,200.};\r
+ const Float_t ptDlims[2]={0.,50.};\r
+ const Float_t zlims[2]={0.,1.2};\r
+ const Float_t philims[2]={0.,6.3};\r
\r
if(fCandidateType==kDstartoKpipi) \r
{\r
\r
- TH2F* hDiffSideBand = new TH2F("hDiffSideBand","M(kpipi)-M(kpi) Side Band Background",nbinsmass,fMinMass,fMaxMass,100, 0.,30.);\r
+ TH2F* hDiffSideBand = new TH2F("hDiffSideBand","M(kpipi)-M(kpi) Side Band Background",nbinsmass,fMinMass,fMaxMass,nbinsptD, ptDlims[0],ptDlims[1]);\r
hDiffSideBand->SetStats(kTRUE);\r
hDiffSideBand->GetXaxis()->SetTitle("M(kpipi)-M(Kpi) GeV");\r
hDiffSideBand->GetYaxis()->SetTitle("p_{t}^{D} (GeV/c)");\r
+ hDiffSideBand->Sumw2();\r
fmyOutput->Add(hDiffSideBand); \r
\r
\r
hPtPion->SetStats(kTRUE);\r
hPtPion->GetXaxis()->SetTitle("GeV/c");\r
hPtPion->GetYaxis()->SetTitle("Entries");\r
+ hPtPion->Sumw2();\r
fmyOutput->Add(hPtPion);\r
\r
}\r
// jet related fistograms\r
\r
TH1F* hEjetTrks = new TH1F("hEjetTrks", "Jet tracks energy distribution;Energy (GeV)",500,0,200);\r
- TH1F* hPhiJetTrks = new TH1F("hPhiJetTrks","Jet tracks #phi distribution; #phi (rad)", 200,0,6.30);\r
+ hEjetTrks->Sumw2();\r
+ TH1F* hPhiJetTrks = new TH1F("hPhiJetTrks","Jet tracks #phi distribution; #phi (rad)", nbinsphi,philims[0],philims[1]);\r
+ hPhiJetTrks->Sumw2();\r
TH1F* hEtaJetTrks = new TH1F("hEtaJetTrks","Jet tracks #eta distribution; #eta", 100,-1.5,1.5);\r
- TH1F* hPtJetTrks = new TH1F("hPtJetTrks", "Jet tracks Pt distribution; p_{T} (GeV/c)",500,0,200);\r
+ hEtaJetTrks->Sumw2();\r
+ TH1F* hPtJetTrks = new TH1F("hPtJetTrks", "Jet tracks Pt distribution; p_{T} (GeV/c)",nbinsptjet,ptjetlims[0],ptjetlims[1]);\r
+ hPtJetTrks->Sumw2();\r
\r
TH1F* hEjet = new TH1F("hEjet", "Jet energy distribution;Energy (GeV)",500,0,200);\r
- TH1F* hPhiJet = new TH1F("hPhiJet","Jet #phi distribution; #phi (rad)", 200,0,6.30);\r
+ hEjet->Sumw2();\r
+ TH1F* hPhiJet = new TH1F("hPhiJet","Jet #phi distribution; #phi (rad)", nbinsphi,philims[0],philims[1]);\r
+ hPhiJet->Sumw2();\r
TH1F* hEtaJet = new TH1F("hEtaJet","Jet #eta distribution; #eta", 100,-1.5,1.5);\r
- TH1F* hPtJet = new TH1F("hPtJet", "Jet Pt distribution; p_{T} (GeV/c)",500,0,200);\r
+ hEtaJet->Sumw2();\r
+ TH1F* hPtJet = new TH1F("hPtJet", "Jet Pt distribution; p_{T} (GeV/c)",nbinsptjet,ptjetlims[0],ptjetlims[1]);\r
+ hPtJet->Sumw2();\r
\r
- TH3F* hPtJetWithD=new TH3F("hPtJetWithD","D-Jet Pt distribution; p_{T} (GeV/c);delta mass (GeV/c^{2})",500,0,200,nbinsmass,fMinMass,fMaxMass,100, 0.,30.);\r
+ TH3F* hPtJetWithD=new TH3F("hPtJetWithD","D-Jet Pt distribution; p_{T} (GeV/c);delta mass (GeV/c^{2})",nbinsptjet,ptjetlims[0],ptjetlims[1],nbinsmass,fMinMass,fMaxMass,nbinsptD, ptDlims[0],ptDlims[1]);\r
+ hPtJetWithD->Sumw2();\r
//for the MC this histogram is filled with the real background\r
- TH3F* hPtJetWithDsb=new TH3F("hPtJetWithDsb","D(background)-Jet Pt distribution; p_{T} (GeV/c);delta mass (GeV/c^{2});p_{T}^{D} (GeV/c)",500,0,200,nbinsmass,fMinMass,fMaxMass,100, 0.,30.);\r
+ TH3F* hPtJetWithDsb=new TH3F("hPtJetWithDsb","D(background)-Jet Pt distribution; p_{T} (GeV/c);delta mass (GeV/c^{2});p_{T}^{D} (GeV/c)",nbinsptjet,ptjetlims[0],ptjetlims[1],nbinsmass,fMinMass,fMaxMass,nbinsptD, ptDlims[0],ptDlims[1]);\r
+ hPtJetWithDsb->Sumw2();\r
\r
TH1F* hdeltaRJetTracks=new TH1F("hdeltaRJetTracks","Delta R of tracks in the jets",200, 0.,10.);\r
+ hdeltaRJetTracks->Sumw2();\r
\r
TH1F* hNtrArr= new TH1F("hNtrArr", "Number of tracks in the array of jets; number of tracks",500,0,1000);\r
+ hNtrArr->Sumw2();\r
TH1F *hNJetPerEv=new TH1F("hNJetPerEv","Number of jets used per event; number of jets/ev",10,-0.5,9.5);\r
+ hNJetPerEv->Sumw2();\r
\r
fmyOutput->Add(hEjetTrks);\r
fmyOutput->Add(hPhiJetTrks);\r
fmyOutput->Add(hNJetPerEv);\r
\r
TH1F* hDeltaRD=new TH1F("hDeltaRD","#Delta R distribution of D candidates selected;#Delta R",200, 0.,10.);\r
+ hDeltaRD->Sumw2();\r
fmyOutput->Add(hDeltaRD);\r
\r
//background (side bands for the Dstar and like sign for D0)\r
- TH2F* hInvMassptD = new TH2F("hInvMassptD",Form("D (Delta R < %.1f) invariant mass distribution p_{T}^{j} > threshold",fJetRadius),nbinsmass,fMinMass,fMaxMass,100,0.,50.);\r
+ TH2F* hInvMassptD = new TH2F("hInvMassptD",Form("D (Delta R < %.1f) invariant mass distribution p_{T}^{j} > threshold",fJetRadius),nbinsmass,fMinMass,fMaxMass,nbinsptD,ptDlims[0],ptDlims[1]);\r
hInvMassptD->SetStats(kTRUE);\r
hInvMassptD->GetXaxis()->SetTitle("mass (GeV)");\r
hInvMassptD->GetYaxis()->SetTitle("p_{t}^{D} (GeV/c)");\r
+ hInvMassptD->Sumw2();\r
\r
fmyOutput->Add(hInvMassptD);\r
\r
if(fUseMCInfo){\r
- TH2F* hInvMassptDbg = new TH2F("hInvMassptDbg",Form("Background D (Delta R < %.1f) invariant mass distribution p_{T}^{j} > threshold",fJetRadius),nbinsmass,fMinMass,fMaxMass,100,0.,50.);\r
+ TH2F* hInvMassptDbg = new TH2F("hInvMassptDbg",Form("Background D (Delta R < %.1f) invariant mass distribution p_{T}^{j} > threshold",fJetRadius),nbinsmass,fMinMass,fMaxMass,nbinsptD,ptDlims[0],ptDlims[1]);\r
hInvMassptDbg->GetXaxis()->SetTitle(Form("%s (GeV)",(fCandidateType==kDstartoKpipi) ? "M(Kpipi)" : "M(Kpi)"));\r
hInvMassptDbg->GetYaxis()->SetTitle("p_{t}^{D} (GeV/c)");\r
+ hInvMassptDbg->Sumw2();\r
fmyOutput->Add(hInvMassptDbg);\r
\r
}\r
+ const Int_t nAxis=5;\r
+ const Int_t nbinsSparse[nAxis]={nbinsz,nbinsphi,nbinsptjet,nbinsptD,nbinsmass};\r
+ const Double_t minSparse[nAxis]={zlims[0],philims[0],ptjetlims[0],ptDlims[0],fMinMass};\r
+ const Double_t maxSparse[nAxis]={zlims[1],philims[1],ptjetlims[1],ptDlims[1],fMinMass};\r
+ THnSparseF *hsDphiz=new THnSparseF("hsDphiz","Z and #Delta#phi vs p_{T}^{jet}, p_{T}^{D}, and mass", nAxis, nbinsSparse, minSparse, maxSparse);\r
+ hsDphiz->Sumw2();\r
+ \r
+ fmyOutput->Add(hsDphiz);\r
+\r
PostData(1, fmyOutput);\r
\r
return kTRUE; \r
}\r
} else{ //generated level\r
//AliInfo("Non reco");\r
- FillHistogramsMCGenDJetCorr(ptD,ptjet,deltaR);\r
+ FillHistogramsMCGenDJetCorr(deltaphi,z,ptD,ptjet,deltaR);\r
}\r
}\r
\r
masses[1]=candidate->InvMass(fNProngs,(UInt_t*)pdgdaughtersD0bar); //D0bar\r
\r
TH3F* hPtJetWithD=(TH3F*)fmyOutput->FindObject("hPtJetWithD");\r
+ THnSparseF* hsDphiz=(THnSparseF*)fmyOutput->FindObject("hsDphiz");\r
+ Double_t point[5]={z,dPhi,ptj,ptD,masses[0]};\r
\r
Int_t isselected=fCuts->IsSelected(candidate,AliRDHFCuts::kAll,aodEvent);\r
if(isselected==1 || isselected==3) {\r
if(deltaR<fJetRadius) hPtJetWithD->Fill(ptj,masses[0],ptD);\r
\r
FillMassHistograms(masses[0], ptD, deltaR);\r
+ hsDphiz->Fill(point,1.);\r
}\r
if(isselected>=2) {\r
if(deltaR<fJetRadius) hPtJetWithD->Fill(ptj,masses[1],ptD);\r
\r
FillMassHistograms(masses[1], ptD, deltaR);\r
+ point[4]=masses[1];\r
+ hsDphiz->Fill(point,1.);\r
}\r
\r
}\r
hPtPion->Fill(softpi->Pt());\r
\r
TH3F* hPtJetWithD=(TH3F*)fmyOutput->FindObject("hPtJetWithD");\r
+ THnSparseF* hsDphiz=(THnSparseF*)fmyOutput->FindObject("hsDphiz");\r
+ Double_t point[5]={z,dPhi,ptj,ptD,deltamass};\r
+\r
if(deltaR<fJetRadius) hPtJetWithD->Fill(ptj,deltamass,ptD);\r
\r
FillMassHistograms(deltamass, ptD, deltaR);\r
+ hsDphiz->Fill(point,1.);\r
\r
}\r
\r
//_______________________________________________________________________________\r
\r
-void AliAnalysisTaskFlavourJetCorrelations::FillHistogramsMCGenDJetCorr(Double_t ptD,Double_t ptjet,Double_t deltaR){\r
+void AliAnalysisTaskFlavourJetCorrelations::FillHistogramsMCGenDJetCorr(Double_t dPhi,Double_t z,Double_t ptD,Double_t ptjet,Double_t deltaR){\r
\r
Double_t pdgmass=0;\r
TH3F* hPtJetWithD=(TH3F*)fmyOutput->FindObject("hPtJetWithD");\r
+ THnSparseF* hsDphiz=(THnSparseF*)fmyOutput->FindObject("hsDphiz");\r
+ Double_t point[5]={z,dPhi,ptjet,ptD,pdgmass};\r
+\r
if(fCandidateType==kD0toKpi) pdgmass=TDatabasePDG::Instance()->GetParticle(421)->Mass();\r
if(fCandidateType==kDstartoKpipi) pdgmass=TDatabasePDG::Instance()->GetParticle(413)->Mass()-TDatabasePDG::Instance()->GetParticle(421)->Mass();\r
- \r
- if(deltaR<fJetRadius) hPtJetWithD->Fill(ptjet,pdgmass,ptD); // candidates within a jet\r
+ point[4]=pdgmass;\r
+\r
+ if(deltaR<fJetRadius) {\r
+ hPtJetWithD->Fill(ptjet,pdgmass,ptD); // candidates within a jet\r
+ hsDphiz->Fill(point,1.);\r
+ }\r
\r
}\r
\r
return deltaR;\r
\r
}\r
-\r
-\r