//////////////////////////////////////////////////////////////////////// /// \class RAT::Classifiers::QPDT /// /// \brief Gives the QPDT and amount of hits in an early time window. /// /// \author name Eric Marzec /// /// REVISION HISTORY:\n /// 07/05/2013 : Eric Marzec - New file /// 05/22/2017 : J Caravaca - Add ability to use selectors /// 10/16/2017 : T Kaptanoglu - Add QMax to selector /// 09/01/2020 : Logan Lebanowski - Properly account for partial fill /// /// \details Compares observed PMT charges for hits that are in an early /// time window to a DiPolya+Exponential distribution to obtain /// the hit's charge probability. This is then used to calculate /// the event's QPDT which is returned along with the number of /// hits within the early time window. /// //////////////////////////////////////////////////////////////////////// #ifndef __RAT_Classifiers_QPDT_ #define __RAT_Classifiers_QPDT_ #include #include #include namespace RAT { namespace DS { class FitResult; } namespace Classifiers { class QPDT : public SeededClassifier, public SelectorClassifier { public: virtual std::string GetName() const { return QPDT::Name(); } static std::string Name() { return std::string( "QPDT" ); } void Initialise( const std::string& ) { } void BeginOfRun( DS::Run& run ); void EndOfRun( DS::Run& ) { } virtual DS::ClassifierResult GetClassification(); /// Set the seed to default void DefaultSeed(); /// Set the seed from seed void SetSeed( const DS::FitResult& seed ); private: DU::Point3D fEventPos; ///< Reconstructed event position double fEventTime; ///< Reconstructed event time double fUpperTimeLimit; ///< Upper time for early time window double fLowerTimeLimit; ///< Lower time for early time window double fQCutoffMax; ///< Maximum charge to consider for lowest prob calculation double fQCutoffMin; ///< Minimum charge to consider for lowest prob calculation DU::TimeResidualCalculator fTRCalc; ///< Time residual calculator for a given run size_t fPSUPSystemId; // coordinate system id for Point3D DS::FitVertex fSeedVertex; }; } //::Classifier } //::RAT #endif