00001 #ifndef FORIA_FOURVECTORSELECTION_HH 00002 #define FORIA_FOURVECTORSELECTION_HH 00003 00004 #include "ForIA/IFourMomentum.hh" 00005 #include "boost/smart_ptr.hpp" 00006 00007 namespace ForIA{ 00008 00009 class Event; 00010 00011 class FourVectorSelection { 00012 00013 public: 00014 00015 FourVectorSelection(); 00016 virtual ~FourVectorSelection(){}; 00017 00018 void setEvent(const Event &evt); 00019 const MomentumVector &fourVectors()const; 00020 const MomentumVector &rejectedFourVectors()const; 00021 00022 protected: 00023 00024 virtual void fillVectors() const = 0; 00025 00026 mutable bool m_freshEvent; 00027 const Event *m_event; 00028 bool m_canSetCuts; 00029 00030 mutable MomentumVector m_passedFourVectors; 00031 mutable MomentumVector m_rejectedFourVectors; 00032 00033 private: 00034 00035 00036 }; 00037 00038 typedef boost::shared_ptr<FourVectorSelection> SelectionPtr; 00039 00040 } 00041 00042 #endif