ATLAS Offline Software
Loading...
Searching...
No Matches
TrackRoiSelector.h
Go to the documentation of this file.
1
13
14#ifndef IDTPM2_TRACKROISELECTOR_H
15#define IDTPM2_TRACKROISELECTOR_H
16
18
19#include <string>
20#include <vector>
21#include <optional>
22
24
25namespace IDTPM2 {
26
29
31
32public:
33
36
38 virtual ~TrackRoiSelector() = default;
39
41 template<class T>
42 bool accept( const T& t, const TrigRoiDescriptor* r ) const;
43
45 template<class T>
46 std::vector<const T*> getTracks( const std::vector<const T*>& tracks,
47 const TrigRoiDescriptor* roi ) const;
48
49private:
50
51 struct exit_point {
52 exit_point(double z_=0, double r_=0 ) : z(z_), r(r_) { }
53 double z;
54 double r;
55 };
56
57
58private:
59
62
63#if 1
66 exit_point getExitPoint( float tz0, float teta ) const;
67#endif
68
69 std::optional<double> getOuterPhi( float pt, float phi, float r=1000. ) const;
70
71}; // class TrackRoiSelector
72
73} // namespace IDTPM2
74
75
76template<class T>
77std::vector<const T*> IDTPM2::TrackRoiSelector::getTracks( const std::vector<const T*>& tracks,
78 const TrigRoiDescriptor* roi ) const {
79
80 // std::cout << "\n\n\tSUTT roi filter" << tvec.size() << "\t" << *roi << "\n" << std::endl;
81
82 std::vector<const T*> selectedTracks;
83
84 for( size_t it=0 ; it<tracks.size() ; it++ ) {
85
86 const T* track = tracks.at(it);
87
89 if ( track->pt()==0 ) continue;
90
91 bool keep = accept<T>( *track, roi );
92
93 // if ( keep ) std::cout << it << "\t" << *tvec[it] << "\taccept: " << keep << std::endl;
94
95 if( keep ) selectedTracks.push_back( track );
96 }
97
98 // std::cout << "\tSUTT: " << selectedTracks.size() << std::endl;
99
100 return selectedTracks;
101}
102
103
104
105
106#endif // > !IDTPM2_TRACKROISELECTOR_H
Scalar phi() const
phi method
std::vector< const T * > getTracks(const std::vector< const T * > &tracks, const TrigRoiDescriptor *roi) const
track getter function (for offline tracks || truth particles)
TrackRoiSelector()
Constructor - self evidently.
virtual ~TrackRoiSelector()=default
Destructor.
bool accept(const T &t, const TrigRoiDescriptor *r) const
geometric RoI filters - for non-trigger tracks (e.g. offline, truth, etc.)
exit_point getExitPoint(float tz0, float teta) const
why are there these "exit point functions ?
std::optional< double > getOuterPhi(float pt, float phi, float r=1000.) const
nope - should be used for standalone also, perhaps need to protect the class def bits ifndef XAOD_ANA...
int r
Definition globals.cxx:22
Search the ancestor history, looking for an ancestor that satifies the predicate ....
Definition AnalysisR4.h:31
exit_point(double z_=0, double r_=0)