00001 #include "IMPL/ReconstructedParticleImpl.h"
00002 #include <algorithm>
00003 #include "IMPL/ParticleIDImpl.h"
00004
00005
00006 using namespace EVENT ;
00007
00008 namespace IMPL{
00009
00010
00011 ReconstructedParticleImpl::ReconstructedParticleImpl() :
00012 _type(0) ,
00013 _energy(0) ,
00014 _mass(0) ,
00015 _charge(0),
00016 _pidUsed(0),
00017 _goodnessOfPID(0),
00018 _sv(0)
00019
00020 {
00021 _cov.resize( NCOVARIANCE ) ;
00022
00023 _momentum[0] = 0. ;
00024 _momentum[1] = 0. ;
00025 _momentum[2] = 0. ;
00026 _reference[0] = 0. ;
00027 _reference[1] = 0. ;
00028 _reference[2] = 0. ;
00029 }
00030
00031 ReconstructedParticleImpl::~ReconstructedParticleImpl(){
00032
00033 for( ParticleIDVec::iterator iter = _pid.begin() ; iter != _pid.end() ; iter++){
00034 delete *iter ;
00035 }
00036 }
00037
00038 int ReconstructedParticleImpl::getType() const { return _type ; }
00039
00040
00041 const double* ReconstructedParticleImpl::getMomentum() const { return _momentum ; }
00042 double ReconstructedParticleImpl::getEnergy() const { return _energy ; }
00043 const EVENT::FloatVec & ReconstructedParticleImpl::getCovMatrix() const { return _cov ; }
00044 double ReconstructedParticleImpl::getMass() const { return _mass ; }
00045 float ReconstructedParticleImpl::getCharge() const { return _charge ; }
00046 const float* ReconstructedParticleImpl::getReferencePoint() const { return _reference ; }
00047
00048
00049 EVENT::ParticleID * ReconstructedParticleImpl::getParticleIDUsed() const { return _pidUsed ; }
00050
00051 float ReconstructedParticleImpl::getGoodnessOfPID() const{
00052 return _goodnessOfPID ;
00053 }
00054 const EVENT::ParticleIDVec & ReconstructedParticleImpl::getParticleIDs() const { return _pid ; }
00055
00056 const EVENT::ReconstructedParticleVec& ReconstructedParticleImpl::getParticles() const { return _particles ; }
00057
00058
00059 const EVENT::ClusterVec& ReconstructedParticleImpl::getClusters() const { return _clusters ; }
00060
00061
00062 const EVENT::TrackVec& ReconstructedParticleImpl::getTracks() const { return _tracks ; }
00063
00064
00065
00066
00067
00068 EVENT::Vertex * ReconstructedParticleImpl::getStartVertex() const { return _sv ; }
00069
00070
00071
00072 EVENT::Vertex * ReconstructedParticleImpl::getEndVertex() const {
00073 if(getParticles().size()!=0){
00074 return getParticles().at(0)->getStartVertex();
00075 }
00076 return NULL;
00077 }
00078
00079 void ReconstructedParticleImpl::setStartVertex( EVENT::Vertex *sv ){
00080 checkAccess("ReconstructedParticleImpl::setStartVertex" );
00081 _sv = sv;
00082 }
00083
00084
00085
00086
00087
00088
00089
00090
00091 void ReconstructedParticleImpl::setType(int type){
00092 checkAccess("ReconstructedParticleImpl::setType" );
00093 _type = type ;
00094 }
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106 void ReconstructedParticleImpl::setMomentum( const float* momentum ){
00107 checkAccess("ReconstructedParticleImpl::setMomentum" );
00108 _momentum[0] = momentum[0] ;
00109 _momentum[1] = momentum[1] ;
00110 _momentum[2] = momentum[2] ;
00111 }
00112
00113 void ReconstructedParticleImpl::setMomentum( const double* momentum ){
00114 checkAccess("ReconstructedParticleImpl::setMomentum" );
00115 _momentum[0] = momentum[0] ;
00116 _momentum[1] = momentum[1] ;
00117 _momentum[2] = momentum[2] ;
00118 }
00119
00120 void ReconstructedParticleImpl::setEnergy( float energy){
00121 checkAccess("ReconstructedParticleImpl::setEnergy" );
00122 _energy = energy ;
00123 }
00124
00125 void ReconstructedParticleImpl::setCovMatrix( const float* cov ){
00126 checkAccess("ReconstructedParticleImpl::setCovMatrix" );
00127 for(int i=0;i<NCOVARIANCE;i++) _cov[i] = cov[i] ;
00128 }
00129
00130 void ReconstructedParticleImpl::setCovMatrix( const EVENT::FloatVec& cov ){
00131 checkAccess("ReconstructedParticleImpl::" );
00132 for(int i=0;i<NCOVARIANCE;i++) _cov[i] = cov[i] ;
00133 }
00134
00135 void ReconstructedParticleImpl::setMass( float mass ){
00136 checkAccess("ReconstructedParticleImpl::setMass" );
00137 _mass = mass ;
00138 }
00139
00140 void ReconstructedParticleImpl::setCharge( float charge ){
00141 checkAccess("ReconstructedParticleImpl::setCharge" );
00142 _charge = charge ;
00143 }
00144
00145 void ReconstructedParticleImpl::setReferencePoint( const float* reference ){
00146 checkAccess("ReconstructedParticleImpl::setReferencePoint" );
00147 _reference[0] = reference[0] ;
00148 _reference[1] = reference[1] ;
00149 _reference[2] = reference[2] ;
00150 }
00151
00152 void ReconstructedParticleImpl::setParticleIDUsed( ParticleID* pidUsed ){
00153 checkAccess("ReconstructedParticleImpl::setParticleIDUsed" );
00154 _pidUsed = pidUsed ;
00155 }
00156
00157 void ReconstructedParticleImpl::setGoodnessOfPID( float goodness ){
00158 checkAccess("ReconstructedParticleImpl::setGoodnessOfPID") ;
00159 _goodnessOfPID = goodness ;
00160 }
00161
00162 void ReconstructedParticleImpl::addParticleID( ParticleID* pid ){
00163
00164
00165 _pid.push_back( pid ) ;
00166
00167 sort( _pid.begin() , _pid.end() , PIDSort() ) ;
00168 }
00169
00170 void ReconstructedParticleImpl::addParticle( ReconstructedParticle* particle ){
00171 checkAccess("ReconstructedParticleImpl::addParticle" );
00172 _particles.push_back( particle ) ;
00173
00174 }
00175
00176 void ReconstructedParticleImpl::addCluster( Cluster* cluster ){
00177 checkAccess("ReconstructedParticleImpl::addCluster" );
00178 _clusters.push_back( cluster ) ;
00179
00180 }
00181
00182 void ReconstructedParticleImpl::addTrack( Track* track ){
00183 checkAccess("ReconstructedParticleImpl::addTrack" );
00184 _tracks.push_back( track ) ;
00185
00186 }
00187
00188
00189
00190
00191
00192
00193
00194
00195 }