ATLAS Offline Software
Filter_Track.h
Go to the documentation of this file.
1 /* emacs: this is -*- c++ -*- */
23 #ifndef TIDAUTILS_FILTER_TRACK_H
24 #define TIDAUTILS_FILTER_TRACK_H
25 
26 #include <iostream>
27 #include <cmath>
28 
32 
36 #include "TMath.h"
37 
38 
39 // generic selection cut selection function
40 
41 class Filter_Track : public TrackFilter {
42 
43 public:
44 
45  Filter_Track( double etaMax, double d0Max, double d0Min, double z0Max, double pTMin,
46  int minPixelHits, int minSctHits, int minSiHits, int minBlayerHits,
47  int minStrawHits, int minTrHits, double prob=0,
48  int maxPixelHoles=20, int maxSctHoles=20, int maxSiHoles=20, bool expectBL=false ) :
49  m_etaMax(etaMax), m_d0Max(d0Max), m_d0Min(d0Min), m_z0Max(z0Max), m_pTMin(pTMin), m_pTMax(pTMin-1), // guarantee that the default pTMax is *always* < pTMin
50  m_minPixelHits(minPixelHits), m_minSctHits(minSctHits), m_minSiHits(minSiHits),
51  m_minBlayerHits(minBlayerHits), m_minStrawHits(minStrawHits), m_minTrHits(minTrHits),
52  m_maxPixelHoles(maxPixelHoles), m_maxSctHoles(maxSctHoles), m_maxSiHoles(maxSiHoles),
53  m_prob(prob),
55  m_expectBL(expectBL)
56  { }
57 
58  bool select(const TIDA::Track* t, const TIDARoiDescriptor* =0 ) {
59  // Select track parameters
60  bool selected = true;
61  if ( std::fabs(t->eta())>m_etaMax || std::fabs(t->a0())>m_d0Max || std::fabs(t->a0())<m_d0Min || std::fabs(t->z0())>m_z0Max || std::fabs(t->pT())<m_pTMin ) selected = false;
62  if ( m_pTMax>m_pTMin && std::fabs(t->pT())>m_pTMax ) selected = false;
63  // Select track silicon hit content
64  if( t->pixelHits()<m_minPixelHits || t->sctHits()<m_minSctHits || t->siHits()<m_minSiHits || t->bLayerHits()<m_minBlayerHits ) selected = false;
65  if( t->pixelHoles()>m_maxPixelHoles || t->sctHoles()>m_maxSctHoles || (t->pixelHoles()+t->sctHoles())>m_maxSiHoles ) selected = false;
66  // Select track trt hit content
67  if( t->strawHits()<m_minStrawHits || t->trHits()<m_minTrHits ) selected = false;
68  if( m_prob>0 && TMath::Prob( t->chi2(), t->dof() )<m_prob ) selected = false;
69  // track chare selection
70  if ( m_chargeSelection!=0 && t->pT()*m_chargeSelection<=0 ) selected = false;
72  if ( m_expectBL && ( ( t->expectBL() || t->hasTruth() ) && t->bLayerHits()<1) ) selected = false;
73 
74  return selected;
75  }
76 
78  int chargeSelection() const { return m_chargeSelection; }
79 
80  void maxpT( double pTMax ) { m_pTMax = pTMax; }
81  double maxpT() const { return m_pTMax; }
82 
83 private:
84 
85  // selection cuts
86 
87  double m_etaMax;
88  double m_d0Max;
89  double m_d0Min;
90  double m_z0Max;
91  double m_pTMin;
92  double m_pTMax;
93 
100 
104 
105  double m_prob;
106 
108 
110 };
111 
112 
113 
114 
115 
116 inline std::ostream& operator<<( std::ostream& s, const Filter_Track& ) {
117  return s;
118 }
119 
120 
121 #endif // TIDAUTILS_FILTER_TRACK_H
122 
123 
124 
125 
126 
127 
128 
129 
130 
131 
Filter_Track::m_minTrHits
int m_minTrHits
Definition: Filter_Track.h:99
Track.h
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
TrackFilter
Definition: TrackFilter.h:26
Filter_Track::Filter_Track
Filter_Track(double etaMax, double d0Max, double d0Min, double z0Max, double pTMin, int minPixelHits, int minSctHits, int minSiHits, int minBlayerHits, int minStrawHits, int minTrHits, double prob=0, int maxPixelHoles=20, int maxSctHoles=20, int maxSiHoles=20, bool expectBL=false)
Definition: Filter_Track.h:45
TrackFilter.h
base class for a single track selection filter allowing parameter setting for complex track selection
operator<<
std::ostream & operator<<(std::ostream &s, const Filter_Track &)
Definition: Filter_Track.h:116
xAOD::etaMax
etaMax
Definition: HIEventShape_v2.cxx:46
TIDARoiDescriptor
Describes the Region of Ineterest geometry It has basically 8 parameters.
Definition: TIDARoiDescriptor.h:42
TIDARoiDescriptor.h
Filter_Track::m_minBlayerHits
int m_minBlayerHits
Definition: Filter_Track.h:97
Filter_Track::m_prob
double m_prob
Definition: Filter_Track.h:105
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Filter_Track::m_maxPixelHoles
int m_maxPixelHoles
Definition: Filter_Track.h:101
covarianceTool.prob
prob
Definition: covarianceTool.py:678
Filter_Track::m_d0Min
double m_d0Min
Definition: Filter_Track.h:89
lumiFormat.i
int i
Definition: lumiFormat.py:92
Filter_Track::m_pTMax
double m_pTMax
Definition: Filter_Track.h:92
Filter_Track::chargeSelection
int chargeSelection() const
Definition: Filter_Track.h:78
Filter_Track::m_minStrawHits
int m_minStrawHits
Definition: Filter_Track.h:98
Filter_Track::m_pTMin
double m_pTMin
Definition: Filter_Track.h:91
Filter_Track::maxpT
double maxpT() const
Definition: Filter_Track.h:81
Filter_Track::chargeSelection
void chargeSelection(int i)
Definition: Filter_Track.h:77
Filter_Track::m_etaMax
double m_etaMax
Definition: Filter_Track.h:87
Filter_Track::m_maxSctHoles
int m_maxSctHoles
Definition: Filter_Track.h:102
Filter_Track::m_d0Max
double m_d0Max
Definition: Filter_Track.h:88
Filter_Track
sadly need to include a root dependency, but no matter - the TIDA::Track class itself inherets from T...
Definition: Filter_Track.h:41
Filter_Track::select
bool select(const TIDA::Track *t, const TIDARoiDescriptor *=0)
Definition: Filter_Track.h:58
TIDA::Track
Definition: Trigger/TrigAnalysis/TrigInDetAnalysis/TrigInDetAnalysis/Track.h:26
Filter_Track::m_chargeSelection
int m_chargeSelection
Definition: Filter_Track.h:107
Filter_Track::m_minSctHits
int m_minSctHits
Definition: Filter_Track.h:95
Filter_Track::maxpT
void maxpT(double pTMax)
Definition: Filter_Track.h:80
Filter_Track::m_minSiHits
int m_minSiHits
Definition: Filter_Track.h:96
Filter_Track::m_z0Max
double m_z0Max
Definition: Filter_Track.h:90
Filter_Track::m_minPixelHits
int m_minPixelHits
Definition: Filter_Track.h:94
Filter_Track::m_expectBL
bool m_expectBL
Definition: Filter_Track.h:109
Filter_Track::m_maxSiHoles
int m_maxSiHoles
Definition: Filter_Track.h:103