#include using std::cout; using std::cerr; using std::cin; using std::endl; #include using std::valarray; #include using std::fstream; #include using std::string; #include using std::list; #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 "PndDrcSurfAbs.h" #include "PndDrcOptMatAbs.h" #include "PndDrcOptDev.h" //---------------------------------------------------------------------- PndDrcOptDev::PndDrcOptDev() { m_copyNumber = 0; m_name = "unnamed PndDrcOptDev"; m_photonTrace = false; m_verbosity = 0; } //---------------------------------------------------------------------- void PndDrcOptDev::copy(const PndDrcOptDev& d) { m_copyNumber = d.m_copyNumber; m_name = d.m_name; m_verbosity = d.m_verbosity; m_photonTrace = d.m_photonTrace; m_photonTraceStream = d.m_photonTraceStream; m_listSurf.clear(); list::const_iterator isurf; for(isurf=d.m_listSurf.begin(); isurf != d.m_listSurf.end(); ++isurf) { const PndDrcSurfAbs* tmp = (*isurf); PndDrcSurfAbs* tmp1 = tmp->clone(); m_listSurf.push_back(tmp1); } } //---------------------------------------------------------------------- PndDrcOptDev::PndDrcOptDev(const PndDrcOptDev& d) { if (d.m_verbosity>=1) cout<<" PndDrcOptDev::PndDrcOptDev" <<"(const PndDrcOptDev&) name,copy: " <=1) cout<<" PndDrcOptDev::operator=" <<"(const PndDrcOptDev&) name,copy: " <::const_iterator isurf; for(isurf=m_listSurf.begin(); isurf != m_listSurf.end(); ++isurf) { delete (*isurf); } } //---------------------------------------------------------------------- void PndDrcOptDev::setCopyNumber(int i) { m_copyNumber = i; list::const_iterator isurf; for(isurf=m_listSurf.begin(); isurf != m_listSurf.end(); ++isurf) { (*isurf)->setCopyNumber(i); } } //---------------------------------------------------------------------- void PndDrcOptDev::addSurface(const PndDrcSurfAbs& surf) { if (m_verbosity>=1) cout<<" PndDrcOptDev::addSurface to "<::const_iterator isurf; for(isurf=m_listSurf.begin(); isurf != m_listSurf.end(); ++isurf) { (*isurf)->print(stream); } // prepare tracing of photons m_photonTrace = true; m_photonTraceStream = &stream; } //---------------------------------------------------------------------- PndDrcOptMatAbs& PndDrcOptDev::optMaterial() const { static PndDrcOptMatAbs* dummy = 0; // //cerr<<" *** PndDrcOptDev::optMaterial: This function must be overloaded when\n"; //cerr<<" using volumes with refraction. Abort.\n"; //exit(EXIT_FAILURE); return *dummy; } //---------------------------------------------------------------------- void PndDrcOptDev::addTransform(const Transform3D& trans) { list::const_iterator i; for (i=m_listSurf.begin(); i != m_listSurf.end(); ++i) { const_cast(*i)->addTransform(trans); } } //---------------------------------------------------------------------- void PndDrcOptDev::print() { list::const_iterator i; for (i=m_listSurf.begin(); i != m_listSurf.end(); ++i) { cout<<"\t\t\t"<name()<::const_iterator i; for (i=m_listSurf.begin(); i != m_listSurf.end(); ++i) { (*i)->setPrintColor(col); } }