#include "AddOns/Analysis/Triggers/Trigger_Base.H" #include "ATOOLS/Org/Message.H" namespace ANALYSIS { class HT_Selector: public Trigger_Base { protected: double m_xmin, m_xmax; int m_mode; public: inline HT_Selector(const double min,const double max,const int mode, const std::string &inlist,const std::string &outlist): Trigger_Base(inlist,outlist), m_xmin(min), m_xmax(max), m_mode(mode) {} void Evaluate(const ATOOLS::Particle_List &inlist, ATOOLS::Particle_List &outlist,double value,double ncount) { double HT=0.0; for (ATOOLS::Particle_List::const_iterator pit(inlist.begin());pit!=inlist.end();++pit) HT+=m_mode?(*pit)->Momentum().EPerp():(*pit)->Momentum().PPerp(); if (HT>=m_xmin && HT<=m_xmax) { outlist.resize(inlist.size()); for (size_t i=0;i::operator() (const Analysis_Key& key) const { ATOOLS::Scoped_Settings s{ key.m_settings }; const auto parameters = s.SetDefault({}).GetVector(); if (parameters.size() < 4) THROW(missing_input, "Missing parameter values."); const int mode{ parameters.size() > 4 ? s.Interprete(parameters[4]) : 0 }; return new HT_Selector(s.Interprete(parameters[0]), s.Interprete(parameters[1]),mode, parameters[2],parameters[3]); } void ATOOLS::Getter :: PrintInfo(std::ostream &str,const size_t width) const { str<<"[min, max, inlist, outlist, mode] ... mode is optional and defaults to 0"; }