00001 #ifndef ATLFAST_MOMENTUMSUMVISITOR_H 00002 #define ATLFAST_MOMENTUMSUMVISITOR_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 00022 #ifndef CLHEP_LORENTZVECTOR_H 00023 #include "CLHEP/Vector/LorentzVector.h" 00024 #define CLHEP_LORENTZVECTOR_H 00025 #endif 00026 00027 namespace Atlfast{ 00028 class ReconstructedParticle; 00029 class Cell; 00030 class IKinematic; 00031 class TwoCptCell; 00032 class KtCluster; 00033 class Cluster; 00034 class Jet; 00035 class SimpleKinematic; 00036 class Track; 00037 00038 class IAOO; 00039 00040 using ::HepLorentzVector; 00041 00042 class MomentumSumVisitor: public IAOOvisitor{ 00043 public: 00044 ~MomentumSumVisitor(){} 00046 void reset(); 00047 void operator()(const IAOO* ia); 00048 00050 virtual void process(const Cell*); 00051 virtual void process(const Cluster*); 00052 virtual void process(const KtCluster*); 00053 virtual void process(const Jet*); 00054 virtual void process(const ReconstructedParticle*); 00055 virtual void process(const SimpleKinematic*); 00056 virtual void process(const Track*); 00057 virtual void process(const TwoCptCell*); 00058 00059 // 00060 00061 HepLorentzVector momSum(const Cell&) const; 00062 HepLorentzVector momSum(const TwoCptCell&) const; 00063 HepLorentzVector momSum(const Cluster&) const; 00064 HepLorentzVector momSum(const KtCluster&) const; 00065 HepLorentzVector momSum(const Jet&) const; 00066 HepLorentzVector momSum(const SimpleKinematic&) const; 00067 HepLorentzVector momSum(const Track&) const; 00068 HepLorentzVector momSum(const ReconstructedParticle&) const; 00069 00070 private: 00071 00073 HepLorentzVector m_cellMom; 00074 HepLorentzVector m_twoCptCellMom; 00075 HepLorentzVector m_clusterMom; 00076 HepLorentzVector m_ktClusterMom; 00077 HepLorentzVector m_jetMom; 00078 HepLorentzVector m_reconstructedParticleMom; 00079 HepLorentzVector m_simpleKinematicMom; 00080 HepLorentzVector m_trackMom; 00081 }; 00082 }//namespace 00083 #endif 00084 00085 00086 00087 00088 00089 00090 00091 00092 00093 00094 00095