00001 #include "AtlfastEvent/TypeVisitor.h"
00002
00003 #include "AtlfastEvent/ReconstructedParticle.h"
00004 #include "AtlfastEvent/Cell.h"
00005 #include "AtlfastEvent/TwoCptCell.h"
00006 #include "AtlfastEvent/Cluster.h"
00007 #include "AtlfastEvent/KtCluster.h"
00008 #include "AtlfastEvent/Jet.h"
00009 #include "AtlfastEvent/SimpleKinematic.h"
00010 #include "AtlfastEvent/Track.h"
00011
00012 #include <iostream>
00013
00014 namespace Atlfast{
00015 void TypeVisitor::reset() {
00016 m_cells.clear() ;
00017 m_twoCptCells.clear() ;
00018 m_clusters.clear() ;
00019 m_jets.clear() ;
00020 m_reconstructedParticles.clear() ;
00021 m_simpleKinematics.clear() ;
00022 m_tracks.clear() ;
00023 m_iKinematics.clear() ;
00024 }
00025
00027 void TypeVisitor::operator()(const IAOO* iaoo){iaoo->accept(this);}
00028
00029 void TypeVisitor::process(const Cell* t){
00030 m_cells.push_back(t);
00031 }
00032 void TypeVisitor::process(const Cluster* t){m_clusters.push_back(t);}
00033 void TypeVisitor::process(const KtCluster* t){m_ktClusters.push_back(t);}
00034 void TypeVisitor::process(const Jet* t){m_jets.push_back(t);}
00035
00036 void TypeVisitor::process(const ReconstructedParticle* t){
00037 m_reconstructedParticles.push_back(t);
00038 }
00039
00040 void TypeVisitor::process(const SimpleKinematic* t){
00041 m_simpleKinematics.push_back(t);
00042 }
00043
00044 void TypeVisitor::process(const Track* t){m_tracks.push_back(t);}
00045
00046 void TypeVisitor::process(const TwoCptCell* t){
00047 m_twoCptCells.push_back(t);
00048 }
00049
00050 vector<const Cell*> TypeVisitor::typeVector( const Cell&) const {
00051 return m_cells ;
00052 }
00053 vector<const TwoCptCell*> TypeVisitor::typeVector(const TwoCptCell&) const {
00054 return m_twoCptCells ;
00055 }
00056 vector<const Cluster*> TypeVisitor::typeVector( const Cluster&) const {
00057 return m_clusters ;
00058 }
00059 vector<const KtCluster*> TypeVisitor::typeVector( const KtCluster&) const {
00060 return m_ktClusters ;
00061 }
00062 vector<const Jet*> TypeVisitor::typeVector( const Jet&) const {
00063 return m_jets ;
00064 }
00065 vector<const SimpleKinematic*>
00066 TypeVisitor::typeVector( const SimpleKinematic&) const {
00067 return m_simpleKinematics ;
00068 }
00069 vector<const Track*> TypeVisitor::typeVector( const Track& ) const {
00070 return m_tracks ;
00071 }
00072 vector<const ReconstructedParticle*>
00073 TypeVisitor::typeVector( const ReconstructedParticle&) const {
00074 return m_reconstructedParticles ;
00075 }
00076 std::vector<const IKinematic*> TypeVisitor::ikinematics() const {
00077
00078 std::vector<const IKinematic*> iKinematics;
00079 std::copy(
00080 m_cells.begin(),
00081 m_cells.end(),
00082 back_inserter(iKinematics)
00083 );
00084
00085 std::copy(
00086 m_twoCptCells.begin(),
00087 m_twoCptCells.end(),
00088 back_inserter(iKinematics)
00089 );
00090
00091 std::copy(
00092 m_clusters.begin(),
00093 m_clusters.end(),
00094 back_inserter(iKinematics)
00095 );
00096 std::copy(
00097 m_jets.begin(),
00098 m_jets.end(),
00099 back_inserter(iKinematics)
00100 );
00101 std::copy(
00102 m_reconstructedParticles.begin(),
00103 m_reconstructedParticles.end(),
00104 back_inserter(iKinematics)
00105 );
00106 std::copy(
00107 m_simpleKinematics.begin(),
00108 m_simpleKinematics.end(),
00109 back_inserter(iKinematics)
00110 );
00111
00112 std::copy(
00113 m_tracks.begin(),
00114 m_tracks.end(),
00115 back_inserter(iKinematics)
00116 );
00117
00118 return iKinematics;
00119 }
00120
00121
00122 std::vector<const I4Momentum*> TypeVisitor::i4momenta() const {
00123
00124 std::vector<const I4Momentum*> i4s;
00125 std::copy(
00126 m_cells.begin(),
00127 m_cells.end(),
00128 back_inserter(i4s)
00129 );
00130
00131 std::copy(
00132 m_twoCptCells.begin(),
00133 m_twoCptCells.end(),
00134 back_inserter(i4s)
00135 );
00136
00137 std::copy(
00138 m_clusters.begin(),
00139 m_clusters.end(),
00140 back_inserter(i4s)
00141 );
00142 std::copy(
00143 m_jets.begin(),
00144 m_jets.end(),
00145 back_inserter(i4s)
00146 );
00147 std::copy(
00148 m_reconstructedParticles.begin(),
00149 m_reconstructedParticles.end(),
00150 back_inserter(i4s)
00151 );
00152 std::copy(
00153 m_simpleKinematics.begin(),
00154 m_simpleKinematics.end(),
00155 back_inserter(i4s)
00156 );
00157
00158 std::copy(
00159 m_tracks.begin(),
00160 m_tracks.end(),
00161 back_inserter(i4s)
00162 );
00163
00164 return i4s;
00165 }
00166 }