本文整理汇总了C++中RooRealVar::getPropagatedError方法的典型用法代码示例。如果您正苦于以下问题:C++ RooRealVar::getPropagatedError方法的具体用法?C++ RooRealVar::getPropagatedError怎么用?C++ RooRealVar::getPropagatedError使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类RooRealVar
的用法示例。
在下文中一共展示了RooRealVar::getPropagatedError方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FitMassPhotonResolutionSystematics
//-------------------------------------------------------------
//Main macro for generating data and fitting
//=============================================================
void FitMassPhotonResolutionSystematics(const string workspaceFile = "/afs/cern.ch/work/d/daan/public/releases/CMSSW_5_3_9_patch3/src/CMSAna/HHToBBGG/data/FitWorkspace_asdf.root", const string outputTree = "/afs/cern.ch/work/d/daan/public/releases/CMSSW_5_3_9_patch3/src/CMSAna/HHToBBGG/data/MassFitResults/MassFitTwoD_asdf.root", Int_t plotOption = 0, Int_t storeOption = 1, Int_t SystematicsUpOrDown = 1, Int_t NToys = 5000) {
TRandom3 *randomnumber = new TRandom3(1200);
TFile *wsFile = new TFile (workspaceFile.c_str(), "READ");
RooWorkspace *ws = (RooWorkspace*)wsFile->Get("MassFitWorkspace");
//Import variables from workspace
RooAbsPdf *model2Dpdf = ws->pdf("model2Dpdf");
RooRealVar *massBjet = ws->var("massBjet");
RooRealVar *massPho = ws->var("massPho");
RooRealVar *nsig = ws->var("N (Sig)"); RooRealVar constNsig(*nsig);
RooRealVar *nres = ws->var("N (ResBkg)"); RooRealVar constNres(*nres);
RooRealVar *nnonres = ws->var("N (NonResBkg)"); RooRealVar constNnonres(*nnonres);
RooRealVar *expRateBjet = ws->var("expRateBjet"); RooRealVar constexpBjet(*expRateBjet);
RooRealVar *expRatePho = ws->var("expRatePho"); RooRealVar constexpPho(*expRatePho);
//Variables to set constant
RooRealVar *sigMeanBjet = ws->var("sigMeanBjet"); sigMeanBjet->setConstant();
RooRealVar *sigSigmaBjet = ws->var("sigSigmaBjet"); sigSigmaBjet->setConstant();
RooRealVar *sigAlpha = ws->var("sigAlpha"); sigAlpha->setConstant();
RooRealVar *sigPower = ws->var("sigPower"); sigPower->setConstant();
RooRealVar *sigmaPho = ws->var("sigmaPho"); sigmaPho->setConstant();
RooRealVar *resMeanBjet = ws->var("resMeanBjet"); resMeanBjet->setConstant();
RooRealVar *resSigmaBjet = ws->var("resSigmaBjet"); resSigmaBjet->setConstant();
RooRealVar *resAlpha = ws->var("resAlpha"); resAlpha->setConstant();
RooRealVar *resPower = ws->var("resPower"); resPower->setConstant();
RooRealVar *resExpo = ws->var("resExpo"); resExpo->setConstant();
RooRealVar *nbbH = ws->var("nbbH"); nbbH->setConstant();
RooRealVar *nOthers = ws->var("nOthers"); nOthers->setConstant();
double inputSigmaPho = sigmaPho->getVal();
//Create TTree to store the resulting yield data
TFile *f = new TFile(outputTree.c_str(), "RECREATE");
TTree *resultTree = new TTree("resultTree", "Parameter results from fitting");
Float_t nsigOut, nresOut, nnonresOut;
Float_t nsigStd, nresStd, nnonresStd;
resultTree->Branch("nsigOut",&nsigOut, "nsigOut/F");
resultTree->Branch("nresOut",&nresOut, "nresOut/F");
resultTree->Branch("nnonresOut",&nnonresOut, "nnonresOut/F");
resultTree->Branch("nsigStd",&nsigStd, "nsigStd/F");
resultTree->Branch("nresStd",&nresStd, "nresStd/F");
resultTree->Branch("nnonresStd",&nnonresStd, "nnonresStd/F");
//Generate Toy MC experiment data and fits
for(UInt_t t=0; t < NToys; ++t) {
cout << "Toy #" << t << endl;
nsig->setVal(constNsig.getVal()); nres->setVal(constNres.getVal()); nnonres->setVal(constNnonres.getVal());
expRateBjet->setVal(constexpBjet.getVal()); expRatePho->setVal(constexpPho.getVal());
//set jet energy resolutions to nominal
sigmaPho->setVal(inputSigmaPho);
cout << "Before: " << sigmaPho->getVal() << " | ";
Float_t ran = randomnumber->Poisson(325.);
RooDataSet *pseudoData2D = model2Dpdf->generate(RooArgList(*massBjet,*massPho), ran);
//move jet energy resolution up/down
if (SystematicsUpOrDown == 1) {
sigmaPho->setVal(inputSigmaPho*1.15);
} else if (SystematicsUpOrDown == -1) {
sigmaPho->setVal(inputSigmaPho/1.15);
}
cout << "After: " << sigmaPho->getVal() << " \n";
RooFitResult *fitResult2D = model2Dpdf->fitTo(*pseudoData2D, RooFit::Save(), RooFit::Extended(kTRUE), RooFit::Strategy(2));
// if (t == 1763) {
// ws->import(*pseudoData2D, kTRUE);
// ws->import(*pseudoData2D, Rename("pseudoData2D"));
// }
// if (plotOption == 1) MakePlots(ws, fitResult2D);
cout << "DEBUG: " << constexpBjet.getVal() << " , " << constexpPho.getVal() << " | " << expRateBjet->getVal() << " " << expRatePho->getVal() << "\n";
//Store fit parameters into ROOT file
if (storeOption == 1) {
//Save variables into separate branches of root tree
nsigOut = nsig->getVal();
nresOut = nres->getVal();
nnonresOut = nnonres->getVal();
nsigStd = nsig->getPropagatedError(*fitResult2D);
nresStd = nres->getPropagatedError(*fitResult2D);
nnonresStd = nnonres->getPropagatedError(*fitResult2D);
//cout << "\n\n\n\n\n\n" << nsigOut << " | " << nresOut << " | " << nnonresOut << " | " << ran << "\n\n\n\n\n" << endl;
resultTree->Fill();
}
}
//Write to the TTree and close it
resultTree->Write();
f->Close();
//.........这里部分代码省略.........
示例2: FitScenariosTwoD_RequiredPerformance_card
//.........这里部分代码省略.........
resultTree->Branch("nresStd",&nresStd, "nresStd/F");
resultTree->Branch("nnonresStd",&nnonresStd, "nnonresStd/F");
//-------------------------------------------------------------
//Yield Information
//=============================================================
double myPhoEffRatio = 1.00;
double myBtagEffRatio = 1.00;
double myEndcapPhotonFakerateRatio = 1.0;
if (scanOption == "phoEff") {
myPhoEffRatio = phoEffRatio[s];
myBtagEffRatio = 1.25;
}
if (scanOption == "btagEff") {
myBtagEffRatio = btagEffRatio[s];
myPhoEffRatio = 1.25;
}
if (scanOption == "endcapPhotonFakerate") myEndcapPhotonFakerateRatio = endcapPhotonFakerate[s];
double totalYield =
6.11*myPhoEffRatio*myPhoEffRatio*myBtagEffRatio*myBtagEffRatio +
7.88*myPhoEffRatio*myPhoEffRatio*myBtagEffRatio*myBtagEffRatio +
31.1*myPhoEffRatio*myPhoEffRatio*myBtagEffRatio*myBtagEffRatio
+ 26.4*myPhoEffRatio*myPhoEffRatio*myBtagEffRatio*myBtagEffRatio
+ 48.7*myBtagEffRatio*myBtagEffRatio*myPhoEffRatio
+ 1.8*myBtagEffRatio*myBtagEffRatio
+
2.41*myPhoEffRatio*myPhoEffRatio*myBtagEffRatio*myBtagEffRatio +
17.4*myPhoEffRatio*myPhoEffRatio*myBtagEffRatio*myBtagEffRatio
+ 17.2*myPhoEffRatio*myPhoEffRatio*myBtagEffRatio*myBtagEffRatio
+ 206.0*myBtagEffRatio*myBtagEffRatio*myPhoEffRatio*myEndcapPhotonFakerateRatio
+ 1.7*myBtagEffRatio*myBtagEffRatio
;
double cat0Yield = 6.11*myPhoEffRatio*myPhoEffRatio*myBtagEffRatio*myBtagEffRatio +
7.88*myPhoEffRatio*myPhoEffRatio*myBtagEffRatio*myBtagEffRatio +
31.1*myPhoEffRatio*myPhoEffRatio*myBtagEffRatio*myBtagEffRatio
+ 26.4*myPhoEffRatio*myPhoEffRatio*myBtagEffRatio*myBtagEffRatio
+ 48.7*myBtagEffRatio*myBtagEffRatio*myPhoEffRatio
+ 1.8*myBtagEffRatio*myBtagEffRatio;
double cat1Yield = 2.41*myPhoEffRatio*myPhoEffRatio*myBtagEffRatio*myBtagEffRatio +
17.4*myPhoEffRatio*myPhoEffRatio*myBtagEffRatio*myBtagEffRatio
+ 17.2*myPhoEffRatio*myPhoEffRatio*myBtagEffRatio*myBtagEffRatio
+ 206.0*myBtagEffRatio*myBtagEffRatio*myPhoEffRatio*myEndcapPhotonFakerateRatio
+ 1.7*myBtagEffRatio*myBtagEffRatio;
double cat0Fraction = cat0Yield / totalYield;
double cat1Fraction = cat1Yield / totalYield;
//-------------------------------------------------------------
//Generate Toy MC experiment data and fit
//=============================================================
for(UInt_t t=0; t < NToys; ++t) {
cout << t << "|" << s << endl;
nsig->setVal(constNsig.getVal());
nres_cat0->setVal(constNres_cat0.getVal());
nnonres_cat0->setVal(constNnonres_cat0.getVal());
nres_cat1->setVal(constNres_cat1.getVal());
nnonres_cat1->setVal(constNnonres_cat1.getVal());
Float_t ran;
//if (scanOption == "lum") ran = randomNumber->Poisson(totalYield*luminosity[s]);
//else ran = randomNumber->Poisson(totalYield);
if (scanOption == "lum") ran = totalYield*luminosity[s];
else ran = totalYield;
RooDataSet *pseudoData2D = model2Dpdf->generate(RooArgList(*massBjet,*massPho, *sampleCategory), ran);
RooFitResult *fitResult2D = model2Dpdf->fitTo(*pseudoData2D, RooFit::Save(), RooFit::Extended(kTRUE), RooFit::Strategy(2));
ws->import(*pseudoData2D, kTRUE);
ws->import(*pseudoData2D, Rename("pseudoData2D"));
RooDataSet *pseudoData2D_cat0 = model2Dpdf_cat0->generate(RooArgList(*massBjet,*massPho), ran*cat0Fraction);
RooDataSet *pseudoData2D_cat1 = model2Dpdf_cat1->generate(RooArgList(*massBjet,*massPho), ran*cat1Fraction);
ws->import(*pseudoData2D_cat0, kTRUE);
ws->import(*pseudoData2D_cat0, Rename("pseudoData2D_cat0"));
ws->import(*pseudoData2D_cat1, kTRUE);
ws->import(*pseudoData2D_cat1, Rename("pseudoData2D_cat1"));
//Save variables into separate branches of root tree
nsigOut = nsig->getVal();
nresOut = nres_cat0->getVal();
nnonresOut = nnonres_cat0->getVal();
nsigStd = nsig->getPropagatedError(*fitResult2D);
nresStd = nres_cat0->getPropagatedError(*fitResult2D);
nnonresStd = nnonres_cat0->getPropagatedError(*fitResult2D);
resultTree->Fill();
}
//Write to the TTree and close it
resultTree->Write();
file->WriteTObject(ws, Form("HHToBBGGWorkspace",scanOption.c_str(),s), "WriteDelete");
file->Close();
delete file;
}
示例3: MakePlots
//.........这里部分代码省略.........
&& nres->getVal() >= 27.9 && nres->getVal() <= 28.0
&& nnonres->getVal() <= 287.))
return;
if (alreadyPlotted) return;
alreadyPlotted = 1;
//Import the PDF's
RooAbsPdf *model2Dpdf = ws->pdf("model2Dpdf");
RooAbsPdf *sigPDFPho = ws->pdf("sigPDFPho");
RooAbsPdf *resPDFPho = ws->pdf("resPDFPho");
RooAbsPdf *nonresPDFPho = ws->pdf("nonresPDFPho");
RooAbsPdf *sigPDFBjet = ws->pdf("sigPDFBjet");
RooAbsPdf *sigPDFBjetCut = ws->pdf("sigPDFBjetCut");
RooAbsPdf *resPDFBjet = ws->pdf("resPDFBjet");
RooAbsPdf *resPDFBjetExt = ws->pdf("resPDFBjetExt");
RooAbsPdf *nonresPDFBjet = ws->pdf("nonresPDFBjet");
//x-axis variables
RooRealVar *massPho = ws->var("massPho");
RooRealVar *massBjet = ws->var("massBjet");
RooRealVar *massBjetExt = ws->var("massBjetExt");
RooRealVar *massBjetCut = ws->var("massBjetCut");
//sig variables
RooRealVar *sigMeanBjet = ws->var("sigMeanBjet");
RooRealVar *sigSigmaBjet = ws->var("sigSigmaBjet");
RooRealVar *sigAlpha = ws->var("sigAlpha");
RooRealVar *sigPower = ws->var("sigPower");
//res bkg variables
RooRealVar *resMeanBjet = ws->var("resMeanBjet");
RooRealVar *resSigmaBjet = ws->var("resSigmaBjet");
RooRealVar *resAlpha = ws->var("resAlpha");
RooRealVar *resPower = ws->var("resPower");
RooRealVar *resExpo = ws->var("resExpo");
RooRealVar *nbbH = ws->var("nbbH");
RooRealVar *nOthers = ws->var("nOthers");
//simulated data
RooDataHist *sigBjetData = (RooDataHist *)ws->data("sigBjetData");
RooDataHist *resBjetDataExt = (RooDataHist *)ws->data("resBjetDataExt");
RooDataSet *pseudoData2D = (RooDataSet *)ws->data("pseudoData2D");
//Plot of 2D generated data and fits
TH1 *data2d = pseudoData2D->createHistogram("2D Data", *massBjet,Binning(25), YVar(*massPho,Binning(25)));
data2d->SetStats(0);
TH1 *fit2d = model2Dpdf->createHistogram("2D Fit", *massBjet, YVar(*massPho));
fit2d->SetStats(0);
cv = new TCanvas("cv","cv",1600,600);
cv->Divide(2);
cv->cd(1); gPad->SetLeftMargin(0.15); data2d->Draw("LEGO2");
data2d->SetTitle("");
data2d->GetXaxis()->SetTitleOffset(2); data2d->GetXaxis()->SetTitle("M_{bb} [GeV/c^{2}]");
data2d->GetYaxis()->SetTitleOffset(2.2); data2d->GetYaxis()->SetTitle("M_{#gamma#gamma} [GeV/c^{2}]");
data2d->GetZaxis()->SetTitleOffset(1.75);
cv->cd(2); gPad->SetLeftMargin(0.15); fit2d->Draw("SURF1");
fit2d->SetTitle("");
fit2d->GetXaxis()->SetTitleOffset(2); data2d->GetXaxis()->SetTitle("M_{bb} [GeV/c^{2}]");
fit2d->GetYaxis()->SetTitleOffset(2.2); data2d->GetYaxis()->SetTitle("M_{#gamma#gamma} [GeV/c^{2}]");
fit2d->GetZaxis()->SetTitleOffset(1.75);
cv->SaveAs(Form("Plots/AllSignalBkgd/Fits/Toys/twoDimensionalFits_%d.gif",1));
//Plot of massBjet and massPho projections from 2D fit
massPho->setRange("PhoWindow",120,130);
framex = massBjet->frame(Bins(50));
framex->SetTitle(""); framex->SetXTitle("M_{bb} [GeV/c^{2}]"); framex->SetYTitle("Number of Events");
pseudoData2D->plotOn(framex, CutRange("PhoWindow"));
model2Dpdf->plotOn(framex, ProjectionRange("PhoWindow"), VisualizeError(*fitResult2D), FillStyle(3001));
model2Dpdf->plotOn(framex, ProjectionRange("PhoWindow"));
model2Dpdf->plotOn(framex, ProjectionRange("PhoWindow"), Components("sigPDFBjet"), LineStyle(kDashed), LineColor(kRed));
model2Dpdf->plotOn(framex, ProjectionRange("PhoWindow"), Components("resPDFBjet"), LineStyle(kDashed), LineColor(kOrange));
model2Dpdf->plotOn(framex, ProjectionRange("PhoWindow"), Components("nonresPDFBjet"), LineStyle(kDashed), LineColor(kGreen));
framey = massPho->frame(Bins(50));
framey->SetTitle(""); framey->SetXTitle("M_{#gamma#gamma} [GeV/c^{2}]"); framey->SetYTitle("Number of Events");
pseudoData2D->plotOn(framey);
model2Dpdf->plotOn(framey, VisualizeError(*fitResult2D), FillStyle(3001));
model2Dpdf->plotOn(framey);
model2Dpdf->plotOn(framey,Components("sigPDFPho"), LineStyle(kDashed), LineColor(kRed));
model2Dpdf->plotOn(framey,Components("resPDFPho"), LineStyle(kDashed), LineColor(kOrange));
model2Dpdf->plotOn(framey,Components("nonresPDFPho"), LineStyle(kDashed), LineColor(kGreen));
cv = new TCanvas("cv","cv",1600,600);
cv->Divide(2);
cv->cd(1); framex->Draw();
tex = new TLatex();
tex->SetNDC();
tex->SetTextSize(0.042);
tex->SetTextFont(42);
tex->DrawLatex(0.52, 0.84, Form("N_{Sig} = %.2f +/- %.2f", nsig->getVal(), nsig->getPropagatedError(*fitResult2D)));
tex->DrawLatex(0.52, 0.79, Form("N_{ResBkg} = %.2f +/- %.2f", nres->getVal(), nres->getPropagatedError(*fitResult2D)));
tex->DrawLatex(0.52, 0.74, Form("N_{NonResBkg} = %.2f +/- %.2f", nnonres->getVal(), nnonres->getPropagatedError(*fitResult2D)));
tex->Draw();
cv->Update();
cv->cd(2); framey->Draw();
tex->DrawLatex(0.52, 0.84, Form("N_{Sig} = %.2f +/- %.2f", nsig->getVal(), nsig->getPropagatedError(*fitResult2D)));
tex->DrawLatex(0.52, 0.79, Form("N_{ResBkg} = %.2f +/- %.2f", nres->getVal(), nres->getPropagatedError(*fitResult2D)));
tex->DrawLatex(0.52, 0.74, Form("N_{NonResBkg} = %.2f +/- %.2f", nnonres->getVal(), nnonres->getPropagatedError(*fitResult2D)));
tex->Draw();
cv->Update();
cv->SaveAs(Form("Plots/AllSignalBkgd/Fits/Toys/projectionFits_%d.gif",1));
}
示例4: performFit
//.........这里部分代码省略.........
// // ********* Fix Mass Shift and Fit For Resolution ********** //
// ParPassSignalMassShift->setConstant(kTRUE);
// ParFailSignalMassShift->setConstant(kTRUE);
// ParPassSignalResolution->setConstant(kFALSE);
// ParFailSignalResolution->setConstant(kFALSE);
// fitResult = totalPdf.fitTo(*dataCombined, RooFit::Save(true),
// RooFit::Extended(true), RooFit::PrintLevel(-1));
// fitResult->Print("v");
// // ********* Do Final Fit ********** //
// ParPassSignalMassShift->setConstant(kFALSE);
// ParFailSignalMassShift->setConstant(kFALSE);
// ParPassSignalResolution->setConstant(kTRUE);
// ParFailSignalResolution->setConstant(kTRUE);
// fitResult = totalPdf.fitTo(*dataCombined, RooFit::Save(true),
// RooFit::Extended(true), RooFit::PrintLevel(-1));
// fitResult->Print("v");
double nSignalPass = NumSignalPass->getVal();
double nSignalFail = NumSignalFail->getVal();
double denominator = nSignalPass + nSignalFail;
printf("\nFit results:\n");
if( fitResult->status() != 0 ){
std::cout<<"ERROR: BAD FIT STATUS"<<std::endl;
}
printf(" Efficiency = %.4f +- %.4f\n",
ParEfficiency->getVal(), ParEfficiency->getPropagatedError(*fitResult));
cout << "Signal Pass: " << nSignalPass << endl;
cout << "Signal Fail: " << nSignalFail << endl;
cout << "*********************************************************************\n";
cout << "Final Parameters\n";
cout << "*********************************************************************\n";
PrintParameter(ParNumSignal, label,"ParNumSignal");
PrintParameter(ParNumBkgPass, label,"ParNumBkgPass");
PrintParameter(ParNumBkgFail, label, "ParNumBkgFail");
PrintParameter(ParEfficiency , label, "ParEfficiency");
PrintParameter(ParPassBackgroundExpCoefficient , label, "ParPassBackgroundExpCoefficient");
PrintParameter(ParFailBackgroundExpCoefficient , label, "ParFailBackgroundExpCoefficient");
PrintParameter(ParPassSignalMassShift , label, "ParPassSignalMassShift");
PrintParameter(ParFailSignalMassShift , label, "ParFailSignalMassShift");
PrintParameter(ParPassSignalResolution , label, "ParPassSignalResolution");
PrintParameter(ParFailSignalResolution , label, "ParFailSignalResolution");
cout << endl << endl;
//--------------------------------------------------------------------------------------------------------------
// Make plots
//==============================================================================================================
TFile *canvasFile = new TFile("Efficiency_FitResults.root", "UPDATE");
RooAbsData::ErrorType errorType = RooAbsData::Poisson;
Mass.setBins(NBINSPASS);
TString cname = TString((label+"_Pass").c_str());
TCanvas *c = new TCanvas(cname,cname,800,600);
RooPlot* frame1 = Mass.frame();
frame1->SetMinimum(0);