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 #include "G4PSEnergyDeposit3D.hh"
00031
00033
00034
00035
00036
00038
00039 G4PSEnergyDeposit3D::G4PSEnergyDeposit3D(G4String name,
00040 G4int ni, G4int nj, G4int nk,
00041 G4int depi, G4int depj, G4int depk)
00042 :G4PSEnergyDeposit(name),
00043 fDepthi(depi),fDepthj(depj),fDepthk(depk)
00044 {
00045 fNi=ni;
00046 fNj=nj;
00047 fNk=nk;
00048 }
00049
00050 G4PSEnergyDeposit3D::G4PSEnergyDeposit3D(G4String name, const G4String& unit,
00051 G4int ni, G4int nj, G4int nk,
00052 G4int depi, G4int depj, G4int depk)
00053 :G4PSEnergyDeposit(name),
00054 fDepthi(depi),fDepthj(depj),fDepthk(depk)
00055 {
00056 fNi=ni;
00057 fNj=nj;
00058 fNk=nk;
00059 SetUnit(unit);
00060 }
00061
00062 G4PSEnergyDeposit3D::~G4PSEnergyDeposit3D()
00063 {;}
00064
00065 G4int G4PSEnergyDeposit3D::GetIndex(G4Step* aStep)
00066 {
00067 const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable();
00068 G4int i = touchable->GetReplicaNumber(fDepthi);
00069 G4int j = touchable->GetReplicaNumber(fDepthj);
00070 G4int k = touchable->GetReplicaNumber(fDepthk);
00071
00072 if(i<0||j<0||k<0)
00073 {
00074 G4ExceptionDescription ED;
00075 ED << "GetReplicaNumber is negative" << G4endl
00076 << "touchable->GetReplicaNumber(fDepthi) returns i,j,k = "
00077 << i << "," << j << "," << k << " for volume "
00078 << touchable->GetVolume(fDepthi)->GetName() << ","
00079 << touchable->GetVolume(fDepthj)->GetName() << ","
00080 << touchable->GetVolume(fDepthk)->GetName() << G4endl;
00081 G4Exception("G4PSEnergyDeposit3D::GetIndex","DetPS0006",JustWarning,ED);
00082 }
00083
00084 return i*fNj*fNk+j*fNk+k;
00085 }