ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigAnalysis
TrigInDetAnalysis
TrigInDetAnalysis
TrackSelector.h
Go to the documentation of this file.
1
/* emacs: this is -*- c++ -*- */
10
11
12
13
#ifndef TRACKSELECTOR_H
14
#define TRACKSELECTOR_H
15
16
#include <string>
17
#include <vector>
18
#include <algorithm>
19
20
#include "
TrigInDetAnalysis/TrackFilter.h
"
21
#include "
TrigInDetAnalysis/Track.h
"
22
23
24
class
TrackSelector
{
25
26
public
:
27
28
TrackSelector
(
TrackFilter
* selector=0 ) :
m_selector
(selector) { }
29
virtual
~TrackSelector
() {}
30
31
32
// add a track, do the selection while adding?
33
// or later with a method which loops through them all?
34
virtual
bool
addTrack
(
TIDA::Track
* t,
bool
(*f)(
const
TIDA::Track
*)=0 ) {
35
//std::cout << "addtrack() before f: t " << *t << " " << size() << "\t f " << f << std::endl;
36
if
( f==0 ) {
37
if
(
m_selector
&&
m_selector
->select(t) ) {
m_tracks
.push_back(t);
return
true
; }
38
else
{
cleanup
(t); }
39
}
40
else
{
41
if
( f(t) ) {
m_tracks
.push_back(t);
return
true
; }
42
else
{
cleanup
(t); }
43
}
44
return
false
;
45
}
46
47
virtual
void
addTracks
(std::vector<TIDA::Track*>& t,
bool
(*f)(
const
TIDA::Track
*)=0 ) {
48
for
(
size_t
i=0 ; i<t.size() ; i++ )
addTrack
( t[i], f );
49
}
50
51
// get the selected tracks
52
const
std::vector<TIDA::Track*>&
tracks
()
const
{
return
m_tracks
; }
53
54
std::vector<TIDA::Track*>
tracks
(
TrackFilter
* selector )
const
{
55
if
( selector==0 )
return
m_tracks
;
56
std::vector<TIDA::Track*> t;
57
for
(
int
i=
m_tracks
.size() ; i-- ; )
if
( selector->select(
m_tracks
[i]) ) t.push_back(
m_tracks
[i]);
58
return
t;
59
}
60
61
// how many tracks in this selection
62
unsigned
size
()
const
{
return
m_tracks
.size(); }
63
64
// clear tracks for this roi/event etc
65
// void clear() { for ( int i=m_tracks.size() ; i-- ; ) delete m_tracks[i]; m_tracks.clear(); }
66
virtual
void
clear
() {
m_tracks
.clear(); }
67
68
void
delete_track
(
TIDA::Track
* t ) {
69
m_tracks
.erase(
std::remove
(
m_tracks
.begin(),
m_tracks
.end(), t ),
m_tracks
.end() );
70
}
71
72
protected
:
73
74
// can be used to delete tracks if they are not added to the selector to avoid memory
75
// leaks if the TrackSelector is managing the tracks itself.
76
virtual
void
cleanup
(
TIDA::Track
* ) { }
77
// virtual void cleanup(TIDA::Track* t) { delete t; }
78
79
protected
:
80
81
std::vector<TIDA::Track*>
m_tracks
;
82
83
// selection function
84
TrackFilter
*
m_selector
;
85
86
};
87
88
89
90
#endif
// TRACKSELECTOR_H
TrackFilter.h
base class for a single track selection filter allowing parameter setting for complex track selection
Track.h
TIDA::Track
Definition
Trigger/TrigAnalysis/TrigInDetAnalysis/TrigInDetAnalysis/Track.h:26
TrackFilter
Definition
TrackFilter.h:26
TrackSelector::~TrackSelector
virtual ~TrackSelector()
Definition
TrackSelector.h:29
TrackSelector::m_selector
TrackFilter * m_selector
Definition
TrackSelector.h:84
TrackSelector::delete_track
void delete_track(TIDA::Track *t)
Definition
TrackSelector.h:68
TrackSelector::cleanup
virtual void cleanup(TIDA::Track *)
Definition
TrackSelector.h:76
TrackSelector::tracks
std::vector< TIDA::Track * > tracks(TrackFilter *selector) const
Definition
TrackSelector.h:54
TrackSelector::addTrack
virtual bool addTrack(TIDA::Track *t, bool(*f)(const TIDA::Track *)=0)
Definition
TrackSelector.h:34
TrackSelector::size
unsigned size() const
Definition
TrackSelector.h:62
TrackSelector::TrackSelector
TrackSelector(TrackFilter *selector=0)
Definition
TrackSelector.h:28
TrackSelector::addTracks
virtual void addTracks(std::vector< TIDA::Track * > &t, bool(*f)(const TIDA::Track *)=0)
Definition
TrackSelector.h:47
TrackSelector::m_tracks
std::vector< TIDA::Track * > m_tracks
Definition
TrackSelector.h:81
TrackSelector::clear
virtual void clear()
Definition
TrackSelector.h:66
TrackSelector::tracks
const std::vector< TIDA::Track * > & tracks() const
Definition
TrackSelector.h:52
std::remove
DataModel_detail::iterator< DVL > remove(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end, const T &value)
Specialization of remove for DataVector/List.
Definition
DVL_algorithms.h:49
Generated on
for ATLAS Offline Software by
1.17.0