ATLAS Offline Software
T2TrackClusterer.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 /**********************************************************************************
6  *
7  * @version: $Id: T2TrackClusterer.h 793164 2017-01-20 03:59:26Z ssnyder $
8  *
9  * @project: HLT, PESA algorithms
10  * @package: TrigT2BeamSpot
11  * @class : T2TrackClusterer
12  *
13  * @brief Auxiliary class that clusters tracks in a TrackCollection
14  * in Z around a seed track
15  *
16  * @author Rainer Bartoldus, SLAC, <bartoldu@slac.stanford.edu>
17  * @author David W. Miller, SLAC/Stanford University, <David.W.Miller@cern.ch>
18  *
19  **********************************************************************************/
20 
21 #ifndef TRIGT2BEAMSPOT_T2TRACKCLUSTERER_H
22 #define TRIGT2BEAMSPOT_T2TRACKCLUSTERER_H
23 
24 #include <string>
25 #include <vector>
26 #include <utility>
27 
30 #include "TrkTrack/Track.h"
32 #include "GaudiKernel/SystemOfUnits.h"
33 //using Gaudi::Units::GeV;
34 //using Gaudi::Units::mm;
35 
36 namespace InDet { class BeamSpotData; }
37 
38 namespace PESA
39 {
40 
42  {
43  public:
44 
45  using TrackVector = std::vector<const Trk::Track*>;
46 
47  // option for calculating track perigee parameters
48  enum TrackPerigee {
49  perigee_original, // Use original track perigee parameters, usually means
50  // perigee w.r.t. coordinate system origin x,y=0,0
51  perigee_beamspot, // Perigee to a beamspot position, ignoring tilt
52  perigee_beamline, // Perigee to a beam line, including tilt
53  };
54 
55  // convert string to above enum value
56  static TrackPerigee trackPerigeeFromString(const std::string& perigeeStr);
57 
58  // Constructor
59  T2TrackClusterer(double deltaZ = 10.*Gaudi::Units::mm, double minPT = 1.*Gaudi::Units::GeV,
60  bool weightedZ = true, unsigned maxSize = 10000.,
61  TrackPerigee trackPerigee = perigee_original)
62  : m_deltaZ ( deltaZ )
63  , m_minPT ( minPT )
64  , m_weightedZ ( weightedZ )
65  , m_maxSize ( maxSize )
66  , m_trackPerigee( trackPerigee )
67  {}
68 
75  const TrackVector& cluster(const TrackVector& tracks, const InDet::BeamSpotData* beamspot = nullptr);
76 
78  double seedZ0() const { return m_seedZ0 ; }
79 
81  double totalZ0Err() const { return m_totalZ0Err; }
82 
85  const TrackVector& clusterTracks() const { return m_cluster; }
86 
89  const TrackVector& unusedTracks() const { return m_unusedTracks; }
90 
91  private:
92 
93  double trackWeight(const Trk::Track& track) const;
94 
95  // return perigee z0 for a track
96  double trackPerigeeZ0(const Trk::Track& track, const InDet::BeamSpotData* beamspot) const;
97 
98  // Data members
99  const double m_deltaZ;
100  const double m_minPT;
101  const bool m_weightedZ;
102  const unsigned m_maxSize;
104 
105  double m_seedZ0 = 0.;
106  double m_totalZ0Err = 0.;
107 
110  };
111 
112 } // end namespace
113 
114 #endif
PESA::T2TrackClusterer::m_seedZ0
double m_seedZ0
Definition: T2TrackClusterer.h:105
PESA::T2TrackClusterer::seedZ0
double seedZ0() const
Z0 position of a seed track that was used for clustering.
Definition: T2TrackClusterer.h:78
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
PESA::T2TrackClusterer::clusterTracks
const TrackVector & clusterTracks() const
This is the same vector as returned from clustering method, have to be called after return from a clu...
Definition: T2TrackClusterer.h:85
ConstDataVector.h
DataVector adapter that acts like it holds const pointers.
InDet
DUMMY Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
PESA::T2TrackClusterer::m_deltaZ
const double m_deltaZ
Definition: T2TrackClusterer.h:99
PESA::T2TrackClusterer::m_trackPerigee
const TrackPerigee m_trackPerigee
Definition: T2TrackClusterer.h:103
PESA::T2TrackClusterer::m_maxSize
const unsigned m_maxSize
Definition: T2TrackClusterer.h:102
PESA::T2TrackClusterer::trackWeight
double trackWeight(const Trk::Track &track) const
Definition: T2TrackClusterer.cxx:42
PESA::T2TrackClusterer::m_totalZ0Err
double m_totalZ0Err
Definition: T2TrackClusterer.h:106
PESA::T2TrackClusterer::m_unusedTracks
TrackVector m_unusedTracks
Definition: T2TrackClusterer.h:109
PESA::T2TrackClusterer::trackPerigeeFromString
static TrackPerigee trackPerigeeFromString(const std::string &perigeeStr)
Definition: T2TrackClusterer.cxx:28
PESA::T2TrackClusterer::TrackPerigee
TrackPerigee
Definition: T2TrackClusterer.h:48
Track.h
PESA::T2TrackClusterer::m_minPT
const double m_minPT
Definition: T2TrackClusterer.h:100
PESA
Local tools.
Definition: T2BeamSpot.cxx:13
PESA::T2TrackClusterer::cluster
const TrackVector & cluster(const TrackVector &tracks, const InDet::BeamSpotData *beamspot=nullptr)
Find one cluster in a set of tracks.
Definition: T2TrackClusterer.cxx:50
PESA::T2TrackClusterer::m_cluster
TrackVector m_cluster
Definition: T2TrackClusterer.h:108
PESA::T2TrackClusterer::perigee_original
@ perigee_original
Definition: T2TrackClusterer.h:49
PESA::T2TrackClusterer::totalZ0Err
double totalZ0Err() const
Uncertainty of Z0 position of a cluster.
Definition: T2TrackClusterer.h:81
TrackCollection.h
PESA::T2TrackClusterer::perigee_beamspot
@ perigee_beamspot
Definition: T2TrackClusterer.h:51
PESA::T2TrackClusterer
Definition: T2TrackClusterer.h:42
PESA::T2TrackClusterer::trackPerigeeZ0
double trackPerigeeZ0(const Trk::Track &track, const InDet::BeamSpotData *beamspot) const
Definition: T2TrackClusterer.cxx:97
PESA::T2TrackClusterer::TrackVector
std::vector< const Trk::Track * > TrackVector
Definition: T2TrackClusterer.h:45
PESA::T2TrackClusterer::T2TrackClusterer
T2TrackClusterer(double deltaZ=10.*Gaudi::Units::mm, double minPT=1.*Gaudi::Units::GeV, bool weightedZ=true, unsigned maxSize=10000., TrackPerigee trackPerigee=perigee_original)
Definition: T2TrackClusterer.h:59
PESA::T2TrackClusterer::perigee_beamline
@ perigee_beamline
Definition: T2TrackClusterer.h:52
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
InDet::BeamSpotData
Definition: BeamSpotData.h:21
PESA::T2TrackClusterer::unusedTracks
const TrackVector & unusedTracks() const
Tracks that were not included into cluster, have to be called after return from a clustering method.
Definition: T2TrackClusterer.h:89
PESA::T2TrackClusterer::m_weightedZ
const bool m_weightedZ
Definition: T2TrackClusterer.h:101
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
makeComparison.deltaZ
int deltaZ
Definition: makeComparison.py:46
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30