00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef HEPMCHELPER_NCUTTER_H
00010 #define HEPMCHELPER_NCUTTER_H
00011
00012 #ifndef HEPMCHELPER_IMCSELECTOR_H
00013 #include "AtlfastUtils/HepMC_helper/IMCselector.h"
00014 #endif
00015
00016 #ifndef HEPMCHELPER_ALL_H
00017 #include "AtlfastUtils/HepMC_helper/All.h"
00018 #endif
00019
00020 #ifndef STD_VECTOR_H
00021 #include <vector>
00022 #define STD_VECTOR_H
00023 #endif
00024
00025 namespace HepMC_helper{
00026
00027 class NCutter: public IMCselector {
00028 typedef std::vector<IMCselector*> Selectors;
00029 private:
00030 Selectors m_selectors;
00031
00032 public:
00033
00034 NCutter() {m_selectors.push_back( new All() ); }
00035
00036 NCutter(const Selectors selectors){
00037 Selectors::const_iterator i=selectors.begin();
00038 for(; i != selectors.end(); ++i) m_selectors.push_back((*i)->create());
00039 }
00040
00041 NCutter(const IMCselector* selector){
00042 m_selectors.push_back(selector->create() );
00043 }
00044
00045 NCutter( const NCutter& src ):IMCselector(){
00046 Selectors::const_iterator i=(src.m_selectors).begin();
00047 for(;i != (src.m_selectors).end(); ++i){
00048 m_selectors.push_back((*i)->create());
00049 }
00050 }
00051
00052 ~NCutter() {
00053 Selectors::iterator i=m_selectors.begin();
00054 for(; i != m_selectors.end(); ++i) delete(*i);
00055 }
00056
00057 IMCselector* create() const;
00058 bool operator() ( const Particle* const ) const ;
00059 bool operator() ( const Particle& p ) const;
00060 };
00061 }
00062 #endif
00063
00064
00065
00066
00067
00068