Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/adjoint/src/G4AdjointAlongStepWeightCorrection.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /processes/electromagnetic/adjoint/src/G4AdjointAlongStepWeightCorrection.cc (Version 11.3.0) and /processes/electromagnetic/adjoint/src/G4AdjointAlongStepWeightCorrection.cc (Version 8.1)


  1 //                                                  1 
  2 // *******************************************    
  3 // * License and Disclaimer                       
  4 // *                                              
  5 // * The  Geant4 software  is  copyright of th    
  6 // * the Geant4 Collaboration.  It is provided    
  7 // * conditions of the Geant4 Software License    
  8 // * LICENSE and available at  http://cern.ch/    
  9 // * include a list of copyright holders.         
 10 // *                                              
 11 // * Neither the authors of this software syst    
 12 // * institutes,nor the agencies providing fin    
 13 // * work  make  any representation or  warran    
 14 // * regarding  this  software system or assum    
 15 // * use.  Please see the license in the file     
 16 // * for the full disclaimer and the limitatio    
 17 // *                                              
 18 // * This  code  implementation is the result     
 19 // * technical work of the GEANT4 collaboratio    
 20 // * By using,  copying,  modifying or  distri    
 21 // * any work based  on the software)  you  ag    
 22 // * use  in  resulting  scientific  publicati    
 23 // * acceptance of all terms of the Geant4 Sof    
 24 // *******************************************    
 25 //                                                
 26                                                   
 27 #include "G4AdjointAlongStepWeightCorrection.h    
 28                                                   
 29 #include "G4AdjointCSManager.hh"                  
 30 #include "G4ParticleChange.hh"                    
 31 #include "G4ParticleDefinition.hh"                
 32 #include "G4Step.hh"                              
 33 #include "G4VParticleChange.hh"                   
 34                                                   
 35 //////////////////////////////////////////////    
 36 G4AdjointAlongStepWeightCorrection::G4AdjointA    
 37   const G4String& name, G4ProcessType type)       
 38   : G4VContinuousProcess(name, type)              
 39 {                                                 
 40   fParticleChange = new G4ParticleChange();       
 41   fCSManager      = G4AdjointCSManager::GetAdj    
 42 }                                                 
 43                                                   
 44 //////////////////////////////////////////////    
 45 G4AdjointAlongStepWeightCorrection::~G4Adjoint    
 46 {                                                 
 47   delete fParticleChange;                         
 48 }                                                 
 49                                                   
 50 //////////////////////////////////////////////    
 51 void G4AdjointAlongStepWeightCorrection::Proce    
 52   std::ostream& out) const                        
 53 {                                                 
 54   out <<                                          
 55   "Continuous processes act on adjoint particl    
 56   "weight during the adjoint reverse tracking.    
 57   "the adjoint cross sections are not scaled s    
 58   "section matches the total forward cross sec    
 59   "the total adjoint cross section is equal to    
 60   "is used and therefore this along step weigh    
 61   "in some cases (some energy ranges) the tota    
 62   "total adjoint cross section can be zero. In    
 63   "correction is needed and is given by exp(-(    
 64   "\n";                                           
 65 }                                                 
 66                                                   
 67 //////////////////////////////////////////////    
 68 G4VParticleChange* G4AdjointAlongStepWeightCor    
 69   const G4Track& track, const G4Step& step)       
 70 {                                                 
 71   fParticleChange->Initialize(track);             
 72                                                   
 73   // Get the actual (true) Step length            
 74   G4double length = step.GetStepLength();         
 75                                                   
 76   G4double Tkin = step.GetPostStepPoint()->Get    
 77   G4ParticleDefinition* thePartDef = const_cas    
 78     track.GetDynamicParticle()->GetDefinition(    
 79   G4double weight_correction = fCSManager->Get    
 80     thePartDef, fPreStepKinEnergy, Tkin, fCurr    
 81                                                   
 82   // Caution!!!                                   
 83   // It is important to select the weight of t    
 84   // weight and not the weight of the track, a    
 85   // changed after having applied all the alon    
 86   G4double new_weight =                           
 87     weight_correction * step.GetPostStepPoint(    
 88                                                   
 89   // The following test check for zero weight.    
 90   // This happens after weight correction of g    
 91   // When the new weight is 0 it will be later    
 92   // Therefore we put a lower limit of 1.e-300    
 93   if(new_weight == 0. || (new_weight <= 0. &&     
 94   {                                               
 95     new_weight = 1.e-300;                         
 96   }                                               
 97                                                   
 98   fParticleChange->SetParentWeightByProcess(fa    
 99   fParticleChange->SetSecondaryWeightByProcess    
100   fParticleChange->ProposeParentWeight(new_wei    
101                                                   
102   return fParticleChange;                         
103 }                                                 
104                                                   
105 //////////////////////////////////////////////    
106 G4double G4AdjointAlongStepWeightCorrection::G    
107   const G4Track& track, G4double, G4double, G4    
108 {                                                 
109   DefineMaterial(track.GetMaterialCutsCouple()    
110   fPreStepKinEnergy = track.GetKineticEnergy()    
111   return DBL_MAX;                                 
112 }                                                 
113