""" Physical Volume Defines a material medium + Shape """ from Material import * from Shapes import * class PhysicalVolume: def __init__(self,name, material,shape): """ Defines a physical volume """ self.name=name self.material = material self.shape=shape def Volume(self): return self.shape.V() def Surface(self): return self.shape.S() def Mass(self): return self.shape.V()*self.material.rho def Activity(self,t): return self.Surface()*self.material.A(t) def Angel(): Lf=130*cm Rf=53*cm xeShape = Cylinder(Rf,Lf) xeMat = Material('GXe',15) xe = PhysicalVolume("XenonVolume",xeMat,xeShape) Rbuff = 3*cm Zbuff = 8*cm print """ Angel fiducial Radius = %7.2f cm Angel fiducial Length = %7.2f cm """%(Rf/cm,Lf/cm) LbuffShape = CylinderShell(Rf,Rf+Rbuff,Lf+Zbuff) ZbuffShape = FlatPlate(Rf+Rbuff,Zbuff) buffMat = Material('GXe',15) xeLbuff = PhysicalVolume("XenonLBuffer",buffMat,LbuffShape) xeZbuff = PhysicalVolume("XenonZBuffer",buffMat,ZbuffShape) print """ Angel fiducial Volume = %7.2f m3 Angel fiducial mass = %7.2f kg """%(xe.Volume()/m3,xe.Mass()/kg) print """ Angel radial buffer radius = %7.2f cm (E/P ~ 2) Angel Z buffer radius = %7.2f cm (E/P~1) """%(Rbuff/cm,Zbuff/cm) print """ Angel long buffer Volume = %7.2f m3 Angel long buffer mass = %7.2f kg """%(xeLbuff.Volume()/m3,xeLbuff.Mass()/kg) print """ Angel z buffer Volume = %7.2f m3 Angel z buffer mass = %7.2f kg """%(xeZbuff.Volume()/m3,xeZbuff.Mass()/kg) if __name__ == '__main__': Angel()