00001 #ifndef ATLFAST_TYPEVISITOR_H 00002 #define ATLFAST_TYPEVISITOR_H 00003 00007 00008 #ifndef ATLFAST_IAOO_H 00009 #include "AtlfastEvent/IAOO.h" 00010 #endif 00011 00012 #ifndef ATLFAST_IAOOVISITOR_H 00013 #include "AtlfastEvent/IAOOvisitor.h" 00014 #endif 00015 00016 #ifndef STD_VECTOR_H 00017 #include <vector> 00018 #define STD_VECTOR_H 00019 #endif 00020 00021 #ifndef EVENTKERNEL_I4MOMENTUM_H 00022 #include "EventKernel/I4Momentum.h" 00023 #endif 00024 00025 00026 namespace Atlfast{ 00027 class ReconstructedParticle; 00028 class Cell; 00029 class IKinematic; 00030 class TwoCptCell; 00031 class Cluster; 00032 class Jet; 00033 class SimpleKinematic; 00034 class Track; 00035 class KtCluster; 00036 00037 class IAOO; 00038 00039 class TypeVisitor: public IAOOvisitor{ 00040 public: 00041 TypeVisitor(){} 00042 ~TypeVisitor(){} 00044 void reset(); 00045 void operator()(const IAOO* ia); 00046 00048 virtual void process(const Cell*); 00049 virtual void process(const Cluster*); 00050 virtual void process(const Jet*); 00051 virtual void process(const ReconstructedParticle*); 00052 virtual void process(const SimpleKinematic*); 00053 virtual void process(const Track*); 00054 virtual void process(const TwoCptCell*); 00055 virtual void process(const KtCluster*); 00056 00057 // 00058 virtual std::vector<const Cell*> 00059 typeVector(const Cell&) const; 00060 00061 virtual std::vector<const TwoCptCell*> 00062 typeVector(const TwoCptCell&) const; 00063 00064 virtual std::vector<const Cluster*> 00065 typeVector(const Cluster&) const; 00066 00067 virtual std::vector<const KtCluster*> 00068 typeVector(const KtCluster&) const; 00069 00070 virtual std::vector<const Jet*> 00071 typeVector(const Jet&) const; 00072 00073 virtual std::vector<const SimpleKinematic*> 00074 typeVector(const SimpleKinematic&) const; 00075 00076 virtual std::vector<const Track*> 00077 typeVector(const Track&) const; 00078 00079 virtual std::vector<const ReconstructedParticle*> 00080 typeVector(const ReconstructedParticle&) const; 00081 00082 virtual std::vector<const IKinematic*> 00083 ikinematics() const; 00084 00085 virtual std::vector<const I4Momentum*> i4momenta() const; 00086 00087 private: 00088 00090 std::vector<const Cell*> m_cells ; 00091 std::vector<const TwoCptCell*> m_twoCptCells ; 00092 std::vector<const Cluster*> m_clusters ; 00093 std::vector<const KtCluster*> m_ktClusters ; 00094 std::vector<const Jet*> m_jets ; 00095 std::vector<const ReconstructedParticle*> m_reconstructedParticles ; 00096 std::vector<const SimpleKinematic*> m_simpleKinematics ; 00097 std::vector<const Track* > m_tracks ; 00098 std::vector<const IKinematic*> m_iKinematics ; 00099 00100 }; 00101 }//namespace 00102 #endif 00103 00104 00105 00106 00107 00108 00109 00110 00111 00112 00113 00114