#ifndef _MIDPOINT_ALGORITHM_HH_ #define _MIDPOINT_ALGORITHM_HH_ #include "PhysicsTower.hh" #include "Cluster.hh" #include class MidPointAlgorithm { private: double _seedThreshold; double _coneRadius; double _coneAreaFraction; int _maxPairSize; int _maxIterations; double _overlapThreshold; public: MidPointAlgorithm(): _seedThreshold(1), _coneRadius(0.7), _coneAreaFraction(0.25), _maxPairSize(2), _maxIterations(100), _overlapThreshold(0.75) {} MidPointAlgorithm(double st, double cr, double caf, int mps, int mi, double ot): _seedThreshold(st), _coneRadius(cr), _coneAreaFraction(caf), _maxPairSize(mps), _maxIterations(mi), _overlapThreshold(ot) {} void findStableConesFromSeeds(std::vector& particles, std::vector& stableCones); void findStableConesFromMidPoints(std::vector& particles, std::vector& stableCones); void iterateCone(double startRapidity, double startPhi, double startPt, std::vector& particles, std::vector& stableCones, bool reduceConeSize); void addClustersToPairs(std::vector& testPair, std::vector< std::vector >& pairs, std::vector< std::vector >& distanceOK, int maxClustersInPair); void splitAndMerge(std::vector& stableCones, std::vector& jets); void run(std::vector& particles, std::vector& jets); }; #endif