00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 #include "G4PSDoseDepositForCylinder3D.hh"
00032 #include "G4PhysicalConstants.hh"
00033 
00035 
00036 
00037 
00038 
00039 
00040 
00041 
00043 
00044 G4PSDoseDepositForCylinder3D::G4PSDoseDepositForCylinder3D(G4String name,
00045                                      G4int ni, G4int nj, G4int nk,
00046                                      G4int di, G4int dj, G4int dk)
00047   :G4PSDoseDeposit3D(name,ni,nj,nk,di,dj,dk)
00048 {
00049   nSegment[0] = nSegment[1] = nSegment[2] = 0;
00050 }
00051 
00052 G4PSDoseDepositForCylinder3D::G4PSDoseDepositForCylinder3D(G4String name,
00053                                      const G4String& unit,
00054                                      G4int ni, G4int nj, G4int nk,
00055                                      G4int di, G4int dj, G4int dk)
00056   :G4PSDoseDeposit3D(name,unit,ni,nj,nk,di,dj,dk)
00057 {
00058   nSegment[0] = nSegment[1] = nSegment[2] = 0;
00059 }
00060 
00061 G4PSDoseDepositForCylinder3D::~G4PSDoseDepositForCylinder3D()
00062 {;}
00063 
00064 void G4PSDoseDepositForCylinder3D::SetCylinderSize(G4double dr, G4double dz){
00065   cylinderSize.setX(dz);    
00066   cylinderSize.setY(twopi); 
00067   cylinderSize.setZ(dr);    
00068 }
00069 void G4PSDoseDepositForCylinder3D::SetNumberOfSegments(G4int nSeg[3]){
00070   nSegment[0] = nSeg[0];  
00071   nSegment[1] = nSeg[1];  
00072   nSegment[2] = nSeg[2];  
00073 }
00074 G4double G4PSDoseDepositForCylinder3D::ComputeVolume(G4Step*, G4int idx){
00075   G4double r0 = (cylinderSize[2]/nSegment[2])*(idx);
00076   G4double r1 = (cylinderSize[2]/nSegment[2])*(idx+1);
00077   G4double dRArea = (r1*r1-r0*r0)*pi;
00078 
00079   
00080   G4double fullz      = cylinderSize[0]/nSegment[0]*2.;  
00081   G4double phiRatio  = 1./nSegment[1];
00082   G4double v = dRArea*fullz*phiRatio;
00083 
00084   return v;
00085 }