//////////////////////////////////////////////////////////////////////// /// \class RAT::Classifiers::AlphaNReactorIBDClassifier /// /// \brief Calculates the likelihood ratio for an event to be a prompt Alpha-n or reactor ibd event /// /// \author name Charlie Mills /// /// REVISION HISTORY:\n /// - 2020/12/14: File created, based heaviliy on the AlphaBetaClassifier, written by Eric Marzec, /// and the BerkeleyAlphaBeta classifer, written by Ben Land /// /// \details Calculates a log likelihood that an event is either an alpha-n prompt event /// or a reactor IBD prompt event and returns the ratio of those likelihoods. /// /// //////////////////////////////////////////////////////////////////////// #ifndef __RAT_Classifiers_AlphaNReactorIBDClassifier_ #define __RAT_Classifiers_AlphaNReactorIBDClassifier_ #include #include namespace RAT { namespace Classifiers { class AlphaNReactorIBDClassifier : public SeededClassifier { public: virtual std::string GetName() const { return AlphaNReactorIBDClassifier::Name(); } static std::string Name() { return std::string( "AlphaNReactorIBDClassifier" ); } void Initialise( const std::string& param ); void BeginOfRun(DS::Run& run); void EndOfRun(DS::Run&); virtual void SetSeed(const DS::FitResult& seed); virtual void DefaultSeed(); virtual DS::ClassifierResult GetClassification(); private: std::vector fTimeResiduals; std::vector fTimes; std::vector fIBDPDF; std::vector fAlphaPDF; std::vector< std::vector > fIBDProbability; std::vector< std::vector > fAlphaProbability; double fTimeStep; double fEnergy; int fNhits; std::string fIndex; TVector3 fEventPos; double fEventTime; DU::LightPathCalculator fLightPath; bool fPartialFlag; bool fValidEnergy; int protonRecoilNhitThreshold; int fourPFourNhitThreshold; double protonRecoilEnergyThreshold; double fourPFourEnergyThreshold; protected: }; } //::Classifier } //::RAT #endif