File indexing completed on 2024-04-06 12:24:14
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031 #include <TROOT.h>
0032 #include <TChain.h>
0033 #include <TFile.h>
0034 #include <TCanvas.h>
0035 #include <TH1F.h>
0036 #include <TH2F.h>
0037 #include <TTree.h>
0038 #include <TGraph.h>
0039 #include "tdrstyle.C"
0040
0041 using namespace RooFit;
0042
0043 void makeSignalPdf();
0044 void makeBkgPdf();
0045
0046
0047 RooRealVar *rooMass_;
0048 RooAbsPdf* signalShapePdfTT_;
0049 RooAbsPdf* signalShapePdfTF_BB_;
0050 RooAbsPdf* signalShapePdfTF_End_;
0051 RooAbsPdf *bkgShapePdfTF_BB_;
0052 RooAbsPdf *bkgShapePdfTF_End_;
0053
0054
0055
0056 TFile* Zeelineshape_file;
0057 TCanvas *c;
0058
0059
0060 const float A_BB= 0.2257;
0061 const float A_BE= 0.1612;
0062 const float A_EE= 0.0476;
0063
0064
0065 const char* selection = "WP80";
0066
0067
0068
0069 const double intLumi = 2.88;
0070
0071
0072
0073 const bool FIX_NUIS_PARS=false;
0074
0075
0076
0077
0078 void ThreeCategorySimZFitter()
0079 {
0080
0081 rooMass_ = new RooRealVar("mass","m_{ee}",60.0, 120.0, "GeV/c^{2}");
0082 rooMass_->setBins(120.0);
0083 RooRealVar Mass = *rooMass_;
0084
0085
0086
0087 RooCategory sample("sample","") ;
0088 sample.defineType("BB_pass", 1) ;
0089 sample.defineType("BB_fail", 2) ;
0090 sample.defineType("End_fail", 3) ;
0091
0092
0093 gROOT->cd();
0094 char inFile[50];
0095 sprintf(inFile, "ZeeEvents_%s.root", selection);
0096 TFile fin(inFile, "read");
0097 TTree* treeTT = (TTree*) fin.Get("tree");
0098 sprintf(inFile, "ZeeEvents_%s_TF.root", selection);
0099 TFile fin2(inFile, "read");
0100 TTree* treeTF = (TTree*) fin2.Get("tree");
0101 TTree* treeTF_BB = treeTF->CopyTree("tag_gsfEle_isEB>0 && abs(probe_eta)<1.5");
0102 TTree* treeTF_End = treeTF->CopyTree("!(tag_gsfEle_isEB>0 && abs(probe_eta)<1.5)");
0103
0104
0105
0106 RooDataSet* data_TT = new RooDataSet("data_TT","data_TT", treeTT, Mass);
0107 RooDataSet* data_TF_BB = new RooDataSet("data_TF_BB","data_TF_BB",treeTF_BB, Mass);
0108 RooDataSet* data_TF_End = new RooDataSet("data_TF_End","data_TF_End", treeTF_End, Mass);
0109
0110 RooDataSet* data = new RooDataSet( "data","data",
0111 RooArgList(Mass),Index(sample),
0112 Import("BB_pass",*data_TT),
0113 Import("BB_fail",*data_TF_BB),
0114 Import("End_fail",*data_TF_End) );
0115
0116 data->get()->Print();
0117 cout << "Made dataset" << endl;
0118
0119
0120
0121
0122
0123 makeSignalPdf();
0124 cout << "Made signal pdf" << endl;
0125 makeBkgPdf();
0126 cout << "Made bkg pdf" << endl;
0127
0128
0129 RooRealVar lumi("lumi","lumi", intLumi);
0130
0131
0132
0133 RooRealVar xsec("xsec","xsec", 912.187, 200.0, 2000.0);
0134
0135
0136
0137 RooRealVar eff_B("eff_B","eff_B", 0.93, 0.0, 1.0);
0138 RooRealVar eff_E("eff_E","eff_E", 0.91, 0.0, 1.0);
0139
0140
0141
0142
0143 RooRealVar acc_BB("acc_BB","acc_BB", A_BB);
0144 RooRealVar acc_EB("acc_EB","acc_EB", A_BE);
0145 RooRealVar acc_EE("acc_EE","acc_EE", A_EE);
0146 RooRealVar acc("acc","acc", A_BB+A_BE+A_EE);
0147
0148
0149
0150
0151 float numBkgHighPurity=11.8;
0152 if(!strcmp(selection,"WP80")) numBkgHighPurity=3.0;
0153 RooRealVar nBkgTT("nBkgTT","nBkgTT", numBkgHighPurity);
0154 RooRealVar nBkgTF_BB("nBkgTF_BB","nBkgTF_BB", 58.0, 0.0, 500.);
0155 RooRealVar nBkgTF_End("nBkgTF_End","nBkgTF_End", 110.2, 0.0, 500.);
0156 if(FIX_NUIS_PARS) nBkgTF_BB.setConstant(true);
0157 if(FIX_NUIS_PARS) nBkgTF_End.setConstant(true);
0158
0159
0160
0161
0162
0163
0164
0165 const char* formula = 0;
0166 RooArgList* args;
0167 formula="lumi*xsec*(acc_BB*eff_B*eff_B + acc_EB*eff_B*eff_E + acc_EE*eff_E*eff_E)+nBkgTT";
0168 args = new RooArgList(lumi,xsec,acc_BB,acc_EB,acc_EE,eff_B,eff_E,nBkgTT);
0169 RooFormulaVar nSigTT("nSigTT", formula, *args);
0170 delete args;
0171
0172 formula="lumi*xsec*acc_BB*eff_B*(1.0-eff_B)";
0173 args = new RooArgList(lumi,xsec,acc_BB,eff_B);
0174 RooFormulaVar nSigTF_BB("nSigTF_BB",formula, *args);
0175 delete args;
0176
0177 formula="lumi*xsec*(0.5*acc_EB*(eff_B*(1.0-eff_E)+eff_E*(1.0-eff_B)) + acc_EE*eff_E*(1.0-eff_E))";
0178 args = new RooArgList(lumi,xsec,acc_EB,eff_B,eff_E,acc_EE);
0179
0180 RooFormulaVar nSigTF_End("nSigTF_EB",formula, *args);
0181 delete args;
0182
0183
0184
0185
0186 RooArgList componentsTF_BB(*signalShapePdfTF_BB_,*bkgShapePdfTF_BB_);
0187 RooArgList componentsTF_End(*signalShapePdfTF_End_,*bkgShapePdfTF_End_);
0188
0189 RooArgList yieldsTF_BB(nSigTF_BB, nBkgTF_BB );
0190 RooArgList yieldsTF_End(nSigTF_End, nBkgTF_End);
0191
0192 RooExtendPdf pdfTT("pdfTT","extended sum pdf", *signalShapePdfTT_, nSigTT);
0193 RooAddPdf pdfTF_BB("pdfTF_BB","extended sum pdf",componentsTF_BB, yieldsTF_BB);
0194 RooAddPdf pdfTF_End("pdfTF_End","extended sum pdf",componentsTF_End, yieldsTF_End);
0195
0196
0197
0198 RooSimultaneous totalPdf("totalPdf","totalPdf", sample);
0199 totalPdf.addPdf(pdfTT,"BB_pass");
0200 totalPdf.Print();
0201 totalPdf.addPdf(pdfTF_BB,"BB_fail");
0202 totalPdf.addPdf(pdfTF_End,"End_fail");
0203 totalPdf.Print();
0204
0205
0206
0207 RooFitResult *fitResult = totalPdf.fitTo(*data, Save(true),
0208 RooFit::Extended(true),
0209 RooFit::Minos(true),
0210 PrintEvalErrors(-1),
0211 Warnings(false)
0212 );
0213 fitResult->Print("v");
0214
0215
0216
0217 gROOT->ProcessLine(".L ~/tdrstyle.C");
0218 setTDRStyle();
0219 tdrStyle->SetErrorX(0.5);
0220 tdrStyle->SetPadLeftMargin(0.19);
0221 tdrStyle->SetPadRightMargin(0.10);
0222 tdrStyle->SetPadBottomMargin(0.15);
0223 tdrStyle->SetLegendBorderSize(0);
0224 tdrStyle->SetTitleYOffset(1.5);
0225 RooAbsData::ErrorType errorType = RooAbsData::SumW2;
0226
0227
0228 TString cname = Form("Zmass_TT_%dnb", (int)(1000*intLumi) );
0229 c = new TCanvas(cname,cname,500,500);
0230 RooPlot* frame1 = Mass.frame(60., 120., 60);
0231 data_TT->plotOn(frame1,RooFit::DataError(errorType));
0232 pdfTT.plotOn(frame1,ProjWData(*data_TT));
0233 frame1->SetMinimum(0);
0234 frame1->Draw("e0");
0235 TPaveText *plotlabel = new TPaveText(0.23,0.87,0.43,0.92,"NDC");
0236 plotlabel->SetTextColor(kBlack);
0237 plotlabel->SetFillColor(kWhite);
0238 plotlabel->SetBorderSize(0);
0239 plotlabel->SetTextAlign(12);
0240 plotlabel->SetTextSize(0.03);
0241 plotlabel->AddText("CMS Preliminary 2010");
0242 TPaveText *plotlabel2 = new TPaveText(0.23,0.82,0.43,0.87,"NDC");
0243 plotlabel2->SetTextColor(kBlack);
0244 plotlabel2->SetFillColor(kWhite);
0245 plotlabel2->SetBorderSize(0);
0246 plotlabel2->SetTextAlign(12);
0247 plotlabel2->SetTextSize(0.03);
0248 plotlabel2->AddText("#sqrt{s} = 7 TeV");
0249 TPaveText *plotlabel3 = new TPaveText(0.23,0.75,0.43,0.80,"NDC");
0250 plotlabel3->SetTextColor(kBlack);
0251 plotlabel3->SetFillColor(kWhite);
0252 plotlabel3->SetBorderSize(0);
0253 plotlabel3->SetTextAlign(12);
0254 plotlabel3->SetTextSize(0.03);
0255 char temp[100];
0256 sprintf(temp, "%.1f", intLumi);
0257 plotlabel3->AddText((string("#int#font[12]{L}dt = ") +
0258 temp + string(" pb^{ -1}")).c_str());
0259 TPaveText *plotlabel4 = new TPaveText(0.6,0.87,0.8,0.92,"NDC");
0260 plotlabel4->SetTextColor(kBlack);
0261 plotlabel4->SetFillColor(kWhite);
0262 plotlabel4->SetBorderSize(0);
0263 plotlabel4->SetTextAlign(12);
0264 plotlabel4->SetTextSize(0.03);
0265 double nsig = nSigTT.getVal();
0266 double nsigerr = nSigTT.getPropagatedError(*fitResult) ;
0267 sprintf(temp, "Signal = %.1f #pm %.1f", nsig, nsigerr);
0268 plotlabel4->AddText(temp);
0269 TPaveText *plotlabel5 = new TPaveText(0.6,0.82,0.8,0.87,"NDC");
0270 plotlabel5->SetTextColor(kBlack);
0271 plotlabel5->SetFillColor(kWhite);
0272 plotlabel5->SetBorderSize(0);
0273 plotlabel5->SetTextAlign(12);
0274 plotlabel5->SetTextSize(0.03);
0275 sprintf(temp, "#epsilon_{EB} = %.3f #pm %.3f", eff_B.getVal(), eff_B.getError() );
0276 plotlabel5->AddText(temp);
0277 TPaveText *plotlabel6 = new TPaveText(0.6,0.77,0.8,0.82,"NDC");
0278 plotlabel6->SetTextColor(kBlack);
0279 plotlabel6->SetFillColor(kWhite);
0280 plotlabel6->SetBorderSize(0);
0281 plotlabel6->SetTextAlign(12);
0282 plotlabel6->SetTextSize(0.03);
0283 sprintf(temp, "#epsilon_{EE} = %.3f #pm %.3f", eff_E.getVal(), eff_E.getError() );
0284 plotlabel6->AddText(temp);
0285 TPaveText *plotlabel7 = new TPaveText(0.6,0.72,0.8,0.77,"NDC");
0286 plotlabel7->SetTextColor(kBlack);
0287 plotlabel7->SetFillColor(kWhite);
0288 plotlabel7->SetBorderSize(0);
0289 plotlabel7->SetTextAlign(12);
0290 plotlabel7->SetTextSize(0.03);
0291 sprintf(temp, "#sigma = %.1f #pm %.1f pb", xsec.getVal(), xsec.getError());
0292 plotlabel7->AddText(temp);
0293 plotlabel->Draw();
0294 plotlabel2->Draw();
0295 plotlabel3->Draw();
0296 plotlabel4->Draw();
0297 plotlabel5->Draw();
0298 plotlabel6->Draw();
0299 plotlabel7->Draw();
0300
0301
0302
0303
0304
0305
0306
0307 cname = Form("Zmass_TF_BB%dnb", (int)(1000*intLumi) );
0308 c = new TCanvas(cname,cname,500,500);
0309 RooPlot* frame2 = Mass.frame(60., 120., 12);
0310 data_TF_BB->plotOn(frame2,RooFit::DataError(errorType));
0311 pdfTF_BB.plotOn(frame2,ProjWData(*data_TF_BB),
0312 Components(*signalShapePdfTF_BB_),DrawOption("LF"),FillStyle(1001),FillColor(kOrange),VLines());
0313 pdfTF_BB.plotOn(frame2,ProjWData(*data_TF_BB));
0314 pdfTF_BB.plotOn(frame2,ProjWData(*data_TF_BB),
0315 Components(*bkgShapePdfTF_BB_),LineColor(kRed));
0316 data_TF_BB->plotOn(frame2,RooFit::DataError(errorType));
0317 frame2->SetMinimum(0);
0318 frame2->Draw("e0");
0319 frame2->GetYaxis()->SetNdivisions(505);
0320 plotlabel = new TPaveText(0.23,0.87,0.43,0.92,"NDC");
0321 plotlabel->SetTextColor(kBlack);
0322 plotlabel->SetFillColor(kWhite);
0323 plotlabel->SetBorderSize(0);
0324 plotlabel->SetTextAlign(12);
0325 plotlabel->SetTextSize(0.03);
0326 plotlabel->AddText("CMS Preliminary 2010");
0327 plotlabel2 = new TPaveText(0.23,0.82,0.43,0.87,"NDC");
0328 plotlabel2->SetTextColor(kBlack);
0329 plotlabel2->SetFillColor(kWhite);
0330 plotlabel2->SetBorderSize(0);
0331 plotlabel2->SetTextAlign(12);
0332 plotlabel2->SetTextSize(0.03);
0333 plotlabel2->AddText("#sqrt{s} = 7 TeV");
0334 plotlabel3 = new TPaveText(0.23,0.75,0.43,0.80,"NDC");
0335 plotlabel3->SetTextColor(kBlack);
0336 plotlabel3->SetFillColor(kWhite);
0337 plotlabel3->SetBorderSize(0);
0338 plotlabel3->SetTextAlign(12);
0339 plotlabel3->SetTextSize(0.03);
0340 char temp2[100];
0341 sprintf(temp2, "%.1f", intLumi);
0342 plotlabel3->AddText((string("#int#font[12]{L}dt = ") +
0343 temp2 + string(" pb^{ -1}")).c_str());
0344 plotlabel4 = new TPaveText(0.6,0.87,0.8,0.92,"NDC");
0345 plotlabel4->SetTextColor(kBlack);
0346 plotlabel4->SetFillColor(kWhite);
0347 plotlabel4->SetBorderSize(0);
0348 plotlabel4->SetTextAlign(12);
0349 plotlabel4->SetTextSize(0.03);
0350 nsig = nSigTF_BB.getVal();
0351 nsigerr = nSigTF_BB.getPropagatedError(*fitResult) ;
0352 sprintf(temp2, "Signal = %.2f #pm %.2f", nsig, nsigerr);
0353 plotlabel4->AddText(temp2);
0354 plotlabel5 = new TPaveText(0.6,0.82,0.8,0.87,"NDC");
0355 plotlabel5->SetTextColor(kBlack);
0356 plotlabel5->SetFillColor(kWhite);
0357 plotlabel5->SetBorderSize(0);
0358 plotlabel5->SetTextAlign(12);
0359 plotlabel5->SetTextSize(0.03);
0360 sprintf(temp2, "Bkg = %.2f #pm %.2f", nBkgTF_BB.getVal(), nBkgTF_BB.getError());
0361 plotlabel5->AddText(temp2);
0362 plotlabel6 = new TPaveText(0.6,0.77,0.8,0.82,"NDC");
0363 plotlabel6->SetTextColor(kBlack);
0364 plotlabel6->SetFillColor(kWhite);
0365 plotlabel6->SetBorderSize(0);
0366 plotlabel6->SetTextAlign(12);
0367 plotlabel6->SetTextSize(0.03);
0368 sprintf(temp2, "#epsilon_{EB} = %.3f #pm %.3f", eff_B.getVal(), eff_B.getError() );
0369 plotlabel6->AddText(temp2);
0370 plotlabel7 = new TPaveText(0.6,0.72,0.8,0.77,"NDC");
0371 plotlabel7->SetTextColor(kBlack);
0372 plotlabel7->SetFillColor(kWhite);
0373 plotlabel7->SetBorderSize(0);
0374 plotlabel7->SetTextAlign(12);
0375 plotlabel7->SetTextSize(0.03);
0376 sprintf(temp2, "#epsilon_{EE} = %.3f #pm %.3f", eff_E.getVal(), eff_E.getError() );
0377 plotlabel7->AddText(temp2);
0378
0379 plotlabel->Draw();
0380 plotlabel2->Draw();
0381 plotlabel3->Draw();
0382 plotlabel4->Draw();
0383 plotlabel5->Draw();
0384 plotlabel6->Draw();
0385 plotlabel7->Draw();
0386
0387
0388
0389
0390
0391
0392
0393
0394
0395
0396 cname = Form("Zmass_TF_EndCaps%dnb", (int)(1000*intLumi) );
0397 c = new TCanvas(cname,cname,500,500);
0398 RooPlot* frame3 = Mass.frame(60., 120., 12);
0399 data_TF_End->plotOn(frame3,RooFit::DataError(errorType));
0400 pdfTF_End.plotOn(frame3,ProjWData(*data_TF_End),
0401 Components(*signalShapePdfTF_End_),DrawOption("LF"),FillStyle(1001),FillColor(kOrange),VLines());
0402 pdfTF_End.plotOn(frame3,ProjWData(*data_TF_End),
0403 Components(*bkgShapePdfTF_End_),LineColor(kRed));
0404 pdfTF_End.plotOn(frame3,ProjWData(*data_TF_End));
0405 data_TF_End->plotOn(frame3,RooFit::DataError(errorType));
0406 frame3->SetMinimum(0);
0407 frame3->Draw("e0");
0408 frame3->GetYaxis()->SetNdivisions(505);
0409 plotlabel = new TPaveText(0.23,0.87,0.43,0.92,"NDC");
0410 plotlabel->SetTextColor(kBlack);
0411 plotlabel->SetFillColor(kWhite);
0412 plotlabel->SetBorderSize(0);
0413 plotlabel->SetTextAlign(12);
0414 plotlabel->SetTextSize(0.03);
0415 plotlabel->AddText("CMS Preliminary 2010");
0416 plotlabel2 = new TPaveText(0.23,0.82,0.43,0.87,"NDC");
0417 plotlabel2->SetTextColor(kBlack);
0418 plotlabel2->SetFillColor(kWhite);
0419 plotlabel2->SetBorderSize(0);
0420 plotlabel2->SetTextAlign(12);
0421 plotlabel2->SetTextSize(0.03);
0422 plotlabel2->AddText("#sqrt{s} = 7 TeV");
0423 plotlabel3 = new TPaveText(0.23,0.75,0.43,0.80,"NDC");
0424 plotlabel3->SetTextColor(kBlack);
0425 plotlabel3->SetFillColor(kWhite);
0426 plotlabel3->SetBorderSize(0);
0427 plotlabel3->SetTextAlign(12);
0428 plotlabel3->SetTextSize(0.03);
0429 char temp3[100];
0430 sprintf(temp3, "%.1f", intLumi);
0431 plotlabel3->AddText((string("#int#font[12]{L}dt = ") +
0432 temp3 + string(" pb^{ -1}")).c_str());
0433 plotlabel4 = new TPaveText(0.6,0.87,0.8,0.92,"NDC");
0434 plotlabel4->SetTextColor(kBlack);
0435 plotlabel4->SetFillColor(kWhite);
0436 plotlabel4->SetBorderSize(0);
0437 plotlabel4->SetTextAlign(12);
0438 plotlabel4->SetTextSize(0.03);
0439 nsig = nSigTF_End.getVal();
0440 nsigerr = nSigTF_End.getPropagatedError(*fitResult) ;
0441 sprintf(temp3, "Signal = %.2f #pm %.2f", nsig, nsigerr);
0442 plotlabel4->AddText(temp3);
0443 plotlabel5 = new TPaveText(0.6,0.82,0.8,0.87,"NDC");
0444 plotlabel5->SetTextColor(kBlack);
0445 plotlabel5->SetFillColor(kWhite);
0446 plotlabel5->SetBorderSize(0);
0447 plotlabel5->SetTextAlign(12);
0448 plotlabel5->SetTextSize(0.03);
0449 sprintf(temp3, "Bkg = %.2f #pm %.2f", nBkgTF_End.getVal(), nBkgTF_End.getError());
0450 plotlabel5->AddText(temp3);
0451 plotlabel6 = new TPaveText(0.6,0.77,0.8,0.82,"NDC");
0452 plotlabel6->SetTextColor(kBlack);
0453 plotlabel6->SetFillColor(kWhite);
0454 plotlabel6->SetBorderSize(0);
0455 plotlabel6->SetTextAlign(12);
0456 plotlabel6->SetTextSize(0.03);
0457 sprintf(temp3, "#epsilon_{EB} = %.3f #pm %.3f", eff_B.getVal(), eff_B.getError() );
0458 plotlabel6->AddText(temp3);
0459 plotlabel7 = new TPaveText(0.6,0.72,0.8,0.77,"NDC");
0460 plotlabel7->SetTextColor(kBlack);
0461 plotlabel7->SetFillColor(kWhite);
0462 plotlabel7->SetBorderSize(0);
0463 plotlabel7->SetTextAlign(12);
0464 plotlabel7->SetTextSize(0.03);
0465 sprintf(temp3, "#epsilon_{EE} = %.3f #pm %.3f", eff_E.getVal(), eff_E.getError() );
0466 plotlabel7->AddText(temp3);
0467
0468 plotlabel->Draw();
0469 plotlabel2->Draw();
0470 plotlabel3->Draw();
0471 plotlabel4->Draw();
0472 plotlabel5->Draw();
0473 plotlabel6->Draw();
0474 plotlabel7->Draw();
0475
0476
0477
0478
0479
0480
0481
0482
0483
0484
0485
0486
0487 }
0488
0489
0490
0491
0492
0493
0494 void makeSignalPdf() {
0495
0496
0497 Zeelineshape_file = new TFile("../Zlineshapes.root", "READ");
0498
0499
0500 TH1* histbbpass = (TH1D*) Zeelineshape_file->Get("pass_BB");
0501 TH1* histebpass = (TH1D*) Zeelineshape_file->Get("pass_BE");
0502 TH1* histeepass = (TH1D*) Zeelineshape_file->Get("pass_EE");
0503
0504 TH1D* th1_TT = (TH1D*) histbbpass->Clone("th1_TT");
0505 th1_TT->Add(histebpass);
0506 th1_TT->Add(histeepass);
0507
0508 RooRealVar* zero = new RooRealVar("zero","", 0.0);
0509 RooDataHist* rdh_TT = new RooDataHist("rdh_TT","", *rooMass_, th1_TT);
0510 RooAbsPdf* signalModelTT_ = new RooHistPdf("signalModelTT", "", *rooMass_, *rdh_TT);
0511 RooRealVar* resoTT_ = new RooRealVar("resoTT","resoTT",1.88, 0.0, 5.);
0512 if(FIX_NUIS_PARS) resoTT_->setConstant(true);
0513 RooGaussModel* resModelTT_ = new RooGaussModel("resModelTT","gaussian resolution model",
0514 *rooMass_, *zero, *resoTT_);
0515 signalShapePdfTT_ = new RooFFTConvPdf("sigModel","final signal shape",
0516 *rooMass_, *signalModelTT_, *resModelTT_);
0517
0518
0519
0520 TH1* histbb = (TH1D*) Zeelineshape_file->Get("fail_BB");
0521 TH1* histeb = (TH1D*) Zeelineshape_file->Get("fail_BE");
0522 TH1* histee = (TH1D*) Zeelineshape_file->Get("fail_EE");
0523
0524 TH1D* th1_TF = (TH1D*) histeb->Clone("th1_TF");
0525 th1_TF->Add(histee);
0526
0527 RooDataHist* rdh_TF_BB_ = new RooDataHist("rdh_TF_BB","", *rooMass_, histbb);
0528 RooAbsPdf* signalModelTF_BB_ = new RooHistPdf("signalModelTF_BB",
0529 "",*rooMass_,*rdh_TF_BB_);
0530 RooRealVar* resoTF_BB_ = new RooRealVar("resoTF_BB","resoTF_BB", 2.76762, 0.0, 10.);
0531 if(FIX_NUIS_PARS) resoTF_BB_->setConstant(true);
0532
0533 RooGaussModel* resModelTF_BB_ = new RooGaussModel("resModelTF_BB",
0534 "gaussian resolution model", *rooMass_, *zero, *resoTF_BB_);
0535 signalShapePdfTF_BB_ = new RooFFTConvPdf("signalShapePdfTF_BB","final signal shape",
0536 *rooMass_, *signalModelTF_BB_, *resModelTF_BB_);
0537
0538
0539 RooDataHist* rdh_TF_End_ = new RooDataHist("rdh_TF_End","", *rooMass_, th1_TF);
0540 RooAbsPdf* signalModelTF_End_ = new RooHistPdf("signalModelTF_End", "",
0541 *rooMass_, *rdh_TF_End_);
0542 RooRealVar* resoTF_End_ = new RooRealVar("resoTF_End","resoTF_End", 2.76563, 0.0, 10.);
0543 if(FIX_NUIS_PARS) resoTF_End_->setConstant(true);
0544 RooGaussModel* resModelTF_End_ = new RooGaussModel("resModelTF_End",
0545 "gaussian resolution model", *rooMass_, *zero, *resoTF_End_);
0546 signalShapePdfTF_End_ = new RooFFTConvPdf("signalShapePdfTF_End","final signal shape",
0547 *rooMass_, *signalModelTF_End_, *resModelTF_End_);
0548 }
0549
0550
0551
0552
0553
0554 void makeBkgPdf()
0555 {
0556
0557 RooRealVar* bkgGammaFailTF_BB_ = new RooRealVar("bkgGammaFailTF_BB",
0558 "",-0.028394, -10., 10.);
0559 if(FIX_NUIS_PARS) bkgGammaFailTF_BB_->setConstant(true);
0560 bkgShapePdfTF_BB_ = new RooExponential("bkgShapePdfTF_BB",
0561 "",*rooMass_, *bkgGammaFailTF_BB_);
0562 RooRealVar* bkgGammaFailTF_End_ = new RooRealVar("bkgGammaFailTF_End",
0563 "",-0.017778, -10., 10.);
0564 if(FIX_NUIS_PARS) bkgGammaFailTF_End_->setConstant(true);
0565 bkgShapePdfTF_End_ = new RooExponential("bkgShapePdfTF_End",
0566 "",*rooMass_, *bkgGammaFailTF_End_);
0567 }
0568
0569
0570
0571
0572