#include using std::cout; using std::cerr; using std::cin; using std::endl; #include #include "TObject.h" #include "TVector3.h" #include "TRandom.h" #include "Math/Vector3D.h" using ROOT::Math::XYZVector; #include "Math/Point3D.h" using ROOT::Math::XYZPoint; #include "Math/Transform3D.h" using ROOT::Math::Transform3D; #include "Math/RotationX.h" using ROOT::Math::RotationX; #include "Math/RotationY.h" using ROOT::Math::RotationY; #include "Math/RotationZ.h" using ROOT::Math::RotationZ; #include "Math/Rotation3D.h" using ROOT::Math::Rotation3D; #include "PndDrcPhoton.h" #include "PndDrcOptReflAbs.h" #include "PndDrcOptReflGray.h" //---------------------------------------------------------------------- PndDrcOptReflGray* PndDrcOptReflGray::clone() const { return new PndDrcOptReflGray(*this); } //---------------------------------------------------------------------- const Drc::Reflectivity PndDrcOptReflGray::reflectivity(PndDrcPhoton& ph, XYZVector normal) const { double lambda = ph.wavelength(); double ran = m_ran.Uniform(0.0,1.0); if (ran>m_reflProb || lambda<400) { return Drc::ReflTransmitted; } else { return Drc::ReflReflected; } }