////////////////////////////////////////////////////////////////////////
/// \class RAT::PDFs::GV1D
///
/// \brief Position based PDF with Group velocity residuals
///
/// \author name Phil G Jones
/// \author Matt Mottram < m.mottram@qmul.ac.uk> -- contact person
///
/// REVISION HISTORY:\n
/// 12/08/2011 : P G Jones - New file \n
/// 2019/06/16 : Logan Lebanowski - Handle outlier positions
///
/// \details Returns probabilities for a 1d pdf using the group velocity
/// transit time routine.
///
////////////////////////////////////////////////////////////////////////
#ifndef __RAT_PDF_GV1D__
#define __RAT_PDF_GV1D__
#include
#include
#include
class G4PhysicsOrderedFreeVector;
namespace RAT
{
class FitterPMT;
namespace DS
{
class FitVertex;
}
namespace PDFs
{
class GV1D : 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( "gv1d" ); }
/// Initialise the fProbability values vector
void Initialise( const std::string& param );
void BeginOfRun( DS::Run& run );
void EndOfRun( DS::Run& run );
protected:
std::string fIndex; ///< Optional database index
G4PhysicsOrderedFreeVector* fProbability; ///< PDF in a convenient interpolating structure
DU::TimeResidualCalculator fTRCalc; ///< Time residual calculator for a given run
size_t fPSUPSystemId; // coordinate system id for Point3D
};
} //::PDFs
} //::RAT
#endif