////////////////////////////////////////////////////////////////////////
/// \class RAT::PDFs::SimpleTiming
///
/// \brief A simple PDF that uses the scintillator emission time profile
///
/// \author Phil G Jones
/// \author Matt Mottram < m.mottram@qmul.ac.uk> -- contact person
///
/// REVISION HISTORY:\n
/// 26/04/2011 : P G Jones - New file \n
/// 2019/06/16 : Logan Lebanowski - Handle outlier positions
///
/// \details The PDF retrieves the scintillator emission time profile. The
/// proposed vertex to PMT straight line time is calculated and
/// taken away from the hit time. This time residual is then compared
/// against the emission time profile to give the probability.
///
////////////////////////////////////////////////////////////////////////
#ifndef __RAT_PDF_SimpleTiming_
#define __RAT_PDF_SimpleTiming_
#include
#include
#include
class G4PhysicsOrderedFreeVector;
namespace RAT
{
class FitterPMT;
namespace DS
{
class FitVertex;
}
namespace PDFs
{
class SimpleTiming : 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( "simpleTiming" ); }
/// Initialise the scintTiming PDF
void Initialise( const std::string& param );
void BeginOfRun( DS::Run& run );
void EndOfRun( DS::Run& ) { }
protected:
std::string fIndex; ///< Optional database index
G4PhysicsOrderedFreeVector* fProbability; ///< Scintillator emission time
DU::TimeResidualCalculator fTRCalc; ///< Time residual calculator for a given run
size_t fPSUPSystemId; // coordinate system id for Point3D
};
} //::PDFs
} //::RAT
#endif