|
ATLAS Offline Software
|
Go to the documentation of this file.
5 #ifndef MUONLAYERHOUGH_H
6 #define MUONLAYERHOUGH_H
21 using HitVec = std::vector<std::shared_ptr<MuonHough::Hit>>;
31 float referencePosition_,
float yMinRange_,
32 float yMaxRange_,
float yBinSize_,
float thetaStep_,
33 unsigned int nthetaSamples_) :
127 int bin(
const Hit& hit)
const;
130 int bin(
float x,
float y)
const;
133 float yval(
int posBin)
const;
136 void pars(
int posBin,
int ,
float&
x,
float&
y)
const;
154 std::pair<int, int>
range(
const float x,
const float y1,
const float y2,
const int bintheta)
const;
157 std::pair<float, float>
maximum(
float x,
float y,
int& posbin,
int& thetabin)
const;
172 std::vector<TH1*>
rootHistos(
const std::string&
prefix,
const float* rmin = 0,
const float* rmax = 0)
const;
186 std::vector<std::unique_ptr<unsigned int[]> >
m_histos;
195 if (in < 0 || in >=
m_nbins) in = -1;
float ymin
global hit position (x=r in barrel, x=z in endcap)
std::vector< std::shared_ptr< MuonHough::Hit > > HitVec
float yval(int posBin) const
access to y coordinate of a given bin
float w
maximum value of the hit in the precision coordinate (y=z in barrel, y=r in endcap)
float layerConfirmation(const Hit &hit, float range=1000.) const
calculate the highest value of the hough transform within the specified range for the given hit
RegionDescriptor m_descriptor
@ BEE
BEE measurement point.
int m_nbins
inverse binsize
unsigned int nthetaSamples
struct containing all hit information needed for the Hough transform
struct containing all information to build a Hough transform for a given chamber index
int bin(const Hit &hit) const
calculate the position bin the hit will endup in
RegionDescriptor(int sector_, DetRegIdx region_, ChIdx chIndex_, float referencePosition_, float yMinRange_, float yMaxRange_, float yBinSize_, float thetaStep_, unsigned int nthetaSamples_)
struct representing the maximum in the hough space
void fill(const Hit &hit)
fill the hough space with a single position
std::pair< int, int > range(const float x, const float y1, const float y2, const int bintheta) const
calculates the first and last bin the hit should be filled in for a given theta bin
std::pair< float, float > maximum(float x, float y, int &posbin, int &thetabin) const
returns a pair with the position and angle corresponing to the input x,y values
bool findMaximum(Maximum &maximum, const MuonLayerHoughSelector &selector) const
find the highest maximum that is above maxval
float x
layer identifier (packed word containing technology/sublayer)
float m_invbinsize
binsize
void associateHitsToMaximum(Maximum &maximum, const HitVec &hits) const
associates the list of input hits to the provided maximum
MuonLayerHough(const RegionDescriptor &descriptor)
constructor
RegionDescriptor()=default
const MuonLayerHough * hough
DetectorRegionIndex
enum to classify the different layers in the muon spectrometer
void setDebug(bool d)
enable debug output
~MuonLayerHough()=default
destructor
void reset()
reset the transform
void fillLayer(const HitVec &hits, bool substract=false)
fill the hough space with a vector of hits using the layer mode
const boost::regex ref(r_ef)
std::vector< std::unique_ptr< unsigned int[]> > m_histos
std::vector< TH1 * > rootHistos(const std::string &prefix, const float *rmin=0, const float *rmax=0) const
returns a vector with all the histograms of the hough as TH1*
void fillLayer2(const HitVec &hits, bool subtract=false)
float getGlobalTheta() const
ChIndex
enum to classify the different chamber layers in the muon spectrometer
float extrapolate(const MuonLayerHough::Maximum &ref, const MuonLayerHough::Maximum &ex, bool doparabolic=false)
void pars(int posBin, int, float &x, float &y) const
calculate x,y for the given position bin
std::vector< RegionDescriptor > RegionDescriptionVec