예제 #1
0
// Template plot producer for WZ validation plots, called by Sub_SynchroPlots_WZ25.sh
//string today = "150910";
void template_yieldsWZ_25ns(std::string var){
  gStyle->SetOptStat(0);

  md.refresh();
  
  //general parameters ********************* general parameters
  string dir="WZsynchro"; //_Jun16_WZCR_RA7comp";
  string fileName="template_WZ25";
  string fileList="template_WZ25";
  bool mcOnly = false;

  //observables **********************
  md.dp.setObservables(var);
  
  md.anConf.configureNames( dir, fileName, fileList );
  md.anConf.configureData(false, 0, mcOnly);
 
  //Binning & title ************************* Binning & title
  string yTitle="number of events";
  int binning=40;
  int addBinBkg=1; //BinB = binning*AddBin 
  double rangeY[2]={0, 0};
  double rangeX[2]={0., 500.};
  int xDiv[3]={8,6,0};
  int yDiv[3]={6,6,0}; //Nlabel /  sous-Div /ssdiv
  bool logYScale=false;
  if (var.find("miniRelIso") != std::string::npos && 
      (var.find("ttbar") != std::string::npos ||  
       var.find("ZMuMu") != std::string::npos ||  
       var.find("ZEE")   != std::string::npos)
      ) {
    logYScale = true;
  }
  bool overFlowBin=true;
  bool underFlowBin=false;
  bool showDMCRatio=false;
  bool showGrid=false;
  float markerSize=0.8;
  float lineWidth=2;
  
  bool summedSignal=false;
  bool stacking=true;
  bool cmsPrel=true;

  float xt=0.68;
  float yt=0.48;
  float st=0.039;
  string addText="";

  string autoBinFile="WZ50binning";
  md.dp.loadAutoBinning(autoBinFile);

  //Systematic uncertainties ********************************
  bool addSystematics=false; 
  bool mcStatSyst=false;
  string systSources="";
  bool uncDet=false;
  
  //Lumis( or XSections ) pb-1 & KFactors ************************************
  string Norm="DNorm";
  
  float lumi=20.4; //pb-1 19470
  float energy=13; //TeV

  bool useXS=true;
  map<string,float> LumisXS;
  map<string,float> KFactors;

  md.anConf.loadXSDB("XSectionsSpring15.db");
  //md.anConf.loadKFDB("kFactorsSpring15.db");
  md.anConf.configureLumi( LumisXS, KFactors, lumi, useXS );

  //===============================================================  
  
  md.anConf.addSample( "TBar_tWch"               , "Single top" ,  kGray+2); 
  md.anConf.addSample( "T_tWch"                  , "Single top" ,  kGray+2);
  md.anConf.addSample( "TToLeptons_tch"          , "Single top" ,  kGray+2);
  md.anConf.addSample( "TToLeptons_sch"          , "Single top" ,  kGray+2);
  md.anConf.addSample( "WJetsToLNu"              , "W+jets"     ,  kCyan+2);
  md.anConf.addSample( "WWTo2L2Nu"               , "WW"         ,  kSpring+10);
  md.anConf.addSample( "WZp8"                    , "WZ"         ,  kGreen+3);
  md.anConf.addSample( "ZZp8"                    , "ZZ"         ,  kViolet-4);
  md.anConf.addSample( "TTJets_LO"               , "t#bar{t}"   ,  kRed   );
  md.anConf.addSample( "DYJetsToLL_M10to50"      , "DY"         ,  kCyan  );
  md.anConf.addSample( "DYJetsToLL_M50"          , "DY"         ,  kCyan  );
  
/*
  md.anConf.addSample( "TBar_tWch"               , "TBar_tWch" ,  kGray+2); 
  md.anConf.addSample( "T_tWch"                  , "T_tWch" ,  kGray+2);
  md.anConf.addSample( "TToLeptons_tch"          , "TToLeptons_tch" ,  kGray+2);
  md.anConf.addSample( "TToLeptons_sch"          , "TToLeptons_sch" ,  kGray+2);
  md.anConf.addSample( "WJetsToLNu"              , "WJetsToLNu"     ,  kCyan+2);
  md.anConf.addSample( "WWTo2L2Nu"               , "WWTo2L2Nu"         ,  kSpring+10);
  md.anConf.addSample( "WZp8"                    , "WZp8"         ,  kGreen+3);
  md.anConf.addSample( "ZZp8"                    , "ZZp8"         ,  kViolet-4);
  md.anConf.addSample( "TTJets_LO"               , "TTJets_LO"   ,  kRed   );
  md.anConf.addSample( "DYJetsToLL_M10to50"      , "DYJetsToLL_M10to50"         ,  kCyan  );
  md.anConf.addSample( "DYJetsToLL_M50"          , "DYJetsToLL_M50"         ,  kCyan  );
  */
  // the order MATTERS!!!
  
  md.anConf.addSample( "DoubleEG_Run2015C_v1"              , "data", kBlack);
  md.anConf.addSample( "DoubleMuon_Run2015C_v1"            , "data", kBlack);
  md.anConf.addSample( "MuonEG_Run2015C_v1"                , "data", kBlack);
  md.anConf.addSample( "SingleElectron_Run2015C_v1"        , "data", kBlack);
  md.anConf.addSample( "SingleMuon_Run2015C_v1"            , "data", kBlack);
  

//  //===============================================================
  
  //*********************************************************************²
  //Execution macro ******************************************************
  
  //Configuration ================
  
  //plotting ================
  md.dp.setLumiAndEnergy( lumi, energy );
  md.dp.setNormalization( Norm );
  md.dp.configureDisplay(yTitle, rangeY, rangeX, logYScale, xDiv,
			 yDiv, binning, addBinBkg, overFlowBin,
			 underFlowBin, showDMCRatio, showGrid,
			 stacking, addSystematics, mcStatSyst,
			 markerSize, lineWidth,summedSignal,
			 mcOnly,cmsPrel, uncDet);


  md.prepareDisplay();

  md.doPlot();
  md.getStatistics("global");
  md.savePlot(dir);
  
  //gROOT->ProcessLine(".q");
}
예제 #2
0
void ssdl2015bck(){
  md.refresh();

  //general parameters ********************* general parameters
  string dir="SSDL2015";
  string fileName="ssdlSync";
  string fileList="ssdlSync";
  
  bool mcOnly = false;
  
  //if(md.isInitStatus()) {
  md.anConf.configureNames( dir, fileName, fileList );
  md.anConf.configureData(false, 0, mcOnly);
  //}
  
  //observables **********************
  md.dp.setObservables("l1Pt");
    
  //Binning & title ************************* Binning & titre
  string yTitle="number of events";
  int binning=8;
  int addBinBkg=1; //BinB = binning*AddBin
  double rangeY[2]={0,0};
  double rangeX[2]={0,200};
  int xDiv[3]={8,6,0};
  int yDiv[3]={6,6,0}; //Nlabel /  sous-Div /ssdiv
  bool logYScale=false;
  bool overFlowBin=true;
  bool underFlowBin=false;
  bool showDMCRatio=true;
  bool showGrid=false;
  float markerSize=0.8;
  float lineWidth=2;

  bool summedSignal=false;
  bool stacking=true;

  bool cmsPrel=true;

  float xt=0.68;
  float yt=0.48;
  float st=0.039;
  string addText="";

  //string autoBinFile="susybinninghigh";
  //md.dp.loadAutoBinning(autoBinFile);

  //Systematic uncertainties ********************************
  bool addSystematics=true;
  
  bool mcStatSyst=true;
  string systSources="";

  bool uncDet=false;

  string Norm="";
  
  //Lumis( or XSections ) pb-1 & KFactors ************************************
  float lumi=1280;//pb-1 19470
  float energy=13; //TeV

  bool useXS=false;

  md.anConf.loadXSDB("XSectionsSpring15.db");

  map<string,float> LumisXS;

  //via XSect
  
  map<string,float> KFactors;
 
  // if( md.isInitStatus() )
  md.anConf.configureLumi( LumisXS, KFactors, lumi, useXS );
  

  //control categories ==============================
  //md.anConf.setControlCategs("Fake");
  //===============================================================
  
  //md.anConf.addSample( "TTJets", "TTJets", kBlack); 

  // md.anConf.addSample( "WJetsToLNu"          , "W+jetsgen", kRed+1 );
  // md.anConf.addSample( "DYJetsToLL_M10to50fake"  , "DYgen", kOrange+7);
  // md.anConf.addSample( "DYJetsToLL_M50fake"      , "DYgen", kOrange+7);
  // md.anConf.addSample( "TTJetsfake"              , "t#bar{t}gen", kOrange-3);
  
  // md.anConf.addSample( "WJetsToLNu"          , "W+jets", kRed+1 );
  // md.anConf.addSample( "DYJetsToLL_M10to50fake"  , "DY", kOrange+7);
  // md.anConf.addSample( "DYJetsToLL_M50fake"      , "DY", kOrange+7);
  // md.anConf.addSample( "TTJetsfake"              , "t#bar{t}", kOrange-3);
  
  // md.anConf.addSample( "Fake:WJetsToLNu"          , "W+jets", kRed+1 );
  // md.anConf.addSample( "Fake:DYJetsToLL_M10to50"  , "DY", kOrange+7);
  // md.anConf.addSample( "Fake:DYJetsToLL_M50"      , "DY", kOrange+7);
  // md.anConf.addSample( "Fake:TTJets"              , "t#bar{t}", kOrange-3);
  
   
   // md.anConf.addSample( "Fake:WJetsToLNu"          , "data", kRed+1 );
   // md.anConf.addSample( "Fake:DYJetsToLL_M10to50"  , "data", kOrange+7);
   // md.anConf.addSample( "Fake:DYJetsToLL_M50"      , "data", kOrange+7);
   // md.anConf.addSample( "Fake:TTJets"              , "data", kOrange-3);

  
  md.anConf.addSample( "DYJetsToLL_M10to50charge"  , "DY", kOrange+7);
  md.anConf.addSample( "DYJetsToLL_M50charge"      , "DY", kOrange+7);
  md.anConf.addSample( "TTJetscharge"              , "t#bar{t}", kOrange-2);   


  // md.anConf.addSample( "Fake:DoubleMuon_Run2015D_v3_runs_256630_257599", "data", kBlack);
  // md.anConf.addSample( "Fake:DoubleMuon_Run2015D_v3_runs_257600_258158", "data", kBlack);
  // md.anConf.addSample( "Fake:DoubleMuon_Run2015D_v4_runs_258159_258714", "data", kBlack);
  
  // md.anConf.addSample( "Fake:DoubleEG_Run2015D_v3_runs_256630_257599", "data", kBlack);
  // md.anConf.addSample( "Fake:DoubleEG_Run2015D_v3_runs_257600_258158", "data", kBlack);
  // md.anConf.addSample( "Fake:DoubleEG_Run2015D_v4_runs_258159_258714", "data", kBlack);
  
  // md.anConf.addSample( "Fake:MuEG_Run2015D_v3_runs_256630_257599", "data", kBlack);
  // md.anConf.addSample( "Fake:MuEG_Run2015D_v3_runs_257600_258158", "data", kBlack);
  // md.anConf.addSample( "Fake:MuEG_Run2015D_v4_runs_258159_258714", "data", kBlack);
  

  // md.anConf.addSample( "Fake:DoubleEG_Run2015D_v3_run_256926", "data", kBlack);
  // md.anConf.addSample( "Fake:DoubleEG_Run2015D_v3_runs_256630_257599", "data", kBlack);
  // md.anConf.addSample( "Fake:DoubleEG_Run2015D_v3_runs_257600_258158", "data", kBlack);
  // md.anConf.addSample( "Fake:DoubleEG_Run2015D_v4_runs_258159_258714_excl", "data", kBlack);
  // md.anConf.addSample( "Fake:DoubleEG_Run2015D_v4_runs_258211_258750", "data", kBlack);
  // md.anConf.addSample( "Fake:DoubleMuon_Run2015D_v3_run_256926", "data", kBlack);
  // md.anConf.addSample( "Fake:DoubleMuon_Run2015D_v3_runs_256630_257599", "data", kBlack);
  // md.anConf.addSample( "Fake:DoubleMuon_Run2015D_v3_runs_257600_258158", "data", kBlack);
  // md.anConf.addSample( "Fake:DoubleMuon_Run2015D_v4_runs_258159_258714_excl", "data", kBlack);
  // md.anConf.addSample( "Fake:DoubleMuon_Run2015D_v4_runs_258211_258750", "data", kBlack);
  // md.anConf.addSample( "Fake:MuonEG_Run2015D_v3_run_256926", "data", kBlack);
  // md.anConf.addSample( "Fake:MuonEG_Run2015D_v3_runs_256630_257599", "data", kBlack);
  // md.anConf.addSample( "Fake:MuonEG_Run2015D_v3_runs_257600_258158", "data", kBlack);
  // md.anConf.addSample( "Fake:MuonEG_Run2015D_v4_runs_258159_258714_excl", "data", kBlack);
  // md.anConf.addSample( "Fake:MuonEG_Run2015D_v4_runs_258211_258750", "data", kBlack);



  md.anConf.addSample( "mId:DoubleEG_Run2015D_v3_run_256926", "data", kBlack);
  md.anConf.addSample( "mId:DoubleEG_Run2015D_v3_runs_256630_257599", "data", kBlack);
  md.anConf.addSample( "mId:DoubleEG_Run2015D_v3_runs_257600_258158", "data", kBlack);
  md.anConf.addSample( "mId:DoubleEG_Run2015D_v4_runs_258159_258714_excl", "data", kBlack);
  md.anConf.addSample( "mId:DoubleEG_Run2015D_v4_runs_258211_258750", "data", kBlack);
  // md.anConf.addSample( "mId:MuonEG_Run2015D_v3_run_256926", "data", kBlack);
  // md.anConf.addSample( "mId:MuonEG_Run2015D_v3_runs_256630_257599", "data", kBlack);
  // md.anConf.addSample( "mId:MuonEG_Run2015D_v3_runs_257600_258158", "data", kBlack);
  // md.anConf.addSample( "mId:MuonEG_Run2015D_v4_runs_258159_258714_excl", "data", kBlack);
  // md.anConf.addSample( "mId:MuonEG_Run2015D_v4_runs_258211_258750", "data", kBlack);
  // md.anConf.addSample( "mId:DoubleMuon_Run2015D_v3_run_256926", "data", kBlack);
  // md.anConf.addSample( "mId:DoubleMuon_Run2015D_v3_runs_256630_257599", "data", kBlack);
  // md.anConf.addSample( "mId:DoubleMuon_Run2015D_v3_runs_257600_258158", "data", kBlack);
  // md.anConf.addSample( "mId:DoubleMuon_Run2015D_v4_runs_258159_258714_excl", "data", kBlack);
  // md.anConf.addSample( "mId:DoubleMuon_Run2015D_v4_runs_258211_258750", "data", kBlack);

 
  //md.anConf.addSample( "Fake:DYJetsToLL_M50"      , "DYf", kOrange+7);
  // md.anConf.addSample( "TTJets"      , "ttprompt", kOrange+7);
  // md.anConf.addSample( "Fake:TTJets"      , "ttFake", kOrange+7);
  // md.anConf.addSample( "TTJetsfake"      , "ttGenFake", kRed+1);

  // md.anConf.addSample( "Fake:DYJetsToLL_M50"      , "DYFake", kOrange+7);
  // md.anConf.addSample( "DYJetsToLL_M50fake"      , "DYGenFake", kRed+1);

  // md.anConf.addSample( "Fake:DYJetsToLL_M10to50"      , "DYLmFake", kOrange+7);
  // md.anConf.addSample( "DYJetsToLL_M10to50fake"      , "DYLmGenFake", kRed+1);
  

  //md.anConf.addSample( "WJetsToLNucharge"          , "W+jets", kRed+1 );
   // md.anConf.addSample( "mId:DYJetsToLL_M10to50"  , "DYm", kOrange+7);
   // md.anConf.addSample( "mId:DYJetsToLL_M50"      , "DYm", kOrange+7);
   // md.anConf.addSample( "mId:TTJets"              , "t#bar{t}m", kOrange-3);   


  // md.anConf.addSample( "mId:DoubleEG_Run2015D_v3_runs_256630_257599", "data", kBlack);
  // md.anConf.addSample( "mId:DoubleEG_Run2015D_v3_runs_257600_258158", "data", kBlack);
  // md.anConf.addSample( "mId:DoubleEG_Run2015D_v4_runs_258159_258714", "data", kBlack);

  // md.anConf.addSample( "DYJetsToLL_M50"      , "prompt", kOrange+7);
  //md.anConf.addSample( "DYJetsToLL_M10to50charge"  , "DY", kOrange+7);
  // md.anConf.addSample( "DYJetsToLL_M50charge"      , "promptCharge", kOrange+7);
  //md.anConf.addSample( "DYJetsToLL_M50charge"      , "promptCharge", kOrange+7);



  //md.anConf.addSample( "DYJetsToLL_M50fake"      , "promptFake", kOrange+7);
  //md.anConf.addSample( "TTJetscharge"              , "t#bar{t}", kOrange-3);   
  //  //DoubleEG_Run2015C_v1_runs_254231_254914.root
  //md.anConf.addSample( "mId:DoubleEG_Run2015D_v3_runs_256630_257599", "data", kBlack);
  // // md.anConf.addSample( "mId:DoubleEG_Run2015D_v3_runs_257600_258158", "data", kBlack);
  // // md.anConf.addSample( "mId:DoubleEG_Run2015D_v4_runs_258159_258714", "data", kBlack);



  // md.anConf.addSample( "T1ttbbWW_mGo1300_mCh300_mChi290", "T1ttbbWW", kBlack); 
  // md.anConf.addSample( "T5qqqqWW_mGo1500_mCh800_mChi100", "T5qqqqWW", kBlack); 
  // md.anConf.addSample( "T6ttWW_mSbot600_mCh425_mChi50", "T6ttWW64", kBlack); 
  // md.anConf.addSample( "T6ttWW_mSbot650_mCh150_mChi50", "T6ttWW61", kBlack); 
  //md.anConf.addSample( "T5ttttDeg_mGo1000_mStop300_mCh285_mChi280_dil", "T5t4Deg", kBlack); 
  //md.anConf.addSample( "TTJets", "t#bar{t}", kWhite); 
  
  //md.anConf.addSample( "TTJets=80", "fake0", kBlue+1); // manual norm
  //md.anConf.addSample( "SR1A:TTJets", "fake1", kOrange-3); //both shape and norm from Fake workflow
  // md.anConf.addSample( "Fake:TTJets=120", "fake2", kBlue+1); //shape from Fake workflow, manual norm

  // md.anConf.addSample( "data:TTJets", "fake3", kBlue+1); //data driven process
  // md.anConf.addSample( "data:Fake:TTJets", "fake4", kBlue+1); //data driven process from Fake workflow
  // md.anConf.addSample( "data:Fake:TTJets=50", "fake5", kBlue+1); //data driven process, Fake workflow, manual norm
  

  //===============================================================

  //*********************************************************************²

  //plotting ================
  md.dp.setLumiAndEnergy( lumi, energy );
  md.dp.setNormalization( Norm );
  md.dp.configureDisplay(yTitle, rangeY, rangeX, logYScale, xDiv,
			 yDiv, binning, addBinBkg, overFlowBin,
			 underFlowBin, showDMCRatio, showGrid, 
			 stacking, addSystematics, mcStatSyst,
			 markerSize, lineWidth,summedSignal, 
			 mcOnly,cmsPrel, uncDet);
  
  md.prepareDisplay();
  //md.doPlot();
  //cout<<" =========================== NOMINAL ============================= "<<endl;
  md.getStatistics("global");
  // cout<<" =========================== GLOBAL ============================= "<<endl;
  // md.getStatistics("global");
  // cout<<" =========================== GLOBALFake ============================= "<<endl;
  // md.getStatistics("global_Fake");


  //md.drawStatistics("global_BR00H", "selected");

  //md.savePlot("SUSY3L");
  // md.dp.addText(xt,yt,st,addText);

}
예제 #3
0
void template_usingDB()  {
  gStyle->SetOptStat(0);

  //general parameters ********************* general parameters
  string dir="WZsynchro";
  //string fileName="testAll_BR0"; // not needed for statistics
  //string fileList="testAll_BR0"; // put command line that gives all files as in a "ls" command

  //string fileName="fakeEstim_test"; // not needed for statistics
  //string fileList="fakeEstim_test"; // put command line that gives all files as in a "ls" command
  //string fileName="q"; // not needed for statistics
  //string fileList="q"; // put command line that gives all files as in a "ls" command
  
  //string fileName="testWZandTT_JonSel"; // not needed for statistics
  //string fileList="testWZandTT_JonSel"; // put command line that gives all files as in a "ls" command
  
  //string fileName="testWZandTT_3lWZ"; // not needed for statistics
  //string fileList="testWZandTT_3lWZ"; // put command line that gives all files as in a "ls" command
  
  //string fileName="testWZandTT"; // not needed for statistics
  //string fileList="testWZandTT"; // put command line that gives all files as in a "ls" command
  
  //string fileName="FE_LEPPTall_LEPFLAVall_LHE1001"; // not needed for statistics
  //string fileList="FE_LEPPTall_LEPFLAVall_LHE1001"; // put command line that gives all files as in a "ls" command

  //string fileName="FE_LEPPTall_LEPFLAVall_LHE1001_WZstep0"; // not needed for statistics
  //string fileList="FE_LEPPTall_LEPFLAVall_LHE1001_WZstep0"; // put command line that gives all files as in a "ls" command

  //string fileName="WZ3L_WZSTEP3_LEPFLAVall_LHE1001"; // not needed for statistics
  //string fileList="WZ3L_WZSTEP3_LEPFLAVall_LHE1001"; // put command line that gives all files as in a "ls" command

  string fileName="WZ3L_WZSTEP5_LEPFLAVall_LHE1001"; // not needed for statistics
  string fileList="WZ3L_WZSTEP5_LEPFLAVall_LHE1001"; // put command line that gives all files as in a "ls" command


  bool mcOnly = false;
  
  //if(md.isInitStatus()) {
    md.anConf.configureNames( dir, fileName, fileList);
    md.anConf.configureData(false, 0, mcOnly);
    //}

  //observables **********************
  //string obs[6]={"","","","","",""};
    md.dp.setObservables("METWZCR");
     //md.dp.setObservables("MTminBR0H");
    md.dp.setObservables("HTWZCR");
    md.dp.setObservables("NBJetsWZCR");
    md.dp.setObservables("NJetsWZCR");
  

  //Binning & title ************************* Binning & titre
  string yTitle="number of events";
  int binning=40;
  int addBinBkg=1; //BinB = binning*AddBin
  double rangeY[2]={0,0};
  double rangeX[2]={0.,500.};
  int xDiv[3]={8,6,0};
  int yDiv[3]={6,6,0}; //Nlabel /  sous-Div /ssdiv
  bool logYScale=false;
  bool overFlowBin=true;
  bool underFlowBin=false;
  bool showDMCRatio=true;
  bool showGrid=false;
  float markerSize=0.8;
  float lineWidth=2;

  bool summedSignal=false;
  bool stacking=true;

  bool cmsPrel=true;

  float xt=0.68;
  float yt=0.48;
  float st=0.039;
  string addText="";

  string autoBinFile="susybinning";
  md.dp.loadAutoBinning(autoBinFile);

  //Systematic uncertainties ********************************
  bool addSystematics=true;
  
  bool mcStatSyst=true;
  string systSources="";

  bool uncDet=false;

  string Norm="";
  
  //Lumis( or XSections ) pb-1 & KFactors ************************************
  float lumi=10000; //pb-1 19470
  float energy=13; //TeV

  bool useXS=false;
  md.anConf.loadXSDB("XSectionsSpring15.db");
  map<string,float> LumisXS;
  
  map<string,float> KFactors;

  md.anConf.configureLumi( LumisXS, KFactors, lumi, useXS );

  // SDYJetsM50_HT600toInf_PU_S14_POSTLS170_skimamples **************************  samples
  //if( md.isInitStatus() ) {


//   md.anConf.addSample( "WZJetsTo3LNu"                   , "WZ", kOrange-4); 
//   //md.anConf.addSample( "TTJets"     , "t#bar{t}", kBlue+1); 
//   md.anConf.addSample( "SMS_T1tttt_2J_mGl1200_mLSP800", "T1tttt (1.2/0.8) sig * 20", kViolet-3);
// 
//   md.anConf.addSample( "WJetsToLNu_HT100to200"         , "W+Jets", kAzure-2); 
//   md.anConf.addSample( "WJetsToLNu_HT200to400"         , "W+Jets", kAzure-2);  
//   md.anConf.addSample( "WJetsToLNu_HT400to600"         , "W+Jets", kAzure-2); 
//   md.anConf.addSample( "WJetsToLNu_HT600toInf"         , "W+Jets", kAzure-2); 
//  
//   //md.anConf.addSample( "DYJetsToLL_M50"                      , "Z+Jets", kAzure+6); 
//   md.anConf.addSample( "DYJetsToLL_M50_HT100to200"    , "Z+Jets", kAzure+6); 
//   md.anConf.addSample( "DYJetsToLL_M50_HT200to400"    , "Z+Jets", kAzure+6); 
//   md.anConf.addSample( "DYJetsToLL_M50_HT400to600"    , "Z+Jets", kAzure+6); 
//   md.anConf.addSample( "DYJetsToLL_M50_HT600toInf"    , "Z+Jets", kAzure+6); 
// 
//   md.anConf.addSample( "TTJets"     , "t#bar{t}", kBlue+1); 
// 
//   md.anConf.addSample("TToLeptons_sch"     , "Single top", kBlue+3);
//   md.anConf.addSample("TToLeptons_tch"     , "Single top", kBlue+3);
//   md.anConf.addSample("T_tWch"     , "Single top", kBlue+3);
//   md.anConf.addSample("TBarToLeptons_sch"     , "Single top", kBlue+3);
//   md.anConf.addSample("TBarToLeptons_tch"     , "Single top", kBlue+3);
//   md.anConf.addSample("TBar_tWch"     , "Single top", kBlue+3);
// 
//   md.anConf.addSample( "TTWJets"                        , "rare", kOrange-2); 
//   md.anConf.addSample( "TTZJets"                        , "rare", kOrange-2); 
//   //md.anConf.addSample( "WZJetsTo3LNu"                   , "rare", kOrange-2); 
//   md.anConf.addSample( "ZZTo4L"                   , "rare", kOrange-2); 
//   md.anConf.addSample( "TTH"                   , "rare", kOrange-2); 
// /*
//   md.anConf.addSample( "SMS_T1tttt_2J_mGl1200_mLSP800", "T1tttt (1.2/0.8) sig * 20", kViolet-3);
//   //md.anConf.addSample( "SMS_T1tttt_2J_mGl1500_mLSP100", "T1tttt (1.5/0.1) sig * 20", kViolet-3);
//   //md.anConf.addSample( "T1ttbbWW_mGo1300_mCh300_mChi290"                             , "T1ttbbWW (1.3/0.3) sig * 20", kBlue); 
//   md.anConf.addSample( "T1ttbbWW_mGo1000_mCh725_mChi720"                             , "T1ttbbWW (1.0/0.7) sig * 20", kBlue); 
//   md.anConf.addSample( "T5ttttDeg_mGo1000_mStop300_mChi280"                          , "T5tttt deg. (1.0/0.3, 4bd) sig * 20", kGreen+2); 
//   //md.anConf.addSample( "T5ttttDeg_mGo1000_mStop300_mCh285_mChi280"                   , "T5tttt deg. (1.0/0.3, Chi) sig * 20", kGreen+2); 
//   //md.anConf.addSample( "T6ttWW_mSbot650_mCh150_mChi50"                               , "T6ttWW (650/150/50) sig * 20", kRed+1); 
//   md.anConf.addSample( "T6ttWW_mSbot600_mCh425_mChi50"                               , "T6ttWW (600/425/50) sig * 20", kRed+1); 
//   md.anConf.addSample( "T5qqqqWW_mGo1200_mCh1000_mChi800_dilep"                            , "T5qqqqWW (1.2/0.8) sig * 20", kOrange+6); 
//   */
//  
// 
//   md.anConf.addSample( "TTWJets_aMCatNLO"                        , "TTWaMCatNLO", kBlue+3); 
//   md.anConf.addSample( "TTZJets_aMCatNLO"                        , "TTZaMCatNLO", kBlue+3); 
// 
//   md.anConf.addSample( "TTWJets"                        , "TTWmadgraph", kGreen-2); 
//   md.anConf.addSample( "TTZJets"                        , "TTZmadgraph", kGreen-2); 
//  


  //Santis version for WZ
/*
  md.anConf.addSample( "DYJetsToLL_M50_HT100to200"    , "fakes", kAzure+6); 
  md.anConf.addSample( "DYJetsToLL_M50_HT200to400"    , "fakes", kAzure+6); 
  md.anConf.addSample( "DYJetsToLL_M50_HT400to600"    , "fakes", kAzure+6); 
  md.anConf.addSample( "DYJetsToLL_M50_HT600toInf"    , "fakes", kAzure+6); 
  
  md.anConf.addSample( "TTJets"            , "fakes", kBlue+1); 
  //md.anConf.addSample( "TToLeptons_sch"    , "fakes", kBlue+1);
  //md.anConf.addSample( "TToLeptons_tch"    , "fakes", kBlue+1);
  //md.anConf.addSample( "T_tWch"            , "fakes", kBlue+1);
  //md.anConf.addSample( "TBarToLeptons_sch" , "fakes", kBlue+1);
  //md.anConf.addSample( "TBarToLeptons_tch" , "fakes", kBlue+1);
  //md.anConf.addSample( "TBar_tWch"         , "fakes", kBlue+1);
  
  md.anConf.addSample( "TTWJets"          , "t#bar{t}V", kBlue+3  ); 
  md.anConf.addSample( "TTZJets"          , "t#bar{t}V", kBlue+3  ); 
  md.anConf.addSample( "TTH"              , "t#bar{t}V", kBlue+3  );
  //  md.anConf.addSample( "ZZTo4L"           , "ZZ"       , kRed+2   );
  
  md.anConf.addSample( "WZJetsTo3LNu"     , "WZ"       , kOrange-2); 
*/
  
  //md.anConf.addSample( "TTJets"            , "TTJets", kRed+2); 


  //my 'a la Santi' processes for WZ study using available Spring 15 samples
  
  //md.anConf.addSample( "DYJetsToLL_M10to50"    , "fakes", kAzure+6);
//   md.anConf.addSample( "DYJetsToLL_M50"    , "fakes", kAzure+6);
//   md.anConf.addSample( "TTJets"            , "fakes", kBlue+1); 
//   //md.anConf.addSample( "TToLeptons_sch"    , "fakes", kBlue+1);
//   //md.anConf.addSample( "TToLeptons_tch"    , "fakes", kBlue+1);
//   //md.anConf.addSample( "T_tWch"            , "fakes", kBlue+1);
//   //md.anConf.addSample( "TBar_tWch"         , "fakes", kBlue+1);
// 
  //md.anConf.addSample( "WJetsToLNu_HT100to200"         , "W+Jets", kAzure-2); 
  //md.anConf.addSample( "WJetsToLNu_HT200to400"         , "W+Jets", kAzure-2);  
  //md.anConf.addSample( "WJetsToLNu_HT400to600"         , "W+Jets", kAzure-2); 
  //md.anConf.addSample( "WJetsToLNu_HT600toInf"         , "W+Jets", kAzure-2); 
  /*
  md.anConf.addSample( "WJetsToLNu"         , "W+Jets", kAzure-2); 

  md.anConf.addSample( "DYJetsToLL_M50"    , "Z+Jets", kAzure+6); 

  md.anConf.addSample( "TTJets"            , "TTJets", kRed+2); 
*/
  md.anConf.addSample( "WZp8"     , "WZ"       , kOrange-2); 
// 
  // md.anConf.addSample( "TTJets"            , "TTJets", kRed+2); 

  // }
  //===============================================================

  //*********************************************************************²
  //Execution macro ******************************************************
 
  //Configuration ================
  //if( md.isInitStatus() ) {
  
  //md.anConf.configureLumi( LumisXS, KFactors, lumi, useXS );
  // }

  //plotting ================
  md.dp.setLumiAndEnergy( lumi, energy );
  md.dp.setNormalization( Norm );
  md.dp.configureDisplay(yTitle, rangeY, rangeX, logYScale, xDiv,
          yDiv, binning, addBinBkg, overFlowBin,
          underFlowBin, showDMCRatio, showGrid,
          stacking, addSystematics, mcStatSyst,
          markerSize, lineWidth,summedSignal,
          mcOnly,cmsPrel, uncDet);

  md.prepareDisplay();
  md.doPlot();
  //md.makeDataCard(fileList, "global", "SR b-jet multiplicity");
  
  //md.getStatistics("global");
  //md.getStatistics("global_WZCR");
  //md.getStatistics("global_BR00H");
  md.getStatistics("global_WZCR");
  md.savePlot("phys14exerc");
  // md.dp.addText(xt,yt,st,addText);

  //gROOT->ProcessLine(".q");

}
예제 #4
0
파일: ssdl2015JES.C 프로젝트: jhoss/MPAF
void ssdl2015JES(){
  md.refresh();

  //general parameters ********************* general parameters
  string dir="SSDL2015";
  string fileName="fakeEstim_test";
  string fileList="fakeEstim_test";
  
  bool mcOnly = false;
  
  //if(md.isInitStatus()) {
  md.anConf.configureNames( dir, fileName, fileList );
  md.anConf.configureData(false, 0, mcOnly);
  //}
  
  //observables **********************
  md.dp.setObservables("MET");
    
  //Binning & title ************************* Binning & titre
  string yTitle="number of events";
  int binning=1;
  int addBinBkg=1; //BinB = binning*AddBin
  double rangeY[2]={0,0};
  double rangeX[2]={0,200};
  int xDiv[3]={8,6,0};
  int yDiv[3]={6,6,0}; //Nlabel /  sous-Div /ssdiv
  bool logYScale=false;
  bool overFlowBin=true;
  bool underFlowBin=false;
  bool showDMCRatio=true;
  bool showGrid=false;
  float markerSize=0.8;
  float lineWidth=2;

  bool summedSignal=false;
  bool stacking=true;

  bool cmsPrel=true;

  float xt=0.68;
  float yt=0.48;
  float st=0.039;
  string addText="";

  //string autoBinFile="susybinninghigh";
  //md.dp.loadAutoBinning(autoBinFile);

  //Systematic uncertainties ********************************
  bool addSystematics=false;
  
  bool mcStatSyst=true;
  string systSources="";

  bool uncDet=false;

  string Norm="";
  
  //Lumis( or XSections ) pb-1 & KFactors ************************************
  float lumi=10000; //pb-1 19470
  float energy=13; //TeV

  bool useXS=false;

  md.anConf.loadXSDB("XSectionsPhys14.db");

  map<string,float> LumisXS;

  //via XSect
  
  map<string,float> KFactors;
 
  // if( md.isInitStatus() )
  md.anConf.configureLumi( LumisXS, KFactors, lumi, useXS );
  

  //control categories ==============================
  //md.anConf.setControlCategs("Fake");
  //===============================================================
  
  //md.anConf.addSample( "TTJets", "TTJets", kBlack); 

  md.anConf.addSample( "T1ttbbWW_mGo1300_mCh300_mChi290", "T1ttbbWW", kBlack); 
  md.anConf.addSample( "T5qqqqWW_mGo1500_mCh800_mChi100", "T5qqqqWW", kBlack); 
  md.anConf.addSample( "T6ttWW_mSbot600_mCh425_mChi50", "T6ttWW64", kBlack); 
  md.anConf.addSample( "T6ttWW_mSbot650_mCh150_mChi50", "T6ttWW61", kBlack); 
  //md.anConf.addSample( "T5ttttDeg_mGo1000_mStop300_mCh285_mChi280_dil", "T5t4Deg", kBlack); 
  //md.anConf.addSample( "TTJets", "t#bar{t}", kWhite); 
  
  //md.anConf.addSample( "TTJets=80", "fake0", kBlue+1); // manual norm
  //md.anConf.addSample( "SR1A:TTJets", "fake1", kOrange-3); //both shape and norm from Fake workflow
  // md.anConf.addSample( "Fake:TTJets=120", "fake2", kBlue+1); //shape from Fake workflow, manual norm

  // md.anConf.addSample( "data:TTJets", "fake3", kBlue+1); //data driven process
  // md.anConf.addSample( "data:Fake:TTJets", "fake4", kBlue+1); //data driven process from Fake workflow
  // md.anConf.addSample( "data:Fake:TTJets=50", "fake5", kBlue+1); //data driven process, Fake workflow, manual norm
  

  //===============================================================

  //*********************************************************************²

  //plotting ================
  md.dp.setLumiAndEnergy( lumi, energy );
  md.dp.setNormalization( Norm );
  md.dp.configureDisplay(yTitle, rangeY, rangeX, logYScale, xDiv,
			 yDiv, binning, addBinBkg, overFlowBin,
			 underFlowBin, showDMCRatio, showGrid, 
			 stacking, addSystematics, mcStatSyst,
			 markerSize, lineWidth,summedSignal, 
			 mcOnly,cmsPrel, uncDet);
  
  md.prepareDisplay();
  //md.doPlot();
  md.getStatistics("nominal");

  //md.drawStatistics("global_BR00H", "selected");

  //md.savePlot("SUSY3L");
  // md.dp.addText(xt,yt,st,addText);

}
예제 #5
0
void susy3l_datacard() {
  md.refresh();


  //general parameters ********************* general parameters
  string dir="SUSY3L";
  string fileName="limits_160126_OnAndOffZ"; // not needed for statistics but provides the normalization
  string fileList="limits_160126_OnAndOffZ"; // put command line that gives all files as in a "ls" command

  bool mcOnly = false;
  
  md.anConf.configureNames( dir, fileName, fileList );
  md.anConf.configureData(false, 0, mcOnly);
  
  //Lumis( or XSections ) pb-1 & KFactors ************************************
  float lumi=2260; //pb-1 19470
  float energy=13; //TeV

  bool useXS=false;

  md.anConf.loadXSDB("XSectionsSpring15.db");

  map<string,float> LumisXS;
    
  md.anConf.loadKFDB("kFactorsSpring15.db");

  //via XSect
  map<string,float> KFactors;

  md.anConf.configureLumi( LumisXS, KFactors, lumi, useXS );

  //===============================================================


  string signal = "T1t4_1200"; md.addDataCardSigSample("T1tttt_mGo1200_mChi800",                     signal);
  //string signal = "T1t4_1500"; md.addDataCardSigSample("T1tttt_mGo1500_mChi100",                     signal);
  //string signal = "T54q_deg"; md.addDataCardSigSample("T5ttttDeg_mGo1000_mStop300_mCh285_mChi280",  signal);
  //string signal = "T6t2W2_600"; md.addDataCardSigSample("T6ttWW_mSbot600_mCh425_mChi50",              signal);
  //string signal = "T6t2W2_650"; md.addDataCardSigSample("T6ttWW_mSbot650_mCh150_mChi50",              signal);
  //string signal = "T54qWZ_315"; md.addDataCardSigSample("T5qqqqWZDeg_mGo1000_mCh315_mChi300_dilep",   signal);
  //string signal = "T54qWZ_325"; md.addDataCardSigSample("T5qqqqWZDeg_mGo1000_mCh325_mChi300_dilep",   signal);
  //string signal = "T54qWZ_800"; md.addDataCardSigSample("T5qqqqWZ_mGo1500_mCh800_mChi100_lep",        signal);
  //string signal = "T54qWZ_1000"; md.addDataCardSigSample("T5qqqqWZ_mGo1200_mCh1000_mChi800_lep",       signal);
  
  md.addDataCardSample("GGHZZ4L", "rare");
  md.addDataCardSample("VHToNonbb", "rare");
  md.addDataCardSample("ZZTo4L", "rare");
  md.addDataCardSample("WWZ", "rare");
  md.addDataCardSample("WZZ","rare");
  md.addDataCardSample("ZZZ", "rare");
  md.addDataCardSample("TTTT", "rare");
  md.addDataCardSample("tZq_ll", "rare");

  md.addDataCardSample("WZTo3LNu","WZ");

  md.addDataCardSample("TGJets", "XG");
  md.addDataCardSample("TTGJets", "XG");
  md.addDataCardSample("WGToLNuG", "XG");
  md.addDataCardSample("ZGTo2LG", "XG");
  
  md.addDataCardSample("TTZToLLNuNu","ttZH");
  md.addDataCardSample("TTHnobb", "ttZH");
  md.addDataCardSample("TTLLJets_m1to10", "ttZH");
  
  md.addDataCardSample("TTWToLNu", "ttW");
  
  md.addDataCardSample("TT_pow", "fake");
  md.addDataCardSample("DYJetsToLL_M50", "fake");
  md.addDataCardSample("DYJetsToLL_M10to50", "fake");
  md.addDataCardSample("TbarToLeptons_tch", "fake");
  md.addDataCardSample("TBar_tWch", "fake");
  md.addDataCardSample("TToLeptons_sch_amcatnlo", "fake");
  md.addDataCardSample("TToLeptons_tch", "fake");
  md.addDataCardSample("T_tWch", "fake");
  md.addDataCardSample("WJetsToLNu", "fake");
 
 
  
  //md.addDataCardSample("data","data");
  
  
  //shape uncertainties
  string nuis = "rare:WZ:XG:ttZH:ttW:fake:";
  nuis += signal;
  
  md.addNuisanceParameter("JES",nuis,"shape","");
  /*md.addNuisanceParameter("BTAG","ttW:ttZH:WZ:WW:XG:rares:T1ttttBENCH","shape","");
  md.addNuisanceParameter("tHTE","ttW:ttZH:WZ:WW:XG:rares:T1ttttBENCH","shape","");

  md.addNuisanceParameter("Ewk","fake","shape","");

  md.addNuisanceParameter("ttWAcc","ttW","shape","");
  md.addNuisanceParameter("ttHZAcc","ttHZ","shape","");

  md.addNuisanceParameter("BTAGFS","T1ttttBENCH","shape","");
  md.addNuisanceParameter("LepEffFS","T1ttttBENCH","shape","");
  md.addNuisanceParameter("ISR","T1ttttBENCH","shape","");

  md.addNuisanceParameter("QCDScale","T1ttttBENCH","shape","");
  */

  //vector<string> cats(
  string cats[30]={
    "OnZSR001","OnZSR002", "OnZSR003", "OnZSR004", "OnZSR005", "OnZSR006", "OnZSR007", "OnZSR008", "OnZSR009", "OnZSR010", "OnZSR011", "OnZSR012", "OnZSR013", "OnZSR014", "OnZSR015", 
    "OffZSR001","OffZSR002", "OffZSR003", "OffZSR004", "OffZSR005", "OffZSR006", "OffZSR007", "OffZSR008", "OffZSR009", "OffZSR010", "OffZSR011", "OffZSR012", "OffZSR013", "OffZSR014", "OffZSR015" };

  //vector<string> dss; 
  string dss[7]={"rare","WZ","XG","ttZH","ttW","fake",signal};
  

  
  //for(int isr=0;isr<66/*cats.size()*/;isr++) {
  //  md.addNuisanceParameter("pdfS"+cats[isr],"T1ttttBENCH","shape","");

    //md.addNuisanceParameter("flip"+cats[isr]+"stat","flip","shape","");
    //md.addNuisanceParameter("fake"+cats[isr]+"stat","fake","shape","");
    //for(size_t id=0;id<7/*dss.size()*/;id++) {
    //  md.addNuisanceParameter(dss[id]+cats[isr]+"stat",dss[id],"shape","");
    //}
  //}  

 /* 
  //Flat uncertanties =================================
  //lumi
  md.addNuisanceParameter("lumi","ttW:ttHZ:WW:XG:rares:T1ttttBENCH","lnN","1.046:1.046:1.046:1.046:1.046:1.046:1.046");
  //md.addNuisanceParameter("lumi","ttW:ttHZ:WW:XG:rares:T1ttttBENCH","lnN","1.12:1.12:1.12:1.12:1.12:1.12:1.12");
  //experimental uncertainties
  md.addNuisanceParameter("lEff","ttW:ttHZ:WW:XG:rares:T1ttttBENCH","lnN","1.04:1.04:1.04:1.04:1.04:1.04");
  md.addNuisanceParameter("tEff","ttW:ttHZ:WW:XG:rares:T1ttttBENCH","lnN","1.02:1.02:1.02:1.02:1.02:1.02");
  //Data-driven methods
  md.addNuisanceParameter("chMID","flip","lnN","1.30");
  md.addNuisanceParameter("fratio","fake","lnN","1.30");
  //theoretical uncertainties
  md.addNuisanceParameter("wzTh","WZ","lnN","1.30");
  md.addNuisanceParameter("WWTh","ttW","lnN","1.50");
  md.addNuisanceParameter("TGTh","XG","lnN","1.50");
  md.addNuisanceParameter("rareTh","rares","lnN","1.50");
  
  md.addNuisanceParameter("ttWPdf","ttW","lnN","1.04");
  md.addNuisanceParameter("ttHZPdf","ttHZ","lnN","1.04");
  md.addNuisanceParameter("ttWXs","ttW","lnN","1.13");
  md.addNuisanceParameter("ttHZXs","ttHZ","lnN","1.11");
  md.addNuisanceParameter("fsHLT","T1ttttBENCH","lnN","1.05");
*/
  md.addNuisanceParameter("fakeUnc","fake","lnN","1.30");
  md.addNuisanceParameter("sigUnc",signal,"lnN","1.10");
  md.addNuisanceParameter("promptUnc","rare:WZ:XG:ttZH:ttW","lnN","1.20:1.20:1.20:1.20:1.20");
  //===============================================================

  //*********************************************************************²
  //Execution macro ******************************************************
  
  //plotting ================
  md.dp.setLumiAndEnergy( lumi, energy );
   
  md.prepareDisplay();
  
  int ncategs=30;
  // vector<string> categs(
  string categs[30]={"global_OnZSR001","global_OnZSR002","global_OnZSR003","global_OnZSR004",
  "global_OnZSR005","global_OnZSR006","global_OnZSR007","global_OnZSR008","global_OnZSR009",
  "global_OnZSR010","global_OnZSR011","global_OnZSR012","global_OnZSR013","global_OnZSR014","global_OnZSR015",
  "global_OffZSR001","global_OffZSR002","global_OffZSR003","global_OffZSR004",
  "global_OffZSR005","global_OffZSR006","global_OffZSR007","global_OffZSR008","global_OffZSR009",
  "global_OffZSR010","global_OffZSR011","global_OffZSR012","global_OffZSR013","global_OffZSR014","global_OffZSR015"
  };
  vector<string> vcategs;
  for(int i=0;i<30;i++) {
    vcategs.push_back( categs[i] );
  }

/*
  //external uncertainties ===================================
  //vector<float> AccTTW
  float AccTTW[66]={
      0.03,0.08,0.03,0.08,0.08,0.08,0.08,0.08,
      0.03,0.08,0.03,0.08,0.08,0.08,0.08,0.08,
      0.03,0.08,0.03,0.08,0.08,0.08,0.08,0.08,
      0.03,0.08,0.03,0.08,0.03,0.08,0.08,0.08,
    
      0.03,0.08,0.03,0.08,0.08,0.08,0.03,0.08,
      0.03,0.08,0.08,0.08,0.03,0.08,0.03,0.08,
      0.08,0.08,0.03,0.08,0.03,0.08,0.03,0.08,
      0.08,0.08,
    
      0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,
  };
  
  //vector<float> AccTTHZ
  float AccTTHZ[66]={
    0.03,0.08,0.03,0.08,0.08,0.08,0.08,0.08,
    0.03,0.08,0.03,0.08,0.08,0.08,0.08,0.08,
    0.03,0.08,0.03,0.08,0.08,0.08,0.08,0.08,
    0.03,0.08,0.03,0.08,0.03,0.08,0.08,0.08,
    
    0.03,0.08,0.03,0.08,0.08,0.08,0.03,0.08,
    0.03,0.08,0.08,0.08,0.03,0.08,0.03,0.08,
    0.08,0.08,0.03,0.08,0.03,0.08,0.03,0.08,
    0.08,0.08,

    0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,
  };
  
  // vector<float> EWKFake({
  //     0.10,0.06,0.10,0.03,0.09,0.10,0.05,0.10,
  // 	0.09,0.11,0.11,0.09,0.09,0.02,0.10,0.10,
  // 	0.20,0.03,0.10,0.05,0.05,0.10,0.10,0.10,
  // 	0.10,0.10,0.10,0.10,0.10,0.10,0.10,0.10,

  // 	0.03,0.01,0.10,0.02,0.01,0.10,0.02,0.01,
  // 	0.01,0.01,0.01,0.01,0.02,0.01,0.10,0.10,
  // 	0.01,0.10,0.10,0.10,0.10,0.10,0.10,0.10,
  // 	0.10,0.10,

  // 	0.10,0.01,0.10,0.10,0.10,0.10,0.10,0.10,
  // 	});

  //vector<float> HLTEff
  float HLTEff[66]={
    0,0.02,0,0.02,0.02,0.02,0.02,0.02,
    0,0.02,0,0.02,0.02,0.02,0.02,0.02,
    0,0.02,0,0.02,0.02,0.02,0.02,0.02,
    0,0.02,0,0.02,0,0.02,0.02,0.02,
    
    0,0.02,0,0.02,0.02,0.02,0,0.02,
    0,0.02,0.02,0.02,0,0.02,0,0.02,
    0.02,0.02,0,0.02,0,0.02,0,0.02,
    0.02,0.02,

    0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02
  };

  
  //  int nCateg=66; //47
  //  vector<string> _categs(nCateg,"");
 
  //qcd scale for signal
  TFile* iQCDFile=new TFile("/shome/mmarionn/MPAF/workdir/QCDScales/scaleUncMASS-.root","read");
  TH1F* hQCDUp=(TH1F*)iQCDFile->Get("MASS-ScaleUp");
  TH1F* hQCDDown=(TH1F*)iQCDFile->Get("MASS-ScaleDown");
  */

  //for(size_t ic=0;ic<66/*categs.size()*/;ic++) {
  //   for(int isr=0;isr<66/*cats.size()*/;isr++) {
  //     if(categs[ic].substr(7, categs[ic].size()-7)==cats[isr])
	// md.addExternalSystUnc("T1ttttBENCH","pdfS"+cats[isr],0.1, -0.1, categs[ic], "selected");
     //  else
	 //md.addExternalSystUnc("T1ttttBENCH","pdfS"+cats[isr],0., 0., categs[ic], "selected");
     //}
     //md.addExternalSystUnc("T1ttttBENCH","QCDScale",hQCDUp->GetBinContent(ic+1), hQCDDown->GetBinContent(ic+1), categs[ic], "selected");

    //md.addExternalSystUnc("fake","frEwk",EWKFake[ic], -1*EWKFake[ic], categs[ic], "selected");
    //md.addExternalSystUnc("ttW","ttWAcc",AccTTW[ic], -1*AccTTW[ic], categs[ic], "selected");
    //md.addExternalSystUnc("ttHZ","ttHZAcc",AccTTHZ[ic], -1*AccTTHZ[ic], categs[ic], "selected");
    //for(size_t id=0;id<7/*dss.size()*/;id++) {
     // md.addExternalSystUnc(dss[id],"tHTE",HLTEff[ic], -1*HLTEff[ic], categs[ic], "selected");
    //}
  //}
  
  for(size_t ic=0;ic<30;ic++) {
    for(size_t id=0;id<7;id++) {
        md.addExternalSystUnc(dss[id],"JES",0.05,-0.05,vcategs[ic],"selected");
    }
  }
  
  md.makeMultiDataCard(signal, vcategs, "selected", signal);

 
  md.getStatistics("global");
  gROOT->ProcessLine(".q");

}