125 #ifndef HOUGHBASEALG_H 126 #define HOUGHBASEALG_H 166 strength=strengthTemp;
173 return (strength < houghCornerComp.
strength);
186 int clusterNumber=-999999;
187 double showerLikeness=0;
193 double clusterNumberTemp=-999999,
194 double showerLikenessTemp=0)
201 clusterNumber=clusterNumberTemp;
202 showerLikeness=showerLikenessTemp;
210 int clusterNumber=999999;
211 int planeNumber=999999;
212 int oldClusterNumber=999999;
213 float clusterSlope=999999;
214 float clusterIntercept=999999;
215 float totalQ=-999999;
220 float iMinWire=999999;
221 float iMaxWire=-999999;
222 float minWire=999999;
223 float maxWire=-999999;
224 float isolation=-999999;
225 float showerLikeness=-999999;
227 bool showerMerged=
false;
228 bool mergedLeft=
false;
229 bool mergedRight=
false;
230 std::vector<art::Ptr<recob::Hit>>
hits;
234 void Init(
unsigned int num=999999,
235 unsigned int pnum=999999,
237 float intercept=999999,
238 float totalQTemp=-999999,
243 int iMinWireTemp=999999,
244 int iMaxWireTemp=-999999,
245 int minWireTemp=999999,
246 int maxWireTemp=-999999,
251 oldClusterNumber = num;
252 clusterSlope = slope;
253 clusterIntercept = intercept;
259 iMinWire = iMinWireTemp;
260 iMaxWire = iMaxWireTemp;
261 minWire = minWireTemp;
262 maxWire = maxWireTemp;
264 showerMerged =
false;
290 typename ALLOC = std::allocator<std::pair<KEY,std::array<COUNTER, SIZE>>>,
291 unsigned int SUBCOUNTERS=1
329 {
return Base_t::set(key,
value); }
355 {
return unchecked_set_range(key_begin, key_end,
value); }
363 void increment(
Key_t key_begin,
Key_t key_end);
387 {
return unchecked_add_range_max(key_begin, key_end, +1); }
406 {
return unchecked_add_range_max(key_begin, key_end, +1, current_max); }
415 void decrement(
Key_t key_begin,
Key_t key_end);
488 (
unsigned int dx,
unsigned int dy,
float rhores,
unsigned int numACells);
489 std::array<int,3> AddPointReturnMax(
int x,
int y);
490 bool SubtractPoint(
int x,
int y);
491 int GetCell(
int row,
int col)
const;
492 void SetCell(
int row,
int col,
int value) { m_accum[row].set(col, value); }
495 numRows = m_accum.size();
496 numCols = (int) m_rowLength;
499 void GetEquation(
float row,
float col,
float &rho,
float &theta)
const;
500 int GetMax(
int & xmax,
int & ymax)
const;
541 std::array<int,3> DoAddPointReturnMax(
int x,
int y,
bool bSubtract =
false);
556 float integral = 0.0F;
557 float integral_stddev = 0.0F;
558 float summedADC = 0.0F;
559 float summedADC_stddev = 0.0F;
562 integral(in), integral_stddev(in_stdev),
563 summedADC(sum), summedADC_stddev(sum_stdev)
572 std::vector<recob::Cluster> & ccol,
575 std::string
const&
label);
578 std::vector<unsigned int> *fpointId_to_clusterId,
579 unsigned int clusterId,
580 unsigned int *nClusters,
581 std::vector<protoTrack> *protoTracks);
585 size_t FastTransform(
591 size_t FastTransform(
594 std::vector<double> & slope,
595 std::vector<ChargeInfo_t> & totalQ
609 void HLSSaveBMPFile(
char const*,
unsigned char*,
int,
int);
615 int fSaveAccumulator;
629 float fMissedHitsDistance;
635 friend class HoughTransformClus;
641 #endif // HOUGHBASEALG_H
typename Traits_t::CounterBlock_t CounterBlock_t
float fRhoResolutionFactor
Factor determining the resolution in rho.
Reconstruction base classes.
KEY Key_t
type of counter key in the map
Cluster finding and building.
mergedLines(double totalQTemp=0, double pMin0Temp=0, double pMin1Temp=0, double pMax0Temp=0, double pMax1Temp=0, double clusterNumberTemp=-999999, double showerLikenessTemp=0)
Data structure collecting charge information to be filled in cluster.
int fMaxLines
Max number of lines that can be found.
ChargeInfo_t(float in, float in_stdev, float sum, float sum_stdev)
auto vector(Vector const &v)
Returns a manipulator which will print the specified array.
bool operator<(ProductInfo const &a, ProductInfo const &b)
typename Traits_t::template BaseMap_t< typename std::allocator_traits< Allocator_t >::template rebind_alloc< typename Traits_t::MapValue_t > > BaseMap_t
Type of the map used in the implementation.
Aggressive allocator reserving a lot of memory in advance.
float fMaxSlope
Max slope a line can have.
Memory allocator for large amount of (small) objects.
int fRhoZeroOutRange
Range in rho over which to zero out area around previously found lines in the accumulator.
ALLOC Allocator_t
type of the single counter
Structure with the index of the counter, split as needed.
std::string value(boost::any const &)
std::vector< art::Ptr< recob::Hit > > hits
void Init(unsigned int num=999999, unsigned int pnum=999999, float slope=999999, float intercept=999999, float totalQTemp=-999999, float Min0=999999, float Min1=999999, float Max0=-999999, float Max1=-999999, int iMinWireTemp=999999, int iMaxWireTemp=-999999, int minWireTemp=999999, int maxWireTemp=-999999, std::vector< art::Ptr< recob::Hit >> hitsTemp=std::vector< art::Ptr< recob::Hit >>())
Map storing counters in a compact way.
Counter_t SubCounter_t
Type of the subcounter (that is, the actual counter)
Map of counters, stored compactly.
int fThetaZeroOutRange
Range in theta over which to zero out area around previously found lines in the accumulator.
houghCorner(double strengthTemp=0, double p0Temp=0, double p1Temp=0)
float fMissedHitsToLineSize
Ratio of missed hits to line size for a line to be considered a fake.