5#ifndef TRIGFPGATrackSimOBJECTS_MULTITRUTH_H
6#define TRIGFPGATrackSimOBJECTS_MULTITRUTH_H
49 typedef std::pair<unsigned long, unsigned long>
Barcode;
88 if (
m_truth.empty())
return false;
103 unsigned long int bad = std::numeric_limits<unsigned long>::max();
104 bool operator()(
const TruthMap::value_type&
a,
const TruthMap::value_type& b)
const {
105 const bool a_info = (
a.first.first !=
bad) && (
a.first.second !=
bad);
106 const bool b_info = (b.first.first !=
bad) && (b.first.second !=
bad);
107 return a_info && b_info ?
a.second < b.second : b_info;
std::ostream & operator<<(std::ostream &o, const FPGATrackSimMultiTruth &mt)
void add(const FPGATrackSimMultiTruth::Barcode &code, const FPGATrackSimMultiTruth::Weight &weight)
FPGATrackSimMultiTruth()=default
void maximize(const FPGATrackSimMultiTruth::Barcode &code, const FPGATrackSimMultiTruth::Weight &weight)
bool best(FPGATrackSimMultiTruth::Barcode &code, FPGATrackSimMultiTruth::Weight &weight) const
void assign_equal_normalization()
std::pair< unsigned long, unsigned long > Barcode
unsigned multiplicity() const
virtual ~FPGATrackSimMultiTruth()=default
FPGATrackSimMultiTruth(const FPGATrackSimMultiTruth::Barcode &code, const FPGATrackSimMultiTruth::Weight weight=1.)
unsigned long best_barcode() const
FPGATrackSimMultiTruth::Weight total_weight() const
FPGATrackSimMultiTruth::Weight weight(const FPGATrackSimMultiTruth::Barcode &code) const
std::map< Barcode, Weight > TruthMap
auto operator()(const FPGATrackSimMultiTruth &result, const FPGATrackSimMultiTruth &a) const
auto operator()(const FPGATrackSimMultiTruth &result, const FPGATrackSimMultiTruth &a) const
auto operator()(const FPGATrackSimMultiTruth::Weight &result, const TruthMap::value_type &a) const
bool operator()(const TruthMap::value_type &a, const TruthMap::value_type &b) const