void testEllipsoid::matched_g4_and_dd( void ) { double xSemiAxis = 3.0*cm; double ySemiAxis = 2.0*cm; double zSemiAxis = 5.0*cm; double zBottomCut = 0.0*cm; double zTopCut = 0.0*cm; string name( "fred1" ); G4Ellipsoid g4( name, xSemiAxis, ySemiAxis, zSemiAxis, zBottomCut, zTopCut ); DDI::Ellipsoid dd( xSemiAxis, ySemiAxis, zSemiAxis, zBottomCut, zTopCut ); DDEllipsoid dds = DDSolidFactory::ellipsoid( name, xSemiAxis, ySemiAxis, zSemiAxis, zBottomCut, zTopCut ); cout << endl; dd.stream( cout ); cout << endl; double g4v = g4.GetCubicVolume()/cm3; double ddv = dd.volume()/cm3; double ddsv = dds.volume()/cm3; cout << "\tg4 volume = " << g4v <<" cm3" << endl; cout << "\tdd volume = " << ddv << " cm3" << endl; cout << "\tDD Information: " << dds << " vol=" << ddsv << " cm3" << endl; CPPUNIT_ASSERT( abs(g4v - ddv) < numeric_limits<float>::epsilon()); CPPUNIT_ASSERT( abs(g4v - ddsv) < numeric_limits<float>::epsilon()); }
// // 13. General Ellipsoid: // // G4Ellipsoid(const G4String& pName, // G4double pxSemiAxis, // G4double pySemiAxis, // G4double pzSemiAxis, // G4double pzBottomCut=0, // G4double pzTopCut=0) void doEllipsoid( const std::string& name, double xSemiAxis, double ySemiAxis, double zSemiAxis, double zBottomCut, double zTopCut ) { G4Ellipsoid g4(name,xSemiAxis,ySemiAxis,zSemiAxis,zBottomCut, zTopCut); DDI::Ellipsoid dd(xSemiAxis,ySemiAxis,zSemiAxis,zBottomCut, zTopCut); DDEllipsoid dde = DDSolidFactory::ellipsoid(name, xSemiAxis, ySemiAxis, zSemiAxis, zBottomCut, zTopCut); dd.stream(std::cout); std::cout << std::endl; std::cout << "\tg4 volume = " << g4.GetCubicVolume()/cm3 <<" cm3" << std::endl; std::cout << "\tdd volume = " << dd.volume()/cm3 << " cm3"<< std::endl; std::cout << "\tDD Information: " << dde << " vol= " << dde.volume() << std::endl; }