ATLAS Offline Software
Loading...
Searching...
No Matches
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
36namespace InDet { class BeamSpotData; }
37
38namespace PESA
39{
40
42 {
43 public:
44
45 using TrackVector = std::vector<const Trk::Track*>;
46
47 // option for calculating track perigee parameters
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
DataVector adapter that acts like it holds const pointers.
double seedZ0() const
Z0 position of a seed track that was used for clustering.
std::vector< const Trk::Track * > TrackVector
T2TrackClusterer(double deltaZ=10.*Gaudi::Units::mm, double minPT=1.*Gaudi::Units::GeV, bool weightedZ=true, unsigned maxSize=10000., TrackPerigee trackPerigee=perigee_original)
const TrackPerigee m_trackPerigee
const TrackVector & unusedTracks() const
Tracks that were not included into cluster, have to be called after return from a clustering method.
static TrackPerigee trackPerigeeFromString(const std::string &perigeeStr)
const TrackVector & clusterTracks() const
This is the same vector as returned from clustering method, have to be called after return from a clu...
double trackWeight(const Trk::Track &track) const
const TrackVector & cluster(const TrackVector &tracks, const InDet::BeamSpotData *beamspot=nullptr)
Find one cluster in a set of tracks.
double trackPerigeeZ0(const Trk::Track &track, const InDet::BeamSpotData *beamspot) const
double totalZ0Err() const
Uncertainty of Z0 position of a cluster.
Primary Vertex Finder.
Local tools.
Definition idx.h:9