17 #include "TProfile3D.h"
28 #include <cln/float.h>
57 int main(
int argc,
char* argv[]){
60 std::cerr<<
"Usage: "<<argv[0]<<
" gL gQ lup qup [mssm]"<<std::endl;
66 int lup=atoi(argv[3]);
67 int qup=atoi(argv[4]);
69 if(argc>5) mssm=atoi(argv[5]);
73 cln::cl_inhibit_floating_point_underflow=1;
75 string ll[2][3]={{
"#nu_{1}",
"#nu_{2}",
"#nu_{3}"},{
"e",
"#mu",
"#tau"}};
76 string qq[2][3]={{
"u",
"c",
"t"},{
"d",
"s",
"b"}};
78 Double_t r[] = {1, 0.3};
79 Double_t g[] = {1, 0.3};
80 Double_t b[] = {1, 0.3};
81 Double_t stop[] = {0., 1.0};
82 TColor::CreateGradientColorTable(2, stop, r, g,b, 100);
87 double init1=-3, final1=3;
88 double init2=10, final2=1000;
89 double initBmumu=0, finalBmumu=2;
90 double initBsmumu=0, finalBsmumu=5;
115 double llmax=-1000,gmax=0, McHmax=1000,MRmax=1000,MImax=1000,tbmax=1;
116 BGL* m=
new BGL(gL,gQ,lup,qup);
118 ms[gL][gQ][lup][qup]=m;
151 if(llmax_>llmax) {llmax=llmax_;
158 TH2F * limits4=
new TH2F(
"limits4",
"Likelihood",npoints,init1,final1,npoints,init2,final2);
159 TH2F * Bmumu_Bsmumu=
new TH2F(
"Bmumu_Bsmumu",
"Likelihood",npoints,initBmumu,finalBmumu,npoints,initBsmumu,finalBsmumu);
160 TH2F * limits_tb_MR=
new TH2F(
"limits_tb_MR",
"Likelihood",npoints,init1,final1,npoints,init2,final2);
161 TH2F * limits_tb_MI=
new TH2F(
"limits_tb_MI",
"Likelihood",npoints,init1,final1,npoints,init2,final2);
162 TH2F * limits_MR_MI=
new TH2F(
"limits_MR_MI",
"Likelihood",npoints,init2,final2,npoints,init2,final2);
163 TH2F * limits_MR_McH=
new TH2F(
"limits_MR_McH",
"Likelihood",npoints,init2,final2,npoints,init2,final2);
164 TH2F * limits_MI_McH=
new TH2F(
"limits_MI_McH",
"Likelihood",npoints,init2,final2,npoints,init2,final2);
167 for(
uint i=0;i<npoints;i++)
168 for(
uint j=0;j<npoints;j++) {
169 limits4->SetBinContent(i+1,j+1,-1000);
170 Bmumu_Bsmumu->SetBinContent(i+1,j+1,-1000);
171 limits_MR_McH->SetBinContent(i+1,j+1,-1000);
172 limits_MI_McH->SetBinContent(i+1,j+1,-1000);
173 limits_MR_MI->SetBinContent(i+1,j+1,-1000);
174 limits_tb_MR->SetBinContent(i+1,j+1,-1000);
180 for(
uint i=steps;i;i--){
188 if(i>npoints*npoints){
194 if(llmax_>llmax) {llmax=llmax_;
207 uint x=(i-1)/npoints, y=(i-1)%npoints;
208 prop4.
floatPeak.
pr[0].value=init1+((x+0.5)*(final1-init1))/npoints;
209 prop4.
floatPeak.
pr[1].value=init2+((y+0.5)*(final2-init2))/npoints;
222 if(brtaunu0<brtaunu) brtaunu=brtaunu0;
223 if(total>llmax) {llmax=total; gmax=gp;
234 uint p2=
uint((mr-init2)/(final2-init2)*npoints);
238 uint p4=
uint((mr-init2)/(final2-init2)*npoints);
239 if(p1<npoints && p2<npoints && p3<npoints && p4<npoints){
240 if(total>likely[p1][p2]){
241 likely[p1][p2]=total;
243 limits4->SetBinContent(p1+1,p2+1,total);
245 if(total>likely2[p3][p4]){
246 likely2[p3][p4]=total;
248 limits_MR_MI->SetBinContent(p3+1,p4+1,total);
251 if(total>likely3[p3][p2]){
252 likely3[p3][p2]=total;
254 limits_MR_McH->SetBinContent(p3+1,p2+1,total);
257 if(total>likely4[p1][p3]){
258 likely4[p1][p3]=total;
260 limits_tb_MR->SetBinContent(p1+1,p3+1,total);
262 if(total>likely5[p4][p2]){
263 likely5[p4][p2]=total;
265 limits_MI_McH->SetBinContent(p4+1,p2+1,total);
272 uint pB=
uint((Bmumu-initBmumu)/(finalBmumu-initBmumu)*npoints);
273 uint pBs=
uint((Bsmumu-initBsmumu)/(finalBsmumu-initBsmumu)*npoints);
274 if(pB<npoints && pBs<npoints)
275 if(total>likelyB[pB][pBs]){
276 likely[pB][pBs]=total;
277 Bmumu_Bsmumu->SetBinContent(pB+1,pBs+1,total);
280 }
else cout<<
"OUT!!!"<<endl;
284 cout<<
" total "<<total<<
" gmax "<<gp<<
" "<<brtaunu<<endl;
290 TFile f((
string(
"h")+
string(name)+
string(
".root")).c_str(),
"recreate");
299 Bmumu_Bsmumu->Write();
300 limits_MR_MI->Write();
301 limits_MR_McH->Write();
302 limits_MI_McH->Write();
303 limits_tb_MR->Write();
310 uint min1=npoints, min2=npoints, min3=npoints;
311 uint min11=npoints, min21=npoints, min31=npoints;
312 uint min12=npoints, min22=npoints, min32=npoints;
314 for(
uint i=0;i<npoints;i++)
315 for(
uint j=0;j<npoints;j++){
316 int binmax=limits4->GetBin(i+1,j+1);
317 double rest=limits4->GetBinContent(binmax);
318 if(rest>=llmax) rest=1;
319 else rest=TMath::Prob(-2*(rest-llmax),2);
320 if(rest>=0.05 && j<min1){min1=j;}
321 if(rest>=0.05 && j<min11 && j>
uint(180*npoints/990)){min11=j;}
322 if(rest>=0.05 && j<min12 && j>
uint(400*npoints/990)){min12=j;}
323 limits4->SetBinContent(i+1,j+1,rest);
325 rest=Bmumu_Bsmumu->GetBinContent(binmax);
326 if(rest>=llmax) rest=1;
327 else rest=TMath::Prob(-2*(rest-llmax),2);
328 Bmumu_Bsmumu->SetBinContent(i+1,j+1,rest);
330 rest=limits_MR_MI->GetBinContent(binmax);
331 if(rest>=llmax) rest=1;
332 else rest=TMath::Prob(-2*(rest-llmax),2);
333 limits_MR_MI->SetBinContent(i+1,j+1,rest);
335 rest=limits_MR_McH->GetBinContent(binmax);
336 if(rest>=llmax) rest=1;
337 else rest=TMath::Prob(-2*(rest-llmax),2);
338 if(rest>=0.05 && i<min2){min2=i;}
339 if(rest>=0.05 && i<min21 && j>
uint(180*npoints/990)){min21=i;}
340 if(rest>=0.05 && i<min22 && j>
uint(400*npoints/990)){min22=i;}
341 limits_MR_McH->SetBinContent(i+1,j+1,rest);
343 rest=limits_MI_McH->GetBinContent(binmax);
344 if(rest>=llmax) rest=1;
345 else rest=TMath::Prob(-2*(rest-llmax),2);
346 if(rest>=0.05 && i<min3){min3=i;}
347 if(rest>=0.05 && i<min31 && j>
uint(180*npoints/990)){min31=i;}
348 if(rest>=0.05 && i<min32 && j>
uint(400*npoints/990)){min32=i;}
349 limits_MI_McH->SetBinContent(i+1,j+1,rest);
352 rest=limits_tb_MR->GetBinContent(binmax);
353 if(rest>=llmax) rest=1;
354 else rest=TMath::Prob(-2*(rest-llmax),2);
355 limits_tb_MR->SetBinContent(i+1,j+1,rest);
357 double mmin1=init2+((min1+0.5)*(final2-init2))/npoints;
358 double mmin2=init2+((min2+0.5)*(final2-init2))/npoints;
359 double mmin3=init2+((min3+0.5)*(final2-init2))/npoints;
361 double mmin11=init2+((min11+0.5)*(final2-init2))/npoints;
362 double mmin21=init2+((min21+0.5)*(final2-init2))/npoints;
363 double mmin31=init2+((min31+0.5)*(final2-init2))/npoints;
365 double mmin12=init2+((min12+0.5)*(final2-init2))/npoints;
366 double mmin22=init2+((min22+0.5)*(final2-init2))/npoints;
367 double mmin32=init2+((min32+0.5)*(final2-init2))/npoints;
371 ofstream maxs((
string(
"maxs_")+
string(name)+
string(
".out")).c_str());
372 maxs<<mmin1<<
" "<<mmin2<<
" "<<mmin3<<endl;
373 maxs<<mmin11<<
" "<<mmin21<<
" "<<mmin31<<endl;
374 maxs<<mmin12<<
" "<<mmin22<<
" "<<mmin32<<endl;
384 limits4->SetStats(0);
385 limits4->GetXaxis()->SetTitle(
"log_{10}(tan\\beta)");
386 limits4->GetYaxis()->SetTitle(
"M_{H+} (GeV)");
388 Bmumu_Bsmumu->SetStats(0);
389 Bmumu_Bsmumu->GetXaxis()->SetTitle(
"Br(B\\to\\mu\\mu)/10^{-10}");
390 Bmumu_Bsmumu->GetYaxis()->SetTitle(
"Br(B_{s}\\to\\mu\\mu)/10^{-9}");
393 limits_MR_MI->SetStats(0);
394 limits_MR_MI->GetYaxis()->SetTitle(
"M_{I} (GeV)");
395 limits_MR_MI->GetXaxis()->SetTitle(
"M_{R} (GeV)");
399 limits_MR_McH->SetStats(0);
400 limits_MR_McH->GetYaxis()->SetTitle(
"M_{H+} (GeV)");
401 limits_MR_McH->GetXaxis()->SetTitle(
"M_{R} (GeV)");
403 limits_MI_McH->SetStats(0);
404 limits_MI_McH->GetYaxis()->SetTitle(
"M_{H+} (GeV)");
405 limits_MI_McH->GetXaxis()->SetTitle(
"M_{I} (GeV)");
407 limits_tb_MR->SetStats(0);
408 limits_tb_MR->GetXaxis()->SetTitle(
"log_{10}(tan\\beta)");
409 limits_tb_MR->GetYaxis()->SetTitle(
"M_{R} (GeV)");
412 gStyle->SetOptTitle(0);
414 Double_t contours[3];
420 double ma=0,me=.2, x0=1,y0=120;
422 limits4->SetContour(3, contours);
424 limits4->GetYaxis()->SetLabelSize(0.08);
425 limits4->GetYaxis()->SetTitleSize(0.08);
426 limits4->GetYaxis()->SetTitleOffset(1.2);
427 limits4->GetYaxis()->SetLimits(1,999);
429 limits4->GetXaxis()->SetLabelSize(0.08);
430 limits4->GetXaxis()->SetTitleSize(0.08);
431 limits4->GetXaxis()->SetTitleOffset(1.2);
432 limits4->GetXaxis()->SetLimits(-2.99,2.99);
437 gStyle->SetPaperSize(10.,10.);
441 string ss=qq[qup][gQ]+
","+ll[lup][gL];
443 TCanvas * c21=
new TCanvas(
"c21",
"",
int(800*(1+ma+me)),
int(600*(1+ma+me)));
444 c21->SetMargin(me,ma,me,ma);
447 limits4->Draw(
"CONT Z LIST");
448 if(!mssm) l.DrawLatex(x0,y0,ss.c_str());
450 c21->SaveAs((
string(
"pdf_")+
string(name)+
string(
".png")).c_str());
456 Bmumu_Bsmumu->GetYaxis()->SetLabelSize(0.08);
457 Bmumu_Bsmumu->GetYaxis()->SetTitleSize(0.08);
458 Bmumu_Bsmumu->GetYaxis()->SetTitleOffset(1.2);
459 Bmumu_Bsmumu->GetYaxis()->SetLimits(0.01,4.99);
461 Bmumu_Bsmumu->GetXaxis()->SetLabelSize(0.08);
462 Bmumu_Bsmumu->GetXaxis()->SetTitleSize(0.08);
463 Bmumu_Bsmumu->GetXaxis()->SetTitleOffset(1.2);
464 Bmumu_Bsmumu->GetXaxis()->SetLimits(0.01,1.99);
466 TCanvas * cB=
new TCanvas(
"cB",
"",
int(800*(1+ma+me)),
int(600*(1+ma+me)));
467 cB->SetMargin(me,ma,me,ma);
470 Bmumu_Bsmumu->Draw(
"COLZ");
471 l.DrawLatex(x0,y0,ss.c_str());
473 cB->SaveAs((
string(
"Bmumu_Bsmumu_")+
string(name)+
string(
".png")).c_str());
478 limits_MR_MI->SetContour(3, contours);
480 limits_MR_MI->GetYaxis()->SetLabelSize(0.06);
481 limits_MR_MI->GetYaxis()->SetTitleSize(0.06);
482 limits_MR_MI->GetYaxis()->SetTitleOffset(1.1);
483 limits_MR_MI->GetYaxis()->SetLimits(1,999);
485 limits_MR_MI->GetXaxis()->SetLabelSize(0.06);
486 limits_MR_MI->GetXaxis()->SetTitleSize(0.06);
487 limits_MR_MI->GetXaxis()->SetTitleOffset(1.1);
488 limits_MR_MI->GetXaxis()->SetLimits(1,999);
490 TCanvas * c3=
new TCanvas(
"c3",
"",800,600);
491 c3->SetMargin(me,ma,me,ma);
494 limits_MR_MI->Draw(
"CONT LIST");
496 c3->SaveAs((
string(
"pdf_")+
string(name)+
string(
"_MRMI.png")).c_str());
498 limits_MR_McH->SetContour(3, contours);
500 limits_MR_McH->GetYaxis()->SetLabelSize(0.06);
501 limits_MR_McH->GetYaxis()->SetTitleSize(0.06);
502 limits_MR_McH->GetYaxis()->SetTitleOffset(1.1);
503 limits_MR_McH->GetYaxis()->SetLimits(1,999);
505 limits_MR_McH->GetXaxis()->SetLabelSize(0.06);
506 limits_MR_McH->GetXaxis()->SetTitleSize(0.06);
507 limits_MR_McH->GetXaxis()->SetTitleOffset(1.1);
508 limits_MR_McH->GetXaxis()->SetLimits(1,999);
510 TCanvas * c4=
new TCanvas(
"c4",
"",800,600);
511 limits_MR_McH->Draw(
"CONT LIST");
512 c4->SetMargin(me,ma,me,ma);
514 c4->SaveAs((
string(
"pdf_")+
string(name)+
string(
"_MRMcH.png")).c_str());
516 limits_MI_McH->SetContour(3, contours);
518 limits_MI_McH->GetYaxis()->SetLabelSize(0.06);
519 limits_MI_McH->GetYaxis()->SetTitleSize(0.06);
520 limits_MI_McH->GetYaxis()->SetTitleOffset(1.1);
521 limits_MI_McH->GetYaxis()->SetLimits(1,999);
523 limits_MI_McH->GetXaxis()->SetLabelSize(0.06);
524 limits_MI_McH->GetXaxis()->SetTitleSize(0.06);
525 limits_MI_McH->GetXaxis()->SetTitleOffset(1.1);
526 limits_MI_McH->GetXaxis()->SetLimits(1,999);
528 TCanvas * c6=
new TCanvas(
"c6",
"",800,600);
529 limits_MI_McH->Draw(
"CONT LIST");
530 c6->SetMargin(me,ma,me,ma);
532 c6->SaveAs((
string(
"pdf_")+
string(name)+
string(
"_MIMcH.png")).c_str());
534 TCanvas * c5=
new TCanvas(
"c5",
"",800,600);
535 limits_tb_MR->Draw(
"colz");
537 c5->SaveAs((
string(
"pdf_")+
string(name)+
string(
"_tbMR.png")).c_str());
540 cout<<
"gL "<<gL<<
" gQ "<<gQ<<endl;
541 cout<<
"lup "<<lup<<
" qup "<<qup<<endl;
542 cout<<
"llmax "<<llmax<<
" gmax "<<gmax<<endl;
551 delete limits_MI_McH;
552 delete limits_MR_McH;
void findPeaks(uint ns=1, int max=0)
double obsvalue(const parameters &p) const
A vector of vectors of vectors of... (N times) of class T objects.
parameters getlist(const parameters &p) const
double loglike(const parameters &p, bool check=1, int max=0) const
parameters generateparameters(int max=0) const
int main(int argc, char *argv[])
the main function takes the arguments gL gQ lup qup which specify a BGL model and runs the simulation...
A class containing the parameters of a proposal for the next step in the Markov Chain.
Implementation of the BGL model.