//============================================================================ //Added by Andreas Moll, 18.03.2009 //============================================================================ Double_t polin2(Double_t x, Double_t a0, Double_t a1, Double_t a2) { Double_t polin = a0 + a1*x + a2*x*x; return polin; } //Asymmetric double gaussian consisting of //first gaussian: f*exp(-{(x-x0)^2}over{sigma0^2}) //and second gaussian depending on xx0: (1-f)*exp(-{(x-x0)^2}over{sigma2^2}) Double_t asymmetricDoubleGauss(Double_t x, Double_t sigma0, Double_t sigma1, Double_t sigma2, Double_t fraction) { Double_t g1, g2, a1, a2; a1 = (x)/(sigma0); if (x < 0.0) a2 = (x)/(sigma1); else a2 = (x)/(sigma2); g1 = TMath::Exp(-0.5*a1*a1); g2 = TMath::Exp(-0.5*a2*a2); Double_t result = fraction*g1+(1-fraction)*g2; return result; } Double_t breitWigner(Double_t x, Double_t mass, Double_t Gamma) { Double_t massTerm = (x*x-mass*mass); Double_t widthTerm = mass*Gamma; Double_t inverse = massTerm*massTerm+widthTerm*widthTerm; Double_t BW = widthTerm*widthTerm/inverse; return BW; } //Parameter indices par: //0,1,2,3: polynomial of degree 3 for combinatoric background fit //4,5,6 : 3 sigma values for assymetric double gaussian //7 : fraction //8 : offset //9 : mass //10 : width //11 : signal normalization //12 : common normalization Double_t conBWGausBackDoubleGaussian(Double_t* x, Double_t* par) { int ngrid = 400; Double_t range = 7.0; Double_t backg = polin2(x[0],par[0],par[1],par[2]); Double_t x1 = x[0] - range*par[4]; Double_t dx = 2.0*range*par[4]/Double_t(ngrid); Double_t signal = 0.0; Double_t xcur, dg, bw, diff; for (int i=0;iSetOptStat(0); gStyle->SetOptTitle(0); canv->Range(66,-346.4145,266,1578.11); canv->SetFillColor(10); canv->SetBorderMode(0); canv->SetBorderSize(2); canv->SetTickx(1); canv->SetTicky(1); canv->SetLeftMargin(0.19); canv->SetRightMargin(0.06); canv->SetTopMargin(0.08); canv->SetBottomMargin(0.18); canv->SetFrameLineWidth(2); canv->SetFrameBorderMode(0); canv->SetFrameLineWidth(2); canv->SetFrameBorderMode(0); TH1 *InvMassTopFittedHist = new TH1F("InvMassTopFittedHist","Top quark invariant mass (with KinFit)",75,100,250); InvMassTopFittedHist->SetBinContent(0,80); InvMassTopFittedHist->SetBinContent(1,23); InvMassTopFittedHist->SetBinContent(2,28); InvMassTopFittedHist->SetBinContent(3,23); InvMassTopFittedHist->SetBinContent(4,29); InvMassTopFittedHist->SetBinContent(5,34); InvMassTopFittedHist->SetBinContent(6,28); InvMassTopFittedHist->SetBinContent(7,35); InvMassTopFittedHist->SetBinContent(8,37); InvMassTopFittedHist->SetBinContent(9,50); InvMassTopFittedHist->SetBinContent(10,56); InvMassTopFittedHist->SetBinContent(11,59); InvMassTopFittedHist->SetBinContent(12,55); InvMassTopFittedHist->SetBinContent(13,51); InvMassTopFittedHist->SetBinContent(14,63); InvMassTopFittedHist->SetBinContent(15,86); InvMassTopFittedHist->SetBinContent(16,67); InvMassTopFittedHist->SetBinContent(17,84); InvMassTopFittedHist->SetBinContent(18,81); InvMassTopFittedHist->SetBinContent(19,91); InvMassTopFittedHist->SetBinContent(20,109); InvMassTopFittedHist->SetBinContent(21,87); InvMassTopFittedHist->SetBinContent(22,102); InvMassTopFittedHist->SetBinContent(23,114); InvMassTopFittedHist->SetBinContent(24,120); InvMassTopFittedHist->SetBinContent(25,119); InvMassTopFittedHist->SetBinContent(26,141); InvMassTopFittedHist->SetBinContent(27,141); InvMassTopFittedHist->SetBinContent(28,176); InvMassTopFittedHist->SetBinContent(29,187); InvMassTopFittedHist->SetBinContent(30,217); InvMassTopFittedHist->SetBinContent(31,237); InvMassTopFittedHist->SetBinContent(32,302); InvMassTopFittedHist->SetBinContent(33,374); InvMassTopFittedHist->SetBinContent(34,509); InvMassTopFittedHist->SetBinContent(35,706); InvMassTopFittedHist->SetBinContent(36,1070); InvMassTopFittedHist->SetBinContent(37,1296); InvMassTopFittedHist->SetBinContent(38,1320); InvMassTopFittedHist->SetBinContent(39,1106); InvMassTopFittedHist->SetBinContent(40,887); InvMassTopFittedHist->SetBinContent(41,747); InvMassTopFittedHist->SetBinContent(42,632); InvMassTopFittedHist->SetBinContent(43,530); InvMassTopFittedHist->SetBinContent(44,453); InvMassTopFittedHist->SetBinContent(45,449); InvMassTopFittedHist->SetBinContent(46,394); InvMassTopFittedHist->SetBinContent(47,335); InvMassTopFittedHist->SetBinContent(48,294); InvMassTopFittedHist->SetBinContent(49,306); InvMassTopFittedHist->SetBinContent(50,267); InvMassTopFittedHist->SetBinContent(51,267); InvMassTopFittedHist->SetBinContent(52,246); InvMassTopFittedHist->SetBinContent(53,273); InvMassTopFittedHist->SetBinContent(54,253); InvMassTopFittedHist->SetBinContent(55,269); InvMassTopFittedHist->SetBinContent(56,260); InvMassTopFittedHist->SetBinContent(57,202); InvMassTopFittedHist->SetBinContent(58,246); InvMassTopFittedHist->SetBinContent(59,238); InvMassTopFittedHist->SetBinContent(60,214); InvMassTopFittedHist->SetBinContent(61,188); InvMassTopFittedHist->SetBinContent(62,207); InvMassTopFittedHist->SetBinContent(63,187); InvMassTopFittedHist->SetBinContent(64,186); InvMassTopFittedHist->SetBinContent(65,159); InvMassTopFittedHist->SetBinContent(66,175); InvMassTopFittedHist->SetBinContent(67,168); InvMassTopFittedHist->SetBinContent(68,161); InvMassTopFittedHist->SetBinContent(69,158); InvMassTopFittedHist->SetBinContent(70,145); InvMassTopFittedHist->SetBinContent(71,134); InvMassTopFittedHist->SetBinContent(72,133); InvMassTopFittedHist->SetBinContent(73,120); InvMassTopFittedHist->SetBinContent(74,110); InvMassTopFittedHist->SetBinContent(75,69); InvMassTopFittedHist->SetEntries(19555); InvMassTopFittedHist->SetStats(0); InvMassTopFittedHist->SetMaximum(1500); TF1 *finalFitt = new TF1("finalFitt",backPlusSignalDoubleGaussian,155,205,16); finalFitt->SetFillColor(19); finalFitt->SetFillStyle(0); finalFitt->SetLineColor(2); finalFitt->SetLineWidth(3); finalFitt->SetChisquare(16.69807); finalFitt->SetNDF(23); finalFitt->SetParameter(0,-169832.7); finalFitt->SetParError(0,0); finalFitt->SetParLimits(0,-169832.7,-169832.7); finalFitt->SetParameter(1,1925.835); finalFitt->SetParError(1,0); finalFitt->SetParLimits(1,1925.835,1925.835); finalFitt->SetParameter(2,-5.225403); finalFitt->SetParError(2,0); finalFitt->SetParLimits(2,-5.225403,-5.225403); finalFitt->SetParameter(3,0); finalFitt->SetParError(3,0); finalFitt->SetParLimits(3,1,1); finalFitt->SetParameter(4,2.709523); finalFitt->SetParError(4,0); finalFitt->SetParLimits(4,2.709523,2.709523); finalFitt->SetParameter(5,4.627354); finalFitt->SetParError(5,0); finalFitt->SetParLimits(5,4.627354,4.627354); finalFitt->SetParameter(6,7.785689); finalFitt->SetParError(6,0); finalFitt->SetParLimits(6,7.785689,7.785689); finalFitt->SetParameter(7,0.5554541); finalFitt->SetParError(7,0); finalFitt->SetParLimits(7,0.5554541,0.5554541); finalFitt->SetParameter(8,0); finalFitt->SetParError(8,0); finalFitt->SetParLimits(8,1,1); finalFitt->SetParameter(9,174.0438); finalFitt->SetParError(9,0.09230055); finalFitt->SetParLimits(9,0,0); finalFitt->SetParameter(10,1.441126); finalFitt->SetParError(10,0.06318991); finalFitt->SetParLimits(10,0,0); finalFitt->SetParameter(11,1525.944); finalFitt->SetParError(11,0); finalFitt->SetParLimits(11,1525.944,1525.944); finalFitt->SetParameter(12,0.03401746); finalFitt->SetParError(12,0.000871179); finalFitt->SetParLimits(12,0,0); finalFitt->SetParameter(13,111.6685); finalFitt->SetParError(13,0); finalFitt->SetParLimits(13,111.6685,111.6685); finalFitt->SetParameter(14,-0.6039902); finalFitt->SetParError(14,0); finalFitt->SetParLimits(14,-0.6039902,-0.6039902); finalFitt->SetParameter(15,0.001683782); finalFitt->SetParError(15,0); finalFitt->SetParLimits(15,0.001683782,0.001683782); finalFitt->GetXaxis()->SetNdivisions(506); finalFitt->GetXaxis()->SetLabelFont(42); finalFitt->GetXaxis()->SetLabelOffset(0.015); finalFitt->GetXaxis()->SetLabelSize(0.06); finalFitt->GetXaxis()->SetTitleSize(0.07); finalFitt->GetXaxis()->SetTitleFont(42); finalFitt->GetYaxis()->SetNdivisions(506); finalFitt->GetYaxis()->SetLabelFont(42); finalFitt->GetYaxis()->SetLabelOffset(0.015); finalFitt->GetYaxis()->SetLabelSize(0.06); finalFitt->GetYaxis()->SetTitleSize(0.07); finalFitt->GetYaxis()->SetTitleOffset(1.1); finalFitt->GetYaxis()->SetTitleFont(42); InvMassTopFittedHist->GetListOfFunctions()->Add(finalFitt); InvMassTopFittedHist->SetLineColor(2); InvMassTopFittedHist->SetLineWidth(2); InvMassTopFittedHist->SetMarkerStyle(20); InvMassTopFittedHist->SetMarkerSize(0.7); InvMassTopFittedHist->GetXaxis()->SetTitle("m_{top}/GeV"); InvMassTopFittedHist->GetYaxis()->SetTitle("Events"); InvMassTopFittedHist->GetXaxis()->SetNdivisions(506); InvMassTopFittedHist->GetXaxis()->SetLabelFont(42); InvMassTopFittedHist->GetXaxis()->SetLabelOffset(0.015); InvMassTopFittedHist->GetXaxis()->SetLabelSize(0.06); InvMassTopFittedHist->GetXaxis()->SetTitleSize(0.07); InvMassTopFittedHist->GetXaxis()->SetTitleFont(42); InvMassTopFittedHist->GetYaxis()->SetNdivisions(506); InvMassTopFittedHist->GetYaxis()->SetLabelFont(42); InvMassTopFittedHist->GetYaxis()->SetLabelOffset(0.015); InvMassTopFittedHist->GetYaxis()->SetLabelSize(0.06); InvMassTopFittedHist->GetYaxis()->SetTitleSize(0.07); InvMassTopFittedHist->GetYaxis()->SetTitleOffset(1.5); InvMassTopFittedHist->GetYaxis()->SetTitleFont(42); InvMassTopFittedHist->GetZaxis()->SetLabelFont(42); InvMassTopFittedHist->GetZaxis()->SetLabelOffset(0.015); InvMassTopFittedHist->GetZaxis()->SetLabelSize(0.06); InvMassTopFittedHist->GetZaxis()->SetTitleSize(0.07); InvMassTopFittedHist->GetZaxis()->SetTitleOffset(1.1); InvMassTopFittedHist->GetZaxis()->SetTitleFont(42); InvMassTopFittedHist->Draw("EP"); TH1 *InvMassTopTrueBackgroundFittedHist = new TH1F("InvMassTopTrueBackgroundFittedHist","# Top quark - true background in signal (Fitted)",75,100,250); InvMassTopTrueBackgroundFittedHist->SetBinContent(0,76); InvMassTopTrueBackgroundFittedHist->SetBinContent(1,23); InvMassTopTrueBackgroundFittedHist->SetBinContent(2,22); InvMassTopTrueBackgroundFittedHist->SetBinContent(3,20); InvMassTopTrueBackgroundFittedHist->SetBinContent(4,24); InvMassTopTrueBackgroundFittedHist->SetBinContent(5,28); InvMassTopTrueBackgroundFittedHist->SetBinContent(6,21); InvMassTopTrueBackgroundFittedHist->SetBinContent(7,30); InvMassTopTrueBackgroundFittedHist->SetBinContent(8,28); InvMassTopTrueBackgroundFittedHist->SetBinContent(9,36); InvMassTopTrueBackgroundFittedHist->SetBinContent(10,46); InvMassTopTrueBackgroundFittedHist->SetBinContent(11,45); InvMassTopTrueBackgroundFittedHist->SetBinContent(12,45); InvMassTopTrueBackgroundFittedHist->SetBinContent(13,33); InvMassTopTrueBackgroundFittedHist->SetBinContent(14,44); InvMassTopTrueBackgroundFittedHist->SetBinContent(15,57); InvMassTopTrueBackgroundFittedHist->SetBinContent(16,44); InvMassTopTrueBackgroundFittedHist->SetBinContent(17,53); InvMassTopTrueBackgroundFittedHist->SetBinContent(18,51); InvMassTopTrueBackgroundFittedHist->SetBinContent(19,55); InvMassTopTrueBackgroundFittedHist->SetBinContent(20,54); InvMassTopTrueBackgroundFittedHist->SetBinContent(21,36); InvMassTopTrueBackgroundFittedHist->SetBinContent(22,57); InvMassTopTrueBackgroundFittedHist->SetBinContent(23,49); InvMassTopTrueBackgroundFittedHist->SetBinContent(24,50); InvMassTopTrueBackgroundFittedHist->SetBinContent(25,46); InvMassTopTrueBackgroundFittedHist->SetBinContent(26,60); InvMassTopTrueBackgroundFittedHist->SetBinContent(27,59); InvMassTopTrueBackgroundFittedHist->SetBinContent(28,55); InvMassTopTrueBackgroundFittedHist->SetBinContent(29,47); InvMassTopTrueBackgroundFittedHist->SetBinContent(30,60); InvMassTopTrueBackgroundFittedHist->SetBinContent(31,57); InvMassTopTrueBackgroundFittedHist->SetBinContent(32,62); InvMassTopTrueBackgroundFittedHist->SetBinContent(33,71); InvMassTopTrueBackgroundFittedHist->SetBinContent(34,57); InvMassTopTrueBackgroundFittedHist->SetBinContent(35,65); InvMassTopTrueBackgroundFittedHist->SetBinContent(36,77); InvMassTopTrueBackgroundFittedHist->SetBinContent(37,60); InvMassTopTrueBackgroundFittedHist->SetBinContent(38,50); InvMassTopTrueBackgroundFittedHist->SetBinContent(39,59); InvMassTopTrueBackgroundFittedHist->SetBinContent(40,54); InvMassTopTrueBackgroundFittedHist->SetBinContent(41,55); InvMassTopTrueBackgroundFittedHist->SetBinContent(42,65); InvMassTopTrueBackgroundFittedHist->SetBinContent(43,48); InvMassTopTrueBackgroundFittedHist->SetBinContent(44,50); InvMassTopTrueBackgroundFittedHist->SetBinContent(45,55); InvMassTopTrueBackgroundFittedHist->SetBinContent(46,56); InvMassTopTrueBackgroundFittedHist->SetBinContent(47,60); InvMassTopTrueBackgroundFittedHist->SetBinContent(48,57); InvMassTopTrueBackgroundFittedHist->SetBinContent(49,68); InvMassTopTrueBackgroundFittedHist->SetBinContent(50,60); InvMassTopTrueBackgroundFittedHist->SetBinContent(51,69); InvMassTopTrueBackgroundFittedHist->SetBinContent(52,53); InvMassTopTrueBackgroundFittedHist->SetBinContent(53,55); InvMassTopTrueBackgroundFittedHist->SetBinContent(54,53); InvMassTopTrueBackgroundFittedHist->SetBinContent(55,67); InvMassTopTrueBackgroundFittedHist->SetBinContent(56,50); InvMassTopTrueBackgroundFittedHist->SetBinContent(57,64); InvMassTopTrueBackgroundFittedHist->SetBinContent(58,66); InvMassTopTrueBackgroundFittedHist->SetBinContent(59,48); InvMassTopTrueBackgroundFittedHist->SetBinContent(60,56); InvMassTopTrueBackgroundFittedHist->SetBinContent(61,47); InvMassTopTrueBackgroundFittedHist->SetBinContent(62,57); InvMassTopTrueBackgroundFittedHist->SetBinContent(63,48); InvMassTopTrueBackgroundFittedHist->SetBinContent(64,48); InvMassTopTrueBackgroundFittedHist->SetBinContent(65,52); InvMassTopTrueBackgroundFittedHist->SetBinContent(66,52); InvMassTopTrueBackgroundFittedHist->SetBinContent(67,52); InvMassTopTrueBackgroundFittedHist->SetBinContent(68,55); InvMassTopTrueBackgroundFittedHist->SetBinContent(69,47); InvMassTopTrueBackgroundFittedHist->SetBinContent(70,40); InvMassTopTrueBackgroundFittedHist->SetBinContent(71,40); InvMassTopTrueBackgroundFittedHist->SetBinContent(72,41); InvMassTopTrueBackgroundFittedHist->SetBinContent(73,37); InvMassTopTrueBackgroundFittedHist->SetBinContent(74,47); InvMassTopTrueBackgroundFittedHist->SetBinContent(75,27); InvMassTopTrueBackgroundFittedHist->SetEntries(3811); InvMassTopTrueBackgroundFittedHist->SetStats(0); /* TF1 *backgroundFitt = new TF1("backgroundFitt","",150,215); backgroundFitt->SetFillColor(19); backgroundFitt->SetFillStyle(0); backgroundFitt->SetLineWidth(3); backgroundFitt->SetChisquare(25.47665); backgroundFitt->SetNDF(30); backgroundFitt->GetXaxis()->SetNdivisions(506); backgroundFitt->GetXaxis()->SetLabelFont(42); backgroundFitt->GetXaxis()->SetLabelOffset(0.015); backgroundFitt->GetXaxis()->SetLabelSize(0.06); backgroundFitt->GetXaxis()->SetTitleSize(0.07); backgroundFitt->GetXaxis()->SetTitleFont(42); backgroundFitt->GetYaxis()->SetNdivisions(506); backgroundFitt->GetYaxis()->SetLabelFont(42); backgroundFitt->GetYaxis()->SetLabelOffset(0.015); backgroundFitt->GetYaxis()->SetLabelSize(0.06); backgroundFitt->GetYaxis()->SetTitleSize(0.07); backgroundFitt->GetYaxis()->SetTitleOffset(1.1); backgroundFitt->GetYaxis()->SetTitleFont(42); backgroundFitt->SetParameter(0,111.6685); backgroundFitt->SetParError(0,135.9898); backgroundFitt->SetParLimits(0,0,0); backgroundFitt->SetParameter(1,-0.6039902); backgroundFitt->SetParError(1,1.498874); backgroundFitt->SetParLimits(1,0,0); backgroundFitt->SetParameter(2,0.001683782); backgroundFitt->SetParError(2,0.004095158); backgroundFitt->SetParLimits(2,0,0); InvMassTopTrueBackgroundFittedHist->GetListOfFunctions()->Add(backgroundFitt); */ InvMassTopTrueBackgroundFittedHist->SetFillColor(4); InvMassTopTrueBackgroundFittedHist->SetFillStyle(3004); InvMassTopTrueBackgroundFittedHist->SetLineColor(4); InvMassTopTrueBackgroundFittedHist->SetLineWidth(2); InvMassTopTrueBackgroundFittedHist->SetMarkerStyle(20); InvMassTopTrueBackgroundFittedHist->SetMarkerSize(0.7); InvMassTopTrueBackgroundFittedHist->GetXaxis()->SetTitle("m_{top}/GeV"); InvMassTopTrueBackgroundFittedHist->GetYaxis()->SetTitle("Events"); InvMassTopTrueBackgroundFittedHist->GetXaxis()->SetNdivisions(506); InvMassTopTrueBackgroundFittedHist->GetXaxis()->SetLabelFont(42); InvMassTopTrueBackgroundFittedHist->GetXaxis()->SetLabelOffset(0.015); InvMassTopTrueBackgroundFittedHist->GetXaxis()->SetLabelSize(0.06); InvMassTopTrueBackgroundFittedHist->GetXaxis()->SetTitleSize(0.07); InvMassTopTrueBackgroundFittedHist->GetXaxis()->SetTitleFont(42); InvMassTopTrueBackgroundFittedHist->GetYaxis()->SetNdivisions(506); InvMassTopTrueBackgroundFittedHist->GetYaxis()->SetLabelFont(42); InvMassTopTrueBackgroundFittedHist->GetYaxis()->SetLabelOffset(0.015); InvMassTopTrueBackgroundFittedHist->GetYaxis()->SetLabelSize(0.06); InvMassTopTrueBackgroundFittedHist->GetYaxis()->SetTitleSize(0.07); InvMassTopTrueBackgroundFittedHist->GetYaxis()->SetTitleOffset(1.3); InvMassTopTrueBackgroundFittedHist->GetYaxis()->SetTitleFont(42); InvMassTopTrueBackgroundFittedHist->GetZaxis()->SetLabelFont(42); InvMassTopTrueBackgroundFittedHist->GetZaxis()->SetLabelOffset(0.015); InvMassTopTrueBackgroundFittedHist->GetZaxis()->SetLabelSize(0.06); InvMassTopTrueBackgroundFittedHist->GetZaxis()->SetTitleSize(0.07); InvMassTopTrueBackgroundFittedHist->GetZaxis()->SetTitleOffset(1.1); InvMassTopTrueBackgroundFittedHist->GetZaxis()->SetTitleFont(42); InvMassTopTrueBackgroundFittedHist->Draw("same HIST"); TLatex * tex = new TLatex(110,1320,"b) bq#bar{q} #bar{b}q#bar{q}"); tex->SetTextColor(1); tex->SetTextFont(42); tex->SetTextSize(0.06); tex->SetLineWidth(2); tex->Draw(); TLatex * tex = new TLatex(200,1320,"100fb^{-1}"); tex->SetTextColor(1); tex->SetTextFont(42); tex->SetTextSize(0.06); tex->SetLineWidth(2); tex->Draw(); canv->Modified(); canv->cd(); canv->SetSelected(canv); canv->SaveAs("FH_InvMassTopFitted.eps"); canv->SaveAs("FH_InvMassTopFitted.gif"); }