本文整理汇总了C++中TH1F::GetMinimum方法的典型用法代码示例。如果您正苦于以下问题:C++ TH1F::GetMinimum方法的具体用法?C++ TH1F::GetMinimum怎么用?C++ TH1F::GetMinimum使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TH1F
的用法示例。
在下文中一共展示了TH1F::GetMinimum方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fitD
//void fitD(TString collsyst="PbPb",TString nominalcut="", TString varname_="", Int_t varbins=10, Float_t varmin=0.5, Float_t varmax=2,TString vartex_="", Int_t isLarger_=1, TString npfile="ROOTfiles/NPFitPP.root", TString outputfile="outfMasshisto/mass")
void fitD(TString collsyst="PbPb",TString nominalcut="", TString varname_="", Int_t varbins=10, Float_t varmin=0.5, Float_t varmax=2,TString vartex_="", Int_t isLarger_=1, TString npfit="0", TString outputfile="outfMasshisto/mass")
{
_nominalcut = nominalcut;
gStyle->SetTextSize(0.05);
gStyle->SetTextFont(42);
gStyle->SetPadRightMargin(0.043);
gStyle->SetPadLeftMargin(0.18);
gStyle->SetPadTopMargin(0.1);
gStyle->SetPadBottomMargin(0.145);
gStyle->SetTitleX(.0f);
gStyle->SetOptStat(0);
gStyle->SetMarkerStyle(20);
gStyle->SetMarkerSize(0.8);
collisionsystem = collsyst;
infname = outputfile;
varname=varname_;
vartex=vartex_;
isLarger=isLarger_;
//TF1* fit(Float_t varval, Float_t ibin, Int_t isMC, float NPpar[]);
TF1* fit(Float_t varval, Float_t ibin, Int_t isMC, TString npfit);
//void getNPFnPar(TString npfname, float par[]);
//float NPpar[2];
//getNPFnPar(npfile, NPpar);
//std::cout<<"NP parameter 0: "<<NPpar[0]<<std::endl;
//std::cout<<"NP parameter 1: "<<NPpar[1]<<std::endl;
Float_t varstep;
if(varbins==1) varstep = 0.5;
else varstep = (varmax-varmin)/(varbins-1);
TH1F* hMCCut = new TH1F("hMCCut","",varbins,varmin,varmax+varstep);
TH1F* hMCNoCut = new TH1F("hMCNoCut","",varbins,varmin,varmax+varstep);
TH1F* hDaCut = new TH1F("hDaCut","",varbins,varmin,varmax+varstep);
TH1F* hDaNoCut = new TH1F("hDaNoCut","",varbins,varmin,varmax+varstep);
for(float i=0;i<varbins+1;i++)
{
Float_t yield,yieldErr;
Float_t ivar = varmin+(i-1)*varstep;
//TF1* fMC = fit(ivar,i,1, NPpar);
TF1* fMC = fit(ivar,i,1, npfit);
yield = fMC->Integral(minhisto,maxhisto)/binwidthmass;
yieldErr = fMC->Integral(minhisto,maxhisto)/binwidthmass*fMC->GetParError(0)/fMC->GetParameter(0);
if(i==0)
{
for(int j=0;j<varbins;j++)
{
hMCNoCut->SetBinContent(j+1,yield);
hMCNoCut->SetBinError(j+1,yieldErr);
}
}
else
{
hMCCut->SetBinContent(i,yield);
hMCCut->SetBinError(i,yieldErr);
}
//TF1* fDa = fit(ivar,i,0, NPpar);
TF1* fDa = fit(ivar,i,0, npfit);
yield = fDa->Integral(minhisto,maxhisto)/binwidthmass;
yieldErr = fDa->Integral(minhisto,maxhisto)/binwidthmass*fDa->GetParError(0)/fDa->GetParameter(0);
if(i==0)
{
for(int j=0;j<varbins;j++)
{
hDaNoCut->SetBinContent(j+1,yield);
hDaNoCut->SetBinError(j+1,yieldErr);
}
}
else
{
hDaCut->SetBinContent(i,yield);
hDaCut->SetBinError(i,yieldErr);
}
}
TCanvas* cMCRatio = new TCanvas("cMCRatio","",600,600);
TH1F* hMCRatio = (TH1F*)hMCCut->Clone("hMCRatio");
hMCRatio->SetTitle(Form(";%s;hMCRatio",vartex.Data()));
hMCRatio->Divide(hMCNoCut);
hMCRatio->Draw();
TCanvas* cDaRatio = new TCanvas("cDaRatio","",600,600);
TH1F* hDaRatio = (TH1F*)hDaCut->Clone("hDaRatio");
hDaRatio->SetTitle(Form(";%s;hDaRatio",vartex.Data()));
hDaRatio->Divide(hDaNoCut);
hDaRatio->Draw();
TCanvas* chDoubleRatio = new TCanvas("chDoubleRatio","",600,600);
TH1F* hDoubleRatio = (TH1F*)hDaRatio->Clone("hDoubleRatio");
hDoubleRatio->SetTitle(Form(";%s;hDoubleRatio",vartex.Data()));
hDoubleRatio->Divide(hMCRatio);
hDoubleRatio->Draw();
Float_t aDoubleRatio[varbins],aDoubleRatioErr[varbins],aX[varbins],aZero[varbins];
Float_t AbsMax = max(fabs(hDoubleRatio->GetMaximum()-1), fabs(hDoubleRatio->GetMinimum()-1));
for(int i=0;i<varbins;i++)
{
aDoubleRatio[i] = hDoubleRatio->GetBinContent(i+1);
aDoubleRatioErr[i] = hDoubleRatio->GetBinError(i+1);
//.........这里部分代码省略.........
示例2: doCoinc3
//.........这里部分代码省略.........
hDeltaPhiBack12->Fill((Phi1-Phi2)*TMath::RadToDeg());
hThetaRelBack12->Fill(thetarel12);
}
if(TMath::Abs(DeltaT13-corr13) < 500){
hDeltaTheta13->Fill((Theta1-Theta3)*TMath::RadToDeg());
hDeltaPhi13->Fill((Phi1-Phi3)*TMath::RadToDeg());
hThetaRel13->Fill(thetarel13);
}
else if(TMath::Abs(DeltaT13-corr13) > 1000 && TMath::Abs(DeltaT13-corr13) < 6000){
hDeltaThetaBack13->Fill((Theta1-Theta3)*TMath::RadToDeg());
hDeltaPhiBack13->Fill((Phi1-Phi3)*TMath::RadToDeg());
hThetaRelBack13->Fill(thetarel13);
}
}
h->SetStats(0);
hDeltaThetaBack12->Sumw2();
hDeltaPhiBack12->Sumw2();
hThetaRelBack12->Sumw2();
hDeltaThetaBack12->Scale(0.1);
hDeltaPhiBack12->Scale(0.1);
hThetaRelBack12->Scale(0.1);
hDeltaThetaBack13->Sumw2();
hDeltaPhiBack13->Sumw2();
hThetaRelBack13->Sumw2();
hDeltaThetaBack13->Scale(0.1);
hDeltaPhiBack13->Scale(0.1);
hThetaRelBack13->Scale(0.1);
Float_t val,eval;
TCanvas *c1=new TCanvas();
TF1 *ff = new TF1("ff","[0]*[4]/[2]/sqrt(2*TMath::Pi())*TMath::Exp(-(x-[1])*(x-[1])*0.5/[2]/[2]) + [3]*[4]/6/[2]");
ff->SetParName(0,"signal");
ff->SetParName(1,"mean");
ff->SetParName(2,"sigma");
ff->SetParName(3,"background");
ff->SetParName(4,"bin width");
ff->SetParameter(0,42369);
ff->SetParameter(1,0);
ff->SetParLimits(2,10,1000);
ff->SetParameter(2,150); // fix witdh if needed
ff->SetParameter(3,319);
ff->FixParameter(4,20000./nbint); // bin width
ff->SetNpx(1000);
h->Fit(ff);
val = ff->GetParameter(2);
eval = ff->GetParError(2);
printf("significance = %f\n",ff->GetParameter(0)/sqrt(ff->GetParameter(0) + ff->GetParameter(3)));
h->Draw();
TF1 *func1 = (TF1 *) h->GetListOfFunctions()->At(0);
func1->SetLineColor(2);
h->SetLineColor(4);
TPaveText *text = new TPaveText(1500,(h->GetMinimum()+(h->GetMaximum()-h->GetMinimum())*0.6),9500,h->GetMaximum());
text->SetFillColor(0);
sprintf(title,"width = %5.1f #pm %5.1f",func1->GetParameter(2),func1->GetParError(2));
text->AddText(title);
sprintf(title,"signal (S) = %5.1f #pm %5.1f",func1->GetParameter(0),func1->GetParError(0));
text->AddText(title);
sprintf(title,"background (B) (3#sigma) = %5.1f #pm %5.1f",func1->GetParameter(3),func1->GetParError(3));
text->AddText(title);
sprintf(title,"significance (S/#sqrt{S+B}) = %5.1f",func1->GetParameter(0)/sqrt(func1->GetParameter(0)+func1->GetParameter(3)));
text->AddText(title);
text->SetFillStyle(0);
text->SetBorderSize(0);
text->Draw("SAME");
printf("n_day = %f\nn_dayGR = %f\n",nsec*1./86400,nsecGR*1./86400);
text->AddText(Form("rate = %f #pm %f per day",func1->GetParameter(0)*86400/nsecGR,func1->GetParError(0)*86400/nsecGR));
TFile *fo = new TFile("output-SAVO-010203.root","RECREATE");
h->Write();
h2->Write();
hDeltaTheta12->Write();
hDeltaPhi12->Write();
hThetaRel12->Write();
hDeltaThetaBack12->Write();
hDeltaPhiBack12->Write();
hThetaRelBack12->Write();
hDeltaTheta13->Write();
hDeltaPhi13->Write();
hThetaRel13->Write();
hDeltaThetaBack13->Write();
hDeltaPhiBack13->Write();
hThetaRelBack13->Write();
fo->Close();
}
示例3: toyMC
void toyMC(int nsteps = 1e6) {
Float_t LA = 9.2;
Float_t LB = 10.3;
Float_t SF = 492./LB;
Float_t eSF = TMath::Sqrt(23.*23.+19.7*19.7)/LB;
// Float_t OF = 358./LA;
// Float_t eOF = 27./LA;
Float_t OF = 358./LB;
Float_t eOF = 31./LB;
Float_t SigB = 188.+238-414;
TH1F* hSig = new TH1F("hSig ; SF-R_{SF/OF}#timesOF ; ","Signal component",600,-100.,500.);
hSig->SetLineColor(kRed+2);
TRandom3* ran = new TRandom3();
for ( int i=0; i<nsteps; ++i ) {
Float_t nBSF = ran->Gaus(SF*LB,eSF*LB);
Float_t nBOF = ran->Gaus(OF*LB,eOF*LB);
Float_t rsfof = ran->Gaus(1.0,0.05);
hSig->Fill(nBSF-nBOF*rsfof);
}
TCanvas* mycan = new TCanvas("mycan","",100,10,900,600);
mycan->SetLogy();
TH1F* hSigNorm = hSig->DrawNormalized("");
hSigNorm->SetMinimum(1e-5);
hSigNorm->Draw();
// Find 95% CL range
float integral = 0;
int binStart = -1;
while ( integral <= 0.025 ) {
++binStart;
integral += hSigNorm->GetBinContent(binStart);
}
std::cout << integral << " up to " << hSigNorm->GetBinCenter(binStart) << std::endl;
integral = 0;
int binEnd = hSigNorm->GetNbinsX()+2;
while ( integral <= 0.025 ) {
--binEnd;
integral += hSigNorm->GetBinContent(binEnd);
}
std::cout << integral << " up to " << hSigNorm->GetBinCenter(binEnd) << std::endl;
// Draw 95% CL
TBox* range95 = new TBox(hSigNorm->GetBinCenter(binStart),hSigNorm->GetMinimum(),hSigNorm->GetBinCenter(binEnd),1.2*hSigNorm->GetMaximum());
range95->SetFillColor(kBlue-9);
range95->SetFillStyle(1000);
range95->SetLineColor(range95->GetFillColor());
range95->Draw();
hSigNorm->SetTitle("hSigNorm; \"S\" #equiv SF - R_{SF/OF}#timesOF ; pdf");
hSigNorm->Draw("same");
std::cout << "Integrating from 0 to " << SigB << ": " << std::endl;
std::cout << hSigNorm->Integral(0,hSigNorm->FindBin(SigB)) <<std::endl;
TLegend* legend = new TLegend(0.6,0.7,0.95,0.9,"","brNDC");
legend->SetBorderSize(0);
legend->AddEntry(hSigNorm,"Expected \"S\" for block B","l");
legend->AddEntry(range95,"95% region","f");
legend->Draw();
mycan->RedrawAxis();
mycan->SaveAs("toyMCexp.pdf");
TArrow* a = new TArrow(SigB,hSigNorm->GetMaximum(),SigB,hSigNorm->GetMinimum()*1.1,0.02);
a->SetLineColor(kBlue+2);
a->Draw();
TLegend* legend2 = new TLegend(0.6,0.6,0.95,0.7,"","brNDC");
legend2->SetBorderSize(0);
legend2->AddEntry(a,"Observed (p-value 0.6%)","l");
legend2->Draw();
mycan->SaveAs("toyMC.pdf");
}
示例4: createPlot
//.........这里部分代码省略.........
histV2->Draw("sames");
mainpad->Update();
TPaveStats *st1 = (TPaveStats*)(histV1->GetListOfFunctions()->FindObject("stats"));
st1->SetX1NDC(0.77);
st1->SetY1NDC(0.80);
st1->SetX2NDC(0.98);
st1->SetY2NDC(0.97);
Double_t defaulth = st1->GetY2NDC() - st1->GetY1NDC();
Double_t gaph = 0.02;
TPaveStats *st2 = (TPaveStats*)(histV2->GetListOfFunctions()->FindObject("stats"));
st2->SetX1NDC(0.77);
st2->SetY1NDC(st1->GetY1NDC() - 1.0*defaulth - gaph);
st2->SetX2NDC(0.98);
st2->SetY2NDC(st1->GetY1NDC() - gaph);
TLegend *leg = new TLegend(0.32,0.86,0.76,0.97);
leg->SetTextSize(0.042);
leg->SetTextFont(42);
leg->SetFillColor(10);
leg->SetBorderSize(1); // no frame, no shadow
leg->AddEntry(histV1, V1_V1run, "L" );
leg->AddEntry(histV2, V2_V2run, "L" );
leg->Draw("SAME");
// Draw ratio histogram
if (DrawRatio){
canvas->cd();
TPad* respad = new TPad("respad","respad",0.0,0.78,1.0,0.95);
respad->SetTopMargin(1.05);
respad->Draw();
respad->cd();
TH1F* hratio = (TH1F*) histV2->Clone("hratio");
hratio->Divide(histV1);
hratio->SetMaximum(hratio->GetMaximum()*1.1);
hratio->SetMinimum(hratio->GetMinimum()/1.1);
//if (hratio->GetMinimum()==0.0) hratio->SetMinimum(1.0/hratio->GetMaximum());
// hratio->SetMinimum(1.0/hratio->GetMaximum());
hratio->GetYaxis()->SetLabelSize(0.1);
// hratio->GetYaxis()->SetRangeUser(0,2);
hratio->GetXaxis()->SetLabelSize(0);
hratio->GetXaxis()->SetTitleSize(0);
hratio->GetYaxis()->SetTitleSize(0.22);
hratio->GetYaxis()->SetTitleOffset(0.26);
hratio->GetYaxis()->SetLabelSize(0.2);
hratio->GetYaxis()->SetNdivisions(5);
hratio->GetYaxis()->SetTitle("NEW/REF");
hratio->Draw();
}
// Compare parameters of histograms
double Entries1 = histV1->GetEntries();
double Entries2 = histV2->GetEntries();
if (Entries1 != Entries2) {
std::cout<<" Difference in # of ENTRIES for " <<hname<< std::endl;
std::cout<<"\t Entries1 = " << Entries1 << "\t Entries2 = " << Entries2 << std::endl;
}
double Mean1 = histV1->GetMean();
double Mean2 = histV2->GetMean();
if (Mean1 != Mean2) {
std::cout<<" Difference in MEANS for " <<hname<< std::endl;
std::cout<<"\t Mean1 = " << Mean1 << "\t Mean2 = " << Mean2 << std::endl;
}
double RMS1 = histV1->GetRMS();
double RMS2 = histV2->GetRMS();
if (RMS1 != RMS2) {
std::cout<<" Difference in RMS for " <<hname<< std::endl;
std::cout<<"\t RMS1 = " << RMS1 << "\t RMS2 = " << RMS2 << std::endl;
}
TString filename = hname;
if (hname.Contains("vtxNbr")){
filename = "NumberOfPrimaryVertices";
}
if (dirname.Contains("GeneralProperties/GoodTracks",TString::kExact))
filename.Prepend("RunComparison/GoodTracks_");
else filename.Prepend("RunComparison/");
filename.Append(".png");
canvas->Print(filename);
if ( histV1 ) {histV1->Delete();}
if ( histV2 ) {histV2->Delete();}
if ( hNormTempV1 ) {hNormTempV1->Delete();}
if ( hNormTempV2 ) {hNormTempV2->Delete();}
// if ( hBinTempV1 ) {hBinTempV1->Delete();} // why cant this work?!
// if ( hBinTempV2 ) {hBinTempV2->Delete();}
return true;
}
示例5: doCoinc
//.........这里部分代码省略.........
hModulationAv->Fit(fmod);
printf("Estimates from time delay: Distance = %f +/- %f m -- Angle = %f +/- %f deg\n",fmod->GetParameter(1),fmod->GetParError(1),fmod->GetParameter(2),fmod->GetParError(2));
h->SetStats(0);
hDeltaThetaBack->Sumw2();
hDeltaPhiBack->Sumw2();
hThetaRelBack->Sumw2();
hDeltaThetaBack->Scale(0.1);
hDeltaPhiBack->Scale(0.1);
hThetaRelBack->Scale(0.1);
hAngleBack->Scale(0.1);
hAngle->Add(hAngleBack,-1);
printf("bin counting: SIGNAL = %f +/- %f\n",hDeltaPhi->Integral()-hDeltaPhiBack->Integral(),sqrt(hDeltaPhi->Integral()));
rate = (hDeltaPhi->Integral()-hDeltaPhiBack->Integral())/nsecGR*86400;
rateErr = sqrt(hDeltaPhi->Integral())/nsecGR*86400;
Float_t val,eval;
TCanvas *c1=new TCanvas();
TF1 *ff = new TF1("ff","[0]*[4]/[2]/sqrt(2*TMath::Pi())*TMath::Exp(-(x-[1])*(x-[1])*0.5/[2]/[2]) + [3]*[4]/6/[2]");
ff->SetParName(0,"signal");
ff->SetParName(1,"mean");
ff->SetParName(2,"sigma");
ff->SetParName(3,"background");
ff->SetParName(4,"bin width");
ff->SetParameter(0,42369);
ff->SetParameter(1,0);
ff->SetParLimits(2,10,maxwidth);
ff->SetParameter(2,350); // fix witdh if needed
ff->SetParameter(3,319);
ff->FixParameter(4,(tmax-tmin)/nbint); // bin width
ff->SetNpx(1000);
if(cout) cout->cd();
h->Fit(ff,"EI","",-10000,10000);
val = ff->GetParameter(2);
eval = ff->GetParError(2);
printf("significance = %f\n",ff->GetParameter(0)/sqrt(ff->GetParameter(0) + ff->GetParameter(3)));
h->Draw();
new TCanvas;
TF1 *func1 = (TF1 *) h->GetListOfFunctions()->At(0);
func1->SetLineColor(2);
h->SetLineColor(4);
TPaveText *text = new TPaveText(1500,(h->GetMinimum()+(h->GetMaximum()-h->GetMinimum())*0.6),9500,h->GetMaximum());
text->SetFillColor(0);
sprintf(title,"width = %5.1f #pm %5.1f",func1->GetParameter(2),func1->GetParError(2));
text->AddText(title);
sprintf(title,"signal (S) = %5.1f #pm %5.1f",func1->GetParameter(0),func1->GetParError(0));
text->AddText(title);
sprintf(title,"background (B) (3#sigma) = %5.1f #pm %5.1f",func1->GetParameter(3),func1->GetParError(3));
text->AddText(title);
sprintf(title,"significance (S/#sqrt{S+B}) = %5.1f",func1->GetParameter(0)/sqrt(func1->GetParameter(0)+func1->GetParameter(3)));
text->AddText(title);
text->SetFillStyle(0);
text->SetBorderSize(0);
text->Draw("SAME");
// correct nsecGR for the event rejected because of the number of satellites (event by event cut)
nsecGR *= neventsGRandSat/neventsGR;
printf("n_day = %f\nn_dayGR = %f\n",nsec*1./86400,nsecGR*1./86400);
text->AddText(Form("rate = %f #pm %f per day",func1->GetParameter(0)*86400/nsecGR,func1->GetParError(0)*86400/nsecGR));
TFile *fo = new TFile("outputCERN-01-02.root","RECREATE");
h->Write();
hDeltaTheta->Write();
hDeltaPhi->Write();
hThetaRel->Write();
hDeltaThetaBack->Write();
hDeltaPhiBack->Write();
hThetaRelBack->Write();
hAngle->Write();
hModulation->Write();
hModulation2->Write();
hModulationAv->Write();
hModulationAvCorr->Write();
hSinTheta->Write();
hSinTheta2->Write();
hnsigpeak->Write();
hRunCut[0]->Write();
hRunCut[1]->Write();
fo->Close();
return nsecGR*1./86400;
}
示例6: main
//.........这里部分代码省略.........
//reco = (TH2D*)HT->GetTH2D(reconame.Data(), cut);
//gen = (TH2D*)HT->GetTH2D(genname.Data(), cut);
reco = (TH1F*)HT->GetTH1(reconame.Data(), cut);
gen = (TH1F*)HT->GetTH1(genname.Data(), cut);
} else {
//reco = (TH1F*)HT->GetTH1(vLep.at(j), cut);
//gen = (TH1F*)HT->GetTH1("GenMet");
}
if (vLep.at(j).find("Pt") != std::string::npos)
{
reco->Rebin(5);
gen->Rebin(5);
}
//TH1F* reco = (TH1F*)HT->GetTH1("JetEta", cut);
//TH1F* gen = (TH1F*)HT->GetTH1("GenJetEta", cut);
//TH1F* reco = (TH1F*)HT->GetTH1("MuonPt", cut);
//reco->Rebin(5);
//TH1F* gen = (TH1F*)HT->GetTH1("GenMuonPt", cut);
//gen->Rebin(5);
//TH1F* reco = (TH1F*)HT->GetTH1("ElePt", cut);
//
//TH1F* gen = (TH1F*)HT->GetTH1("GenElePt", cut);
reco->Divide(gen);
reco->SetTitle("");
//gen->Draw();
//gen->SetLineColor(1);
reco->SetLineWidth(3);
reco->SetLineColor(VColor.at(i));
ymin = ymin < reco->GetMinimum() ? ymin : reco->GetMinimum();
ymax = ymax > reco->GetMaximum() ? ymax : reco->GetMaximum();
if (i == 0)
{
yaxis = reco->GetYaxis();
xaxis = reco->GetXaxis();
reco->Draw();
}
else
{
reco->Draw("same");
}
reco->GetYaxis()->SetTitle("Efficiency");
if (vDec.at(i).find("PU") != std::string::npos)
{
std::cout << " vDec.at(i)" << vDec.at(i) << std::endl;
std::cout<<"Run to \033[0;31m"<<__func__<<"\033[0m at \033[1;36m"<< __FILE__<<"\033[0m, line \033[0;34m"<< __LINE__<<"\033[0m"<< std::endl;
if (vDec.at(i) == "PhaseI_0PU")
{
lg->AddEntry(reco, "Phase I, <PU>=0", "fl");
reco->SetLineColor(1);
}
if (vDec.at(i) == "PhaseI_140PU")
{
lg->AddEntry(reco, "Phase I, <PU>=140", "fl");
reco->SetLineColor(4);
}
if (vDec.at(i) == "PhaseII3_140PU")
{
lg->AddEntry(reco, "Phase II Conf3, <PU>=140", "fl");
示例7: PlotPubHisto
//.........这里部分代码省略.........
if ( nbinsx <= 20 ) nrebin = 1;
printf(" Saw nbins =%4i, rebinning by nrebin =%2i to final %3i bins \n",nbinsx,nrebin,int(nbinsx/nrebin));
if ( nrebin != 0 ) {
h0->Rebin(nrebin); // data
for (Int_t i = 0; i<=nbkg; i++){
TH1F * h = (TH1F*) addedhistos[i];
h->Rebin(nrebin);
}
for (Int_t i = 0; i<nsig; i++){
TH1F * h = (TH1F*) signalhistos[i];
h->Rebin(nrebin);
}
}
// default text size: 0.045
// make it bigger for the paper
float textSize = 0.045;
if(params->GetValue("Histo.Preliminary","yes")==TString("paper")) textSize=0.07;
if(params->Defined("Histo.TextSize")) textSize=params->GetValue("Histo.TextSize",0.07);
// Now, check largest dimensions so that we can plot all histograms at once.
Float_t xmin=9999., xmax=-9999., ymin=9999., ymax=-9999.;
for(Int_t i = 0; i<=nbkg; i++){
TH1F * h = (TH1F*) addedhistos[i];
ostringstream baseSrcName;
baseSrcName << "Files." << i+1 << ".";
TString bSrcName(baseSrcName.str().c_str());
TAxis *axis = h->GetXaxis();
if( axis->GetXmin() < xmin ) xmin = axis->GetXmin();
if( axis->GetXmax() > xmax ) xmax = axis->GetXmax();
if( h->GetMinimum() < ymin ) ymin = h->GetMinimum();
if( h->GetMaximum() > ymax ) ymax = h->GetMaximum();
}
ymax = TMath::Nint(ymax*1.25+1); // Make enough room for the big legend
TString title = h0->GetTitle();
//
// now check if we should simply use the ranges that was passed to us.
if(params->Defined("Histo.Xmin")) xmin = params->GetValue("Histo.Xmin",0.);
if(params->Defined("Histo.Xmax")) xmax = params->GetValue("Histo.Xmax",0.);
if(params->Defined("Histo.Ymin")) ymin = params->GetValue("Histo.Ymin",0.);
if(params->Defined("Histo.Ymax")) ymax = params->GetValue("Histo.Ymax",0.);
// Now make the frame:
TH2F * frame = new TH2F("frame","",nbinsx,xmin,xmax,nbinsy,ymin,ymax);
cout<<" frame has xmin "<<xmin<<", xmax "<<xmax<<", ymax "<<ymax<<endl;
// get the x- and y-axis titles
TString ytitle=params->GetValue("Histo.YTitle","");
if ( params->Defined("Histo.XTitle")) {
frame->SetXTitle(params->GetValue("Histo.XTitle",""));
} else {
frame->SetXTitle(h0->GetTitle());
}
frame->SetYTitle(ytitle.Data());
// also set the text size for the X and Y axis titles and numbers
// do this globally for the style we are using
float axisLabelSize=textSize;
frame->GetXaxis()->SetLabelSize(axisLabelSize);
frame->GetYaxis()->SetLabelSize(axisLabelSize);
frame->GetXaxis()->SetTitleSize(axisLabelSize);
frame->GetYaxis()->SetTitleSize(axisLabelSize);
示例8: doPlots
//.........这里部分代码省略.........
qcd->SetLineColor(kGray+2);
w->SetLineColor(kAzure+1);
wlpt->SetLineColor(kAzure+1);
wp10->SetLineColor(kRed);
wp15->SetLineColor(kRed+1);
wp20->SetLineColor(kRed+2);
top->SetFillColor(kMagenta);
z->SetFillColor(kOrange);
qcd->SetFillColor(kGray+2);
w->SetFillColor(kAzure+1);
wlpt->SetFillColor(kAzure+1);
wp10->SetFillColor(kRed);
wp15->SetFillColor(kRed+1);
wp20->SetFillColor(kRed+2);
const int fill_style_bgd = 3001;
const int fill_style_sig = 3001;
top->SetFillStyle(fill_style_bgd);
z->SetFillStyle(fill_style_bgd);
qcd->SetFillStyle(fill_style_bgd);
w->SetFillStyle(fill_style_bgd);
wlpt->SetFillStyle(fill_style_bgd);
wp10->SetFillStyle(fill_style_sig);
wp15->SetFillStyle(fill_style_sig);
wp20->SetFillStyle(fill_style_sig);
hs->Add(z);
hs->Add(qcd);
hs->Add(top);
hs->Add(w);
hs->Add(wlpt);
// this is needed when background is eliminated and the y-axis is linear (as opposed to log)
if(data->GetMaximum() < wp10->GetMaximum())data->SetMaximum(wp10->GetMaximum());
// this is needed when background is zero in the tails and wprime (say at 2.0 TeV) is not displayed
if(data->GetMinimum() < 0.00001)data->SetMinimum(0.00001);
if (i == Num_selection_cuts-1)
{
string desc = "";
if(option == 1)
desc = " p_{T} distribution";
else if(option == 2)
desc = " muon + (ckt-corrected) pfMET M_{T} distribution";
string new_title = algo_desc_long[tracking_option] + desc;
data->SetTitle(new_title.c_str());
}
//data->SetMarkerStyle(20);
//data->SetMarkerSize(1.3);
data->SetMarkerStyle(8);
//data->SetMarkerSize(1.2);
if(option == 1)
{
data->GetXaxis()->SetTitle("Muon p_{T} (GeV/c)");
data->GetXaxis()->SetRangeUser(25, 500);
}
else if(option == 2)
{
data->GetXaxis()->SetTitle("M_{T} (GeV/c^{2})");
data->GetXaxis()->SetRangeUser(50, 800);
}
data->Draw("e");
hs->Draw("same");
wp10->Draw("same");
wp15->Draw("same");
wp20->Draw("same");
char temp2[1024]; sprintf(temp2, " data (%4.2f pb^{-1})", Lumi_ipb);
TLegend * lg = new TLegend(0.59, 0.67, 0.89, 0.89);
lg->SetTextSize(0.03);
lg->SetBorderSize(0);
lg->SetFillColor(0);
lg->AddEntry(z, "Drell Yan (Z/Z*)", "F");
lg->AddEntry(qcd, "QCD", "F");
lg->AddEntry(top, "Top", "F");
lg->AddEntry(w, "W/W*", "F");
lg->AddEntry(wp10, "W ' (1.0 TeV)", "F");
lg->AddEntry(wp15, "W ' (1.5 TeV)", "F");
lg->AddEntry(wp20, "W ' (2.0 TeV)", "F");
lg->AddEntry(data, temp2, "LP");
lg->Draw();
string desc2 = "";
if(option == 1)
desc2 = "MuPt";
else
desc2 = "TM";
char temp3[1024]; sprintf(temp3, "_%4.2fipb_", Lumi_ipb);
string file = desc2 + temp3 + cuts_desc_short[i] + ".gif";
c1->SaveAs(file.c_str());
// delete c1;
}
示例9: main
//.........这里部分代码省略.........
ratio->GetYaxis()->SetTitle("S/(#sqrt{S+B})");
ratio->SetMarkerSize(1.1);
ratioW = new TH1F(("ratioW_"+string(denominator.at(0)->GetName())).c_str(),"",numTotal->GetNbinsX(),numTotal->GetBinLowEdge(1),numTotal->GetBinLowEdge(numTotal->GetNbinsX()+1));
ratioW->GetYaxis()->SetTitle("weighted S/(#sqrt{S+B})");
ratioW->SetMarkerSize(1.1);
TString name = "norm_" ;
name += denTotal->GetName () ;
TH1F * norm_denTotal = (TH1F *) denTotal->Clone (name) ;
norm_denTotal->Scale (1. / norm_denTotal->GetMaximum ()) ;
// weight the S/sqrt (B) by the shape of the total,
// so that only bins with a lot of stats become visibly significant
for(int iBin = 0; iBin < ratio->GetNbinsX()+1; iBin++){
if(denTotal->GetBinContent(iBin) !=0){
ratioW->SetBinContent(iBin,
norm_denTotal->GetBinContent (iBin) * numTotal->GetBinContent(iBin) /
sqrt(denTotal->GetBinContent(iBin)));
ratio->SetBinContent(iBin,
numTotal->GetBinContent(iBin) / sqrt(denTotal->GetBinContent(iBin)));
}
else
ratio->SetBinContent(iBin,0.);
}
ratio->GetXaxis()->SetTitle("");
ratio->SetLineColor(kBlue);
ratio->SetLineStyle(2);
ratio->SetLineWidth(2);
ratio->GetXaxis()->SetLabelOffset(999);
ratio->GetXaxis()->SetLabelSize(0);
ratio->GetYaxis()->SetLabelSize(0.15);
ratio->GetYaxis()->SetTitleSize(0.15);
ratio->GetYaxis()->SetTitleOffset(0.30);
ratio->GetYaxis()->SetNdivisions(504);
ratioW->GetXaxis()->SetTitle("");
ratioW->SetLineColor(kBlack);
ratioW->SetLineWidth(2);
ratioW->GetXaxis()->SetLabelOffset(999);
ratioW->GetXaxis()->SetLabelSize(0);
ratioW->GetYaxis()->SetLabelSize(0.15);
ratioW->GetYaxis()->SetTitleSize(0.15);
ratioW->GetYaxis()->SetTitleOffset(0.30);
ratioW->GetYaxis()->SetNdivisions(504);
ratio->GetYaxis()->SetRange(min(ratio->GetMinimum(),ratioW->GetMinimum())*0.9,max(ratio->GetMaximum(),ratioW->GetMaximum())*1.1);
TH1F * frame = lowerPad->DrawFrame (ratio->GetXaxis ()->GetXmin (), 0.,
ratio->GetXaxis ()->GetXmax (), 2.) ;
frame->GetXaxis()->SetTitle (ratio->GetXaxis ()->GetTitle ()) ;
frame->GetYaxis()->SetTitle (ratio->GetYaxis ()->GetTitle ()) ;
frame->GetXaxis()->SetLabelOffset(999);
frame->GetXaxis()->SetLabelSize(0);
frame->GetYaxis()->SetLabelSize(0.15);
frame->GetYaxis()->SetTitleSize(0.15);
frame->GetYaxis()->SetTitleOffset(0.30);
frame->GetYaxis()->SetNdivisions(504);
ratio->Draw("P");
ratioW->Draw("Lsame");
upperPad->cd();
tex->Draw("same");
tex2->Draw("same");
tex3->Draw("same");
legend->Draw("same");
cCanvas->SaveAs(string("output/"+outputPlotDirectory+"/xs/"+variableList.at(iVar).variableName+".pdf").c_str(),"pdf");
cCanvas->SaveAs(string("output/"+outputPlotDirectory+"/xs/"+variableList.at(iVar).variableName+".png").c_str(),"png");
cCanvas->SaveAs(string("output/"+outputPlotDirectory+"/xs/"+variableList.at(iVar).variableName+".root").c_str(),"root");
cCanvasNorm->cd();
tex->Draw("same");
tex2->Draw("same");
tex3->Draw("same");
legend->Draw("same");
cCanvasNorm->SaveAs(string("output/"+outputPlotDirectory+"/norm/"+variableList.at(iVar).variableName+".pdf").c_str(),"pdf");
cCanvasNorm->SaveAs(string("output/"+outputPlotDirectory+"/norm/"+variableList.at(iVar).variableName+".png").c_str(),"png");
cCanvasNorm->SaveAs(string("output/"+outputPlotDirectory+"/norm/"+variableList.at(iVar).variableName+".root").c_str(),"root");
legend->Clear();
} // loop on var
cout<<"LHE filter efficiency : "<<passingLHEFilter<<" totEvent "<<totEvent<<" efficiency "<<float(passingLHEFilter)/float(totEvent)*100<<" % "<<endl;
//Normalize histograms
for(size_t ihisto = 0; ihisto < plotVector.size(); ihisto++){
if(plotVector.at(ihisto).varName == "DeltaPhi_LL")
cout<<"Events Histo "<<plotVector.at(ihisto).histogram->GetName()<<" unweighted "<<plotVector.at(ihisto).histogram->GetEntries()<<" weighted "<<plotVector.at(ihisto).histogram->Integral(0,plotVector.at(ihisto).histogram->GetNbinsX()+1)<<endl;
}
return 0 ;
}
示例10: plotMVAOutput
//.........这里部分代码省略.........
file = TFile::Open(Form("%s/%s.root",path,higgssample));
TH1F* higgshist = cloneHist( (TH1F*) file->Get( Form("MVA_%s",mvanames.at(imva) ) ) );
higgshist->SetLineWidth(2);
leg->AddEntry(higgshist,higgssample,"l");
float bkg = 0;
float sig = 0;
float minbkg = 1.48;
//float minbkg = 1.10;
float cut = 0.;
for( int ibin = 1 ; ibin < bkghist->GetNbinsX() ; ibin++ ){
bkg = bkghist->Integral( ibin , 10000 );
sig = higgshist->Integral( ibin , 10000 );
if( bkg < minbkg ){
cut = bkghist->GetBinCenter(ibin);
cout << endl;
cout << "S/B " << sig/bkg << endl;
cout << "Sig " << sig << endl;
cout << "Bkg " << bkg << endl;
cout << "cut value " << cut << endl;
break;
}
}
float cutsig = sig;
float cutbkg = bkg;
float maxfom = -1;
float maxfom_sig = -1;
float maxfom_bkg = -1;
float cutval = -1;
for( int ibin = 1 ; ibin < bkghist->GetNbinsX() ; ibin++ ){
bkg = bkghist->Integral( ibin , 10000 );
sig = higgshist->Integral( ibin , 10000 );
float fom = sig / sqrt( sig + bkg + pow( 0.35 * bkg , 2 ) );
if( fom > maxfom ){
maxfom = fom;
maxfom_sig = sig;
maxfom_bkg = bkg;
cutval = bkghist->GetBinCenter(ibin);
}
}
cout << endl;
cout << "Max FOM " << maxfom << endl;
cout << "Sig " << maxfom_sig << endl;
cout << "Bkg " << maxfom_bkg << endl;
cout << "cut value " << cutval << endl;
bkghist->Rebin( rebin );
higgshist->Rebin( rebin );
can[imva] = new TCanvas(Form("can_%i",imva),Form("can_%i",imva),800,600);
can[imva]->cd();
//gPad->SetLogy();
bkghist->GetXaxis()->SetTitle(Form("%s output",mvanames.at(imva)));
bkghist->Draw();
bkgstack->Draw("same");
higgshist->Scale(10.);
higgshist->Draw("same");
bkghist->Draw("axissame");
//leg->Draw();
TLatex *t = new TLatex();
t->SetNDC();
t->SetTextColor(2);
t->DrawLatex(0.2,0.85,Form("FOM: %.2f",maxfom));
t->SetTextColor(1);
t->DrawLatex(0.2,0.80,Form("Sig: %.2f",maxfom_sig));
t->DrawLatex(0.2,0.75,Form("Bkg: %.2f",maxfom_bkg));
t->SetTextColor(4);
t->DrawLatex(0.2,0.55,Form("S/B: %.2f",cutsig/cutbkg));
t->SetTextColor(1);
t->DrawLatex(0.2,0.50,Form("Sig: %.2f",cutsig));
t->DrawLatex(0.2,0.45,Form("Bkg: %.2f",cutbkg));
TLine line;
line.SetLineColor(2);
line.DrawLine( cutval , bkghist->GetMinimum() , cutval , 1.05 * bkghist->GetMaximum() );
line.SetLineColor(4);
line.DrawLine( cut , bkghist->GetMinimum() , cut , 1.05 * bkghist->GetMaximum() );
if( printgif ) can[imva]->Print(Form("plots/%s.gif",mvanames.at(imva)));
}
}
示例11: plotSingleBackground
void plotSingleBackground(TFile *f, float xfit, float xcut, bool isMu) {
TH1F *h = f->Get("decayLengthSignificance2D_BackgroundMC");
h->SetMarkerColor(kBlack);
h->SetMarkerStyle(kFullSquare);
gPad->SetLeftMargin(0.15);
gPad->SetBottomMargin(0.15);
gPad->SetTopMargin(0.10);
gPad->SetRightMargin(0.04);
h->GetXaxis()->SetTitle("L_{xy}/#sigma");
h->GetYaxis()->SetTitle("Number of background events");
h->GetYaxis()->SetTitleOffset(1.2);
h->Draw();
gPad->SetLogy();
float xmax = h->GetXaxis()->GetXmax();
float ymax = h->GetMaximum();
TF1 *f1 = new TF1("f1", "[0]*exp(-x/[1]) + [2]*exp(-x/[3])");
if (isMu) {
f1->SetParameter(0, 750);
f1->SetParameter(1, 0.25);
f1->SetParameter(2, 90);
f1->SetParameter(3, 0.6);
} else {
f1->SetParameter(0, 35);
f1->SetParameter(1, 0.4);
f1->SetParameter(2, 2);
f1->SetParameter(3, 3);
}
float fitmin = 0;
//if (!isMu) fitmin = 3;
h->Fit(f1, "EM", "", fitmin, xfit);
f1->SetLineColor(kRed);
TF1 *f2 = new TF1("f2", "[0]*exp(-x/[1]) + [2]*exp(-x/[3])", xfit, xmax);
for (int i=0; i<=3; i++)
f2->SetParameter(i, f1->GetParameter(i));
f2->SetLineColor(kRed);
f2->SetLineStyle(kDashed);
f2->Draw("same");
if (!isMu) {
TLine *l1 = new TLine(xfit, h->GetMinimum(), xfit, ymax);
l1->SetLineColor(kRed);
l1->SetLineWidth(2);
l1->SetLineStyle(kDashed);
l1->Draw();
}
TLine *l2 = new TLine(xcut, h->GetMinimum(), xcut, ymax);
l2->SetLineColor(kBlue);
l2->SetLineWidth(2);
l2->SetLineStyle(kDashed);
l2->Draw();
TArrow *a2 = new TArrow(xcut, ymax/50, xcut+2, ymax/50, 0.02, "|>");
a2->SetLineWidth(2);
a2->SetLineColor(kBlue);
a2->SetFillColor(kBlue);
a2->Draw();
TText *at2 = new TText(xcut+2.5, ymax/50, "Signal region");
at2->SetTextSize(0.03);
at2->SetTextColor(kBlue);
at2->SetTextAlign(12);
at2->Draw();
TLatex *t1;
if (isMu) {
h->SetTitle("CMS Preliminary #sqrt{s}=7 TeV L=1.2 fb^{-1}");
t1 = new TLatex(xmax-4, ymax/5, "#mu^{+}#mu^{-}");
} else {
h->SetTitle("CMS Preliminary #sqrt{s}=7 TeV L=1.1 fb^{-1}");
t1 = new TLatex(xmax-4, ymax/5, "e^{+}e^{-}");
}
t1->SetTextFont(42);
t1->Draw();
float intbkgnd = f2->Integral(xcut, xmax);
TF1 *f3 = f2->Clone("f3");
float interr2 = 0;
float errplus2 = 0;
float errminus2 = 0;
for (int i=0; i<4; i++) {
f3->SetParameter(i, f1->GetParameter(i)+f1->GetParError(i));
float intplus = f3->Integral(xcut, xmax);
f3->SetParameter(i, f1->GetParameter(i)-f1->GetParError(i));
float intminus = f3->Integral(xcut, xmax);
f3->SetParameter(i, f1->GetParameter(i));
float interr = (intplus - intminus)/2;
interr2 += interr*interr;
errplus2 += (intplus - intbkgnd)*(intplus - intbkgnd);
errminus2 += (intbkgnd - intminus)*(intbkgnd - intminus);
}
//std::cout << intplus << " " << intminus << std::endl;
//.........这里部分代码省略.........
示例12: mtl
//---------------------------------------------------------------
double *binnedFit(TString fiName, vector<double> xlim, double mtop, TLatex *channel_tex, TString outdir, double lumi)
//---------------------------------------------------------------
{
using namespace RooFit;
// reduce RooFit's verbosity on the INFO level
RooMsgService::instance().getStream(1).removeTopic(Minimization);
RooMsgService::instance().getStream(1).removeTopic(Plotting);
RooMsgService::instance().getStream(1).removeTopic(ObjectHandling);
RooMsgService::instance().getStream(1).removeTopic(Eval);
RooMsgService::instance().getStream(1).removeTopic(Fitting);
RooMsgService::instance().setSilentMode(true);
RooMsgService::instance().setGlobalKillBelow(RooFit::FATAL);
TFile *res = TFile::Open(fiName);
RooRealVar mtl("mass", "M_{J/#psi+l}", 0., 250., "GeV");
//RooRealVar mean("mean", "mass", (xlim[1]+xlim[0])/2., (xlim[1]+3.*xlim[0])/4., (3.*xlim[1]+xlim[0])/4.);
RooRealVar mean("mean", "mass", 70., 60., 80.);
RooRealVar width("width", "width", 25., 15., 40.);
TH1F *histo = (TH1F*)res->Get("MTriLept-allPair");
h_myStyle(histo,38,38,3002,histo->GetMinimum(),1.2*histo->GetMaximum(),510,510,20,38,1.,0.);
RooDataHist *datahist = new RooDataHist("datahist", "datahist", RooArgList(mtl), histo, 1.);
RooGaussian pdf("gaus", "gaus", mtl, mean, width);
pdf.fitTo(*datahist, Range(xlim[0], xlim[1]), SumW2Error(kTRUE), PrintLevel(-1), PrintEvalErrors(-1));
TCanvas *cn = new TCanvas("cn", "cn", 800, 800);
cn->cd();
RooPlot *massframe = mtl.frame();
datahist->plotOn(massframe, MarkerColor(38), LineColor(38), DataError(RooAbsData::SumW2));
pdf.plotOn(massframe, LineColor(38), Range(xlim[0], xlim[1]));
massframe->Draw();
histo->Draw("samehist");
TLegend *leg = new TLegend(0.58,0.82,0.93,0.92,NULL,"brNDC");
if (mtop < 1e-6)
leg->SetHeader(TString::Format("#tilde{M}_{J/#psi+l} = (%3.1f #pm %3.1f) GeV", mean.getVal(), mean.getError()));
else
leg->SetHeader(TString::Format("#splitline{M_{t}^{gen} = %3.1f GeV}{#tilde{M}_{J/#psi+l} = (%3.1f #pm %3.1f) GeV}", mtop+0.5, mean.getVal(), mean.getError()));
leg_myStyle(leg);
leg->Draw("same");
channel_tex->Draw("same");
if (mtop < 1e-6)
cms_myStyle(lumi, true);
else
cms_myStyle(lumi, false);
TString outFile = outdir;
if (mtop < 1e-6)
outFile += "GausianBinnedFit_Data";
else
outFile += TString::Format("GaussianBinnedFit_%d_5", (int)mtop);
cn->SaveAs(outFile+".pdf");
cn->SaveAs(outFile+".C");
cn->SaveAs(outFile+".jpg");
cn->SaveAs(outFile+".eps");
res->Close();
double *mean_err = new double[2];
mean_err[0] = mean.getVal();
mean_err[1] = mean.getError();
return mean_err;
}