//////////////////////////////////////////////////////////////////////////////// /// \class RAT::LP::LightPathStraightFitter /// /// \brief LightPath fitter using a simple straight line. /// /// The geometry assumed here is that the AV is a sphere centred on a /// notional origin. Since it uses Point3D, however, this shouldn't matter. //////////////////////////////////////////////////////////////////////////////// #ifndef __RAT_LP_LightPathStraightFitter__ #define __RAT_LP_LightPathStraightFitter__ #include #include #include #include namespace RAT { namespace LP { class LightPathStraightFitter : public LightPathFitter { public: /// Initialize geometry static void BeginOfRun(); /// geometry static Double_t GetNeckInnerRadius() { return fNeckInnerRadius; } static Double_t GetNeckOuterRadius() { return fNeckOuterRadius; } static Double_t GetAVInnerRadius() { return fAVInnerRadius; } static Double_t GetAVOuterRadius() { return fAVOuterRadius; } static Double_t GetPMTRadius() { return fPMTRadius; } static Double_t GetFillZ() { return fFillZ; } static std::string Name() { return std::string("LightPathStraightFitter"); } LightPathStraightFitter() { } virtual LightPath& Fit(LightPath& startPath) const; virtual Double_t GetSolidAngle(const LightPath& lightPath, const TVector3& pmtNorm, UInt_t nVal, Double_t& cosThetaAvg) const; private: static Double_t fNeckInnerRadius; static Double_t fNeckOuterRadius; static Double_t fAVInnerRadius; static Double_t fAVOuterRadius; static Double_t fPMTRadius; static Double_t fFillZ; static size_t fAVSystemId; static LightPath::RegionType GetRegionType(const RAT::DU::Point3D& point); static void Insert(LightPath& path, std::vector& ts, const RAT::DU::Point3D& p, Double_t t, LightPath::RegionType rtype); }; // class LightPathStraightFitter } // namespace LP } // namespace RAT #endif