Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:24:13

0001 //================================================================================================
0002 //
0003 //
0004 //________________________________________________________________________________________________
0005 
0006 #if !defined(__CINT__) || defined(__MAKECINT__)
0007 #include <TROOT.h>       // access to gROOT, entry point to ROOT system
0008 #include <TSystem.h>     // interface to OS
0009 #include <TStyle.h>      // class to handle ROOT plotting style
0010 #include <TCanvas.h>     // class for drawing
0011 #include <TBenchmark.h>  // class to track macro running statistics
0012 #include <iostream>      // standard I/O
0013 #include <iomanip>
0014 #include <fstream>
0015 
0016 // RooFit headers
0017 #include "RooRealVar.h"
0018 #include "RooDataSet.h"
0019 #include "RooCategory.h"
0020 #include "RooArgList.h"
0021 #include "RooDataHist.h"
0022 #include "RooFormulaVar.h"
0023 #include "RooHistPdf.h"
0024 #include "RooAddPdf.h"
0025 #include "RooSimultaneous.h"
0026 #include "RooGaussian.h"
0027 #include "RooConstVar.h"
0028 #include "RooFitResult.h"
0029 #include "RooExponential.h"
0030 #include "RooFFTConvPdf.h"
0031 
0032 #include "TFile.h"
0033 #include "TH1D.h"
0034 #include "TPaveText.h"
0035 #include "RooPlot.h"
0036 
0037 #endif
0038 
0039 #define LUMINOSITY 2.88  //(in pb^-1)
0040 #define NBINSPASS 60
0041 #define NBINSFAIL 24
0042 
0043 ofstream effTextFile("efficiency.txt");
0044 
0045 double ErrorInProduct(double x, double errx, double y, double erry, double corr) {
0046   double xFrErr = errx / x;
0047   double yFrErr = erry / y;
0048   return sqrt(pow(xFrErr, 2) + pow(yFrErr, 2) + 2.0 * corr * xFrErr * yFrErr) * x * y;
0049 }
0050 
0051 RooRealVar* LoadParameters(string filename, string label, string parname) {
0052   RooRealVar* newVar = 0;
0053 
0054   // now read in the parameters from the file.  Stored in the file as
0055   // parameter manager   |   name   | initial val  | min  | max  | step
0056   fstream parameter_file(filename.c_str(), ios::in);
0057   if (!parameter_file) {
0058     cout << "Error:  Couldn't open parameters file " << filename << endl;
0059     return false;
0060   }
0061 
0062   string name;
0063   string category;
0064   double initial_val, min, max, step;
0065 
0066   char c;
0067   Bool_t foundPar = kFALSE;
0068   while (true) {
0069     // skip white spaces and look for a #
0070     while (parameter_file.get(c)) {
0071       if (isspace(c) || c == '\n')
0072         continue;
0073       else if (c == '#')
0074         while (c != '\n')
0075           parameter_file.get(c);
0076       else {
0077         parameter_file.putback(c);
0078         break;
0079       }
0080     }
0081     if (parameter_file.fail())
0082       break;
0083 
0084     parameter_file >> category >> name >> initial_val >> min >> max >> step;
0085     if (parameter_file.fail())
0086       break;
0087 
0088     if (category == label && parname == name) {
0089       // create a new fit parameter
0090       newVar = new RooRealVar(name.c_str(), name.c_str(), initial_val, min, max);
0091       if (step == 0) {
0092         newVar->setConstant(kTRUE);
0093       }
0094 
0095       break;
0096     }
0097   }  //end while loop
0098 
0099   if (!newVar) {
0100     cout << "Could not load parameter " << parname << " from file " << filename << " , category " << label << endl;
0101     assert(newVar);
0102   }
0103 
0104   return newVar;
0105 }
0106 
0107 void PrintParameter(RooRealVar* var, string label, string name) {
0108   cout.width(50);
0109   cout << left << label;
0110   cout.width(40);
0111   cout << left << name;
0112   cout.precision(5);
0113   cout.width(15);
0114   cout << left << scientific << var->getVal();
0115   cout.width(15);
0116   cout << left << scientific << var->getMin();
0117   cout.width(15);
0118   cout << left << scientific << var->getMax();
0119   cout.width(15);
0120   if (var->getAttribute("Constant")) {
0121     cout << left << scientific << 0.0;
0122   } else {
0123     cout << left << scientific << 1.0;
0124   }
0125   cout << endl;
0126 }
0127 
0128 void performFit(string inputDir,
0129                 string inputParameterFile,
0130                 string label,
0131                 string PassInputDataFilename,
0132                 string FailInputDataFilename,
0133                 string PassSignalTemplateHistName,
0134                 string FailSignalTemplateHistName) {
0135   gBenchmark->Start("fitZCat");
0136 
0137   //--------------------------------------------------------------------------------------------------------------
0138   // Settings
0139   //==============================================================================================================
0140 
0141   const Double_t mlow = 60;
0142   const Double_t mhigh = 120;
0143   const Int_t nbins = 24;
0144 
0145   TString effType = inputDir;
0146 
0147   // The fit variable - lepton invariant mass
0148   RooRealVar* rooMass_ = new RooRealVar("Mass", "m_{ee}", mlow, mhigh, "GeV/c^{2}");
0149   RooRealVar Mass = *rooMass_;
0150   Mass.setBins(nbins);
0151 
0152   // Make the category variable that defines the two fits,
0153   // namely whether the probe passes or fails the eff criteria.
0154   RooCategory sample("sample", "");
0155   sample.defineType("Pass", 1);
0156   sample.defineType("Fail", 2);
0157 
0158   RooDataSet* dataPass = RooDataSet::read((inputDir + PassInputDataFilename).c_str(), RooArgList(Mass));
0159   RooDataSet* dataFail = RooDataSet::read((inputDir + FailInputDataFilename).c_str(), RooArgList(Mass));
0160 
0161   RooDataSet* dataCombined = new RooDataSet("dataCombined",
0162                                             "dataCombined",
0163                                             RooArgList(Mass),
0164                                             RooFit::Index(sample),
0165                                             RooFit::Import("Pass", *dataPass),
0166                                             RooFit::Import("Fail", *dataFail));
0167 
0168   //*********************************************************************************************
0169   //Define Free Parameters
0170   //*********************************************************************************************
0171   RooRealVar* ParNumSignal = LoadParameters(inputParameterFile, label, "ParNumSignal");
0172   RooRealVar* ParNumBkgPass = LoadParameters(inputParameterFile, label, "ParNumBkgPass");
0173   RooRealVar* ParNumBkgFail = LoadParameters(inputParameterFile, label, "ParNumBkgFail");
0174   RooRealVar* ParEfficiency = LoadParameters(inputParameterFile, label, "ParEfficiency");
0175   RooRealVar* ParPassBackgroundExpCoefficient =
0176       LoadParameters(inputParameterFile, label, "ParPassBackgroundExpCoefficient");
0177   RooRealVar* ParFailBackgroundExpCoefficient =
0178       LoadParameters(inputParameterFile, label, "ParFailBackgroundExpCoefficient");
0179   RooRealVar* ParPassSignalMassShift = LoadParameters(inputParameterFile, label, "ParPassSignalMassShift");
0180   RooRealVar* ParFailSignalMassShift = LoadParameters(inputParameterFile, label, "ParFailSignalMassShift");
0181   RooRealVar* ParPassSignalResolution = LoadParameters(inputParameterFile, label, "ParPassSignalResolution");
0182   RooRealVar* ParFailSignalResolution = LoadParameters(inputParameterFile, label, "ParFailSignalResolution");
0183 
0184   // new RooRealVar  ("ParPassSignalMassShift","ParPassSignalMassShift",-2.6079e-02,-10.0, 10.0);   //ParPassSignalMassShift->setConstant(kTRUE);
0185   //   RooRealVar* ParFailSignalMassShift = new RooRealVar  ("ParFailSignalMassShift","ParFailSignalMassShift",7.2230e-01,-10.0, 10.0);   //ParFailSignalMassShift->setConstant(kTRUE);
0186   //   RooRealVar* ParPassSignalResolution = new RooRealVar ("ParPassSignalResolution","ParPassSignalResolution",6.9723e-01,0.0, 10.0);     ParPassSignalResolution->setConstant(kTRUE);
0187   //   RooRealVar* ParFailSignalResolution = new RooRealVar ("ParFailSignalResolution","ParFailSignalResolution",1.6412e+00,0.0, 10.0);     ParFailSignalResolution->setConstant(kTRUE);
0188 
0189   //*********************************************************************************************
0190   //
0191   //Load Signal PDFs
0192   //
0193   //*********************************************************************************************
0194 
0195   TFile* Zeelineshape_file = new TFile("res/photonEfffromZee.dflag1.eT1.2.gT40.mt15.root", "READ");
0196   TH1* histTemplatePass = (TH1D*)Zeelineshape_file->Get(PassSignalTemplateHistName.c_str());
0197   TH1* histTemplateFail = (TH1D*)Zeelineshape_file->Get(FailSignalTemplateHistName.c_str());
0198 
0199   //Introduce mass shift coordinate transformation
0200   //   RooFormulaVar PassShiftedMass("PassShiftedMass","@0-@1",RooArgList(Mass,*ParPassSignalMassShift));
0201   //   RooFormulaVar FailShiftedMass("FailShiftedMass","@0-@1",RooArgList(Mass,*ParFailSignalMassShift));
0202 
0203   RooGaussian* PassSignalResolutionFunction = new RooGaussian("PassSignalResolutionFunction",
0204                                                               "PassSignalResolutionFunction",
0205                                                               Mass,
0206                                                               *ParPassSignalMassShift,
0207                                                               *ParPassSignalResolution);
0208   RooGaussian* FailSignalResolutionFunction = new RooGaussian("FailSignalResolutionFunction",
0209                                                               "FailSignalResolutionFunction",
0210                                                               Mass,
0211                                                               *ParFailSignalMassShift,
0212                                                               *ParFailSignalResolution);
0213 
0214   RooDataHist* dataHistPass = new RooDataHist("dataHistPass", "dataHistPass", RooArgSet(Mass), histTemplatePass);
0215   RooDataHist* dataHistFail = new RooDataHist("dataHistFail", "dataHistFail", RooArgSet(Mass), histTemplateFail);
0216   RooHistPdf* signalShapePassTemplatePdf =
0217       new RooHistPdf("signalShapePassTemplatePdf", "signalShapePassTemplatePdf", Mass, *dataHistPass, 1);
0218   RooHistPdf* signalShapeFailTemplatePdf =
0219       new RooHistPdf("signalShapeFailTemplatePdf", "signalShapeFailTemplatePdf", Mass, *dataHistFail, 1);
0220 
0221   RooFFTConvPdf* signalShapePassPdf = new RooFFTConvPdf(
0222       "signalShapePassPdf", "signalShapePassPdf", Mass, *signalShapePassTemplatePdf, *PassSignalResolutionFunction, 2);
0223   RooFFTConvPdf* signalShapeFailPdf = new RooFFTConvPdf(
0224       "signalShapeFailPdf", "signalShapeFailPdf", Mass, *signalShapeFailTemplatePdf, *FailSignalResolutionFunction, 2);
0225 
0226   // Now define some efficiency/yield variables
0227   RooFormulaVar* NumSignalPass =
0228       new RooFormulaVar("NumSignalPass", "ParEfficiency*ParNumSignal", RooArgList(*ParEfficiency, *ParNumSignal));
0229   RooFormulaVar* NumSignalFail =
0230       new RooFormulaVar("NumSignalFail", "(1.0-ParEfficiency)*ParNumSignal", RooArgList(*ParEfficiency, *ParNumSignal));
0231 
0232   //*********************************************************************************************
0233   //
0234   // Create Background PDFs
0235   //
0236   //*********************************************************************************************
0237   RooExponential* bkgPassPdf = new RooExponential("bkgPassPdf", "bkgPassPdf", Mass, *ParPassBackgroundExpCoefficient);
0238   RooExponential* bkgFailPdf = new RooExponential("bkgFailPdf", "bkgFailPdf", Mass, *ParFailBackgroundExpCoefficient);
0239 
0240   //*********************************************************************************************
0241   //
0242   // Create Total PDFs
0243   //
0244   //*********************************************************************************************
0245   RooAddPdf pdfPass(
0246       "pdfPass", "pdfPass", RooArgList(*signalShapePassPdf, *bkgPassPdf), RooArgList(*NumSignalPass, *ParNumBkgPass));
0247   RooAddPdf pdfFail(
0248       "pdfFail", "pdfFail", RooArgList(*signalShapeFailPdf, *bkgFailPdf), RooArgList(*NumSignalFail, *ParNumBkgFail));
0249 
0250   // PDF for simultaneous fit
0251   RooSimultaneous totalPdf("totalPdf", "totalPdf", sample);
0252   totalPdf.addPdf(pdfPass, "Pass");
0253   //    totalPdf.Print();
0254   totalPdf.addPdf(pdfFail, "Fail");
0255   totalPdf.Print();
0256 
0257   //*********************************************************************************************
0258   //
0259   // Perform Fit
0260   //
0261   //*********************************************************************************************
0262   RooFitResult* fitResult = 0;
0263 
0264   // ********* Fix with Migrad first ********** //
0265   fitResult = totalPdf.fitTo(*dataCombined, RooFit::Save(true), RooFit::Extended(true), RooFit::PrintLevel(-1));
0266   fitResult->Print("v");
0267 
0268   //   // ********* Fit With Minos ********** //
0269   //    fitResult = totalPdf.fitTo(*dataCombined, RooFit::Save(true),
0270   //                               RooFit::Extended(true), RooFit::PrintLevel(-1), RooFit::Minos());
0271   //    fitResult->Print("v");
0272 
0273   //   // ********* Fix Mass Shift and Fit For Resolution ********** //
0274   //    ParPassSignalMassShift->setConstant(kTRUE);
0275   //    ParFailSignalMassShift->setConstant(kTRUE);
0276   //    ParPassSignalResolution->setConstant(kFALSE);
0277   //    ParFailSignalResolution->setConstant(kFALSE);
0278   //    fitResult = totalPdf.fitTo(*dataCombined, RooFit::Save(true),
0279   //    RooFit::Extended(true), RooFit::PrintLevel(-1));
0280   //    fitResult->Print("v");
0281 
0282   //   // ********* Do Final Fit ********** //
0283   //    ParPassSignalMassShift->setConstant(kFALSE);
0284   //    ParFailSignalMassShift->setConstant(kFALSE);
0285   //    ParPassSignalResolution->setConstant(kTRUE);
0286   //    ParFailSignalResolution->setConstant(kTRUE);
0287   //    fitResult = totalPdf.fitTo(*dataCombined, RooFit::Save(true),
0288   //                                             RooFit::Extended(true), RooFit::PrintLevel(-1));
0289   //    fitResult->Print("v");
0290 
0291   double nSignalPass = NumSignalPass->getVal();
0292   double nSignalFail = NumSignalFail->getVal();
0293   double denominator = nSignalPass + nSignalFail;
0294 
0295   printf("\nFit results:\n");
0296   if (fitResult->status() != 0) {
0297     std::cout << "ERROR: BAD FIT STATUS" << std::endl;
0298   }
0299 
0300   printf("    Efficiency = %.4f +- %.4f\n", ParEfficiency->getVal(), ParEfficiency->getPropagatedError(*fitResult));
0301   cout << "Signal Pass: " << nSignalPass << endl;
0302   cout << "Signal Fail: " << nSignalFail << endl;
0303 
0304   cout << "*********************************************************************\n";
0305   cout << "Final Parameters\n";
0306   cout << "*********************************************************************\n";
0307   PrintParameter(ParNumSignal, label, "ParNumSignal");
0308   PrintParameter(ParNumBkgPass, label, "ParNumBkgPass");
0309   PrintParameter(ParNumBkgFail, label, "ParNumBkgFail");
0310   PrintParameter(ParEfficiency, label, "ParEfficiency");
0311   PrintParameter(ParPassBackgroundExpCoefficient, label, "ParPassBackgroundExpCoefficient");
0312   PrintParameter(ParFailBackgroundExpCoefficient, label, "ParFailBackgroundExpCoefficient");
0313   PrintParameter(ParPassSignalMassShift, label, "ParPassSignalMassShift");
0314   PrintParameter(ParFailSignalMassShift, label, "ParFailSignalMassShift");
0315   PrintParameter(ParPassSignalResolution, label, "ParPassSignalResolution");
0316   PrintParameter(ParFailSignalResolution, label, "ParFailSignalResolution");
0317   cout << endl << endl;
0318 
0319   //--------------------------------------------------------------------------------------------------------------
0320   // Make plots
0321   //==============================================================================================================
0322   TFile* canvasFile = new TFile("Efficiency_FitResults.root", "UPDATE");
0323 
0324   RooAbsData::ErrorType errorType = RooAbsData::Poisson;
0325 
0326   Mass.setBins(NBINSPASS);
0327   TString cname = TString((label + "_Pass").c_str());
0328   TCanvas* c = new TCanvas(cname, cname, 800, 600);
0329   RooPlot* frame1 = Mass.frame();
0330   frame1->SetMinimum(0);
0331   dataPass->plotOn(frame1, RooFit::DataError(errorType));
0332   pdfPass.plotOn(frame1, RooFit::ProjWData(*dataPass), RooFit::Components(*bkgPassPdf), RooFit::LineColor(kRed));
0333   pdfPass.plotOn(frame1, RooFit::ProjWData(*dataPass));
0334   frame1->Draw("e0");
0335 
0336   TPaveText* plotlabel = new TPaveText(0.23, 0.87, 0.43, 0.92, "NDC");
0337   plotlabel->SetTextColor(kBlack);
0338   plotlabel->SetFillColor(kWhite);
0339   plotlabel->SetBorderSize(0);
0340   plotlabel->SetTextAlign(12);
0341   plotlabel->SetTextSize(0.03);
0342   plotlabel->AddText("CMS Preliminary 2010");
0343   TPaveText* plotlabel2 = new TPaveText(0.23, 0.82, 0.43, 0.87, "NDC");
0344   plotlabel2->SetTextColor(kBlack);
0345   plotlabel2->SetFillColor(kWhite);
0346   plotlabel2->SetBorderSize(0);
0347   plotlabel2->SetTextAlign(12);
0348   plotlabel2->SetTextSize(0.03);
0349   plotlabel2->AddText("#sqrt{s} = 7 TeV");
0350   TPaveText* plotlabel3 = new TPaveText(0.23, 0.75, 0.43, 0.80, "NDC");
0351   plotlabel3->SetTextColor(kBlack);
0352   plotlabel3->SetFillColor(kWhite);
0353   plotlabel3->SetBorderSize(0);
0354   plotlabel3->SetTextAlign(12);
0355   plotlabel3->SetTextSize(0.03);
0356   char temp[100];
0357   sprintf(temp, "%.4f", LUMINOSITY);
0358   plotlabel3->AddText((string("#int#font[12]{L}dt = ") + temp + string(" pb^{ -1}")).c_str());
0359   TPaveText* plotlabel4 = new TPaveText(0.6, 0.82, 0.8, 0.87, "NDC");
0360   plotlabel4->SetTextColor(kBlack);
0361   plotlabel4->SetFillColor(kWhite);
0362   plotlabel4->SetBorderSize(0);
0363   plotlabel4->SetTextAlign(12);
0364   plotlabel4->SetTextSize(0.03);
0365   double nsig = ParNumSignal->getVal();
0366   double nErr = ParNumSignal->getError();
0367   double e = ParEfficiency->getVal();
0368   double eErr = ParEfficiency->getError();
0369   double corr = fitResult->correlation(*ParEfficiency, *ParNumSignal);
0370   double err = ErrorInProduct(nsig, nErr, e, eErr, corr);
0371   sprintf(temp, "Signal = %.2f #pm %.2f", NumSignalPass->getVal(), err);
0372   plotlabel4->AddText(temp);
0373   TPaveText* plotlabel5 = new TPaveText(0.6, 0.77, 0.8, 0.82, "NDC");
0374   plotlabel5->SetTextColor(kBlack);
0375   plotlabel5->SetFillColor(kWhite);
0376   plotlabel5->SetBorderSize(0);
0377   plotlabel5->SetTextAlign(12);
0378   plotlabel5->SetTextSize(0.03);
0379   sprintf(temp, "Bkg = %.2f #pm %.2f", ParNumBkgPass->getVal(), ParNumBkgPass->getError());
0380   plotlabel5->AddText(temp);
0381   TPaveText* plotlabel6 = new TPaveText(0.6, 0.87, 0.8, 0.92, "NDC");
0382   plotlabel6->SetTextColor(kBlack);
0383   plotlabel6->SetFillColor(kWhite);
0384   plotlabel6->SetBorderSize(0);
0385   plotlabel6->SetTextAlign(12);
0386   plotlabel6->SetTextSize(0.03);
0387   plotlabel6->AddText("Passing probes");
0388   TPaveText* plotlabel7 = new TPaveText(0.6, 0.72, 0.8, 0.77, "NDC");
0389   plotlabel7->SetTextColor(kBlack);
0390   plotlabel7->SetFillColor(kWhite);
0391   plotlabel7->SetBorderSize(0);
0392   plotlabel7->SetTextAlign(12);
0393   plotlabel7->SetTextSize(0.03);
0394   sprintf(temp, "Eff = %.3f #pm %.3f", ParEfficiency->getVal(), ParEfficiency->getErrorHi());
0395   plotlabel7->AddText(temp);
0396   TPaveText* plotlabel8 = new TPaveText(0.6, 0.72, 0.8, 0.66, "NDC");
0397   plotlabel8->SetTextColor(kBlack);
0398   plotlabel8->SetFillColor(kWhite);
0399   plotlabel8->SetBorderSize(0);
0400   plotlabel8->SetTextAlign(12);
0401   plotlabel8->SetTextSize(0.03);
0402   sprintf(temp, "#chi^{2}/DOF = %.3f", frame1->chiSquare());
0403   plotlabel8->AddText(temp);
0404 
0405   plotlabel4->Draw();
0406   plotlabel5->Draw();
0407   plotlabel6->Draw();
0408   plotlabel7->Draw();
0409   plotlabel8->Draw();
0410 
0411   //   c->SaveAs( cname + TString(".eps"));
0412   c->SaveAs(cname + TString(".gif"));
0413   canvasFile->WriteTObject(c, c->GetName(), "WriteDelete");
0414 
0415   Mass.setBins(NBINSFAIL);
0416   cname = TString((label + "_Fail").c_str());
0417   TCanvas* c2 = new TCanvas(cname, cname, 800, 600);
0418   RooPlot* frame2 = Mass.frame();
0419   frame2->SetMinimum(0);
0420   dataFail->plotOn(frame2, RooFit::DataError(errorType));
0421   pdfFail.plotOn(frame2, RooFit::ProjWData(*dataFail), RooFit::Components(*bkgFailPdf), RooFit::LineColor(kRed));
0422   pdfFail.plotOn(frame2, RooFit::ProjWData(*dataFail));
0423   frame2->Draw("e0");
0424 
0425   plotlabel = new TPaveText(0.23, 0.87, 0.43, 0.92, "NDC");
0426   plotlabel->SetTextColor(kBlack);
0427   plotlabel->SetFillColor(kWhite);
0428   plotlabel->SetBorderSize(0);
0429   plotlabel->SetTextAlign(12);
0430   plotlabel->SetTextSize(0.03);
0431   plotlabel->AddText("CMS Preliminary 2010");
0432   plotlabel2 = new TPaveText(0.23, 0.82, 0.43, 0.87, "NDC");
0433   plotlabel2->SetTextColor(kBlack);
0434   plotlabel2->SetFillColor(kWhite);
0435   plotlabel2->SetBorderSize(0);
0436   plotlabel2->SetTextAlign(12);
0437   plotlabel2->SetTextSize(0.03);
0438   plotlabel2->AddText("#sqrt{s} = 7 TeV");
0439   plotlabel3 = new TPaveText(0.23, 0.75, 0.43, 0.80, "NDC");
0440   plotlabel3->SetTextColor(kBlack);
0441   plotlabel3->SetFillColor(kWhite);
0442   plotlabel3->SetBorderSize(0);
0443   plotlabel3->SetTextAlign(12);
0444   plotlabel3->SetTextSize(0.03);
0445   sprintf(temp, "%.4f", LUMINOSITY);
0446   plotlabel3->AddText((string("#int#font[12]{L}dt = ") + temp + string(" pb^{ -1}")).c_str());
0447   plotlabel4 = new TPaveText(0.6, 0.82, 0.8, 0.87, "NDC");
0448   plotlabel4->SetTextColor(kBlack);
0449   plotlabel4->SetFillColor(kWhite);
0450   plotlabel4->SetBorderSize(0);
0451   plotlabel4->SetTextAlign(12);
0452   plotlabel4->SetTextSize(0.03);
0453   err = ErrorInProduct(nsig, nErr, 1.0 - e, eErr, corr);
0454   sprintf(temp, "Signal = %.2f #pm %.2f", NumSignalFail->getVal(), err);
0455   plotlabel4->AddText(temp);
0456   plotlabel5 = new TPaveText(0.6, 0.77, 0.8, 0.82, "NDC");
0457   plotlabel5->SetTextColor(kBlack);
0458   plotlabel5->SetFillColor(kWhite);
0459   plotlabel5->SetBorderSize(0);
0460   plotlabel5->SetTextAlign(12);
0461   plotlabel5->SetTextSize(0.03);
0462   sprintf(temp, "Bkg = %.2f #pm %.2f", ParNumBkgFail->getVal(), ParNumBkgFail->getError());
0463   plotlabel5->AddText(temp);
0464   plotlabel6 = new TPaveText(0.6, 0.87, 0.8, 0.92, "NDC");
0465   plotlabel6->SetTextColor(kBlack);
0466   plotlabel6->SetFillColor(kWhite);
0467   plotlabel6->SetBorderSize(0);
0468   plotlabel6->SetTextAlign(12);
0469   plotlabel6->SetTextSize(0.03);
0470   plotlabel6->AddText("Failing probes");
0471   plotlabel7 = new TPaveText(0.6, 0.72, 0.8, 0.77, "NDC");
0472   plotlabel7->SetTextColor(kBlack);
0473   plotlabel7->SetFillColor(kWhite);
0474   plotlabel7->SetBorderSize(0);
0475   plotlabel7->SetTextAlign(12);
0476   plotlabel7->SetTextSize(0.03);
0477   sprintf(
0478       temp, "Eff = %.3f #pm %.3f", ParEfficiency->getVal(), ParEfficiency->getErrorHi(), ParEfficiency->getErrorLo());
0479   plotlabel7->AddText(temp);
0480   plotlabel8 = new TPaveText(0.6, 0.72, 0.8, 0.66, "NDC");
0481   plotlabel8->SetTextColor(kBlack);
0482   plotlabel8->SetFillColor(kWhite);
0483   plotlabel8->SetBorderSize(0);
0484   plotlabel8->SetTextAlign(12);
0485   plotlabel8->SetTextSize(0.03);
0486   sprintf(temp, "#chi^{2}/DOF = %.3f", frame2->chiSquare());
0487   plotlabel8->AddText(temp);
0488 
0489   //   plotlabel->Draw();
0490   //   plotlabel2->Draw();
0491   //   plotlabel3->Draw();
0492   plotlabel4->Draw();
0493   plotlabel5->Draw();
0494   plotlabel6->Draw();
0495   plotlabel7->Draw();
0496   plotlabel8->Draw();
0497 
0498   c2->SaveAs(cname + TString(".gif"));
0499   //   c2->SaveAs( cname + TString(".eps"));
0500   //   c2->SaveAs( cname + TString(".root"));
0501   canvasFile->WriteTObject(c2, c2->GetName(), "WriteDelete");
0502 
0503   canvasFile->Close();
0504 
0505   effTextFile.width(40);
0506   effTextFile << label;
0507   effTextFile.width(20);
0508   effTextFile << setiosflags(ios::fixed) << setprecision(4) << left << ParEfficiency->getVal();
0509   effTextFile.width(20);
0510   effTextFile << left << ParEfficiency->getErrorHi();
0511   effTextFile.width(20);
0512   effTextFile << left << ParEfficiency->getErrorLo();
0513   effTextFile.width(14);
0514   effTextFile << setiosflags(ios::fixed) << setprecision(2) << left << nSignalPass;
0515   effTextFile.width(14);
0516   effTextFile << left << nSignalFail << endl;
0517 }
0518 
0519 void ElectronTagAndProbeFitter() {
0520   // //////////////////////////////////////////////////////////
0521   effTextFile.width(40);
0522   effTextFile << left << "Type";
0523   effTextFile.width(20);
0524   effTextFile << left << "Efficiency";
0525   effTextFile.width(20);
0526   effTextFile << left << " Uncertainty(+) ";
0527   effTextFile.width(20);
0528   effTextFile << left << " Uncertainty(-) ";
0529   effTextFile.width(14);
0530   effTextFile << left << "NPass";
0531   effTextFile.width(14);
0532   effTextFile << left << "NFail" << endl;
0533 
0534   // //////////////////////////////////////////////////////////
0535 
0536   // //////////////////////////////////////////////////////////
0537   //   //  Super cluster --> gsfElectron efficiency
0538   // //////////////////////////////////////////////////////////
0539 
0540   //**************
0541   //User Pass Template For Fail Sample - TPTree
0542   //**************
0543   //       performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco", "Mass_TagPlusSCPassReco_Data_36", "Mass_TagPlusSCFailReco_Data_36", "Mass_TagPlusSCPassReco", "Mass_TagPlusSCPassReco" );
0544   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EB", "Mass_TagPlusSCPassReco_EB_Pt20ToInf_Data_36", "Mass_TagPlusSCFailReco_EB_Pt20ToInf_Data_36", "Mass_TagPlusSCPassReco_EB_Pt20ToInf", "Mass_TagPlusSCPassReco_EB_Pt20ToInf" );
0545   //       performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EE", "Mass_TagPlusSCPassReco_EE_Pt20ToInf_Data_36", "Mass_TagPlusSCFailReco_EE_Pt20ToInf_Data_36", "Mass_TagPlusSCPassReco_EE_Pt20ToInf", "Mass_TagPlusSCPassReco_EE_Pt20ToInf" );
0546   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EB_Minus", "Mass_TagPlusSCPassReco_EB_Pt20ToInf_Data_36_Minus", "Mass_TagPlusSCFailReco_EB_Pt20ToInf_Data_36_Minus", "Mass_TagPlusSCPassReco_EB_Pt20ToInf", "Mass_TagPlusSCPassReco_EB_Pt20ToInf" );
0547   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EE_Minus", "Mass_TagPlusSCPassReco_EE_Pt20ToInf_Data_36_Minus", "Mass_TagPlusSCFailReco_EE_Pt20ToInf_Data_36_Minus", "Mass_TagPlusSCPassReco_EE_Pt20ToInf", "Mass_TagPlusSCPassReco_EE_Pt20ToInf" );
0548   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EB_Plus", "Mass_TagPlusSCPassReco_EB_Pt20ToInf_Data_36_Plus", "Mass_TagPlusSCFailReco_EB_Pt20ToInf_Data_36_Plus", "Mass_TagPlusSCPassReco_EB_Pt20ToInf", "Mass_TagPlusSCPassReco_EB_Pt20ToInf" );
0549   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EE_Plus", "Mass_TagPlusSCPassReco_EE_Pt20ToInf_Data_36_Plus", "Mass_TagPlusSCFailReco_EE_Pt20ToInf_Data_36_Plus", "Mass_TagPlusSCPassReco_EE_Pt20ToInf", "Mass_TagPlusSCPassReco_EE_Pt20ToInf" );
0550 
0551   //**************
0552   //User Fail Template For Fail Sample - TPTree
0553   //**************
0554   //      performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco", "Mass_TagPlusSCPassReco_Data_36", "Mass_TagPlusSCFailReco_Data_36", "Mass_TagPlusSCPassReco", "Mass_TagPlusSCFailReco" );
0555   //      performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EB", "Mass_TagPlusSCPassReco_EB_Pt20ToInf_Data_36", "Mass_TagPlusSCFailReco_EB_Pt20ToInf_Data_36", "Mass_TagPlusSCPassReco_EB_Pt20ToInf", "Mass_TagPlusSCFailReco_EB_Pt20ToInf" );
0556   //      performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EE", "Mass_TagPlusSCPassReco_EE_Pt20ToInf_Data_36", "Mass_TagPlusSCFailReco_EE_Pt20ToInf_Data_36", "Mass_TagPlusSCPassReco_EE_Pt20ToInf", "Mass_TagPlusSCFailReco_EE_Pt20ToInf" );
0557   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EB_Minus", "Mass_TagPlusSCPassReco_EB_Pt20ToInf_Data_36_Minus", "Mass_TagPlusSCFailReco_EB_Pt20ToInf_Data_36_Minus", "Mass_TagPlusSCPassReco_EB_Pt20ToInf", "Mass_TagPlusSCFailReco_EB_Pt20ToInf" );
0558   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EE_Minus", "Mass_TagPlusSCPassReco_EE_Pt20ToInf_Data_36_Minus", "Mass_TagPlusSCFailReco_EE_Pt20ToInf_Data_36_Minus", "Mass_TagPlusSCPassReco_EE_Pt20ToInf", "Mass_TagPlusSCFailReco_EE_Pt20ToInf" );
0559   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EB_Plus", "Mass_TagPlusSCPassReco_EB_Pt20ToInf_Data_36_Plus", "Mass_TagPlusSCFailReco_EB_Pt20ToInf_Data_36_Plus", "Mass_TagPlusSCPassReco_EB_Pt20ToInf", "Mass_TagPlusSCFailReco_EB_Pt20ToInf" );
0560   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EE_Plus", "Mass_TagPlusSCPassReco_EE_Pt20ToInf_Data_36_Plus", "Mass_TagPlusSCFailReco_EE_Pt20ToInf_Data_36_Plus", "Mass_TagPlusSCPassReco_EE_Pt20ToInf", "Mass_TagPlusSCFailReco_EE_Pt20ToInf" );
0561 
0562   //**************
0563   //Impose WP95 Iso Cut on Photon probes - TPTree  SYstematics
0564   //**************
0565   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80_WithPhotonIsoCut/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco", "Mass_TagPlusSCPassReco_Data_36", "Mass_TagPlusSCFailReco_Data_36", "Mass_TagPlusSCPassReco", "Mass_TagPlusSCFailReco" );
0566   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80_WithPhotonIsoCut/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EB", "Mass_TagPlusSCPassReco_EB_Pt20ToInf_Data_36", "Mass_TagPlusSCFailReco_EB_Pt20ToInf_Data_36", "Mass_TagPlusSCPassReco_EB_Pt20ToInf", "Mass_TagPlusSCFailReco_EB_Pt20ToInf" );
0567   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80_WithPhotonIsoCut/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EE", "Mass_TagPlusSCPassReco_EE_Pt20ToInf_Data_36", "Mass_TagPlusSCFailReco_EE_Pt20ToInf_Data_36", "Mass_TagPlusSCPassReco_EE_Pt20ToInf", "Mass_TagPlusSCFailReco_EE_Pt20ToInf" );
0568 
0569   //**************
0570   //Impose WP95 Iso Cut on Photon probes - BAMBU
0571   //**************
0572   //      performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco", "Mass_TagPlusSCPassReco_Data_36", "Mass_TagPlusSCFailReco_Data_36", "Mass_TagPlusSCPassReco", "Mass_TagPlusSCFailReco" );
0573   //      performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EB", "Mass_TagPlusSCPassReco_EB_Pt20ToInf_Data_36", "Mass_TagPlusSCFailReco_EB_Pt20ToInf_Data_36", "Mass_TagPlusSCPassReco_EB_Pt20ToInf", "Mass_TagPlusSCFailReco_EB_Pt20ToInf" );
0574   //      performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EE", "Mass_TagPlusSCPassReco_EE_Pt20ToInf_Data_36", "Mass_TagPlusSCFailReco_EE_Pt20ToInf_Data_36", "Mass_TagPlusSCPassReco_EE_Pt20ToInf", "Mass_TagPlusSCFailReco_EE_Pt20ToInf" );
0575   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EB_Minus", "Mass_TagPlusSCPassReco_EB_Pt20ToInf_Data_36_Minus", "Mass_TagPlusSCFailReco_EB_Pt20ToInf_Data_36_Minus", "Mass_TagPlusSCPassReco_EB_Pt20ToInf", "Mass_TagPlusSCFailReco_EB_Pt20ToInf" );
0576   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EE_Minus", "Mass_TagPlusSCPassReco_EE_Pt20ToInf_Data_36_Minus", "Mass_TagPlusSCFailReco_EE_Pt20ToInf_Data_36_Minus", "Mass_TagPlusSCPassReco_EE_Pt20ToInf", "Mass_TagPlusSCFailReco_EE_Pt20ToInf" );
0577   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EB_Plus", "Mass_TagPlusSCPassReco_EB_Pt20ToInf_Data_36_Plus", "Mass_TagPlusSCFailReco_EB_Pt20ToInf_Data_36_Plus", "Mass_TagPlusSCPassReco_EB_Pt20ToInf", "Mass_TagPlusSCFailReco_EB_Pt20ToInf" );
0578   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_SCToReco_EE_Plus", "Mass_TagPlusSCPassReco_EE_Pt20ToInf_Data_36_Plus", "Mass_TagPlusSCFailReco_EE_Pt20ToInf_Data_36_Plus", "Mass_TagPlusSCPassReco_EE_Pt20ToInf", "Mass_TagPlusSCFailReco_EE_Pt20ToInf" );
0579 
0580   // //////////////////////////////////////////////////////////
0581   //   //  gsfElectron --> WP-95 selection efficiency
0582   // //////////////////////////////////////////////////////////
0583 
0584   //**************
0585   //TAG 80 - TPTree
0586   //**************
0587   //    performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95", "Mass_TagPlusRecoPassVBTF95IdIso_Data_36", "Mass_TagPlusRecoFailVBTF95IdIso_Data_36", "Mass_TagPlusRecoPassVBTF95IdIso", "Mass_TagPlusRecoFailVBTF95IdIso" );
0588   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EB", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf_Data_36", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf_Data_36", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf" );
0589   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EE", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf_Data_36", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf_Data_36", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf" );
0590   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EB_Minus", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf" );
0591   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EE_Minus", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf" );
0592   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EB_Plus", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf" );
0593   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EE_Plus", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf" );
0594 
0595   //**************
0596   //TAG 80 - BAMBU
0597   //**************
0598   //    performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95", "Mass_TagPlusRecoPassVBTF95IdIso_Data_36", "Mass_TagPlusRecoFailVBTF95IdIso_Data_36", "Mass_TagPlusRecoPassVBTF95IdIso", "Mass_TagPlusRecoFailVBTF95IdIso" );
0599   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EB", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf_Data_36", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf_Data_36", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf" );
0600   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EE", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf_Data_36", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf_Data_36", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf" );
0601   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EB_Minus", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf" );
0602   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EE_Minus", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf" );
0603   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EB_Plus", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf" );
0604   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EE_Plus", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf" );
0605 
0606   // //**************
0607   // //TAG 95 - BAMBU
0608   // //**************
0609   //    performFit("EfficiencyFitter/input/Data_36_09122010_TagWP95/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95", "Mass_TagPlusRecoPassVBTF95IdIso_Data_36", "Mass_TagPlusRecoFailVBTF95IdIso_Data_36", "Mass_TagPlusRecoPassVBTF95IdIso", "Mass_TagPlusRecoFailVBTF95IdIso" );
0610   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP95/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EB", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf_Data_36", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf_Data_36", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf" );
0611   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP95/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EE", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf_Data_36", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf_Data_36", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf" );
0612   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP95/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EB_Minus", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf" );
0613   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP95/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EE_Minus", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf" );
0614   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP95/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EB_Plus", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf" );
0615   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP95/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EE_Plus", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf" );
0616 
0617   //**************
0618   //TAG 60 - BAMBU
0619   //**************
0620   //    performFit("EfficiencyFitter/input/Data_36_09122010_TagWP60/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95", "Mass_TagPlusRecoPassVBTF95IdIso_Data_36", "Mass_TagPlusRecoFailVBTF95IdIso_Data_36", "Mass_TagPlusRecoPassVBTF95IdIso", "Mass_TagPlusRecoFailVBTF95IdIso" );
0621   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP60/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EB", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf_Data_36", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf_Data_36", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf" );
0622   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP60/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EE", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf_Data_36", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf_Data_36", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf" );
0623   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP60/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EB_Minus", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf" );
0624   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP60/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EE_Minus", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf" );
0625   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP60/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EB_Plus", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf" );
0626   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP60/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EE_Plus", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf" );
0627 
0628   //       performFit("EfficiencyFitter/input/Data_36_09122010_JW_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EB", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf_Data_36", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf_Data_36", "Mass_TagPlusRecoPassVBTF95IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EB_Pt20ToInf" );
0629   //       performFit("EfficiencyFitter/input/Data_36_09122010_JW_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF95_EE", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf_Data_36", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf_Data_36", "Mass_TagPlusRecoPassVBTF95IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF95IdIso_EE_Pt20ToInf" );
0630 
0631   cout << "########################################" << endl;
0632 
0633   // // //////////////////////////////////////////////////////////
0634   // //   //  gsfElectron --> WP-80 selection efficiency
0635   // // //////////////////////////////////////////////////////////
0636 
0637   //**************
0638   //TAG 80 - TP
0639   //**************
0640   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF80", "Mass_TagPlusRecoPassVBTF80IdIso_Data_36", "Mass_TagPlusRecoFailVBTF80IdIso_Data_36", "Mass_TagPlusRecoPassVBTF80IdIso", "Mass_TagPlusRecoFailVBTF80IdIso" );
0641   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF80_EB", "Mass_TagPlusRecoPassVBTF80IdIso_EB_Pt20ToInf_Data_36", "Mass_TagPlusRecoFailVBTF80IdIso_EB_Pt20ToInf_Data_36", "Mass_TagPlusRecoPassVBTF80IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF80IdIso_EB_Pt20ToInf" );
0642   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF80_EE", "Mass_TagPlusRecoPassVBTF80IdIso_EE_Pt20ToInf_Data_36", "Mass_TagPlusRecoFailVBTF80IdIso_EE_Pt20ToInf_Data_36", "Mass_TagPlusRecoPassVBTF80IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF80IdIso_EE_Pt20ToInf" );
0643   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF80_EB_Minus", "Mass_TagPlusRecoPassVBTF80IdIso_EB_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoFailVBTF80IdIso_EB_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoPassVBTF80IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF80IdIso_EB_Pt20ToInf" );
0644   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF80_EE_Minus", "Mass_TagPlusRecoPassVBTF80IdIso_EE_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoFailVBTF80IdIso_EE_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoPassVBTF80IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF80IdIso_EE_Pt20ToInf" );
0645   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF80_EB_Plus", "Mass_TagPlusRecoPassVBTF80IdIso_EB_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoFailVBTF80IdIso_EB_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoPassVBTF80IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF80IdIso_EB_Pt20ToInf" );
0646   //     performFit("EfficiencyFitter/input/Data_36_09122010_TP_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF80_EE_Plus", "Mass_TagPlusRecoPassVBTF80IdIso_EE_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoFailVBTF80IdIso_EE_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoPassVBTF80IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF80IdIso_EE_Pt20ToInf" );
0647 
0648   //**************
0649   //TAG 80 - BAMBU
0650   //**************
0651 
0652   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF80", "Mass_TagPlusRecoPassVBTF80IdIso_Data_36", "Mass_TagPlusRecoFailVBTF80IdIso_Data_36", "Mass_TagPlusRecoPassVBTF80IdIso", "Mass_TagPlusRecoFailVBTF80IdIso" );
0653   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF80_EB", "Mass_TagPlusRecoPassVBTF80IdIso_EB_Pt20ToInf_Data_36", "Mass_TagPlusRecoFailVBTF80IdIso_EB_Pt20ToInf_Data_36", "Mass_TagPlusRecoPassVBTF80IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF80IdIso_EB_Pt20ToInf" );
0654   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF80_EE", "Mass_TagPlusRecoPassVBTF80IdIso_EE_Pt20ToInf_Data_36", "Mass_TagPlusRecoFailVBTF80IdIso_EE_Pt20ToInf_Data_36", "Mass_TagPlusRecoPassVBTF80IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF80IdIso_EE_Pt20ToInf" );
0655   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF80_EB_Minus", "Mass_TagPlusRecoPassVBTF80IdIso_EB_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoFailVBTF80IdIso_EB_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoPassVBTF80IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF80IdIso_EB_Pt20ToInf" );
0656   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF80_EE_Minus", "Mass_TagPlusRecoPassVBTF80IdIso_EE_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoFailVBTF80IdIso_EE_Pt20ToInf_Data_36_Minus", "Mass_TagPlusRecoPassVBTF80IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF80IdIso_EE_Pt20ToInf" );
0657   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF80_EB_Plus", "Mass_TagPlusRecoPassVBTF80IdIso_EB_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoFailVBTF80IdIso_EB_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoPassVBTF80IdIso_EB_Pt20ToInf", "Mass_TagPlusRecoFailVBTF80IdIso_EB_Pt20ToInf" );
0658   //     performFit("EfficiencyFitter/input/Data_36_09122010_TagWP80/", "EfficiencyFitter/results/Parameters.txt", "Efficiency_RecoToVBTF80_EE_Plus", "Mass_TagPlusRecoPassVBTF80IdIso_EE_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoFailVBTF80IdIso_EE_Pt20ToInf_Data_36_Plus", "Mass_TagPlusRecoPassVBTF80IdIso_EE_Pt20ToInf", "Mass_TagPlusRecoFailVBTF80IdIso_EE_Pt20ToInf" );
0659 
0660   performFit("res/",
0661              "results/Parameters.txt",
0662              "Efficiency_Photon",
0663              "photonEfffromZee.passbar.dflag1.eT1.2.gT40.mt15.ptbin0.txt",
0664              "photonEfffromZee.failbar.dflag1.eT1.2.gT40.mt15.ptbin0.txt",
0665              "hh_Meg_barrel_mc_pt_0",
0666              "hh_Megf_barrel_mc_pt_0");
0667 
0668   // // //////////////////////////////////////////////////////////
0669   // //   //   WP-95 --> HLT triggering efficiency
0670   // // //////////////////////////////////////////////////////////
0671 
0672   //    cout << "########################################" << endl;
0673 
0674   // // //////////////////////////////////////////////////////////
0675   // //   //   WP-80 --> HLT triggering efficiency
0676   // // //////////////////////////////////////////////////////////
0677 
0678   //    cout << "########################################" << endl;
0679 
0680   effTextFile.close();
0681 }