📄 mt01minekinecuts.cc
字号:
//// ********************************************************************// * DISCLAIMER *// * *// * The following disclaimer summarizes all the specific disclaimers *// * of contributors to this software. The specific disclaimers,which *// * govern, are listed with their locations in: *// * http://cern.ch/geant4/license *// * *// * Neither the authors of this software system, nor their employing *// * institutes,nor the agencies providing financial support for this *// * work make any representation or warranty, express or implied, *// * regarding this software system or assume any liability for its *// * use. *// * *// * This code implementation is the intellectual property of the *// * GEANT4 collaboration. *// * By copying, distributing or modifying the Program (or any work *// * based on the Program) you indicate your acceptance of this *// * statement, and all its terms. *// ********************************************************************////// $Id: mt02MinEkineCuts.cc,v 1.4 2003/12/02 16:59:48 gcosmo Exp $// GEANT4 tag $Name: geant4-07-00-patch-01 $//// // --------------------------------------------------------------// GEANT 4 class implementation file //// History: first implementation, based on object model of// 2nd December 1995, G.Cosmo// --------------------------------------------------------------// 15 April 1998 M.Maire// --------------------------------------------------------------#include "mt01MinEkineCuts.hh"#include "G4Step.hh"#include "G4UserLimits.hh"#include "G4VParticleChange.hh"#include "G4EnergyLossTables.hh"mt01MinEkineCuts::mt01MinEkineCuts(const G4String& aName) : mt01SpecialCuts(aName){ if (verboseLevel>1) { G4cout << GetProcessName() << " is created "<< G4endl; } SetProcessType(fUserDefined);}mt01MinEkineCuts::~mt01MinEkineCuts(){}mt01MinEkineCuts::mt01MinEkineCuts(mt01MinEkineCuts&) : mt01SpecialCuts(){}G4double mt01MinEkineCuts::PostStepGetPhysicalInteractionLength( const G4Track& aTrack, G4double , G4ForceCondition* condition ){ // condition is set to "Not Forced" *condition = NotForced; G4double proposedStep = DBL_MAX; // get the pointer to UserLimits G4UserLimits* pUserLimits = aTrack.GetVolume()->GetLogicalVolume()->GetUserLimits(); const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle(); G4ParticleDefinition* aParticleDef = aTrack.GetDefinition(); if (pUserLimits && aParticleDef->GetPDGCharge() != 0.0) { //min kinetic energy G4double temp = DBL_MAX; G4double eKine = aParticle->GetKineticEnergy(); const G4MaterialCutsCouple* couple = aTrack.GetMaterialCutsCouple(); G4double eMin = pUserLimits->GetUserMinEkine(aTrack); G4double rangeNow = DBL_MAX; rangeNow = G4EnergyLossTables::GetRange(aParticleDef,eKine,couple); if (eKine < eMin ) { proposedStep = 0.; } else { // charged particles only G4double rangeMin = G4EnergyLossTables::GetRange(aParticleDef,eMin,couple); temp = rangeNow - rangeMin; if (proposedStep > temp) proposedStep = temp; } } return proposedStep;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -