fh2MSubPtTrue(0x0),
fh2MTruePtTrue(0x0),
fh2PtTrueDeltaM(0x0),
+ fh2PtTrueDeltaMRel(0x0),
fhnMassResponse(0x0)
{
// Default constructor.
fh2MSubPtTrue = new TH2F*[fNcentBins];
fh2MTruePtTrue = new TH2F*[fNcentBins];
fh2PtTrueDeltaM = new TH2F*[fNcentBins];
+ fh2PtTrueDeltaMRel = new TH2F*[fNcentBins];
fhnMassResponse = new THnSparse*[fNcentBins];
for (Int_t i = 0; i < fNcentBins; i++) {
fh2MSubPtTrue[i] = 0;
fh2MTruePtTrue[i] = 0;
fh2PtTrueDeltaM[i] = 0;
+ fh2PtTrueDeltaMRel[i] = 0;
fhnMassResponse[i] = 0;
}
fh2MSubPtTrue(0x0),
fh2MTruePtTrue(0x0),
fh2PtTrueDeltaM(0x0),
+ fh2PtTrueDeltaMRel(0x0),
fhnMassResponse(0x0)
{
// Standard constructor.
fh2MSubPtTrue = new TH2F*[fNcentBins];
fh2MTruePtTrue = new TH2F*[fNcentBins];
fh2PtTrueDeltaM = new TH2F*[fNcentBins];
+ fh2PtTrueDeltaMRel = new TH2F*[fNcentBins];
fhnMassResponse = new THnSparse*[fNcentBins];
for (Int_t i = 0; i < fNcentBins; i++) {
fh2MSubPtTrue[i] = 0;
fh2MTruePtTrue[i] = 0;
fh2PtTrueDeltaM[i] = 0;
+ fh2PtTrueDeltaMRel[i] = 0;
fhnMassResponse[i] = 0;
}
fh2PtTrueDeltaM[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,100,-50.,50.);
fOutput->Add(fh2PtTrueDeltaM[i]);
+ histName = Form("fh2PtTrueDeltaMRel_%d",i);
+ histTitle = Form("fh2PtTrueDeltaMRel_%d;#it{p}_{T,true};(#it{M}_{sub}-#it{M}_{true})/#it{M}_{true}",i);
+ fh2PtTrueDeltaMRel[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,200,-1.,1.);
+ fOutput->Add(fh2PtTrueDeltaMRel[i]);
+
histName = Form("fhnMassResponse_%d",i);
histTitle = Form("fhnMassResponse_%d;#it{M}_{sub};#it{M}_{true};#it{p}_{T,sub};#it{p}_{T,true}",i);
fhnMassResponse[i] = new THnSparseF(histName.Data(),histTitle.Data(),nBinsSparse0,nBins0,xmin0,xmax0);
fh2MSubPtTrue[fCentBin]->Fill(jetS->M(),jet2->Pt());
fh2MTruePtTrue[fCentBin]->Fill(jet2->M(),jet2->Pt());
fh2PtTrueDeltaM[fCentBin]->Fill(jet2->Pt(),jetS->M()-jet2->M());
+ if(jet2->M()>0.) fh2PtTrueDeltaMRel[fCentBin]->Fill(jet2->Pt(),(jetS->M()-jet2->M())/jet2->M());
Double_t var[4] = {jetS->M(),jet2->M(),jet1->Pt()-jetCont->GetRhoVal()*jet1->Area(),jet2->Pt()};
fhnMassResponse[fCentBin]->Fill(var);
}
TH2F **fh2MSubPtTrue; //! subtracted jet mass vs true jet pT for matched jets
TH2F **fh2MTruePtTrue; //! true jet mass vs true jet pT for matched jets
TH2F **fh2PtTrueDeltaM; //! true jet pT vs (Msub - Mtrue)
+ TH2F **fh2PtTrueDeltaMRel; //! true jet pT vs (Msub - Mtrue)/Mtrue
THnSparse **fhnMassResponse; //! Msub vs Mtrue vs PtCorr vs PtTrue
private:
fh2MSubPtTrue(0x0),
fh2MTruePtTrue(0x0),
fh2PtTrueDeltaM(0x0),
+ fh2PtTrueDeltaMRel(0x0),
fhnMassResponse(0x0),
fh2PtTrueSubFacV1(0x0),
fh2PtRawSubFacV1(0x0),
fh2MSubPtTrue = new TH2F*[fNcentBins];
fh2MTruePtTrue = new TH2F*[fNcentBins];
fh2PtTrueDeltaM = new TH2F*[fNcentBins];
+ fh2PtTrueDeltaMRel = new TH2F*[fNcentBins];
fhnMassResponse = new THnSparse*[fNcentBins];
fh2PtTrueSubFacV1 = new TH2F*[fNcentBins];
fh2PtRawSubFacV1 = new TH2F*[fNcentBins];
fh2MSubPtTrue[i] = 0;
fh2MTruePtTrue[i] = 0;
fh2PtTrueDeltaM[i] = 0;
+ fh2PtTrueDeltaMRel[i] = 0;
fhnMassResponse[i] = 0;
fh2PtTrueSubFacV1[i] = 0;
fh2PtRawSubFacV1[i] = 0;
fh2MSubPtTrue(0x0),
fh2MTruePtTrue(0x0),
fh2PtTrueDeltaM(0x0),
+ fh2PtTrueDeltaMRel(0x0),
fhnMassResponse(0x0),
fh2PtTrueSubFacV1(0x0),
fh2PtRawSubFacV1(0x0),
fh2MSubPtTrue = new TH2F*[fNcentBins];
fh2MTruePtTrue = new TH2F*[fNcentBins];
fh2PtTrueDeltaM = new TH2F*[fNcentBins];
+ fh2PtTrueDeltaMRel = new TH2F*[fNcentBins];
fhnMassResponse = new THnSparse*[fNcentBins];
fh2PtTrueSubFacV1 = new TH2F*[fNcentBins];
fh2PtRawSubFacV1 = new TH2F*[fNcentBins];
fh2MSubPtTrue[i] = 0;
fh2MTruePtTrue[i] = 0;
fh2PtTrueDeltaM[i] = 0;
+ fh2PtTrueDeltaMRel[i] = 0;
fhnMassResponse[i] = 0;
fh2PtTrueSubFacV1[i] = 0;
fh2PtRawSubFacV1[i] = 0;
fh2PtTrueDeltaM[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,100,-50.,50.);
fOutput->Add(fh2PtTrueDeltaM[i]);
+ histName = Form("fh2PtTrueDeltaMRel_%d",i);
+ histTitle = Form("fh2PtTrueDeltaMRel_%d;#it{p}_{T,true};(#it{M}_{sub}-#it{M}_{true})/#it{M}_{true}",i);
+ fh2PtTrueDeltaMRel[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,200,-1.,1.);
+ fOutput->Add(fh2PtTrueDeltaMRel[i]);
+
histName = Form("fhnMassResponse_%d",i);
histTitle = Form("fhnMassResponse_%d;#it{M}_{sub};#it{M}_{true};#it{p}_{T,sub};#it{p}_{T,true}",i);
fhnMassResponse[i] = new THnSparseF(histName.Data(),histTitle.Data(),nBinsSparse0,nBins0,xmin0,xmax0);
fh2MSubPtTrue[fCentBin]->Fill(jet1->GetSecondOrderSubtracted(),jet2->Pt());
fh2MTruePtTrue[fCentBin]->Fill(jet2->M(),jet2->Pt());
fh2PtTrueDeltaM[fCentBin]->Fill(jet2->Pt(),jet1->GetSecondOrderSubtracted()-jet2->M());
+ if(jet2->M()>0.) fh2PtTrueDeltaMRel[fCentBin]->Fill(jet2->Pt(),(jet1->GetSecondOrderSubtracted()-jet2->M())/jet2->M());
Double_t var[4] = {jet1->GetSecondOrderSubtracted(),jet2->M(),jet1->Pt()-jetCont->GetRhoVal()*jet1->Area(),jet2->Pt()};
fhnMassResponse[fCentBin]->Fill(var);
}
TH2F **fh2MSubPtTrue; //! subtracted jet mass vs true jet pT for matched jets
TH2F **fh2MTruePtTrue; //! true jet mass vs true jet pT for matched jets
TH2F **fh2PtTrueDeltaM; //! true jet pT vs (Msub - Mtrue)
+ TH2F **fh2PtTrueDeltaMRel; //! true jet pT vs (Msub - Mtrue)/Mtrue
THnSparse **fhnMassResponse; //! Msub vs Mtrue vs PtCorr vs PtTrue
TH2F **fh2PtTrueSubFacV1; //! true pT vs -(rho+rhom)*V1