////////////////////////////////////////////////////////////////////////
/// \class RAT::PDFs::PartialET1D
///
/// \brief   Effective time 1d pdf
///
/// \author name Richie Bonventre <rbonv@hep.upenn.edu> -- contact person
///
/// REVISION HISTORY:\n
///     15/07/2011 : R Bonventre - New file \n
///
/// \details Returns probabilities for a 1d pdf using the effective velocity
///         transit time routine. Uses same pdf as ET1D, but calculates
///         transit time using partial fill paths
///
////////////////////////////////////////////////////////////////////////

#ifndef __RAT_PDF_PartialET1D__
#define __RAT_PDF_PartialET1D__

#include <RAT/PDF.hh>
#include <RAT/DU/LightPathCalculator.hh>

#include <string>

class G4PhysicsOrderedFreeVector;

namespace RAT
{

namespace DS
{
  class FitVertex;
}

namespace PDFs
{

class PartialET1D : 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( "partialET1D" ); }

  /// 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; ///< PDF in a convenient interpolating structure
  DU::LightPathCalculator fLightPath; ///< Light path calculator for a given run
};

} //::PDFs

} //::RAT

#endif