AliAnalysisTaskEmcalJetMass::AliAnalysisTaskEmcalJetMass() :
AliAnalysisTaskEmcalJet("AliAnalysisTaskEmcalJetMass", kTRUE),
fContainerBase(0),
+ fMinFractionShared(0),
+ fJetMassType(kRaw),
fh2PtJet1VsLeadPtAllSel(0),
fh2PtJet1VsLeadPtTagged(0),
+ fh2PtJet1VsLeadPtTaggedMatch(0),
fh2PtVsMassJet1All(0),
fh2PtVsMassJet1Tagged(0),
+ fh2PtVsMassJet1TaggedMatch(0),
fpPtVsMassJet1All(0),
fpPtVsMassJet1Tagged(0),
+ fpPtVsMassJet1TaggedMatch(0),
fh2MassVsAreaJet1All(0),
- fh2MassVsAreaJet1Tagged(0)
+ fh2MassVsAreaJet1Tagged(0),
+ fh2MassVsAreaJet1TaggedMatch(0),
+ fh2MassVsNConstJet1All(0),
+ fh2MassVsNConstJet1Tagged(0),
+ fh2MassVsNConstJet1TaggedMatch(0),
+ fh2EtMassOverEtRSq(0)
{
// Default constructor.
- fh2PtJet1VsLeadPtAllSel = new TH2F*[fNcentBins];
- fh2PtJet1VsLeadPtTagged = new TH2F*[fNcentBins];
- fh2PtVsMassJet1All = new TH2F*[fNcentBins];
- fh2PtVsMassJet1Tagged = new TH2F*[fNcentBins];
- fpPtVsMassJet1All = new TProfile*[fNcentBins];
- fpPtVsMassJet1Tagged = new TProfile*[fNcentBins];
- fh2MassVsAreaJet1All = new TH2F*[fNcentBins];
- fh2MassVsAreaJet1Tagged = new TH2F*[fNcentBins];
+ fh2PtJet1VsLeadPtAllSel = new TH2F*[fNcentBins];
+ fh2PtJet1VsLeadPtTagged = new TH2F*[fNcentBins];
+ fh2PtJet1VsLeadPtTaggedMatch = new TH2F*[fNcentBins];
+ fh2PtVsMassJet1All = new TH2F*[fNcentBins];
+ fh2PtVsMassJet1Tagged = new TH2F*[fNcentBins];
+ fh2PtVsMassJet1TaggedMatch = new TH2F*[fNcentBins];
+ fpPtVsMassJet1All = new TProfile*[fNcentBins];
+ fpPtVsMassJet1Tagged = new TProfile*[fNcentBins];
+ fpPtVsMassJet1TaggedMatch = new TProfile*[fNcentBins];
+ fh2MassVsAreaJet1All = new TH2F*[fNcentBins];
+ fh2MassVsAreaJet1Tagged = new TH2F*[fNcentBins];
+ fh2MassVsAreaJet1TaggedMatch = new TH2F*[fNcentBins];
+ fh2MassVsNConstJet1All = new TH2F*[fNcentBins];
+ fh2MassVsNConstJet1Tagged = new TH2F*[fNcentBins];
+ fh2MassVsNConstJet1TaggedMatch = new TH2F*[fNcentBins];
+ fh2EtMassOverEtRSq = new TH2F*[fNcentBins];
for (Int_t i = 0; i < fNcentBins; i++) {
- fh2PtJet1VsLeadPtAllSel[i] = 0;
- fh2PtJet1VsLeadPtTagged[i] = 0;
- fh2PtVsMassJet1All[i] = 0;
- fh2PtVsMassJet1Tagged[i] = 0;
- fpPtVsMassJet1All[i] = 0;
- fpPtVsMassJet1Tagged[i] = 0;
- fh2MassVsAreaJet1All[i] = 0;
- fh2MassVsAreaJet1Tagged[i] = 0;
+ fh2PtJet1VsLeadPtAllSel[i] = 0;
+ fh2PtJet1VsLeadPtTagged[i] = 0;
+ fh2PtJet1VsLeadPtTaggedMatch[i] = 0;
+ fh2PtVsMassJet1All[i] = 0;
+ fh2PtVsMassJet1Tagged[i] = 0;
+ fh2PtVsMassJet1TaggedMatch[i] = 0;
+ fpPtVsMassJet1All[i] = 0;
+ fpPtVsMassJet1Tagged[i] = 0;
+ fpPtVsMassJet1TaggedMatch[i] = 0;
+ fh2MassVsAreaJet1All[i] = 0;
+ fh2MassVsAreaJet1Tagged[i] = 0;
+ fh2MassVsAreaJet1TaggedMatch[i] = 0;
+ fh2MassVsNConstJet1All[i] = 0;
+ fh2MassVsNConstJet1Tagged[i] = 0;
+ fh2MassVsNConstJet1TaggedMatch[i] = 0;
+ fh2EtMassOverEtRSq[i] = 0;
}
SetMakeGeneralHistograms(kTRUE);
-
}
//________________________________________________________________________
AliAnalysisTaskEmcalJetMass::AliAnalysisTaskEmcalJetMass(const char *name) :
AliAnalysisTaskEmcalJet(name, kTRUE),
fContainerBase(0),
+ fMinFractionShared(0),
+ fJetMassType(kRaw),
fh2PtJet1VsLeadPtAllSel(0),
fh2PtJet1VsLeadPtTagged(0),
+ fh2PtJet1VsLeadPtTaggedMatch(0),
fh2PtVsMassJet1All(0),
fh2PtVsMassJet1Tagged(0),
+ fh2PtVsMassJet1TaggedMatch(0),
fpPtVsMassJet1All(0),
fpPtVsMassJet1Tagged(0),
+ fpPtVsMassJet1TaggedMatch(0),
fh2MassVsAreaJet1All(0),
- fh2MassVsAreaJet1Tagged(0)
+ fh2MassVsAreaJet1Tagged(0),
+ fh2MassVsAreaJet1TaggedMatch(0),
+ fh2MassVsNConstJet1All(0),
+ fh2MassVsNConstJet1Tagged(0),
+ fh2MassVsNConstJet1TaggedMatch(0),
+ fh2EtMassOverEtRSq(0)
{
// Standard constructor.
- fh2PtJet1VsLeadPtAllSel = new TH2F*[fNcentBins];
- fh2PtJet1VsLeadPtTagged = new TH2F*[fNcentBins];
- fh2PtVsMassJet1All = new TH2F*[fNcentBins];
- fh2PtVsMassJet1Tagged = new TH2F*[fNcentBins];
- fpPtVsMassJet1All = new TProfile*[fNcentBins];
- fpPtVsMassJet1Tagged = new TProfile*[fNcentBins];
- fh2MassVsAreaJet1All = new TH2F*[fNcentBins];
- fh2MassVsAreaJet1Tagged = new TH2F*[fNcentBins];
+ fh2PtJet1VsLeadPtAllSel = new TH2F*[fNcentBins];
+ fh2PtJet1VsLeadPtTagged = new TH2F*[fNcentBins];
+ fh2PtJet1VsLeadPtTaggedMatch = new TH2F*[fNcentBins];
+ fh2PtVsMassJet1All = new TH2F*[fNcentBins];
+ fh2PtVsMassJet1Tagged = new TH2F*[fNcentBins];
+ fh2PtVsMassJet1TaggedMatch = new TH2F*[fNcentBins];
+ fpPtVsMassJet1All = new TProfile*[fNcentBins];
+ fpPtVsMassJet1Tagged = new TProfile*[fNcentBins];
+ fpPtVsMassJet1TaggedMatch = new TProfile*[fNcentBins];
+ fh2MassVsAreaJet1All = new TH2F*[fNcentBins];
+ fh2MassVsAreaJet1Tagged = new TH2F*[fNcentBins];
+ fh2MassVsAreaJet1TaggedMatch = new TH2F*[fNcentBins];
+ fh2MassVsNConstJet1All = new TH2F*[fNcentBins];
+ fh2MassVsNConstJet1Tagged = new TH2F*[fNcentBins];
+ fh2MassVsNConstJet1TaggedMatch = new TH2F*[fNcentBins];
+ fh2EtMassOverEtRSq = new TH2F*[fNcentBins];
for (Int_t i = 0; i < fNcentBins; i++) {
- fh2PtJet1VsLeadPtAllSel[i] = 0;
- fh2PtJet1VsLeadPtTagged[i] = 0;
- fh2PtVsMassJet1All[i] = 0;
- fh2PtVsMassJet1Tagged[i] = 0;
- fpPtVsMassJet1All[i] = 0;
- fpPtVsMassJet1Tagged[i] = 0;
- fh2MassVsAreaJet1All[i] = 0;
- fh2MassVsAreaJet1Tagged[i] = 0;
+ fh2PtJet1VsLeadPtAllSel[i] = 0;
+ fh2PtJet1VsLeadPtTagged[i] = 0;
+ fh2PtJet1VsLeadPtTaggedMatch[i] = 0;
+ fh2PtVsMassJet1All[i] = 0;
+ fh2PtVsMassJet1Tagged[i] = 0;
+ fh2PtVsMassJet1TaggedMatch[i] = 0;
+ fpPtVsMassJet1All[i] = 0;
+ fpPtVsMassJet1Tagged[i] = 0;
+ fpPtVsMassJet1TaggedMatch[i] = 0;
+ fh2MassVsAreaJet1All[i] = 0;
+ fh2MassVsAreaJet1Tagged[i] = 0;
+ fh2MassVsAreaJet1TaggedMatch[i] = 0;
+ fh2MassVsNConstJet1All[i] = 0;
+ fh2MassVsNConstJet1Tagged[i] = 0;
+ fh2MassVsNConstJet1TaggedMatch[i] = 0;
+ fh2EtMassOverEtRSq[i] = 0;
}
SetMakeGeneralHistograms(kTRUE);
const Double_t minPt = -50.;
const Double_t maxPt = 200.;
+ const Int_t nBinsM = 150;
+ const Double_t minM = -50.;
+ const Double_t maxM = 100.;
+
const Int_t nBinsArea = 100;
const Double_t minArea = 0.;
const Double_t maxArea = 1.;
+ const Int_t nBinsNConst = 100;
+ const Double_t minNConst = 0.;
+ const Double_t maxNConst = 500.;
+
TString histName = "";
TString histTitle = "";
for (Int_t i = 0; i < fNcentBins; i++) {
fh2PtJet1VsLeadPtTagged[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,20,0.,20.);
fOutput->Add(fh2PtJet1VsLeadPtTagged[i]);
+ histName = TString::Format("fh2PtJet1VsLeadPtTaggedMatch_%d",i);
+ histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{p}_{T,lead trk}",histName.Data());
+ fh2PtJet1VsLeadPtTaggedMatch[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,20,0.,20.);
+ fOutput->Add(fh2PtJet1VsLeadPtTaggedMatch[i]);
+
histName = TString::Format("fh2PtVsMassJet1All_%d",i);
histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{M}_{jet1}",histName.Data());
- fh2PtVsMassJet1All[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsPt,minPt,maxPt);
+ fh2PtVsMassJet1All[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsM,minM,maxM);
fOutput->Add(fh2PtVsMassJet1All[i]);
histName = TString::Format("fh2PtVsMassJet1Tagged_%d",i);
histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{M}_{jet1}",histName.Data());
- fh2PtVsMassJet1Tagged[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsPt,minPt,maxPt);
+ fh2PtVsMassJet1Tagged[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsM,minM,maxM);
fOutput->Add(fh2PtVsMassJet1Tagged[i]);
+ histName = TString::Format("fh2PtVsMassJet1TaggedMatch_%d",i);
+ histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{M}_{jet1}",histName.Data());
+ fh2PtVsMassJet1TaggedMatch[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsM,minM,maxM);
+ fOutput->Add(fh2PtVsMassJet1TaggedMatch[i]);
+
histName = TString::Format("fpPtVsMassJet1All_%d",i);
histTitle = TString::Format("%s;#it{p}_{T,jet1};Avg #it{M}_{jet1}",histName.Data());
- fpPtVsMassJet1All[i] = new TProfile(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt);
+ fpPtVsMassJet1All[i] = new TProfile(histName.Data(),histTitle.Data(),nBinsM,minM,maxM);
fOutput->Add(fpPtVsMassJet1All[i]);
histName = TString::Format("fpPtVsMassJet1Tagged_%d",i);
histTitle = TString::Format("%s;#it{p}_{T,jet1};Avg #it{M}_{jet1}",histName.Data());
- fpPtVsMassJet1Tagged[i] = new TProfile(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt);
+ fpPtVsMassJet1Tagged[i] = new TProfile(histName.Data(),histTitle.Data(),nBinsM,minM,maxM);
fOutput->Add(fpPtVsMassJet1Tagged[i]);
+ histName = TString::Format("fpPtVsMassJet1TaggedMatch_%d",i);
+ histTitle = TString::Format("%s;#it{p}_{T,jet1};Avg #it{M}_{jet1}",histName.Data());
+ fpPtVsMassJet1TaggedMatch[i] = new TProfile(histName.Data(),histTitle.Data(),nBinsM,minM,maxM);
+ fOutput->Add(fpPtVsMassJet1TaggedMatch[i]);
+
histName = TString::Format("fh2MassVsAreaJet1All_%d",i);
histTitle = TString::Format("%s;#it{M}_{jet1};#it{A}",histName.Data());
- fh2MassVsAreaJet1All[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsArea,minArea,maxArea);
+ fh2MassVsAreaJet1All[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsM,minM,maxM,nBinsArea,minArea,maxArea);
fOutput->Add(fh2MassVsAreaJet1All[i]);
histName = TString::Format("fh2MassVsAreaJet1Tagged_%d",i);
histTitle = TString::Format("%s;#it{M}_{jet1};#it{A}",histName.Data());
- fh2MassVsAreaJet1Tagged[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsArea,minArea,maxArea);
+ fh2MassVsAreaJet1Tagged[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsM,minM,maxM,nBinsArea,minArea,maxArea);
fOutput->Add(fh2MassVsAreaJet1Tagged[i]);
+ histName = TString::Format("fh2MassVsAreaJet1TaggedMatch_%d",i);
+ histTitle = TString::Format("%s;#it{M}_{jet1};#it{A}",histName.Data());
+ fh2MassVsAreaJet1TaggedMatch[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsM,minM,maxM,nBinsArea,minArea,maxArea);
+ fOutput->Add(fh2MassVsAreaJet1TaggedMatch[i]);
+
+ histName = TString::Format("fh2MassVsNConstJet1All_%d",i);
+ histTitle = TString::Format("%s;#it{M}_{jet1};#it{N}_{constituents}",histName.Data());
+ fh2MassVsNConstJet1All[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsM,minM,maxM,nBinsNConst,minNConst,maxNConst);
+ fOutput->Add(fh2MassVsNConstJet1All[i]);
+
+ histName = TString::Format("fh2MassVsNConstJet1Tagged_%d",i);
+ histTitle = TString::Format("%s;#it{M}_{jet1};#it{N}_{constituents}",histName.Data());
+ fh2MassVsNConstJet1Tagged[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsNConst,minNConst,maxNConst);
+ fOutput->Add(fh2MassVsNConstJet1Tagged[i]);
+
+ histName = TString::Format("fh2MassVsNConstJet1TaggedMatch_%d",i);
+ histTitle = TString::Format("%s;#it{M}_{jet1};#it{N}_{constituents}",histName.Data());
+ fh2MassVsNConstJet1TaggedMatch[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsNConst,minNConst,maxNConst);
+ fOutput->Add(fh2MassVsNConstJet1TaggedMatch[i]);
+
+ histName = TString::Format("fh2EtMassOverEtRSq_%d",i);
+ histTitle = TString::Format("%s;#it{E}_{T};(#it{M}/(#it{E}_{T}#it{R}))^{2}",histName.Data());
+ fh2EtMassOverEtRSq[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,100,0.,1.);
+ fOutput->Add(fh2EtMassOverEtRSq[i]);
}
// =========== Switch on Sumw2 for all histos ===========
{
// Fill histograms.
- for(int i = 0; i < GetNJets(fContainerBase);++i) {
- AliEmcalJet *jet1 = static_cast<AliEmcalJet*>(GetAcceptJetFromArray(i, fContainerBase));
- if(!jet1) continue;
-
- Double_t ptJet1 = jet1->Pt() - GetRhoVal(fContainerBase)*jet1->Area();
- fh2PtJet1VsLeadPtAllSel[fCentBin]->Fill(ptJet1,jet1->MaxTrackPt());
- fh2PtVsMassJet1All[fCentBin]->Fill(ptJet1,jet1->M());
- fpPtVsMassJet1All[fCentBin]->Fill(ptJet1,jet1->M());
- fh2MassVsAreaJet1All[fCentBin]->Fill(jet1->M(),jet1->Area());
-
- if(jet1->GetTagStatus()<1)
- continue;
-
- AliEmcalJet *jet2 = jet1->GetTaggedJet();
- if(!jet2) continue;
-
- fh2PtJet1VsLeadPtTagged[fCentBin]->Fill(ptJet1,jet1->MaxTrackPt());
- fh2PtVsMassJet1Tagged[fCentBin]->Fill(ptJet1,jet1->M());
- fpPtVsMassJet1Tagged[fCentBin]->Fill(ptJet1,jet1->M());
- fh2MassVsAreaJet1Tagged[fCentBin]->Fill(jet1->M(),jet1->Area());
-
+ AliEmcalJet* jet1 = NULL;
+ AliJetContainer *jetCont = GetJetContainer(fContainerBase);
+ if(jetCont) {
+ jetCont->ResetCurrentID();
+ while((jet1 = jetCont->GetNextAcceptJet())) {
+
+ Double_t ptJet1 = jet1->Pt() - GetRhoVal(fContainerBase)*jet1->Area();
+ Double_t mJet1 = GetJetMass(jet1);
+ fh2PtJet1VsLeadPtAllSel[fCentBin]->Fill(ptJet1,jet1->MaxTrackPt());
+ fh2PtVsMassJet1All[fCentBin]->Fill(ptJet1,mJet1);
+ fpPtVsMassJet1All[fCentBin]->Fill(ptJet1,mJet1);
+ fh2MassVsAreaJet1All[fCentBin]->Fill(mJet1,jet1->Area());
+ fh2MassVsNConstJet1All[fCentBin]->Fill(mJet1,jet1->GetNumberOfConstituents());
+
+ if(jet1->GetTagStatus()<1 || !jet1->GetTaggedJet())
+ continue;
+
+ fh2PtJet1VsLeadPtTagged[fCentBin]->Fill(ptJet1,jet1->MaxTrackPt());
+ fh2PtVsMassJet1Tagged[fCentBin]->Fill(ptJet1,mJet1);
+ fpPtVsMassJet1Tagged[fCentBin]->Fill(ptJet1,mJet1);
+ fh2MassVsAreaJet1Tagged[fCentBin]->Fill(mJet1,jet1->Area());
+ fh2MassVsNConstJet1Tagged[fCentBin]->Fill(mJet1,jet1->GetNumberOfConstituents());
+
+ Double_t fraction = jetCont->GetFractionSharedPt(jet1);
+ if(fMinFractionShared>0. && fraction>fMinFractionShared) {
+ fh2PtJet1VsLeadPtTaggedMatch[fCentBin]->Fill(ptJet1,jet1->MaxTrackPt());
+ fh2PtVsMassJet1TaggedMatch[fCentBin]->Fill(ptJet1,mJet1);
+ fpPtVsMassJet1TaggedMatch[fCentBin]->Fill(ptJet1,mJet1);
+ fh2MassVsAreaJet1TaggedMatch[fCentBin]->Fill(mJet1,jet1->Area());
+ fh2MassVsNConstJet1TaggedMatch[fCentBin]->Fill(mJet1,jet1->GetNumberOfConstituents());
+ }
+
+ Double_t Et2 = jet1->M()*jet1->M() + jet1->Pt()*jet1->Pt();
+ Double_t Et = 0.; Double_t massOverEtR = 0.;
+ if(Et2>0.) Et = TMath::Sqrt(Et2);
+ if((Et*jetCont->GetJetRadius())>0.)
+ massOverEtR = jet1->M()/(Et*jetCont->GetJetRadius());
+ fh2EtMassOverEtRSq[fCentBin]->Fill(Et,massOverEtR*massOverEtR);
+ }
}
-
+
return kTRUE;
-
}
+//________________________________________________________________________
+Double_t AliAnalysisTaskEmcalJetMass::GetJetMass(AliEmcalJet *jet) {
+ //calc subtracted jet mass
+ if(fJetMassType==kRaw)
+ return jet->M();
+ else if(fJetMassType==kDeriv)
+ return jet->GetSecondOrderSubtracted();
+
+ return 0;
+}
//________________________________________________________________________
Bool_t AliAnalysisTaskEmcalJetMass::RetrieveEventObjects() {