12 #include "core/baby.hpp" 35 int main(
int argc,
char *argv[]){
36 gErrorIgnoreLevel = 6000;
42 string hostname =
execute(
"echo $HOSTNAME");
44 bfolder =
"/net/cms2";
46 string foldermc(bfolder+
"/cms2r0/babymaker/babies/2016_06_14/mc/unskimmed/");
47 string folderb(bfolder+
"/cms2r0/babymaker/babies/2016_07_18/mc/benchmarks/");
48 string baseline =
"1";
49 Palette colors(
"txt/colors.txt",
"default");
52 {folderb+
"*TT*DiLep*.root"}, baseline);
54 {folderb+
"*SMS-T1tttt_mGluino-1200_mLSP-800*.root"}, baseline);
56 {folderb+
"*SMS-T1tttt_mGluino-1500_mLSP-100*.root"}, baseline);
59 proc_t1c->SetLineStyle(2);
61 auto proc_t14qc = Process::MakeShared<Baby_full>(
"T1qqqq(1000,800)",
Process::Type::signal, kAzure+2 ,
62 {folderb+
"*SMS-T1qqqq_mGluino-1000_mLSP-800*.root"}, baseline);
63 auto proc_t14qnc = Process::MakeShared<Baby_full>(
"T1qqqq(1400,100)",
Process::Type::signal, kAzure+2 ,
64 {folderb+
"*SMS-T1qqqq_mGluino-1400_mLSP-100*.root"}, baseline);
65 proc_t14qc->SetLineStyle(2);
68 {folderb+
"*SMS-T2tt_mStop-425_mLSP-325*.root"}, baseline);
69 proc_t2ttvc->SetLineStyle(3);
71 {folderb+
"*SMS-T2tt_mStop-500_mLSP-325*.root"}, baseline);
72 proc_t2ttc->SetLineStyle(2);
74 {folderb+
"*SMS-T2tt_mStop-850_mLSP-100*.root"}, baseline);
76 vector<shared_ptr<Process> > tt_procs = {proc_tt};
77 vector<shared_ptr<Process> > proc_isrpt = {proc_t14qc, proc_t14qnc, proc_t1c, proc_t1nc, proc_t2ttvc, proc_t2ttc, proc_t2ttnc, proc_tt};
78 vector<shared_ptr<Process> > proc_isrpt_nolep = {proc_t14qc, proc_t14qnc, proc_t1c, proc_t1nc, proc_t2ttvc, proc_t2ttc, proc_t2ttnc};
80 PlotOpt log_lumi(
"txt/plot_styles.txt",
"CMSPaper");
81 log_lumi.
Title(TitleType::preliminary)
83 .
YAxis(YAxisType::log)
84 .
Stack(StackType::shapes);
86 PlotOpt log_lumi_info = log_lumi().
Title(TitleType::info);
87 PlotOpt lin_lumi_info = lin_lumi().
Title(TitleType::info);
88 vector<PlotOpt> plot_types = {log_lumi_info, lin_lumi_info};
94 float minx(0), maxx(460);
95 int nbins(static_cast<int>((maxx-minx)/10));
97 minx = 0; maxx = 800; nbins =
static_cast<int>((maxx-minx)/25);
98 pm.
Push<
Hist1D>(
Axis(nbins, minx, maxx,
"isr_tru_pt",
"True ISR p_{T} [GeV]"),
99 "(ntrutaush+ntrutausl)==0", proc_isrpt, plot_types);
101 minx = -0.5; maxx = 7.5; nbins =
static_cast<int>((maxx-minx)/1);
102 pm.
Push<
Hist1D>(
Axis(nbins, minx, maxx,
"nisr",
"Number of ISR jets"),
103 true, proc_isrpt, plot_types).Weight(1.);
105 minx = -0.5; maxx = 7.5; nbins =
static_cast<int>((maxx-minx)/1);
106 pm.
Push<
Hist1D>(
Axis(nbins, minx, maxx,
"nisr",
"Number of ISR jets"),
107 "(ntrutaush+ntrutausl)==0", proc_isrpt_nolep, plot_types).Weight(1.);
109 minx = -0.5; maxx = 7.5; nbins =
static_cast<int>((maxx-minx)/1);
110 pm.
Push<
Hist1D>(
Axis(nbins, minx, maxx,
"nisr",
"Number of ISR jets"),
111 "ntruleps==0", proc_isrpt_nolep, plot_types).Weight(1.);
113 minx = -2.5; maxx =2.5; nbins =
static_cast<int>((maxx-minx)/1);
114 pm.
Push<
Hist1D>(
Axis(nbins, minx, maxx,
"nisr-(njets-2)",
"true - reco ISR multiplicity"),
115 "nbm==2&&nleps==2", tt_procs, plot_types).Weight(1.);
116 minx = -2; maxx = 2; nbins =
static_cast<int>((maxx-minx)/0.1);
117 pm.
Push<
Hist1D>(
Axis(nbins, minx, maxx,
"(jetsys_nob_pt-isr_tru_pt)/isr_tru_pt",
"(Reco-True)/True ISR p_{T} [GeV]"),
118 "nbm>=2", tt_procs, plot_types);
120 minx = -300; maxx = 200; nbins =
static_cast<int>((maxx-minx)/10);
121 pm.
Push<
Hist1D>(
Axis(nbins, minx, maxx,
"jetsys_nob_pt-isr_tru_pt",
"Reco-True ISR p_{T} [GeV]"),
122 "nbm>=2", tt_procs, plot_types);
131 static struct option long_options[] = {
132 {
"single_thread", no_argument, 0,
's'},
138 opt = getopt_long(argc, argv,
"s", long_options, &option_index);
140 if( opt == -1)
break;
148 optname = long_options[option_index].name;
151 printf(
"Bad option! Found option name %s\n", optname.c_str());
155 printf(
"Bad option! getopt_long returned character code 0%o\n", opt);
163 for (
size_t ijet(0); ijet<b.
jets_pt()->size(); ijet++){
166 for (
size_t imc(0); imc<b.
mc_pt()->size(); imc++){
167 if(b.
mc_status()->at(imc)!=23 || abs(b.
mc_id()->at(imc))>5)
continue;
168 if(!(abs(b.
mc_mom()->at(imc))==6 || abs(b.
mc_mom()->at(imc))==23 ||
169 abs(b.
mc_mom()->at(imc))==24 || abs(b.
mc_mom()->at(imc))==15 || abs(b.
mc_mom()->at(imc))>1e6))
continue;
173 <<b.
mc_pt()->at(imc)<<
", "<<b.
mc_eta()->at(imc)<<
", "<<b.
mc_phi()->at(imc)<<
"), ID "<<b.
mc_id()->at(imc)<<
". dR "<<dR <<endl;
184 for (
size_t imc(0); imc<b.
mc_pt()->size(); imc++){
185 if(b.
mc_status()->at(imc)!=23 || abs(b.
mc_id()->at(imc))>5)
continue;
186 if(!(abs(b.
mc_mom()->at(imc))==6 || abs(b.
mc_mom()->at(imc))==23 ||
187 abs(b.
mc_mom()->at(imc))==24 || abs(b.
mc_mom()->at(imc))==15 || abs(b.
mc_mom()->at(imc))>1e6))
continue;
189 <<b.
mc_pt()->at(imc)<<
", "<<b.
mc_eta()->at(imc)<<
", "<<b.
mc_phi()->at(imc)<<
"), ID "<<b.
mc_id()->at(imc)<<endl;
191 cout<<
" ======== New event: njets "<<b.
njets()<<
", Nisr "<<Nisr<<endl<<endl;
197 return ijet<b.
jets_pt()->size()
std::vector< int > *const & mc_status() const
Get mc_status for current event and cache it.
PlotOpt & Stack(PlotOptTypes::StackType stack_type)
PlotOpt & YAxis(PlotOptTypes::YAxisType y_axis_type)
bool isGoodJet(const Baby &b, size_t ijet)
int const & njets() const
Get njets for current event and cache it.
std::vector< float > *const & jets_phi() const
Get jets_phi for current event and cache it.
Abstract base class for access to ntuple variables.
NamedFunc::ScalarType nisrMatch(const Baby &b)
Combines a callable function taking a Baby and returning a scalar or vector with its string represent...
bool Contains(const std::string &str, const std::string &pat)
std::string execute(const std::string &cmd)
std::vector< int > *const & mc_mom() const
Get mc_mom for current event and cache it.
std::vector< float > *const & mc_pt() const
Get mc_pt for current event and cache it.
FigureType & Push(Args &&...args)
int main(int argc, char *argv[])
std::vector< float > *const & jets_eta() const
Get jets_eta for current event and cache it.
Organizes efficient production of plots with single loop over each process.
float deltaR(float eta1, float phi1, float eta2, float phi2)
PlotOpt & Bottom(PlotOptTypes::BottomType bottom_type)
std::vector< int > *const & mc_id() const
Get mc_id for current event and cache it.
A full 1D plot with stacked/overlayed histograms.
std::vector< float > *const & jets_pt() const
Get jets_pt for current event and cache it.
void GetOptions(int argc, char *argv[])
std::vector< float > *const & mc_eta() const
Get mc_eta for current event and cache it.
std::vector< bool > *const & jets_islep() const
Get jets_islep for current event and cache it.
void MakePlots(double luminosity, const std::string &subdir="")
Prints all added plots with given luminosity.
PlotOpt & Title(PlotOptTypes::TitleType title_type)
std::vector< float > *const & mc_phi() const
Get mc_phi for current event and cache it.
Loads colors from a text configuration file.