ATLAS Offline Software
T2BSTrackFilterTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRIGT2BEAMSPOT_T2BSTRACKFILTERTOOL_H
6 #define TRIGT2BEAMSPOT_T2BSTRACKFILTERTOOL_H
7 
8 #include <bitset>
9 #include <memory>
10 #include <mutex>
11 #include <string>
12 #include <vector>
13 
14 // base class
16 
17 //Athena tools
18 #include "GaudiKernel/ToolHandle.h"
19 #include "TrkTrack/Track.h"
21 
22 //Monitoring tool
24 
25 
26 namespace PESA {
27 
28 class T2Track;
29 
31 public:
32 
33  using TrackVector = std::vector<const Trk::Track*>;
34 
38  struct TrackData {
39  TrackData(Trk::Perigee const& trackPars, unsigned lbn_, unsigned bcid_)
40  : lbn(lbn_), bcid(bcid_)
41  {
42  auto const& par = trackPars.parameters();
43  d0 = par[Trk::d0];
44  phi0 = par[Trk::phi0];
45  z0 = par[Trk::z0];
46  auto const& cov = trackPars.covariance();
47  d0_var = (*cov)(Trk::d0, Trk::d0);
48  }
49 
50  unsigned lbn = 0;
51  unsigned bcid = 0;
52  double d0 = 0;
53  double phi0 = 0;
54  double z0 = 0;
55  double d0_var = 0; // d0 error squared
56  };
57 
58  // Reasons for tracks not passing selection, one track can fail for multiple reasons,
59  // these are used for monitoring purposes only
61  fail_PT = 0,
66  fail_NDF = 5,
67  fail_D0 = 6,
68  fail_Z0 = 7,
71  fail_Eta = 10,
76  //
78  };
79  using TrackRejectReasonSet = std::bitset<numRejectReasons>;
80 
81 
82  T2BSTrackFilterTool(const std::string& type, const std::string& name, const IInterface* parent);
83  ~T2BSTrackFilterTool() = default;
84 
85  StatusCode initialize() final;
86 
94 
110  bool updateBS(const TrackVector& tracks,
111  unsigned lbn, unsigned bcid,
112  std::vector<TrackData>* bsTracks = nullptr) const;
113 
120 
121 private:
122 
123  /*
124  * This struct holds accumulated track data for specific LBN, used
125  * to produce solution for beam spot estimate.
126  */
128 
130 
131  // add single track statistics to accumulator
132  void update(TrackData const& seed, double beamSize);
133 
134  // add statistics from other accumulator to this one
135  void update(TrackStatAccumulator const& other);
136 
137  // Produce a solution based on current data, can only be called if trk_count > 0
138  AmgVector(4) solution() const;
139 
140  unsigned lbn = 0; // LBN for accumulated data
141  unsigned trk_count = 0; // Number of tracks accumualted
142  double trk_d0_sq = 0; // Sum(d0**2 * weight), used for chi2 calculation, not for fitting
143  AmgSymMatrix(4) trk_param; // Matrix of Sum(param[i]*param[j] * weight)
144  AmgVector(4) trk_d0; // Matrix of Sum(d0*param[i] * weight)
145  };
146 
147  /* Monitor track parameters */
148  void monitor_tracks(std::string const& prefix, std::string const& suffix, std::vector<T2Track> const& tracks) const;
149 
150  // returns a set of TrackRejectReason for a track, empty means good track
152 
153  // Calculate beam spot from accumulated seeds, returns true
154  // if bootstrapping is complete and seeds will not be used any more.
155  // Fills bsTracks with seeds that were used for BS estimate.
156  bool bootstrapFromSeeds(std::vector<TrackData>* bsTracks = nullptr) const;
157 
161  double trackChi2(TrackData const& seed, AmgVector(4) const& solution) const;
162 
163  // dump track parameters
164  void dumpTrackParams(Trk::Perigee const* trackPars, double chi2, std::string const& message) const;
165 
166  /* Track selection criteria */
167  double m_minTrackPt;
169  double m_maxTrackZ0;
170  double m_maxTrackD0;
181 
183  double m_chi2cutoff;
184  double m_beamSizeLS;
185  int m_lbnInterval; // number of LBNs the estimate is good for
186 
187  mutable std::mutex m_mutex; // protects mutable members
188 
189  mutable std::vector<TrackData> m_bsSeeds ATLAS_THREAD_SAFE; // tracks used for BS estimate
190 
191  using AccumKey = unsigned; // LBN
193  mutable AccumMap m_accumulators ATLAS_THREAD_SAFE; // maps LBN to its accumulator
194 
195  ToolHandle<GenericMonitoringTool> m_monTool{this,"MonTool","","Monitoring tool"};
196 };
197 
198 } // namespace PESA
199 
200 #endif // TRIGT2BEAMSPOT_T2BSTRACKFILTERTOOL_H
PESA::T2BSTrackFilterTool
Definition: T2BSTrackFilterTool.h:30
PESA::T2BSTrackFilterTool::~T2BSTrackFilterTool
~T2BSTrackFilterTool()=default
PESA::T2BSTrackFilterTool::monitor_tracks
void monitor_tracks(std::string const &prefix, std::string const &suffix, std::vector< T2Track > const &tracks) const
Definition: T2BSTrackFilterTool.cxx:388
PESA::T2BSTrackFilterTool::filterBS
TrackVector filterBS(const TrackVector &tracks) const
Select tracks based on their distance to estimated beamspot.
Definition: T2BSTrackFilterTool.cxx:310
PESA::T2BSTrackFilterTool::updateBS
bool updateBS(const TrackVector &tracks, unsigned lbn, unsigned bcid, std::vector< TrackData > *bsTracks=nullptr) const
Update beam spot estimate with new tracks.
Definition: T2BSTrackFilterTool.cxx:236
hotSpotInTAG.suffix
string suffix
Definition: hotSpotInTAG.py:186
PESA::T2BSTrackFilterTool::isGoodTrack
TrackRejectReasonSet isGoodTrack(const T2Track &track) const
Definition: T2BSTrackFilterTool.cxx:367
PESA::T2BSTrackFilterTool::TrackData::d0
double d0
Definition: T2BSTrackFilterTool.h:52
PESA::T2BSTrackFilterTool::m_beamSizeLS
double m_beamSizeLS
Definition: T2BSTrackFilterTool.h:184
PESA::T2BSTrackFilterTool::fail_Chi2Prob
@ fail_Chi2Prob
Definition: T2BSTrackFilterTool.h:74
PESA::T2BSTrackFilterTool::fail_D0
@ fail_D0
Definition: T2BSTrackFilterTool.h:67
PESA::T2BSTrackFilterTool::TrackData::z0
double z0
Definition: T2BSTrackFilterTool.h:54
PESA::T2BSTrackFilterTool::TrackStatAccumulator
Definition: T2BSTrackFilterTool.h:127
PESA::T2BSTrackFilterTool::fail_Z0err
@ fail_Z0err
Definition: T2BSTrackFilterTool.h:70
BeamSpot::mutex
std::mutex mutex
Definition: InDetBeamSpotVertex.cxx:18
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
PESA::T2BSTrackFilterTool::TrackRejectReason
TrackRejectReason
Definition: T2BSTrackFilterTool.h:60
PESA::T2BSTrackFilterTool::TrackData::bcid
unsigned bcid
Definition: T2BSTrackFilterTool.h:51
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
PESA::T2BSTrackFilterTool::fail_D0Chi2
@ fail_D0Chi2
Definition: T2BSTrackFilterTool.h:75
Trk::z0
@ z0
Definition: ParamDefs.h:70
PESA::T2BSTrackFilterTool::fail_PIXHits
@ fail_PIXHits
Definition: T2BSTrackFilterTool.h:63
PESA::T2BSTrackFilterTool::fail_NDF
@ fail_NDF
Definition: T2BSTrackFilterTool.h:66
PESA::T2BSTrackFilterTool::TrackData::phi0
double phi0
Definition: T2BSTrackFilterTool.h:53
PESA::T2BSTrackFilterTool::m_maxTrackQual
double m_maxTrackQual
Definition: T2BSTrackFilterTool.h:175
PESA::T2BSTrackFilterTool::m_mutex
std::mutex m_mutex
Definition: T2BSTrackFilterTool.h:187
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
PESA::T2BSTrackFilterTool::m_goalSeedTracks
unsigned m_goalSeedTracks
Definition: T2BSTrackFilterTool.h:182
PESA::T2BSTrackFilterTool::fail_PT
@ fail_PT
Definition: T2BSTrackFilterTool.h:61
PESA::T2BSTrackFilterTool::fail_SCTHits
@ fail_SCTHits
Definition: T2BSTrackFilterTool.h:64
ReweightUtils.message
message
Definition: ReweightUtils.py:15
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:52
Track.h
PESA::T2BSTrackFilterTool::m_minTrackQual
double m_minTrackQual
Definition: T2BSTrackFilterTool.h:174
PESA::T2BSTrackFilterTool::m_minTrackPt
double m_minTrackPt
Definition: T2BSTrackFilterTool.h:167
PESA
Local tools.
Definition: T2BeamSpot.cxx:13
PESA::T2BSTrackFilterTool::numRejectReasons
@ numRejectReasons
Definition: T2BSTrackFilterTool.h:77
PESA::T2BSTrackFilterTool::ATLAS_THREAD_SAFE
std::vector< TrackData > m_bsSeeds ATLAS_THREAD_SAFE
Definition: T2BSTrackFilterTool.h:189
PESA::T2BSTrackFilterTool::T2BSTrackFilterTool
T2BSTrackFilterTool(const std::string &type, const std::string &name, const IInterface *parent)
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
PESA::T2BSTrackFilterTool::m_maxTrackEta
double m_maxTrackEta
Definition: T2BSTrackFilterTool.h:168
vector
Definition: MultiHisto.h:13
AmgVector
AmgVector(4) T2BSTrackFilterTool
Definition: T2BSTrackFilterTool.cxx:114
AthAlgTool.h
TrackCollection.h
PESA::T2BSTrackFilterTool::fail_D0err
@ fail_D0err
Definition: T2BSTrackFilterTool.h:69
PESA::T2BSTrackFilterTool::TrackData::TrackData
TrackData(Trk::Perigee const &trackPars, unsigned lbn_, unsigned bcid_)
Definition: T2BSTrackFilterTool.h:39
PESA::T2BSTrackFilterTool::m_minTRTHits
int m_minTRTHits
Definition: T2BSTrackFilterTool.h:180
chi2
double chi2(TH1 *h0, TH1 *h1)
Definition: comparitor.cxx:522
checkCorrelInHIST.prefix
dictionary prefix
Definition: checkCorrelInHIST.py:391
PESA::T2BSTrackFilterTool::TrackData
Class which holds track parameters.
Definition: T2BSTrackFilterTool.h:38
test_pyathena.parent
parent
Definition: test_pyathena.py:15
PESA::T2BSTrackFilterTool::dumpTrackParams
void dumpTrackParams(Trk::Perigee const *trackPars, double chi2, std::string const &message) const
Definition: T2BSTrackFilterTool.cxx:493
PESA::T2BSTrackFilterTool::fail_SiHits
@ fail_SiHits
Definition: T2BSTrackFilterTool.h:62
PESA::T2BSTrackFilterTool::m_minSiHits
int m_minSiHits
Definition: T2BSTrackFilterTool.h:177
PESA::T2BSTrackFilterTool::m_maxTrackD0
double m_maxTrackD0
Definition: T2BSTrackFilterTool.h:170
DataVector< Trk::Track >
PESA::T2BSTrackFilterTool::m_lbnInterval
int m_lbnInterval
Definition: T2BSTrackFilterTool.h:185
Monitored.h
Header file to be included by clients of the Monitored infrastructure.
PESA::T2BSTrackFilterTool::TrackRejectReasonSet
std::bitset< numRejectReasons > TrackRejectReasonSet
Definition: T2BSTrackFilterTool.h:79
PESA::T2BSTrackFilterTool::m_maxTrackZ0err
double m_maxTrackZ0err
Definition: T2BSTrackFilterTool.h:171
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
GenericMonitoringTool
Definition: GenericMonitoringTool.py:1
PESA::T2BSTrackFilterTool::initialize
StatusCode initialize() final
Definition: T2BSTrackFilterTool.cxx:146
PESA::T2BSTrackFilterTool::AccumKey
unsigned AccumKey
Definition: T2BSTrackFilterTool.h:191
PESA::T2BSTrackFilterTool::TrackStatAccumulator::AmgVector
AmgVector(4) solution() const
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
Trk::d0
@ d0
Definition: ParamDefs.h:69
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
PESA::T2BSTrackFilterTool::filter
TrackVector filter(const TrackCollection &tracks) const
Select tracks that can be used for further processing.
Definition: T2BSTrackFilterTool.cxx:159
PESA::T2BSTrackFilterTool::fail_Eta
@ fail_Eta
Definition: T2BSTrackFilterTool.h:71
xAOD::bcid
setEventNumber setTimeStamp bcid
Definition: EventInfo_v1.cxx:133
PESA::T2BSTrackFilterTool::TrackData::lbn
unsigned lbn
Definition: T2BSTrackFilterTool.h:50
PESA::T2Track
Definition: T2Track.h:44
PESA::T2BSTrackFilterTool::m_minSCTHits
int m_minSCTHits
Definition: T2BSTrackFilterTool.h:179
PESA::T2BSTrackFilterTool::m_chi2cutoff
double m_chi2cutoff
Definition: T2BSTrackFilterTool.h:183
PESA::T2BSTrackFilterTool::TrackVector
std::vector< const Trk::Track * > TrackVector
Definition: T2BSTrackFilterTool.h:33
dqt_zlumi_pandas.update
update
Definition: dqt_zlumi_pandas.py:42
PESA::T2BSTrackFilterTool::fail_MinQual
@ fail_MinQual
Definition: T2BSTrackFilterTool.h:72
InDetDD::other
@ other
Definition: InDetDD_Defs.h:16
PESA::T2BSTrackFilterTool::m_maxTrackZ0
double m_maxTrackZ0
Definition: T2BSTrackFilterTool.h:169
PESA::T2BSTrackFilterTool::m_minPIXHits
int m_minPIXHits
Definition: T2BSTrackFilterTool.h:178
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
PESA::T2BSTrackFilterTool::AccumMap
std::map< AccumKey, TrackStatAccumulator > AccumMap
Definition: T2BSTrackFilterTool.h:192
PESA::T2BSTrackFilterTool::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition: T2BSTrackFilterTool.h:195
PESA::T2BSTrackFilterTool::m_maxTrackD0err
double m_maxTrackD0err
Definition: T2BSTrackFilterTool.h:172
PESA::T2BSTrackFilterTool::fail_Z0
@ fail_Z0
Definition: T2BSTrackFilterTool.h:68
PESA::T2BSTrackFilterTool::fail_MaxQual
@ fail_MaxQual
Definition: T2BSTrackFilterTool.h:73
PESA::T2BSTrackFilterTool::m_minTrackChi2Prob
double m_minTrackChi2Prob
Definition: T2BSTrackFilterTool.h:176
PESA::T2BSTrackFilterTool::bootstrapFromSeeds
bool bootstrapFromSeeds(std::vector< TrackData > *bsTracks=nullptr) const
Definition: T2BSTrackFilterTool.cxx:408
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
AthAlgTool
Definition: AthAlgTool.h:26
PESA::T2BSTrackFilterTool::trackChi2
double trackChi2(TrackData const &seed, AmgVector(4) const &solution) const
Calculate track chi2 w.r.t.
Definition: T2BSTrackFilterTool.cxx:481
PESA::T2BSTrackFilterTool::TrackData::d0_var
double d0_var
Definition: T2BSTrackFilterTool.h:55
Trk::phi0
@ phi0
Definition: ParamDefs.h:71
PESA::T2BSTrackFilterTool::m_minTrackNDF
double m_minTrackNDF
Definition: T2BSTrackFilterTool.h:173
LB_AnalMapSplitter.lbn
lbn
Definition: LB_AnalMapSplitter.py:28
PESA::T2BSTrackFilterTool::fail_TRTHits
@ fail_TRTHits
Definition: T2BSTrackFilterTool.h:65