|
ATLAS Offline Software
|
Go to the documentation of this file.
3 #ifndef FPGATRACKSIMHOUGH1DSHIFTTOOL_H
4 #define FPGATRACKSIMHOUGH1DSHIFTTOOL_H
40 #include "GaudiKernel/ServiceHandle.h"
59 #include <boost/dynamic_bitset_fwd.hpp>
99 virtual StatusCode getRoads(
const std::vector<std::shared_ptr<const FPGATrackSimHit>> &
hits, std::vector<std::shared_ptr<const FPGATrackSimRoad>> & roads)
override;
112 Gaudi::Property<bool>
m_traceHits {
this,
"traceHits",
true,
"Trace each hit that goes in a bin. Disabling this will save memory/time since each bin doesn't have to store all its hits but the roads created won't have hits from convolution, etc."};
114 Gaudi::Property<bool>
m_doEtaPatternConsts {
this,
"doEtaPatternConsts",
false,
"Whether to use the eta pattern tool for constant generation"};
115 Gaudi::Property<bool>
m_useSpacePoints {
this,
"useSpacePoints",
false,
"Whether we are using spacepoints." };
116 Gaudi::Property<bool>
m_useSectors {
this,
"useSectors",
false,
"Will reverse calculate the sector for track-fitting purposes" };
117 Gaudi::Property<bool>
m_idealGeoRoads {
this,
"IdealGeoRoads",
false,
"Set sectors to use ideal geometry fit constants" };
118 Gaudi::Property<bool>
m_doRegionalMapping {
this,
"RegionalMapping",
false,
"Use the sub-region maps to define the sector" };
119 Gaudi::Property<bool>
m_drawHitMasks {
this,
"drawHitMasks",
false,
"Draws hit masks if true"};
121 Gaudi::Property<int>
m_subRegion {
this,
"subRegion", 0,
"Sub region of this transform, or -1 for full region" };
122 Gaudi::Property<float>
m_phiMin {
this,
"phiMin", 0,
"Minimum phi of transform" };
123 Gaudi::Property<float>
m_phiMax {
this,
"phiMax", 0,
"Maximum phi of transform" };
124 Gaudi::Property<float>
m_qptMin {
this,
"qptMin", 0,
"Minimum q/pT of transform" };
125 Gaudi::Property<float>
m_qptMax {
this,
"qptMax", 0,
"Maximum q/pT of transform" };
127 Gaudi::Property<unsigned>
m_phiBins {
this,
"nBins", 0,
"Number of phi bins used by transform." };
128 Gaudi::Property<unsigned>
m_threshold {
this,
"threshold", 0,
"Minimum number of layers hit to accept as a road (inclusive)" };
129 Gaudi::Property<unsigned>
m_iterStep {
this,
"iterStep", 0,
"Instead of iterating over steps in pT, we iterate over iterStep-bin shifts in iterLayer" };
130 Gaudi::Property<unsigned>
m_iterLayer {
this,
"iterLayer", 0,
"Instead of iterating over steps in pT, we iterate over iterStep-bin shifts in iterLayer" };
132 Gaudi::Property<bool>
m_useDiff {
this,
"useDiff",
false,
"Use the diff of inner and outer layer" };
133 Gaudi::Property<bool>
m_variableExtend {
this,
"variableExtend",
false,
"Do variable extension based off of hit delta R" };
134 Gaudi::Property<bool>
m_phiRangeCut {
this,
"phiRangeCut",
false,
"Require tracks to be in phi range to avoid counting minbias roads for larger region" };
136 Gaudi::Property<float>
m_d0spread {
this,
"d0spread", -1.0,
"Make patterns with a d0spread as given, negative value turns it off" };
137 Gaudi::Property<std::vector<float>>
m_hitExtendProperty {
this,
"hitExtend", {},
"Number of adjacent bins that a hit triggers" };
138 Gaudi::Property<std::string>
m_bitShift_path {
this,
"bitShifts",
"",
"Instead of calculating bit shifts, input a list of shifts via a text file" };
139 Gaudi::Property<bool>
m_applyDropable {
this,
"applyDropable",
false,
"Enable logic that prevents redundant patterns with dropped hits" };
140 Gaudi::Property<int>
m_neighborWindow {
this,
"neighborWindow", 0,
"Supress if neighbors have higher number of hit layers" };
141 Gaudi::Property<unsigned>
m_historyWindow {
this,
"historyWindow", 0,
"Suppress if previous N bit shifts have neighbors with higher nubmer of hit layers" };
142 Gaudi::Property<bool>
m_fieldCorrection {
this,
"fieldCorrection",
true,
"Apply corrections to hough equation due to field nonuniformity" };
143 Gaudi::Property<float>
m_enhanceHighPt {
this,
"enhanceHighPt", -1.0,
"if positive, double number of patterns for region with qpT below value" };
190 void readShifts(std::string
const & filepath);
191 std::vector<boost::dynamic_bitset<>>
makeHitMasks(
const std::vector<std::shared_ptr<const FPGATrackSimHit>> &
hits);
195 bool passThreshold(std::vector<boost::dynamic_bitset<>>& binHits,
int bin )
const;
196 void printHitMasks(std::vector<boost::dynamic_bitset<>>
const & hitMasks)
const;
198 void drawHitMasks(std::vector<boost::dynamic_bitset<>>
const & hitMasks, std::string
const &
name);
199 void drawHitMasks(std::vector<boost::dynamic_bitset<>>
const & hitMasks, std::string
const &
name, std::vector<int>
const & shifts);
202 std::pair<int, int>
getBins(
const std::shared_ptr<const FPGATrackSimHit>& hit)
const;
203 float phitrkDiff(
float r1,
float phi1,
float r2,
float phi2)
const;
204 std::pair<float, bool>
phitrk(
int bin, std::vector<int>
const & shifts )
const;
212 std::vector<int>
shiftWithDrop(std::vector<int>& shift,
unsigned droplayer)
const;
218 #endif // FPGATRACKSIMHOUGH1DSHIFTTOOL_H
Defines several vector wrappers for homogenous multi-dimensional vectors, declared as 1D arrays for l...
::StatusCode StatusCode
StatusCode definition for legacy code.
: FPGATrackSim-specific class to represent an hit in the detector.
Defines a class for roads.
Structs that store the 5 track parameters.