// CandidateLayer.cpp #include "CandidateLayer.h" #include "trfutil/trfstream.h" #include "trfbase/Surface.h" #include "trfbase/Miss.h" #include "trflayer/Layer.h" #include "trfbase/Propagator.h" #include "trffit/AddFitter.h" using trf::Layer; using trf::Propagator; using trf::AddFitter; using trf::CandidateLayer; //********************************************************************** // output stream void CandidateLayer::ostr(ostream& stream) const { stream << begin_object; if ( is_valid() ) { stream << "CandidateLayer:" << new_line; stream << "Layer: " << get_layer() << new_line; stream << "Propagator: " << get_propagator() << new_line; stream << "Fitter: " << get_fitter(); } else { stream << "CandidateLayer has invalid data."; } stream << end_object; } //********************************************************************** // default constructor CandidateLayer::CandidateLayer() : _player(0), _pprop(0), _pfit(0) { } //********************************************************************** // constructor CandidateLayer::CandidateLayer (const Layer& layer, const Propagator& prop, const AddFitter& fit) : _player(&layer), _pprop(&prop), _pfit(&fit) { } //********************************************************************** // destructor CandidateLayer::~CandidateLayer() { } //********************************************************************** // is data valid? bool CandidateLayer::is_valid() const { if ( _player ) { assert( _pprop != 0 ); assert( _pfit != 0 ); return true; } else { assert( _pprop == 0 ); assert( _pfit == 0 ); return false; } } //********************************************************************** // friends //********************************************************************** // ouput stream ostream& trf::operator<<(ostream& stream, const CandidateLayer& cnl) { cnl.ostr(stream); return stream; } //********************************************************************** // external functions //********************************************************************** // equality bool operator==(const CandidateLayer& cnl1,const CandidateLayer& cnl2) { if ( ! cnl1.is_valid() ) return false; if ( ! cnl2.is_valid() ) return false; if ( &cnl1.get_layer() != &cnl2.get_layer() ) return false; if ( &cnl1.get_propagator() != &cnl2.get_propagator() ) return false; if ( &cnl1.get_fitter() != &cnl2.get_fitter() ) return false; return true; } //********************************************************************** // ordering for STL - order by address bool operator<(const CandidateLayer& cnl1, const CandidateLayer& cnl2) { if ( cnl1 == cnl2 ) return false; return &cnl1 < &cnl2; } //**********************************************************************