//////////////////////////////////////////////////////////////////////// /// \class RAT::PDFs::MultiPDFFull /// /// \brief Effective time 1d pdfs /// /// \author name Will Parker /// /// /// REVISION HISTORY:\n /// 17/03/2021 : W Parker - New file \n /// /// /// \details Returns probabilities for 1d pdfs using the effective velocity /// transit time routine. The pdfs can be split by distancs from /// vertex position to pmt, but currently only 1 pdf is used. /// //////////////////////////////////////////////////////////////////////// #ifndef __RAT_PDF_MultiPDFFill__ #define __RAT_PDF_MultiPDFFill__ #include #include class G4PhysicsOrderedFreeVector; namespace RAT { class FitterPMT; namespace DS { class FitVertex; } namespace PDFs { class MultiPDFFull : public PDF { public: double GetProbability( const FitterPMT& pmt, const DS::FitVertex& vertex ); std::string GetName() const { return Name(); } static std::string Name() { return std::string( "multiPDFFull" ); } /// Initialise the PDF void Initialise( const std::string& param ); void BeginOfRun( DS::Run& run ); void EndOfRun( DS::Run& run ); void SetI( const std::string& param, const int val ); void SetS( const std::string& param, const std::string& value ); protected: std::string fIndex; ///Database index std::vector fProbability; ///< PDF in a convenient interpolating structure unsigned int fNumPDFs; // Number of pdf tables bool fUsePosDep; //determine if using position dependent pdfs or not std::vector < std::pair > fDistanceRange;// range of vertex-pmt distances each pdf applies to int fNhits = DS::INVALID; std::vector fAV_offset; double fAV_offset_z; }; } //::PDFs } //::RAT #endif