59 #ifdef VERBOSE_ENERSPLIT 
   75   if( aStep == 0 ) 
return FALSE; 
 
   82   G4double kinEnergyPre = kinEnergyPreOrig;
 
   87   for( ii = 0; ii < rnsl.size(); ii++ ){
 
   90 #ifdef VERBOSE_ENERSPLIT 
   91     if(verbose) 
G4cout  << 
"G4EnergySplitter::SplitEnergyInVolumes"<< ii << 
" RN: iter1 step length geom " << sl << 
G4endl;
 
   95 #ifdef VERBOSE_ENERSPLIT 
   97     G4cout << 
"G4EnergySplitter RN:  step length geom TOTAL " << slSum 
 
   98            << 
" true TOTAL " << stepLength 
 
   99            << 
" ratio " << stepLength/slSum 
 
  102            << 
" Number of geom steps " << rnsl.size() << 
G4endl;
 
  106     for( ii = 0; ii < rnsl.size(); ii++ ){
 
  108       G4double edepStep = edep * sl/slSum; 
 
  109 #ifdef VERBOSE_ENERSPLIT 
  110       if(verbose) 
G4cout  << 
"G4EnergySplitter::SplitEnergyInVolumes"<< ii 
 
  111                           << 
" edep " << edepStep << 
G4endl;
 
  119 #ifdef VERBOSE_ENERSPLIT 
  123       for( ii = 0; ii < rnsl.size(); ii++ ){
 
  127       for( ii = 0; ii < rnsl.size(); ii++ ){
 
  128         G4cout  << 
"G4EnergySplitter::SplitEnergyInVolumes "<< ii
 
  129                 << 
" RN: iter0 corrected energy lost " << edep*rnsl[ii].second/slSum  
 
  135     G4double slRatio = stepLength/slSum;
 
  136 #ifdef VERBOSE_ENERSPLIT 
  137     if(verbose) 
G4cout << 
"G4EnergySplitter::SplitEnergyInVolumes  RN: iter 0, step ratio " << slRatio << 
G4endl;
 
  143     std::vector<G4double> stepLengths;
 
  147         for( ii = 0; ii < rnsl.size(); ii++ ){
 
  149           stepLengths.push_back( sl * slRatio );
 
  150 #ifdef VERBOSE_ENERSPLIT 
  151           if(verbose) 
G4cout  << 
"G4EnergySplitter::SplitEnergyInVolumes"<< ii << 
" RN: iter" << iiter << 
" corrected step length " << sl*slRatio << 
G4endl;
 
  155         for( ii = 0; ii < rnsl.size(); ii++ ){
 
  158           if( kinEnergyPre > 0. ) {  
 
  159             dEdx = emcalc.
GetDEDX(kinEnergyPre, part, mate);
 
  161           G4double elost = stepLengths[ii] * dEdx;
 
  163 #ifdef VERBOSE_ENERSPLIT 
  164           if(verbose) 
G4cout  << 
"G4EnergySplitter::SplitEnergyInVolumes"<< ii << 
" RN: iter1 energy lost "  << elost 
 
  165                               << 
" energy at interaction " << kinEnergyPre 
 
  166                               << 
" = stepLength " << stepLengths[ii] 
 
  167                               << 
" * dEdx " << dEdx << 
G4endl;
 
  169           kinEnergyPre -= elost;
 
  179         kinEnergyPre = kinEnergyPreOrig;
 
  180         for( ii = 0; ii < rnsl.size(); ii++ ){
 
  185 #ifdef VERBOSE_ENERSPLIT 
  186           if(verbose) 
G4cout << 
"G4EnergySplitter::SplitEnergyInVolumes" << ii 
 
  187                              << 
" RN: iter" << iiter << 
" step length geom " << stepLengths[ii] 
 
  188                              << 
" geom2true " << rnsl[ii].second / stepLengths[ii]  << 
G4endl;
 
  191           slSum += stepLengths[ii];
 
  196 #ifdef VERBOSE_ENERSPLIT 
  197         if(verbose) 
G4cout << 
"G4EnergySplitter::SplitEnergyInVolumes" << ii << 
" RN: iter" << iiter << 
" step ratio " << slRatio << 
G4endl;
 
  199         for( ii = 0; ii < rnsl.size(); ii++ ){
 
  200           stepLengths[ii] *= slratio;
 
  201 #ifdef VERBOSE_ENERSPLIT 
  202           if(verbose) 
G4cout  << 
"G4EnergySplitter::SplitEnergyInVolumes"<< ii << 
" RN: iter" << iiter << 
" corrected step length " << stepLengths[ii] << 
G4endl;
 
  209         for( ii = 0; ii < rnsl.size(); ii++ ){
 
  212           if( kinEnergyPre > 0. ) {
 
  213             dEdx = emcalc.
GetDEDX(kinEnergyPre, part, mate);
 
  215           G4double elost = stepLengths[ii] * dEdx;
 
  216 #ifdef VERBOSE_ENERSPLIT 
  217           if(verbose) 
G4cout  << 
"G4EnergySplitter::SplitEnergyInVolumes"<< ii << 
" RN: iter" << iiter << 
" energy lost " << elost 
 
  218                               << 
" energy at interaction " << kinEnergyPre 
 
  219                               << 
" = stepLength " << stepLengths[ii] 
 
  220                               << 
" * dEdx " << dEdx << 
G4endl;
 
  222           kinEnergyPre -= elost;
 
  230       G4double enerRatio = (edep/totalELost);
 
  232 #ifdef VERBOSE_ENERSPLIT 
  233       if(verbose) 
G4cout  << 
"G4EnergySplitter::SplitEnergyInVolumes"<< ii << 
" RN: iter" << iiter << 
" energy ratio " << enerRatio << 
G4endl;
 
  236 #ifdef VERBOSE_ENERSPLIT 
  241 #ifdef VERBOSE_ENERSPLIT 
  243         if(verbose) 
G4cout  << 
"G4EnergySplitter::SplitEnergyInVolumes "<< ii << 
" RN: iter" << iiter << 
" corrected energy lost " << 
theEnergies[ii] 
 
  245                             << 
" energy before interaction " << kinEnergyPreOrig-elostTot+
theEnergies[ii]
 
  246                             << 
" energy after interaction " << kinEnergyPreOrig-elostTot
 
  262   std::vector<G4VPhysicalVolume*>::iterator cite;
 
  263   for( cite = pvs->begin(); cite != pvs->end(); cite++ ) {
 
  278                 "No G4PhantomParameterisation found !");
 
  316               "Invalid stepNo, smaller than 0 or bigger or equal to number of voxels traversed",
 
  321   advance( ite, stepNo );
 
  322   voxelID = (*ite).first;
 
  331   advance( ite, stepNo );
 
  332   stepLength = (*ite).second;
 
G4ParticleDefinition * GetDefinition() const 
 
void GetStepLength(G4int stepNo, G4double &stepLength)
 
G4double GetStepLength() const 
 
const G4String & GetName() const 
 
G4Material * GetMaterial() const 
 
const std::vector< std::pair< G4int, G4double > > & GetStepLengths()
 
static G4String ConvertToString(G4bool boolVal)
 
virtual ~G4EnergySplitter()
 
G4double GetDEDX(G4double kinEnergy, const G4ParticleDefinition *, const G4Material *, const G4Region *r=0)
 
static G4PhysicalVolumeStore * GetInstance()
 
void GetFirstVoxelID(G4int &voxelID)
 
G4StepPoint * GetPreStepPoint() const 
 
G4VPVParameterisation * GetParameterisation() const 
 
G4GLOB_DLL std::ostream G4cout
 
G4PhantomParameterisation * thePhantomParam
 
void GetLastVoxelID(G4int &voxelID)
 
virtual G4int GetRegularStructureId() const =0
 
static const double second
 
void GetPhantomParam(G4bool mustExist)
 
G4double GetTotalEnergyDeposit() const 
 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
 
G4Material * GetMaterial(size_t nx, size_t ny, size_t nz) const 
 
void GetVoxelID(G4int stepNo, G4int &voxelID)
 
std::vector< G4double > theEnergies
 
virtual void GetReplicationData(EAxis &axis, G4int &nReplicas, G4double &width, G4double &offset, G4bool &consuming) const =0
 
G4double GetKineticEnergy() const 
 
G4bool IsPhantomVolume(G4VPhysicalVolume *pv)
 
static G4RegularNavigationHelper * Instance()
 
G4Track * GetTrack() const 
 
G4double GetPDGCharge() const 
 
G4int SplitEnergyInVolumes(const G4Step *aStep)
 
G4EnergyLossForExtrapolator * theElossExt