00001 #ifndef HZZ2L2NU_INCLUDE_NRBANALYSIS_H_ 00002 #define HZZ2L2NU_INCLUDE_NRBANALYSIS_H_ 00003 00004 #include <map> 00005 #include <memory> 00006 #include <utility> 00007 #include <vector> 00008 00009 #include <boost/program_options.hpp> 00010 #include <TH1.h> 00011 #include <TRandom3.h> 00012 #include <TString.h> 00013 #include <TTreeReaderArray.h> 00014 #include <TTreeReaderValue.h> 00015 00016 #include <AnalysisCommon.h> 00017 #include <Dataset.h> 00018 #include <Options.h> 00019 #include <SmartSelectionMonitor_hzz.h> 00020 00021 00023 class NrbAnalysis : public AnalysisCommon { 00024 public: 00025 NrbAnalysis(Options const &options, Dataset &dataset); 00026 00028 static boost::program_options::options_description OptionsDescription(); 00029 00031 void PostProcessing(); 00032 00038 bool ProcessEvent(); 00039 00040 private: 00041 enum {ee, mumu, ll, lepCat_size}; 00042 enum {eq0jets, geq1jets, vbf, jetCat_size}; 00043 00044 void InitializeHistograms(); 00045 00046 Dataset &dataset_; 00047 std::string outputFile_; 00048 bool keepAllControlPlots_; 00049 std::string syst_; 00050 00051 mutable SmartSelectionMonitor_hzz mon_; 00052 bool divideFinalHistoByBinWidth_; 00053 std::vector<std::string> v_jetCat_, tagsR_; 00054 unsigned tagsR_size_; 00055 00056 std::vector<double> optim_Cuts1_met_; 00057 00058 TString fileName_; 00059 00060 TTreeReaderValue<UInt_t> run_ = {dataset_.Reader(), "run"}; 00061 TTreeReaderValue<Float_t> rho_ = {dataset_.Reader(), "fixedGridRhoFastjetAll"}; 00062 TTreeReaderValue<Int_t> numPVGood_ = {dataset_.Reader(), "PV_npvsGood"}; 00063 TTreeReaderArray<Float_t> muonPt_ = {dataset_.Reader(), "Muon_pt"}; 00064 TTreeReaderArray<Float_t> electronPt_ = {dataset_.Reader(), "Electron_pt"}; 00065 std::unique_ptr<TTreeReaderArray<int>> genPartPdgId_, genPartMotherIndex_; 00066 }; 00067 00068 #endif // HZZ2L2NU_INCLUDE_NRBANALYSIS_H_ 00069