98 lines
4.2 KiB
Plaintext
98 lines
4.2 KiB
Plaintext
//
|
|
// ********************************************************************
|
|
// * 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$
|
|
// GEANT4 tag $Name$
|
|
//
|
|
//------------ LEMuSRMSC physics process ---------------------------
|
|
// by Laszlo Urban, March 2001
|
|
//
|
|
// Modified:
|
|
//
|
|
// 18-05-01 V.Ivanchenko Clean up against Linux ANSI compilation
|
|
// 23-08-01 new angle and z distribution,energy dependence reduced,
|
|
// Store,Retrieve methods commented out temporarily, L.Urban
|
|
// 27-08-01 bugfix in AlongStepDoIt, L.Urban
|
|
// 28-08-01 GetContinuousStepLimit and AlongStepDoIt moved to .cc file (mma)
|
|
// 11-09-01 G4MultipleScatteringx put as default: G4MultipleScattering (mma)
|
|
// 15-01-03 Migrade to cut per region (V.Ivanchenko)
|
|
// 18-04-03 Change signature of GetTransportMeanFreePath (V.Ivanchenko)
|
|
// 16-06-03: ShortLived are not applicable any more (V.Ivanchenko)
|
|
// 08-08-03 This class is frozen at the release 5.2 (V.Ivanchenko)
|
|
//
|
|
//------------------------------------------------------------------------------
|
|
|
|
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
|
|
|
inline
|
|
G4bool LEMuSRMSC::IsApplicable(const G4ParticleDefinition& particle)
|
|
{
|
|
return(particle.GetPDGCharge() != 0. && !particle.IsShortLived());
|
|
}
|
|
|
|
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
|
|
|
inline G4double LEMuSRMSC::AlongStepGetPhysicalInteractionLength(
|
|
const G4Track& track,
|
|
G4double previousStepSize,
|
|
G4double currentMinimumStep,
|
|
G4double& currentSafety,
|
|
G4GPILSelection* selection)
|
|
{
|
|
// get Step limit proposed by the process
|
|
G4double steplength = GetContinuousStepLimit(track,previousStepSize,
|
|
currentMinimumStep,currentSafety);
|
|
// set return value for G4GPILSelection
|
|
*selection = valueGPILSelectionMSC;
|
|
return steplength;
|
|
}
|
|
|
|
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
|
|
|
inline G4double LEMuSRMSC::GetMeanFreePath(
|
|
const G4Track&,
|
|
G4double,
|
|
G4ForceCondition* condition)
|
|
|
|
// it does not limit the Step size , but it sets condition to
|
|
// Forced , because the PostStepDoIt always has to be called
|
|
|
|
{
|
|
*condition = Forced;
|
|
return DBL_MAX;
|
|
}
|
|
|
|
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
|
|
|
inline
|
|
G4double LEMuSRMSC::GetTransportMeanFreePath(G4double KineticEnergy,
|
|
const G4MaterialCutsCouple* couple)
|
|
{
|
|
G4bool isOut;
|
|
|
|
return (*theTransportMeanFreePathTable)
|
|
(couple->GetIndex())->GetValue(KineticEnergy,isOut);
|
|
}
|
|
|
|
|
|
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|