#ifndef CUTRECORD_HPP #define CUTRECORD_HPP //======================================================================== // // Name: CutRecord.hpp // // Purpose: Class to store cuts for a single PTrack. // // Created: 3-Jul-2000 H. Greenlee // //======================================================================== #include #include #include "CutID.hpp" namespace trf { class CutRecord; // Output stream. std::ostream& operator<<(std::ostream&, const CutRecord&); class CutRecord { public: // Typedefs typedef std::map CutMap; // Destructor. ~CutRecord(); // Operators. bool operator==(const CutRecord& r) const; bool operator<(const CutRecord& r) const; double operator[](const CutID& cutid) const {return get_cut(cutid);} friend std::ostream& operator<<(std::ostream&, const CutRecord&); // Accessors. int id() const {return _id;} int parent_id() const {return _parent_id;} int ptrack_id() const {return _ptrack_id;} int path_id() const {return _path_id;} bool passed() const {return _passed;} bool good_track() const {return _good_track;} bool has_cut(const CutID& cutid) const; double get_cut(const CutID& cutid) const; const CutMap& cutmap() const {return _cutmap;} // Methods. // Set the ID's. // Perhaps these should fail if an attempt is made to // change a nonzero value to a different value. void set_ptrack_id(int id) {_ptrack_id = id;} void set_path_id(int id) {_path_id = id; } // Add a cut to the cut map. void add_cut(const CutID& cutid, double value); // Make a child CutRecord. CutRecord* make_cut_record(int ptrack_id, int path_id) const; CutRecord* make_cut_record() const { return make_cut_record(_ptrack_id, _path_id);} // Set status flags. void set_passed(bool passed = true) {_passed = passed;} void set_good_track(bool good_track = true) {_good_track = good_track;} private: // Make constructor private. The compiler-generated copy constructor // and destructor must be left public to allow CutRecords to be put // into collections. CutRecord(int id, int parent_id, int ptrack_id, int path_id); // Functions and classes needing access to the constructors and destructor. friend int ctest(); // Component test. friend class CutRecorder; // Attributes int _id; // CutRecord id. int _parent_id; // Parent CutRecord id. int _ptrack_id; // PTrack id. int _path_id; // Path id. bool _passed; // Did this record pass all of its cuts? bool _good_track; // Is this PTrack in the final sample of good PTracks? CutMap _cutmap; // Cuts }; } // end namespace trf #endif