43 #include "G4ParticleChange.hh"    54     G4VITRestDiscreteProcess(processName, type)
    57   SetProcessSubType(59); 
    58   enableAlongStepDoIt = 
false;
    59   enablePostStepDoIt = 
true;
    60   enableAtRestDoIt = 
true;
    67     G4cout << 
"G4MolecularDissociationProcess constructor " << 
"  Name:"    72   pParticleChange = &aParticleChange;
    75   fProposesTimeStep = 
true;
    99     G4VITRestDiscreteProcess(right)
   117       G4cout << 
"G4MolecularDissociation::IsApplicable(";
   136   return (output > 0 ? output : 0);
   147   aParticleChange.Initialize(track);
   159     const vector<const G4MolecularDissociationChannel*>* DecayVector =
   166       exceptionDescription << 
"No decay channel was found for the molecule : "   169                   "G4DNAMolecularDissociation::NoDecayChannel",
   171                   exceptionDescription);
   172       return &aParticleChange;
   175     G4int DecayVectorSize = DecayVector->size();
   184       decayChannel = (*DecayVector)[i];
   185       if(RdmValue < decayChannel->GetProbability()) 
break;
   189     while(i < DecayVectorSize);
   204       aParticleChange.ProposeLocalEnergyDeposit(decayChannel->
GetEnergy());
   213       vector<G4ThreeVector> ProductsDisplacement(nbProducts);
   216       DecayDisplacementMap::iterator it =
   223         theMotherMoleculeDisplacement =
   229         errMsg << 
"No G4MolecularDecayProcess::theDecayDisplacementMap["   230                << theMotherMolecule->
GetName() + 
"]";
   232                     "DNAMolecularDecay001",
   237       aParticleChange.SetNumberOfSecondaries(nbProducts);
   246                << 
" (trackID :" << track.GetTrackID() << 
") "   255       for(
G4int j = 0; j < nbProducts; j++)
   260             + ProductsDisplacement[j];
   261         double mag_displacement = displacement.
mag();
   262         G4ThreeVector displacement_direction = displacement / mag_displacement;
   266         navigator->CheckNextStep(track.GetPosition(),
   267                                  displacement_direction,
   271         if(prNewSafety < mag_displacement) mag_displacement = prNewSafety;
   290                                 track.GetPosition() + displacement_direction
   293         secondary->SetTrackStatus(fAlive);
   301         aParticleChange.G4VParticleChange::AddSecondary(secondary);
   327   aParticleChange.ProposeTrackStatus(fStopAndKill);
   329   return &aParticleChange;
 
virtual G4double GetMeanLifeTime(const G4Track &, G4ForceCondition *)
 
G4double GetEnergy() const
 
G4VMolecularDecayDisplacer * GetDecayDisplacer(const G4ParticleDefinition *)
 
std::ostringstream G4ExceptionDescription
 
G4ITNavigator * GetNavigatorForTracking() const
 
const G4MolecularDissociationTable * GetDecayTable() const
 
const G4String & GetParticleType() const
 
G4MolecularConfiguration * GetProduct(int) const
 
const G4MoleculeDefinition * GetDefinition() const
 
const std::vector< const G4MolecularDissociationChannel * > * GetDecayChannel() const
 
const G4String & GetParticleName() const
 
static G4ITTransportationManager * GetTransportationManager()
 
G4GLOB_DLL std::ostream G4cout
 
const G4String & GetName() const
 
G4double GetDecayTime() const
 
virtual G4VParticleChange * DecayIt(const G4Track &, const G4Step &)
 
virtual std::vector< G4ThreeVector > GetProductsDisplacement(const G4MolecularDissociationChannel *) const =0
 
virtual ~G4DNAMolecularDissociation()
 
G4Molecule * GetMolecule(const G4Track &track)
 
G4double GetProbability() const
 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
 
G4Track * BuildTrack(G4double globalTime, const G4ThreeVector &Position)
 
DecayDisplacementMap fDecayDisplacementMap
 
G4DNAMolecularDissociation()
 
const G4String & GetName() const
 
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
 
void SetDecayDisplacer(const G4ParticleDefinition *, G4VMolecularDecayDisplacer *)
 
virtual G4ThreeVector GetMotherMoleculeDisplacement(const G4MolecularDissociationChannel *) const =0
 
G4int GetNbProducts() const
 
virtual G4bool IsApplicable(const G4ParticleDefinition &)