/////////////////////////////////////////////////////////////////////////////////// // RAT::Classifiers::PositionANN // // Position method that uses an ANN to classify radius using calibrated hit time // and angle between PMTs and an estimated event orientation as inputs to find // a radius. // // author: Matt Mottram // // REVISION HISTORY: // - 2016-06-20: M Mottram - new file // /////////////////////////////////////////////////////////////////////////////////// #ifndef __RAT_PositionANN__ #define __RAT_PositionANN__ #include #include namespace RAT { namespace DS { class Entry; class EV; } namespace Methods { class PositionANN : public Method { public: virtual std::string GetName() const {return PositionANN::Name();} static std::string Name() {return std::string("positionANN");} void Initialise(const std::string&) {}; void BeginOfRun(DS::Run&); void EndOfRun(DS::Run&) {}; virtual DS::FitResult GetBestFit(); private: std::vector FeedForward(const std::vector& inputs, const std::vector< std::vector >& weights, const std::vector& biases); std::vector< std::vector< std::vector > > fWeights; // Deep! std::vector< std::vector > fBiases; size_t fNLayers; int fNDots; int fNTimes; double fDotLow; double fDotHigh; double fDotWidth; double fTimeLow; double fTimeHigh; double fTimeWidth; double fRadiusScale; }; } } #endif // __RAT_PositionANN__