5#ifndef MUONNSWSEGMENTFINDERTOOL_H
6#define MUONNSWSEGMENTFINDERTOOL_H
43 operator bool()
const {
return get();}
64 const std::array<double, 2>& lengths);
82 using MeasVec = std::vector<SeedMeasurement>;
94 int channel(
const SeedMeasurement& meas)
const;
96 bool find(
const SeedMeasurement& meas)
const;
98 double distance(
const SeedMeasurement& meas)
const;
101 bool insert(SeedMeasurement meas);
123 std::set<std::shared_ptr<const Muon::MuonClusterOnTrack>>
m_calibClust{};
139 "Muon::MuonIdHelperSvc/MuonIdHelperSvc",
144 "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc",
145 "Handle to the service providing the IMuonEDMHelperSvc interface",
150 "SegmentAmbiguityTool",
151 "Trk::SimpleAmbiguityProcessorTool/MuonAmbiProcessor",
156 "Trk::GlobalChi2Fitter/MCTBSLFitter",
160 "TrackToSegmentTool",
161 "Muon::MuonTrackToSegmentTool/MuonTrackToSegmentTool",
166 "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool",
171 "Muon::MuonTrackCleaner/MuonTrackCleaner",
176 "Trk::TrackSummaryTool/MuidTrackSummaryTool",
194 "Size of the channel window to group the MicroMegaCluster"};
196 "Cut on the number of MicroMega clusters in a particular occupancy bin"};
198 "Cut on the number of MicroMega clusters in two neighbouring occupancy bins"};
199 Gaudi::Property<uint>
m_maxInputPads{
this,
"maxInputPads", 40,
"Maximum number of pads per wedge layer."};
222 std::string
printSeed(
const std::array<SeedMeasurement, N>& seed)
const;
238 std::vector<std::unique_ptr<Muon::MuonSegment>>
findStereoSegments(
const EventContext& ctx,
239 const std::vector<const Muon::MuonClusterOnTrack*>& allClusts,
240 int singleWedge = 0)
const;
244 const std::vector<const Muon::MuonClusterOnTrack*>& MuonClusters,
245 int singleWedge = 0)
const;
247 std::vector<std::unique_ptr<Muon::MuonSegment>>
find3DSegments(
const EventContext& ctx,
248 const std::vector<const Muon::MuonClusterOnTrack*>& MuonClusters,
249 std::vector<std::unique_ptr<Muon::MuonSegment>>& etaSegs,
250 int singleWedge = 0)
const;
253 int hit_sel,
int singleWedge)
const;
264 std::array<unsigned int,4> selLayers,
265 unsigned int& trial_counter)
const;
271 std::vector<std::pair<double, double>>
getPadPhiOverlap(
const std::vector<std::vector<const Muon::sTgcPrepData*>>& pads)
const;
275 const std::set<unsigned int>&
exclude,
bool useStereo=
true )
const;
286 std::unique_ptr<Trk::PseudoMeasurementOnTrack>
ipConstraint(
const EventContext& ctx)
const;
291 std::vector<std::unique_ptr<Muon::MuonSegment>>
resolveAmbiguities(
const EventContext& ctx,
294 std::unique_ptr<Trk::Track>
fit(
const EventContext& ctx,
const std::vector<const Trk::MeasurementBase*>& fit_meas,
DataVector< Trk::Track > TrackCollection
This typedef represents a collection of Trk::Track objects.
Interface for Helper service that creates muon Identifiers and can be used to print Identifiers.
Base class for Muon cluster RIO_OnTracks.
This is the common class for 3D segments used in the muon spectrometer.
Author
enum to identify who created the segment.
std::set< std::string > exclude
list of directories to be excluded
Eigen::Matrix< double, 3, 1 > Vector3D
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
NSWSeed::MeasVec MeasVec
Stereo seeds can be formed using hits from 4 independent layers by solving the following system of eq...
ParametersBase< TrackParametersDim, Charged > TrackParameters
Struct caching the MuonClusterOnTrack and providing the orientation of the strip in addtion.
const Amg::Vector3D & dir() const
bool operator==(const SeedMeasurement &other) const
const Muon::MuonClusterOnTrack * m_cl
SeedMeasurement()=default
double dirDot(const Amg::Vector3D &v) const
void setDistance(double d)
const Muon::MuonClusterOnTrack * operator->() const
const Muon::MuonClusterOnTrack * get() const
Accomodations of the interface to make the changes as transparent as possible.
const Amg::Vector3D & pos() const
double dirDot(const SeedMeasurement &other) const
const Muon::MuonClusterOnTrack * newCalibClust(std::unique_ptr< const Muon::MuonClusterOnTrack > new_clust)
Adds a calibrated cluster to the garbage collection.
SeedOR overlap(const NSWSeed &other) const
size_t m_size
Added measurements on track.
SeedMeasCache m_phiMeasurements
Cache the phi measurements.
std::array< SeedMeasurement, 16 > SeedMeasCache
Helper pair to cache the measurements with the respective distances.
const Amg::Vector3D & pos() const
Returns the position of the seed.
Amg::Vector3D m_dir
Seed direction.
Amg::Vector3D m_pos
Starting position of the seed.
MeasVec measurements() const
bool find(const SeedMeasurement &meas) const
Checks whether the measurement is already part of the seed.
SeedMeasCache m_measurements
Cache the eta measurements.
SeedMeasCache m_padMeasurements
Cache the sTGC pad measurements.
std::set< std::shared_ptr< const Muon::MuonClusterOnTrack > > m_calibClust
Garbage container per seed.
size_t size() const
Returns the number of measurements.
const MuonNSWSegmentFinderTool * m_parent
bool insert(const Muon::MuonClusterOnTrack *cl)
int channel(const SeedMeasurement &meas) const
Returns the channel of the measurement on the layer.
const Amg::Vector3D & dir() const
Returns the direction of the seed.
bool add(SeedMeasurement meas, double max_uncert)
Tries to add the measurement to the seeds. Returns false if the measurement is incompatible with the ...
double distance(const SeedMeasurement &meas) const
Calculates the minimal distance between seed and measurement.
std::vector< SeedMeasurement > MeasVec
Returns the contained measurements.