{ gRandom->SetSeed(0); Double_t x,res,smr; Double_t sig = 0.006; // "hardware" resolution for (Int_t i=0;i<10;i++) x = gRandom->Rndm(i); // The limits and offset need to be changed to // adjust desired triangle... Double_t Factor = 180.0/2.0 * ((0.0806-.035)/0.2) *250.0 / 100000.0; // value endpt endpt full nbins number rolled here TF1 *fbg = new TF1("fbg","-(1.0/0.0456)*(x+0.035)",-0.0806,-0.035); TF1 *fres = new TF1("fres","1.0*exp(-x*x/2.0)",-8,8); TH1F *hg = new TH1F("h1","h1",100,-15,15); TH1F *hbg = new TH1F("hbg","hbg",100,-0.085,0.); TH1F *hsmr = new TH1F("hsmr","hsmr",100,-0.085,0.); TH1F *hsmrDet = new TH1F("hsmrDet","hsmrDet",100,-0.0364,-0.02); TH1F *hsmrDet2 = new TH1F("hsmrDet","hsmrDet",100,-0.0464,-0.02); TH1F *hsmrDet3 = new TH1F("hsmrDet","hsmrDet",100,-0.0564,-0.02); for (Int_t i=0; i<100000; i++) { x =fbg->GetRandom(); res =fres->GetRandom(); smr = x+ sig*res; hbg->Fill(x); hg->Fill(res); hsmr->Fill(smr); hsmrDet->Fill(smr); hsmrDet2->Fill(smr); hsmrDet3->Fill(smr); } gStyle->SetStatH(.3); gStyle->SetStatW(.3); TCanvas *c1 = new TCanvas("c1","c1",1200,800); c1->Divide(3,2); c1->cd(1); hbg->Draw(); c1->cd(2); hg->Draw(); c1->cd(3); hsmr->Draw(); gStyle->SetOptStat(1111111); c1->cd(4); hsmrDet->Draw(); c1->cd(5); hsmrDet2->Draw(); c1->cd(6); hsmrDet3->Draw(); cout << "Factor " << Factor << endl; c1->Print("Bryan_R_Estimate.ps"); }