コード例 #1
0
ファイル: Ellipsoid_.cpp プロジェクト: dilsonjd/cmssw
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());
}
コード例 #2
0
ファイル: testVolumes.cpp プロジェクト: Andrej-CMS/cmssw
//
// 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;
}