#ifndef Top_MET_D3PD_h #define Top_MET_D3PD_h //////////////////////////////////////////////////////////////////// /// Define the D3PD reader (use typedef to rename your D3PD reader #include "NtupleReader.h" typedef NtupleReader D3PDReader; // //////////////////////////////////////////////////////////////////// #include "Top_MET.h" #include #include "TLorentzVector.h" ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // class Top_MET_D3PD // Proves a standard interface to modify the missing ET in the TopInputs D3PD // -enables modification fo the missing ET for default corrections to the selected objects and for studies of systematic uncertainties. // -implements the MET only uncertainties for the CellOut term and the SoftJet term. // // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class Top_MET_D3PD : public Top_MET { public: Top_MET_D3PD(); virtual ~Top_MET_D3PD(); //avalible MET definitions enum MET_Def{MET_RefFinal_em_tight=0, MET_RefFinal_em_medium, MET_RefFinal_em_tight_photon, MET_RefFinal_em_medium_photon, MET_RefFinal_4lc_tight, MET_RefFinal_4lc_medium, MET_RefFinal_4lc_tight_photon, MET_RefFinal_4lc_medium_photon, NMET_Def}; // Function to Set and retrieve the MET defintion to be used (uses MET_Def enum) bool Set_MET_Def(int type); int Get_Met_Def(); // Load the D3PD reader and configure the class. This must be done before calling any of the below functions virtual void Configure(D3PDReader *Ntp_); virtual void ApplySoftJetUncertainty(float sigma,std::vector Jets_JESup_); virtual void ApplyCellOutUncertainty(float sigma); private: // Function to switch pointers to the current missing ET definition virtual void LinktoMET(); //varibles D3PDReader *Ntp; int MET_type; }; #endif