//////////////////////////////////////////////////////////////////////////////// /// \class RAT::LP::LightPathStraightScintWater /// /// \brief LightPath fitter using straight lines through water and scintillator. /// only. Esssentially assumes infinitesimally thin AV. /// /// Code optimised for for specific situation of fitting straight lines in /// partial fill. Public function GetPath can be called to bypass using Light /// Paths and Point3Ds to give faster results. //////////////////////////////////////////////////////////////////////////////// #ifndef __RAT_LP_LightPathStraightScintWater__ #define __RAT_LP_LightPathStraightScintWater__ #include #include #include #include namespace RAT { namespace LP { class LightPathStraightScintWater : public LightPathFitter { public: /// Initialize geometry static void BeginOfRun(); static std::string Name() { return std::string("LightPathStraightScintWater"); } LightPathStraightScintWater() { } virtual LightPath& Fit(LightPath& startPath) const; virtual Double_t GetSolidAngle(const LightPath& lightPath, const TVector3& pmtNorm, UInt_t nVal, Double_t& cosThetaAvg) const; static void GetPath(TVector3 fPMTpos, TVector3 fVertex, double &distInWater, double &distInScint); private: static Double_t fFillLevel; static std::vector fAV_offset; static Double_t fAV_offset_z; static TVector3 fFillLevelCentre;//center of fill level static Double_t fAVRadiusOuter; // outer radius, 6060 mm static Double_t fAVRadius; // inner radius, 6005 mm static Double_t fNeckRadiusOuter; // outer radius of neck static Double_t fNeckRadius; // inner radius of neck static Double_t fBoundary; static Double_t fPSUPRadius; static Double_t fZneckLo; // bottom of the neck in z position static Double_t fPMTRadius; static std::vector pStart; static Double_t distInUpperTarget; static Double_t distInWater; static RAT::DU::Point3D startPoint; static RAT::DU::Point3D endPoint; static RAT::DU::Point3D interPoint; static TVector3 startVec; static TVector3 endVec; static TVector3 dirVec; }; // class LightPathStraightScintWater } // namespace LP } // namespace RAT #endif