11#ifndef TRIGOBJECTMATCHER_H
12#define TRIGOBJECTMATCHER_H
26 typedef std::map<unsigned long, const TrackTrigObject*>
map_type;
33 const std::vector<TrackTrigObject>& objects )
35 for (
size_t i=tracks.size() ; i-- ; )
match( tracks[i]->
id(), objects );
40 const std::vector<TrackTrigObject>& objects,
43 const std::vector<TIDA::Track*> tracks = selector->tracks();
44 for (
size_t i=tracks.size() ; i-- ; )
if (
match( tracks[i]->
id(), objects, select_function )==
false ) selector->delete_track( tracks[i] );
48 const std::vector<TrackTrigObject>& objects,
51 const std::vector<TIDA::Track*> tracks = selector->tracks();
52 for (
size_t i=tracks.size() ; i-- ; )
if (
match( tracks[i], objects, select_function )==
false ) selector->delete_track( tracks[i] );
60 map_type::const_iterator itr =
m_objectmap.find( track_id );
72 void print( std::ostream& s )
const {
73 s <<
"TrigObjectMatch size: " <<
m_objectmap.size();
75 s <<
"\n[ id: 0x" << std::hex << itr->first << std::dec <<
" :: " << *(itr->second) <<
" ]";
81 bool match(
unsigned long track_id,
const std::vector<TrackTrigObject>& objects,
bool (*select_function)(
const TrackTrigObject& t)=0 ) {
82 for (
size_t j=objects.size() ; j-- ; ) {
83 for (
size_t k=objects[j].children().
size() ; k-- ; ) {
84 if ( track_id == objects[j].children()[k] ) {
85 if ( select_function==0 || select_function(objects[j]) ) {
86 m_objectmap.insert( map_type::value_type( track_id, &objects[j] ) );
98 for (
size_t j=objects.size() ; j-- ; ) {
99 for (
size_t k=objects[j].children().
size() ; k-- ; ) {
100 if ( track->id() == objects[j].children()[k] ) {
101 if ( select_function==0 || select_function(objects[j], track) ) {
102 m_objectmap.insert( map_type::value_type( track->id(), &objects[j] ) );
std::ostream & operator<<(std::ostream &s, const TrigObjectMatcher &o)
bool match(TIDA::Track *track, const std::vector< TrackTrigObject > &objects, bool(*select_function)(const TrackTrigObject &, TIDA::Track *)=0)
map_type::const_iterator end() const
TrigObjectMatcher(TrackSelector *selector, const std::vector< TrackTrigObject > &objects, bool(*select_function)(const TrackTrigObject &, TIDA::Track *)=0)
const TrackTrigObject * object(unsigned long track_id)
TrigObjectMatcher(const std::vector< TIDA::Track * > &tracks, const std::vector< TrackTrigObject > &objects)
bool match(unsigned long track_id, const std::vector< TrackTrigObject > &objects, bool(*select_function)(const TrackTrigObject &t)=0)
virtual ~TrigObjectMatcher()
void print(std::ostream &s) const
TrigObjectMatcher(TrackSelector *selector, const std::vector< TrackTrigObject > &objects, bool(*select_function)(const TrackTrigObject &)=0)
std::map< unsigned long, const TrackTrigObject * > map_type
map_type::const_iterator begin() const