Import Geant4 9.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 15:37:50 +02:00
parent a8e9364cea
commit 96c8bcd0af
6923 changed files with 198390 additions and 41849 deletions
+7 -1
View File
@@ -1,4 +1,4 @@
# $Id: GNUmakefile,v 1.38 2007/05/31 08:12:53 gcosmo Exp $
# $Id: GNUmakefile,v 1.43 2007/11/19 13:16:47 gcosmo Exp $
# ----------------------------------------------------------------------
# GNUmakefile for processes library, Gabriele Cosmo 27-Jun-1998
# ----------------------------------------------------------------------
@@ -64,6 +64,7 @@ SUBDIRS += hadronic/models/de_excitation/util
SUBDIRS += hadronic/models/em_dissociation
SUBDIRS += hadronic/models/high_energy
SUBDIRS += hadronic/models/im_r_matrix
SUBDIRS += hadronic/models/incl
SUBDIRS += hadronic/models/isotope_production
SUBDIRS += hadronic/models/leading_particle
SUBDIRS += hadronic/models/lll_fission
@@ -76,7 +77,9 @@ SUBDIRS += hadronic/models/parton_string/management
SUBDIRS += hadronic/models/parton_string/qgsm
SUBDIRS += hadronic/models/photolepton_hadron/muon_nuclear
SUBDIRS += hadronic/models/pre_equilibrium/exciton_model
SUBDIRS += hadronic/models/qmd
SUBDIRS += hadronic/models/radioactive_decay
SUBDIRS += hadronic/models/rpg
SUBDIRS += hadronic/models/theo_high_energy
SUBDIRS += hadronic/models/util
SUBDIRS += hadronic/processes
@@ -96,6 +99,8 @@ SUBLIBS += G4had_im_r_matrix
SUBLIBS += G4hadronic_iso
SUBLIBS += G4hadronic_leading_particle
SUBLIBS += G4hadronic_LE
SUBLIBS += G4hadronic_RPG
SUBLIBS += G4hadronic_qmd
SUBLIBS += G4had_lll_fis
SUBLIBS += G4had_mod_man
SUBLIBS += G4had_neu_hp
@@ -105,6 +110,7 @@ SUBLIBS += G4had_mod_util
SUBLIBS += G4hadronic_bert_cascade
SUBLIBS += G4hadronic_hetcpp_evaporation
SUBLIBS += G4hadronic_hetcpp_utils
SUBLIBS += G4hadronic_incl_cascade
SUBLIBS += G4hadronic_body_ci
SUBLIBS += G4hadronic_interface_ci
SUBLIBS += G4hadronic_deex_evaporation
+6 -1
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.15 2007/06/25 06:59:17 ahoward Exp $
$Id: History,v 1.16 2007/10/31 18:05:44 ahoward Exp $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,11 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
October 31st, 2007 Alex Howard (procbiasing-V09-00-00)
- Fixed G4ProcessPlacer.cc to put biasing process second for AlongStep
as well as PostStep - a bug which would feature for charged particles.
- Added print out for AlongStep process vector to avoid confusion
June 22nd, 2007 Alex Howard (procbiasing-V08-03-08)
- Added missing member function to G4VSampler base class
@@ -25,7 +25,7 @@
//
//
// $Id: G4GCellFinder.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4ParallelGCellFinder
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometrySampler.hh,v 1.9 2007/06/01 09:52:23 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4GeometrySampler
@@ -25,7 +25,7 @@
//
//
// $Id: G4ImportanceConfigurator.hh,v 1.3 2007/06/01 09:16:33 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4ImportanceConfigurator
@@ -25,7 +25,7 @@
//
//
// $Id: G4ImportanceProcess.hh,v 1.3 2007/06/01 09:16:33 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4ImportanceProcess
@@ -25,7 +25,7 @@
//
//
// $Id: G4PlaceOfAction.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4PlaceOfAction
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4ProcessPlacer.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4ProcessPlacer.hh,v 1.3 2007/10/31 18:05:44 ahoward Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4ProcessPlacer
@@ -82,6 +82,8 @@ private:
void AddProcessAs(G4VProcess *process, SecondOrLast);
void PrintProcVec(G4ProcessVector* processVec);
void PrintAlongStepGPILVec();
void PrintAlongStepDoItVec();
void PrintPostStepGPILVec();
void PrintPostStepDoItVec();
@@ -25,7 +25,7 @@
//
//
// $Id: G4SamplingPostStepAction.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4SamplingPostStepAction
@@ -25,7 +25,7 @@
//
//
// $Id: G4TrackTerminator.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4TrackTerminator
@@ -25,7 +25,7 @@
//
//
// $Id: G4VProcessPlacer.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4VProcessPlacer
@@ -25,7 +25,7 @@
//
//
// $Id: G4VSampler.hh,v 1.8 2007/06/25 06:57:22 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4VSampler
@@ -25,7 +25,7 @@
//
//
// $Id: G4VSamplerConfigurator.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4VSamplerConfigurator
@@ -25,7 +25,7 @@
//
//
// $Id: G4WeightCutOffConfigurator.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4WeightCutOffConfigurator
@@ -25,7 +25,7 @@
//
//
// $Id: G4WeightCutOffProcess.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4WeightCutOffProcess
@@ -25,7 +25,7 @@
//
//
// $Id: G4WeightWindowConfigurator.hh,v 1.3 2007/06/01 09:16:33 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4WeightWindowConfigurator
@@ -25,7 +25,7 @@
//
//
// $Id: G4WeightWindowProcess.hh,v 1.3 2007/06/01 09:16:33 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4MassWeioghtWindowProcess
@@ -25,7 +25,7 @@
//
//
// $Id: G4GCellFinder.cc,v 1.2 2007/06/01 09:16:33 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometrySampler.cc,v 1.8 2007/06/01 09:52:23 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4ImportanceConfigurator.cc,v 1.3 2007/06/01 09:16:33 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4ImportanceConfigurator
@@ -25,7 +25,7 @@
//
//
// $Id: G4ImportanceProcess.cc,v 1.3 2007/06/01 09:16:33 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4ProcessPlacer.cc,v 1.3 2007/06/12 17:24:39 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4ProcessPlacer.cc,v 1.4 2007/10/31 18:05:44 ahoward Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -55,13 +55,21 @@ void G4ProcessPlacer::RemoveProcess(G4VProcess *process)
G4cout << " ProcessName: " << process->GetProcessName()
<< ", will be removed!" << G4endl;
G4cout << " The initial Vectors: " << G4endl;
G4cout << " The initial AlongStep Vectors: " << G4endl;
PrintAlongStepGPILVec();
PrintAlongStepDoItVec();
G4cout << " The initial PostStep Vectors: " << G4endl;
PrintPostStepGPILVec();
PrintPostStepDoItVec();
GetProcessManager()->RemoveProcess(process);
G4cout << " The final Vectors: " << G4endl;
G4cout << " The final AlongStep Vectors: " << G4endl;
PrintAlongStepGPILVec();
PrintAlongStepDoItVec();
G4cout << " The final PostStep Vectors: " << G4endl;
PrintPostStepGPILVec();
PrintPostStepDoItVec();
@@ -71,8 +79,13 @@ void G4ProcessPlacer::RemoveProcess(G4VProcess *process)
void G4ProcessPlacer::AddProcessAs(G4VProcess *process, SecondOrLast sol)
{
G4cout << " ProcessName: " << process->GetProcessName() << G4endl;
G4cout << "The initial Vectors: " << G4endl;
G4cout << " Modifying Process Order for ProcessName: " << process->GetProcessName() << G4endl;
G4cout << " The initial AlongStep Vectors: " << G4endl;
PrintAlongStepGPILVec();
PrintAlongStepDoItVec();
G4cout << "The initial PostStep Vectors: " << G4endl;
PrintPostStepGPILVec();
PrintPostStepDoItVec();
@@ -99,19 +112,27 @@ void G4ProcessPlacer::AddProcessAs(G4VProcess *process, SecondOrLast sol)
// place the given proces as first for the moment
GetProcessManager()->AddProcess(process);
GetProcessManager()->SetProcessOrderingToFirst(process,
idxAlongStep);
GetProcessManager()->SetProcessOrderingToFirst(process,
idxPostStep);
// xx test
// if(process->GetProcessName() == "ImportanceProcess")
GetProcessManager()->SetProcessOrdering(process,
idxAlongStep, 1);
//bug31/10/07 GetProcessManager()->SetProcessOrdering(process,
//bug31/10/07 idxAlongStep, 1);
// place transportation first again
GetProcessManager()->SetProcessOrderingToFirst(transportation,
idxAlongStep);
GetProcessManager()->SetProcessOrderingToFirst(transportation,
idxPostStep);
}
// for verification inly
G4cout << "The final Vectors: " << G4endl;
G4cout << " The final AlongStep Vectors: " << G4endl;
PrintAlongStepGPILVec();
PrintAlongStepDoItVec();
G4cout << "The final PostStep Vectors: " << G4endl;
PrintPostStepGPILVec();
PrintPostStepDoItVec();
@@ -161,6 +182,23 @@ G4ProcessManager *G4ProcessPlacer::GetProcessManager()
return processmanager;
}
void G4ProcessPlacer::PrintAlongStepGPILVec()
{
G4cout << "GPIL Vector: " << G4endl;
G4ProcessVector* processGPILVec =
GetProcessManager()->GetAlongStepProcessVector(typeGPIL);
PrintProcVec(processGPILVec);
}
void G4ProcessPlacer::PrintAlongStepDoItVec()
{
G4cout << "DoIt Vector: " << G4endl;
G4ProcessVector* processDoItVec =
GetProcessManager()->GetAlongStepProcessVector(typeDoIt);
PrintProcVec(processDoItVec);
}
void G4ProcessPlacer::PrintPostStepGPILVec()
{
G4cout << "GPIL Vector: " << G4endl;
@@ -25,7 +25,7 @@
//
//
// $Id: G4SamplingPostStepAction.cc,v 1.2 2007/06/01 09:16:33 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4VProcessPlacer.cc,v 1.1 2007/06/01 14:57:03 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
+1 -1
View File
@@ -25,7 +25,7 @@
//
//
// $Id: G4VSampler.cc,v 1.2 2007/06/01 09:16:34 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4VSamplerConfigurator.cc,v 1.2 2007/06/01 09:16:34 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4WeightCutOffConfigurator.cc,v 1.2 2007/06/01 09:16:34 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4WeightCutOffConfigurator
@@ -25,7 +25,7 @@
//
//
// $Id: G4WeightCutOffProcess.cc,v 1.2 2007/06/01 09:16:34 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4WeightWindowConfigurator.cc,v 1.3 2007/06/01 09:16:34 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4WeightWindowConfigurator
@@ -25,7 +25,7 @@
//
//
// $Id: G4WeightWindowProcess.cc,v 1.3 2007/06/01 09:16:34 ahoward Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4MCCIndexConversionTable.hh,v 1.3 2006/06/29 19:29:42 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// ------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4MaterialCutsCouple.hh,v 1.3 2006/06/29 19:29:44 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// ------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4PhysicsTableHelper.hh,v 1.3 2006/06/29 19:29:46 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// ------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4ProductionCuts.hh,v 1.4 2006/06/29 19:29:48 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// ------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4ProductionCutsTable.hh,v 1.8 2007/03/15 04:06:40 kurasige Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// ------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4RToEConvForAntiNeutron.hh,v 1.2 2006/06/29 19:29:52 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// ------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4RToEConvForAntiProton.hh,v 1.2 2006/06/29 19:29:54 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// ------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4RToEConvForElectron.hh,v 1.2 2006/06/29 19:29:56 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// ------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4RToEConvForGamma.hh,v 1.2 2006/06/29 19:29:58 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// ------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4RToEConvForNeutron.hh,v 1.2 2006/06/29 19:30:00 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// ------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4RToEConvForPositron.hh,v 1.2 2006/06/29 19:30:02 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// ------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4RToEConvForProton.hh,v 1.2 2006/06/29 19:30:04 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// ------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4VRangeToEnergyConverter.hh,v 1.4 2006/06/29 19:30:06 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// ------------------------------------------------------------
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4MCCIndexConversionTable.cc,v 1.3 2006/06/29 19:30:08 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// ------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4MaterialCutsCouple.cc,v 1.3 2006/06/29 19:30:10 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// --------------------------------------------------------------
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4PhysicsTableHelper.cc,v 1.5 2006/06/29 19:30:12 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// ------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4ProductionCuts.cc,v 1.5 2006/06/29 19:30:14 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// --------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4ProductionCutsTable.cc,v 1.17 2007/05/30 08:22:20 kurasige Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// --------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4RToEConvForAntiNeutron.cc,v 1.3 2006/06/29 19:30:18 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// --------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4RToEConvForAntiProton.cc,v 1.3 2006/06/29 19:30:20 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// --------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4RToEConvForElectron.cc,v 1.5 2006/06/29 19:30:22 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// --------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4RToEConvForGamma.cc,v 1.4 2006/06/29 19:30:24 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// --------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4RToEConvForNeutron.cc,v 1.3 2006/06/29 19:30:26 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// --------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4RToEConvForPositron.cc,v 1.5 2006/06/29 19:30:28 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// --------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4RToEConvForProton.cc,v 1.3 2006/06/29 19:30:30 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// --------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4VRangeToEnergyConverter.cc,v 1.8 2007/06/06 05:13:34 urban Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// --------------------------------------------------------------
+13 -1
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.23 2007/05/07 10:17:36 kurasige Exp $
$Id: History,v 1.28 2007/10/30 03:14:18 gum Exp $
-------------------------------------------------------------------
=========================================================
@@ -16,6 +16,18 @@ committal in the CVS repository !
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
- Oct. 29, 07 P.Gumplinger (decay-V09-00-02)
- add G4PionDecayMakeSpin class
set the daughter muon spin for 2 body decays of
pi, K and K0_long
- Oct. 12, 07 H.Kurashige (decay-V09-00-01)
- add forward declaration for G4VExtDecayer in G4DecayWithSpin
- Oct. 06, 07 H.Kurashige (decay-V09-00-00)
- Add a method of DaughterPolarization in G4Decay
- May 07, 07 H.Kurashige (decay-V08-02-00)
- Add protection for "TotalEnergy < Mass"
+10 -3
View File
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4Decay.hh,v 1.15 2006/06/29 19:30:34 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4Decay.hh,v 1.18 2007/07/23 23:13:04 kurasige Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// ------------------------------------------------------------
@@ -47,6 +47,8 @@
// Fixed bug in PostStepGPIL
// in case of stopping during AlongStepDoIt 12 Mar. 2004 H.Kurashige
// Add GetRemainderLifeTime 10 Aug/2004 H.Kurashige
// Add DaughterPolarization 23 July 2008 H.Kurashige
#ifndef G4Decay_h
#define G4Decay_h 1
@@ -111,7 +113,12 @@ class G4Decay : public G4VRestDiscreteProcess
// The DecayIt() method returns by pointer a particle-change object,
// which has information of daughter particles.
public:
// Set daughter polarization
// NO OPERATION in the base class of G4Decay
virtual void DaughterPolarization(const G4Track& aTrack,
G4DecayProducts* products);
public:
virtual G4double AtRestGetPhysicalInteractionLength(
const G4Track& track,
G4ForceCondition* condition
@@ -40,8 +40,6 @@
#include "G4Decay.hh"
class G4VExtDecayer;
class G4DecayWithSpin : public G4Decay
{
public:
@@ -24,27 +24,40 @@
// ********************************************************************
//
//
// $Id: G4DNAProtonChargeIncrease.cc,v 1.4 2006/06/29 19:39:38 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
//
#include "G4DNAProtonChargeIncrease.hh"
#include "G4DNAGenericIonsManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
G4DNAProtonChargeIncreaseEnergyLimitsPolicy::G4DNAProtonChargeIncreaseEnergyLimitsPolicy() :
lowEnergyLimit(100*eV),
zeroBelowLowEnergyLimit(false),
highEnergyLimit(100*MeV),
zeroAboveHighEnergyLimit(true)
#ifndef G4PionDecayMakeSpin_h
#define G4PionDecayMakeSpin_h 1
#include "G4Decay.hh"
#include "G4ParticleTable.hh"
class G4PionDecayMakeSpin : public G4Decay
{
}
public:
G4DNAProtonChargeIncreaseIncomingParticlePolicy::G4DNAProtonChargeIncreaseIncomingParticlePolicy()
{
}
// Constructors
G4PionDecayMakeSpin(const G4String& processName ="Decay");
const G4ParticleDefinition* G4DNAProtonChargeIncreaseIncomingParticlePolicy::IncomingParticleDefinition(void) const
{
G4DNAGenericIonsManager* instance;
instance = G4DNAGenericIonsManager::Instance();
return instance->GetIon("hydrogen");
}
// Destructor
virtual ~G4PionDecayMakeSpin();
private:
// copy constructor
G4PionDecayMakeSpin(const G4PionDecayMakeSpin &right);
// Assignment Operation (generated)
G4PionDecayMakeSpin & operator=(const G4PionDecayMakeSpin &right);
protected:
virtual void DaughterPolarization(const G4Track& aTrack,
G4DecayProducts* products);
};
#endif
@@ -25,7 +25,7 @@
//
//
// $Id: G4UnknownDecay.hh,v 1.3 2006/06/29 19:30:56 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// ------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4VExtDecayer.hh,v 1.4 2006/06/29 19:31:11 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// ------------------------------------------------------------
+37 -27
View File
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4Decay.cc,v 1.24 2007/05/07 12:05:45 kurasige Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4Decay.cc,v 1.27 2007/10/06 07:01:09 kurasige Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// --------------------------------------------------------------
@@ -65,7 +65,7 @@ G4Decay::G4Decay(const G4String& processName)
{
#ifdef G4VERBOSE
if (GetVerboseLevel()>1) {
G4cerr << "G4Decay constructor " << " Name:" << processName << G4endl;
G4cout << "G4Decay constructor " << " Name:" << processName << G4endl;
}
#endif
pParticleChange = &fParticleChangeForDecay;
@@ -150,9 +150,9 @@ G4double G4Decay::GetMeanFreePath(const G4Track& aTrack,G4double, G4ForceConditi
// too slow particle
#ifdef G4VERBOSE
if (GetVerboseLevel()>1) {
G4cerr << "G4Decay::GetMeanFreePath() !!particle stops!!";
G4cerr << aParticleDef->GetParticleName() << G4endl;
G4cerr << "KineticEnergy:" << aParticle->GetKineticEnergy()/GeV <<"[GeV]";
G4cout << "G4Decay::GetMeanFreePath() !!particle stops!!";
G4cout << aParticleDef->GetParticleName() << G4endl;
G4cout << "KineticEnergy:" << aParticle->GetKineticEnergy()/GeV <<"[GeV]";
}
#endif
pathlength = DBL_MIN;
@@ -200,12 +200,14 @@ G4VParticleChange* G4Decay::DecayIt(const G4Track& aTrack, const G4Step& )
// Error due to NO Decay Table
if ( (decaytable == 0) && !isExtDecayer &&!isPreAssigned ){
#ifdef G4VERBOSE
if (GetVerboseLevel()>0) {
G4cerr << "G4Decay::DoIt : decay table not defined for ";
G4cerr << aParticle->GetDefinition()->GetParticleName()<< G4endl;
G4cout << "G4Decay::DoIt : decay table not defined for ";
G4cout << aParticle->GetDefinition()->GetParticleName()<< G4endl;
}
#endif
G4Exception( "G4Decay::DecayIt ",
"No Decay Table",JustWarning,
"Decay table is not defined");
fParticleChangeForDecay.SetNumberOfSecondaries(0);
// Kill the parent particle
fParticleChangeForDecay.ProposeTrackStatus( fStopAndKill ) ;
@@ -233,7 +235,7 @@ G4VParticleChange* G4Decay::DecayIt(const G4Track& aTrack, const G4Step& )
#ifdef G4VERBOSE
G4int temp = decaychannel->GetVerboseLevel();
if (GetVerboseLevel()>1) {
G4cerr << "G4Decay::DoIt : selected decay channel addr:" << decaychannel <<G4endl;
G4cout << "G4Decay::DoIt : selected decay channel addr:" << decaychannel <<G4endl;
decaychannel->SetVerboseLevel(GetVerboseLevel());
}
#endif
@@ -244,8 +246,9 @@ G4VParticleChange* G4Decay::DecayIt(const G4Track& aTrack, const G4Step& )
}
#endif
#ifdef G4VERBOSE
// for debug
//if (! products->IsChecked() ) products->DumpInfo();
if (GetVerboseLevel()>2) {
if (! products->IsChecked() ) products->DumpInfo();
}
#endif
}
}
@@ -255,15 +258,13 @@ G4VParticleChange* G4Decay::DecayIt(const G4Track& aTrack, const G4Step& )
G4double ParentMass = aParticle->GetMass();
if (ParentEnergy < ParentMass) {
ParentEnergy = ParentMass;
#ifdef G4VERBOSE
if (GetVerboseLevel()>0) {
G4cerr << "G4Decay::DoIt : Total Energy is less than its mass" << G4endl;
G4cerr << " Particle: " << aParticle->GetDefinition()->GetParticleName();
G4cerr << " Energy:" << ParentEnergy/MeV << "[MeV]";
G4cerr << " Mass:" << ParentMass/MeV << "[MeV]";
G4cerr << G4endl;
G4cout << "G4Decay::DoIt : Total Energy is less than its mass" << G4endl;
G4cout << " Particle: " << aParticle->GetDefinition()->GetParticleName();
G4cout << " Energy:" << ParentEnergy/MeV << "[MeV]";
G4cout << " Mass:" << ParentMass/MeV << "[MeV]";
G4cout << G4endl;
}
#endif
}
G4ThreeVector ParentDirection(aParticle->GetMomentumDirection());
@@ -281,18 +282,22 @@ G4VParticleChange* G4Decay::DecayIt(const G4Track& aTrack, const G4Step& )
if (!isExtDecayer) products->Boost( ParentEnergy, ParentDirection);
}
// set polarization for daughter particles
DaughterPolarization(aTrack, products);
//add products in fParticleChangeForDecay
G4int numberOfSecondaries = products->entries();
fParticleChangeForDecay.SetNumberOfSecondaries(numberOfSecondaries);
#ifdef G4VERBOSE
if (GetVerboseLevel()>1) {
G4cerr << "G4Decay::DoIt : Decay vertex :";
G4cerr << " Time: " << finalGlobalTime/ns << "[ns]";
G4cerr << " X:" << (aTrack.GetPosition()).x() /cm << "[cm]";
G4cerr << " Y:" << (aTrack.GetPosition()).y() /cm << "[cm]";
G4cerr << " Z:" << (aTrack.GetPosition()).z() /cm << "[cm]";
G4cerr << G4endl;
G4cerr << "G4Decay::DoIt : decay products in Lab. Frame" << G4endl;
G4cout << "G4Decay::DoIt : Decay vertex :";
G4cout << " Time: " << finalGlobalTime/ns << "[ns]";
G4cout << " X:" << (aTrack.GetPosition()).x() /cm << "[cm]";
G4cout << " Y:" << (aTrack.GetPosition()).y() /cm << "[cm]";
G4cout << " Z:" << (aTrack.GetPosition()).z() /cm << "[cm]";
G4cout << G4endl;
G4cout << "G4Decay::DoIt : decay products in Lab. Frame" << G4endl;
products->DumpInfo();
}
#endif
@@ -325,6 +330,11 @@ G4VParticleChange* G4Decay::DecayIt(const G4Track& aTrack, const G4Step& )
return &fParticleChangeForDecay ;
}
void G4Decay::DaughterPolarization(const G4Track& , G4DecayProducts* )
{
}
void G4Decay::StartTracking(G4Track*)
{
+12 -13
View File
@@ -153,20 +153,19 @@ G4ThreeVector G4DecayWithSpin::Spin_Precession( const G4Step& aStep,
G4Vector3D newSpin = SpinRotation * Spin;
#ifdef G4VERBOSE
if (GetVerboseLevel()>2) {
G4double normspin = std::sqrt(Spin*Spin);
G4double normnewspin = std::sqrt(newSpin*newSpin);
//G4double cosalpha = Spin*newSpin/normspin/normnewspin;
//G4double alpha = std::acos(cosalpha);
// G4double normspin = std::sqrt(Spin*Spin);
// G4double normnewspin = std::sqrt(newSpin*newSpin);
// G4double cosalpha = Spin*newSpin/normspin/normnewspin;
// G4double alpha = std::acos(cosalpha);
// G4cout<< "AT REST::: PARAMETERS\n"
// << "Initial spin : " << Spin <<"\n"
// << "Delta time : " << deltatime <<"\n"
// << "Rotation angle: " << rotationangle/rad <<"\n"
// << "New spin : " << newSpin <<"\n"
// << "Checked norms : " << normspin <<" " << normnewspin <<" \n"
// << G4endl;
G4cout << "AT REST::: PARAMETERS " << G4endl;
G4cout << "Initial spin : " << Spin << G4endl;
G4cout << "Delta time : " << deltatime << G4endl;
G4cout << "Rotation angle: " << rotationangle/rad << G4endl;
G4cout << "New spin : " << newSpin << G4endl;
G4cout << "Checked norms : " << normspin <<" " << normnewspin << G4endl;
}
#endif
return newSpin;
@@ -0,0 +1,147 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
#include "G4PionDecayMakeSpin.hh"
#include "G4Decay.hh"
#include "G4DecayProducts.hh"
#include "G4RandomDirection.hh"
// constructor
G4PionDecayMakeSpin::G4PionDecayMakeSpin(const G4String& processName)
: G4Decay(processName) { }
G4PionDecayMakeSpin::~G4PionDecayMakeSpin() { }
void G4PionDecayMakeSpin::DaughterPolarization(const G4Track& aTrack,
G4DecayProducts* products)
{
// This routine deals only with particles that can decay into a muon
// pi+, pi-, K+, K- and K0_long
// get particle
const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle();
const G4ParticleDefinition* aParticleDef = aParticle->GetDefinition();
G4ParticleDefinition* aMuonPlus =
G4ParticleTable::GetParticleTable()->FindParticle("mu+");
G4ParticleDefinition* aMuonMinus =
G4ParticleTable::GetParticleTable()->FindParticle("mu-");
G4ParticleDefinition* aPionPlus =
G4ParticleTable::GetParticleTable()->FindParticle("pi+");
G4ParticleDefinition* aPionMinus =
G4ParticleTable::GetParticleTable()->FindParticle("pi-");
G4ParticleDefinition* aKaonPlus =
G4ParticleTable::GetParticleTable()->FindParticle("kaon+");
G4ParticleDefinition* aKaonMinus =
G4ParticleTable::GetParticleTable()->FindParticle("kaon-");
G4ParticleDefinition* aKaon0Long =
G4ParticleTable::GetParticleTable()->FindParticle("kaon0L");
G4ParticleDefinition* aNeutrinoMu =
G4ParticleTable::GetParticleTable()->FindParticle("nu_mu");
G4ParticleDefinition* aAntiNeutrinoMu =
G4ParticleTable::GetParticleTable()->FindParticle("anti_nu_mu");
if( aParticleDef == aPionPlus ||
aParticleDef == aPionMinus ||
aParticleDef == aKaonPlus ||
aParticleDef == aKaonMinus ||
aParticleDef == aKaon0Long ) {
} else {
return;
}
G4DynamicParticle* aMuon = NULL;
G4double emu(0), eneutrino(0);
G4ThreeVector p_muon, p_neutrino;
G4int numberOfSecondaries = products->entries();
if (numberOfSecondaries > 0) {
for (G4int index=0; index < numberOfSecondaries; index++)
{
G4DynamicParticle* aSecondary = (*products)[index];
G4ParticleDefinition* aSecondaryDef = aSecondary->GetDefinition();
if (aSecondaryDef == aMuonPlus ||
aSecondaryDef == aMuonMinus ) {
// Muon+ or Muon-
aMuon = aSecondary;
emu = aSecondary->GetTotalEnergy();
p_muon = aSecondary->GetMomentum();
} else if (aSecondaryDef == aNeutrinoMu ||
aSecondaryDef == aAntiNeutrinoMu ) {
// Muon-Neutrino / Muon-Anti-Neutrino
eneutrino = aSecondary->GetTotalEnergy();
p_neutrino = aSecondary->GetMomentum();
}
}
}
// This routine deals only with decays with a
// muon and mu-(anti)neutrinos in the final state
if (!aMuon) return;
if (eneutrino==0||emu==0) return;
G4ThreeVector spin(0,0,0);
const G4DynamicParticle* theParentParticle = products->GetParentParticle();
G4double amass = theParentParticle->GetMass();
G4double emmu = aMuonPlus->GetPDGMass();
if (numberOfSecondaries == 2 ) {
G4double scale = - (eneutrino - ( p_muon * p_neutrino )/(emu+emmu));
p_muon = scale * p_muon;
p_neutrino = emmu * p_neutrino;
spin = p_muon + p_neutrino;
scale = 2./(amass*amass-emmu*emmu);
spin = scale * spin;
if (aParticle->GetCharge() < 0.0) spin = -spin;
} else {
spin = G4RandomDirection();
}
spin = spin.unit();
aMuon->SetPolarization(spin.x(),spin.y(),spin.z());
return;
}
+15 -15
View File
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4UnknownDecay.cc,v 1.4 2007/05/07 10:16:08 kurasige Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4UnknownDecay.cc,v 1.5 2007/10/06 07:01:09 kurasige Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// --------------------------------------------------------------
@@ -48,7 +48,7 @@ G4UnknownDecay::G4UnknownDecay(const G4String& processName)
{
#ifdef G4VERBOSE
if (GetVerboseLevel()>1) {
G4cerr << "G4UnknownDecay constructor " << " Name:" << processName << G4endl;
G4cout << "G4UnknownDecay constructor " << " Name:" << processName << G4endl;
}
#endif
pParticleChange = &fParticleChangeForDecay;
@@ -112,11 +112,11 @@ G4VParticleChange* G4UnknownDecay::DecayIt(const G4Track& aTrack, const G4Step&
ParentEnergy = ParentMass;
#ifdef G4VERBOSE
if (GetVerboseLevel()>1) {
G4cerr << "G4UnknownDecay::DoIt : Total Energy is less than its mass" << G4endl;
G4cerr << " Particle: " << aParticle->GetDefinition()->GetParticleName();
G4cerr << " Energy:" << ParentEnergy/MeV << "[MeV]";
G4cerr << " Mass:" << ParentMass/MeV << "[MeV]";
G4cerr << G4endl;
G4cout << "G4UnknownDecay::DoIt : Total Energy is less than its mass" << G4endl;
G4cout << " Particle: " << aParticle->GetDefinition()->GetParticleName();
G4cout << " Energy:" << ParentEnergy/MeV << "[MeV]";
G4cout << " Mass:" << ParentMass/MeV << "[MeV]";
G4cout << G4endl;
}
#endif
}
@@ -135,13 +135,13 @@ G4VParticleChange* G4UnknownDecay::DecayIt(const G4Track& aTrack, const G4Step&
fParticleChangeForDecay.SetNumberOfSecondaries(numberOfSecondaries);
#ifdef G4VERBOSE
if (GetVerboseLevel()>1) {
G4cerr << "G4UnknownDecay::DoIt : Decay vertex :";
G4cerr << " Time: " << finalGlobalTime/ns << "[ns]";
G4cerr << " X:" << (aTrack.GetPosition()).x() /cm << "[cm]";
G4cerr << " Y:" << (aTrack.GetPosition()).y() /cm << "[cm]";
G4cerr << " Z:" << (aTrack.GetPosition()).z() /cm << "[cm]";
G4cerr << G4endl;
G4cerr << "G4UnknownDecay::DoIt : decay products in Lab. Frame" << G4endl;
G4cout << "G4UnknownDecay::DoIt : Decay vertex :";
G4cout << " Time: " << finalGlobalTime/ns << "[ns]";
G4cout << " X:" << (aTrack.GetPosition()).x() /cm << "[cm]";
G4cout << " Y:" << (aTrack.GetPosition()).y() /cm << "[cm]";
G4cout << " Z:" << (aTrack.GetPosition()).z() /cm << "[cm]";
G4cout << G4endl;
G4cout << "G4UnknownDecay::DoIt : decay products in Lab. Frame" << G4endl;
products->DumpInfo();
}
#endif
@@ -1,4 +1,4 @@
$Id: History,v 1.19 2007/05/31 11:13:31 vnivanch Exp $
$Id: History,v 1.22 2007/11/13 18:36:29 vnivanch Exp $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,14 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
13 November 07: V.Ivanchenko (emhighenergy-V09-00-01)
- G4mplIonisationModel - introduced theoretical asymtotic low-energy
parameterization of dEdx
14 August 07: V.Ivanchenko (emhighenergy-V09-00-00)
- G4mplIonisationModel - fixed low-energy parameterization of monopole
energy loss; verified mean energy loss (M.Vladymirov)
31 May 07: V.Ivanchenko (emhighenergy-V08-03-02)
- G4mplIonisation - fixed destruction of monopole ionisation model
@@ -25,7 +25,7 @@
//
//
// $Id: G4AnnihiToMuPair.hh,v 1.2 2006/06/29 19:32:12 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ------------ G4AnnihiToMuPair physics process ------
// by H.Burkhardt, S. Kelner and R. Kokoulin, November 2002
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4BetheBlochNoDeltaModel.hh,v 1.7 2006/06/29 19:32:14 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4BraggNoDeltaModel.hh,v 1.6 2006/06/29 19:32:16 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4GammaConversionToMuons.hh,v 1.2 2006/06/29 19:32:18 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ------------ G4GammaConversionToMuons physics process ------
// by H.Burkhardt, S. Kelner and R. Kokoulin, April 2002
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4Vee2hadrons.hh,v 1.3 2007/05/22 17:37:30 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeCrossSections.hh,v 1.2 2006/06/29 19:32:22 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeToHadrons.hh,v 1.8 2007/05/23 08:50:41 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeToHadronsModel.hh,v 1.6 2007/05/22 17:37:30 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeToHadronsMultiModel.hh,v 1.5 2007/05/23 08:50:41 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeToTwoPiModel.hh,v 1.3 2007/05/22 17:37:30 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4hhIonisation.hh,v 1.5 2007/05/23 08:50:41 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4mplIonisation.hh,v 1.5 2007/05/23 08:50:41 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4mplIonisationModel.hh,v 1.4 2007/05/22 17:37:30 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4mplIonisationModel.hh,v 1.6 2007/11/13 18:36:29 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -38,7 +38,7 @@
// Creation date: 06.09.2005
//
// Modifications:
//
// 12.08.2007 ComputeDEDXAhlen function added (M. Vladymyrov)
//
// Class Description:
//
@@ -92,6 +92,7 @@ public:
private:
void SetParticle(const G4ParticleDefinition* p);
G4double ComputeDEDXAhlen(const G4Material* material, G4double bg2);
// hide assignment operator
G4mplIonisationModel & operator=(const G4mplIonisationModel &right);
@@ -102,13 +103,17 @@ private:
G4double mass;
G4double magCharge;
G4double chargeSquare;
G4double twoln10;
G4double beta2low;
G4double betalow;
G4double betalim;
G4double beta2lim;
G4double bg2lim;
G4double factlow;
G4double chargeSquare;
G4double dedxlim;
G4int nmpl;
G4double pi_hbarc2_over_mc2;
G4double approxConst;
};
#endif
@@ -25,7 +25,7 @@
//
//
// $Id: G4AnnihiToMuPair.cc,v 1.3 2006/06/29 19:32:34 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ------------ G4AnnihiToMuPair physics process ------
// by H.Burkhardt, S. Kelner and R. Kokoulin, November 2002
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4BetheBlochNoDeltaModel.cc,v 1.3 2006/06/29 19:32:36 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4BraggNoDeltaModel.cc,v 1.3 2006/06/29 19:32:38 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4GammaConversionToMuons.cc,v 1.4 2006/06/29 19:32:40 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ------------ G4GammaConversionToMuons physics process ------
// by H.Burkhardt, S. Kelner and R. Kokoulin, April 2002
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeCrossSections.cc,v 1.6 2006/06/29 19:32:42 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeToHadrons.cc,v 1.7 2006/06/29 19:32:44 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeToHadronsModel.cc,v 1.8 2007/05/22 17:37:30 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeToHadronsMultiModel.cc,v 1.4 2007/05/23 08:50:41 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeToTwoPiModel.cc,v 1.5 2007/05/22 17:37:30 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4hhIonisation.cc,v 1.6 2007/05/22 17:37:30 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4mplIonisation.cc,v 1.5 2007/05/31 11:13:31 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4mplIonisationModel.cc,v 1.3 2006/12/13 15:44:27 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4mplIonisationModel.cc,v 1.5 2007/11/13 18:36:29 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -38,10 +38,17 @@
// Creation date: 06.09.2005
//
// Modifications:
// 12.08.2007 Changing low energy approximation and extrapolation.
// Small bug fixing and refactoring (M. Vladymyrov)
// 13.11.2007 Use low-energy asymptotic from [3] (V.Ivanchenko)
//
//
// -------------------------------------------------------------------
//
// References
// [1] Steven P. Ahlen: Energy loss of relativistic heavy ionizing particles,
// S.P. Ahlen, Rev. Mod. Phys 52(1980), p121
// [2] K.A. Milton arXiv:hep-ex/0602040
// [3] S.P. Ahlen and K. Kinoshita, Phys. Rev. D26 (1982) 2347
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -56,21 +63,21 @@
using namespace std;
G4mplIonisationModel::G4mplIonisationModel(G4double mCharge,
const G4String& nam)
G4mplIonisationModel::G4mplIonisationModel(G4double mCharge, const G4String& nam)
: G4VEmModel(nam),G4VEmFluctuationModel(nam),
magCharge(mCharge),
twoln10(2.0*log(10.0)),
beta2low(0.0001),
beta2lim(0.01),
twoln10(log(100.0)),
betalow(0.01),
betalim(0.1),
beta2lim(betalim*betalim),
bg2lim(beta2lim*(1.0 + beta2lim))
{
nmpl = G4int(abs(magCharge)/68.0);
nmpl = G4int(abs(magCharge) * 2 * fine_structure_const + 0.5);
if(nmpl > 6) nmpl = 6;
else if(nmpl < 1) nmpl = 1;
G4double x = 45.0*GeV*G4double(nmpl)/cm;
factlow = x*x;
chargeSquare = magCharge*magCharge;
pi_hbarc2_over_mc2 = pi * hbarc * hbarc / electron_mass_c2;
chargeSquare = magCharge * magCharge;
dedxlim = 45.*nmpl*nmpl*GeV*cm2/g;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -99,60 +106,74 @@ G4double G4mplIonisationModel::ComputeDEDXPerVolume(const G4Material* material,
G4double kineticEnergy,
G4double)
{
G4double tau = kineticEnergy/mass;
G4double tau = kineticEnergy / mass;
G4double gam = tau + 1.0;
G4double bg2 = tau * (tau+2.0);
G4double beta2 = bg2/(gam*gam);
G4double bg2 = tau * (tau + 2.0);
G4double beta2 = bg2 / (gam * gam);
G4double beta = sqrt(beta2);
G4double dedx0 = factlow*abs(beta2);
// low-energy asymptotic formula
G4double dedx = dedxlim*beta*material->GetDensity();
if(beta2 > beta2low) {
// above asymptotic
if(beta > betalow) {
G4double b2 = beta2;
if(beta2 < beta2lim) {
beta2= beta2lim;
bg2 = bg2lim;
// high energy
if(beta >= betalim) {
dedx = ComputeDEDXAhlen(material, bg2);
} else {
G4double dedx1 = dedxlim*betalow*material->GetDensity();
G4double dedx2 = ComputeDEDXAhlen(material, bg2lim);
// extrapolation between two formula
G4double kapa2 = beta - betalow;
G4double kapa1 = betalim - beta;
dedx = (kapa1*dedx1 + kapa2*dedx2)/(kapa1 + kapa2);
}
}
return dedx;
}
G4double eexc = material->GetIonisation()->GetMeanExcitationEnergy();
G4double cden = material->GetIonisation()->GetCdensity();
G4double mden = material->GetIonisation()->GetMdensity();
G4double aden = material->GetIonisation()->GetAdensity();
G4double x0den = material->GetIonisation()->GetX0density();
G4double x1den = material->GetIonisation()->GetX1density();
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
G4double eDensity = material->GetElectronDensity();
G4double G4mplIonisationModel::ComputeDEDXAhlen(const G4Material* material, G4double bg2)
{
G4double eDensity = material->GetElectronDensity();
G4double eexc = material->GetIonisation()->GetMeanExcitationEnergy();
G4double cden = material->GetIonisation()->GetCdensity();
G4double mden = material->GetIonisation()->GetMdensity();
G4double aden = material->GetIonisation()->GetAdensity();
G4double x0den = material->GetIonisation()->GetX0density();
G4double x1den = material->GetIonisation()->GetX1density();
G4double dedx = 2.0*log(2.0*electron_mass_c2*bg2/eexc) - 1.0;
// Ahlen's formula for nonconductors, [1]p157, f(5.7)
G4double dedx = log(2.0 * electron_mass_c2 * bg2 / eexc) - 0.5;
G4double k = 0.406;
if(nmpl > 1) k = 0.346;
const G4double B[7] = { 0.0, 0.248, 0.672, 1.022, 1.243, 1.464, 1.685};
// Kazama et al. cross-section correction
G4double k = 0.406;
if(nmpl > 1) k = 0.346;
dedx += k - B[nmpl];
// Bloch correction
const G4double B[7] = { 0.0, 0.248, 0.672, 1.022, 1.243, 1.464, 1.685};
// density correction
G4double x = log(bg2)/twoln10;
if ( x >= x0den ) {
dedx -= twoln10*x - cden ;
if ( x < x1den ) dedx -= aden*pow((x1den-x),mden) ;
}
dedx += 0.5 * k - B[nmpl];
// now compute the total ionization loss
if (dedx < 0.0) dedx = 0.0 ;
dedx *= twopi_mc2_rcl2*chargeSquare*eDensity;
// extrapolate between two formula
if(beta2 < beta2lim) {
x = log(dedx0) + log(dedx/dedx0)*log(b2/beta2low)/log(beta2lim/beta2low);
dedx = exp(x);
}
dedx0 = dedx;
// density effect correction
G4double deltam;
G4double x = log(bg2) / twoln10;
if ( x >= x0den ) {
deltam = twoln10 * x - cden;
if ( x < x1den ) deltam += aden * pow((x1den-x), mden);
dedx -= 0.5 * deltam;
}
return dedx0;
// now compute the total ionization loss
dedx *= pi_hbarc2_over_mc2 * eDensity * nmpl * nmpl;
if (dedx < 0.0) dedx = 0;
return dedx;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -180,9 +201,5 @@ G4double G4mplIonisationModel::SampleFluctuations(
loss = G4RandGauss::shoot(meanLoss,siga);
} while (0.0 > loss || loss > twomeanLoss);
}
//G4cout << "G4mplIonisationModel::SampleFluctuations: loss= " << loss
//<< " siga= " << siga << G4endl;
return loss;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -1,4 +1,4 @@
$Id: History,v 1.258 2007/06/07 13:57:26 pia Exp $
$Id: History,v 1.284 2007/11/26 17:27:09 pia Exp $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,125 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
26.11.2007 MGP, tag emlowen-V09-00-28
Cleaned up std:: in G4FinalStateIonisationBorn/Rudd
14.11.2007 MGP, tag emlowen-V09-00-27
Correction to Problem Report 986 in G4AtomicDeexcitation
??.11.2007 Undocumented tag emlowen-V09-00-26
14.11.2007 MGP, tag emlowen-V09-00-25
Workaround in G4DNAProcess to avoid meanFrePath=0 when
cross section is DBL_MAX
13.11.2007 MGP, tag emlowen-V09-00-24
Fixed calculation of local energy deposit in G4DNAProcess
in the case when the primary particle is killed
Minor code improvements in G4FinalStateIonisationBorn.cc.
12.11.2007 G.Cosmo, tag emlowen-V09-00-23
Fixed trivial compilation error on WIN32-VC system in file
G4FinalStateIonisationBorn.cc.
09.11.2007 MGP, tag emlowen-V09-00-22
Added cross section and final state policy classes to configure
a process to kill particles below threshold
09.11.2007 MGP, tag emlowen-V09-00-21
Initialized data members missing initialization
09.11.2007 MGP, tag emlowen-V09-00-20
Removed verbose printouts in Geant4-DNA processes
09.11.2007 MGP, tag emlowen-V09-00-19
Fixed compilation problems on Windows
09.11.2007 MGP, tag emlowen-V09-00-18
Fixed compilation problems on Solaris
08.11.2007 MGP, tag emlowen-V09-00-17
Added Rudd ionisation
08.11.2007 MGP, tag emlowen-V09-00-16
Added Born ionisation final state
08.11.2007 MGP, tag emlowen-V09-00-15
Added Miller-Green excitation
08.11.2007 MGP, tag emlowen-V09-00-14
Modified data file name in G4EMLOW5.1
08.11.2007 MGP, tag emlowen-V09-00-13
Added charge increase/decrease Geant4-DNA cross sections
and final states (code by S. Incerti + code review by MGP)
08.11.2007 MGP, tag emlowen-V09-00-12
Removed obsolete G4DNA* files from CVS
22.10.2007 MGP, tag emlowen-V09-00-11
Added G4CrossSectionIonisationBorn
Excludes prototype G4DNA* classes (still available in CVS head)
Pertinent G4DNA* classes included are:
G4DNAProcess (.hh .icc),
G4DNACrossSectionDataSet (.hh .cc),
G4DNAGenericIonsManager (.hh .cc)
15.10.2007 MGP, tag emlowen-V09-00-10
Added electron excitation (Emfietzoglou model),
proton Born excitation, electron ionisation (Born) cross section; modified G4DNACrossSectionDataSet to
remove inheritance from concrete base class introduced
by a developer against the baseline design
Obsolete G4DNA* classes not compliant with the design
as in the TNS paper are still in this tag for convenience;
they will be removed from the repository when the
migration to the design as in the paper is completed
Goes with G4EMLOW5.0 (where a new dna/directory has been
added containing Geant4-DNA data tables for interpolation)
13.10.2007 MGP, tag emlowen-V09-00-09
Added Brenner-Zaider elastic scattering final state
12.10.2007 MGP, tag emlowen-V09-00-08
Fully working Geant4-DNA electron elastic scattering,
screened Rutherford cross section and final state
12.10.2007 MGP, tag emlowen-V09-00-07
Improved G4DNAProcess, G4FinalStateProduct
12.10.2007 MGP, tag emlowen-V09-00-06
First core of Geant4-DNA physics compliant with design
as in TNS paper: G4DNAProcess, G4FinalStateProduct,
G4eCrossSectionScreenedRutherford, G4DummyFinal State
(MG implementation)
12.10.2007 MGP, tag emlowen-V09-00-05
Extended G4DNAFinalStateProduct to deal with primary
particle modified in final state
Modified G4DNAProcess.icc accordingly
12.10.2007 MGP, tag emlowen-V09-00-04
Refactoring Geant4-DNA domain to be compliant with TNS paper
Added G4DNAProcess and G4DNAFinalStateProduct
11.10.2007 MGP, tag emlowen-V09-00-03
Identical to emlowen-V09-00-02, which apparently already
existed on some files (it is unclear where it originared from)
11.10.2007 MGP, tag emlowen-V09-00-02
Re-update to atomic relaxation fixes as in emlowen-V09-00-00
emlowen-V09-00-00 was rejected because of a mismatch between
code and G4EMLOW data library
This tag goes with G4EMLOW4.4
11.10.2007 MGP, tag emlowen-V09-00-01
Fix to bug 965 of G4PenelopeRayleigh by L. Pandola
23.07.2007 MGP, tag emlowen-V09-00-00
Deleted tag emlowen-V09-00-01 made by A.M. (no V-09-00-00 existed)
Fixes by A.M. to handle Z=100 in the Livermore library
and to correct Problem Report 933 (the latter fixes are not
documented)
04.06.2007 MGP, tag emlowen-V08-03-03
Tag on top of emlowen-V08-03-00a
@@ -25,7 +25,7 @@
//
//
// $Id: G4AtomicTransitionManager.hh,v 1.2 ????
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
@@ -25,7 +25,7 @@
//
//
// $Id: G4AtomicShell.hh,v 1.2 ????
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
@@ -25,7 +25,7 @@
//
//
// $Id: G4AtomicTransitionManager.hh,v 1.2 ????
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
@@ -110,7 +110,7 @@ public:
protected:
G4AtomicTransitionManager(G4int minZ = 1, G4int maxZ = 99,
G4AtomicTransitionManager(G4int minZ = 1, G4int maxZ = 100,
G4int limitInfTable = 6, G4int limitSupTable=100 );
~G4AtomicTransitionManager();
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4AugerData.hh
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4BremsstrahlungParameters.hh,v 1.10 2006/06/29 19:33:06 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
// V. Ivanchenko (Vladimir.Ivantchenko@cern.ch)
@@ -25,7 +25,7 @@
//
//
// $Id: G4CompositeEMDataSet.hh,v 1.8 2006/06/29 19:33:08 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
@@ -24,46 +24,62 @@
// ********************************************************************
//
//
// $Id: G4DNAElectronElasticScatteringInWater.hh,v 1.6 2006/10/14 11:03:03 pia Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4CrossSectionChargeDecrease.hh,v 1.1 2007/11/08 18:24:04 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Nucl. Instr. Meth. 155 (1978) 145-156
// J. Phys. D: Appl. Phys. 33 (2000) 932-944
// Phys. Med. Biol. 45 (2000) 3171-3194
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
#ifndef G4DNAELECTRONELASTICSCATTERINGINWATER_HH
#define G4DNAELECTRONELASTICSCATTERINGINWATER_HH 1
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONCHARGEDECREASE_HH
#define G4CROSSSECTIONCHARGEDECREASE_HH 1
#include "G4VDNAProcessInWater.hh"
#include "globals.hh"
#include <map>
#include "G4CrossSectionChargeDecreasePartial.hh"
class G4Track;
// TotalCrossSectionPolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void)
// - [protected] G4double TotalCrossSection(G4double k, G4int z)
// - [protected] void BuildTotalCrossSection(void)
// FinalStatesPolicy must provide:
// - [protected] G4double RandomizeCosTheta(G4double k, G4int z)
// - [protected] G4bool KillIncomingParticle(G4double k)
// - [protected] void BuildFinalStatesData(void)
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
class G4DNAElectronElasticScatteringInWater : public G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>
class G4CrossSectionChargeDecrease
{
public:
G4DNAElectronElasticScatteringInWater(const G4String & name): G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>(name) {}
virtual ~G4DNAElectronElasticScatteringInWater() {}
virtual G4VParticleChange* PostStepDoIt(const G4Track & aTrack, const G4Step & aStep);
G4CrossSectionChargeDecrease();
virtual ~G4CrossSectionChargeDecrease();
G4double CrossSection(const G4Track&);
// Copy constructor and assignment operator to be added here
private:
// Hides default constructor and assignment operator as private
G4DNAElectronElasticScatteringInWater(const G4DNAElectronElasticScatteringInWater & copy);
G4DNAElectronElasticScatteringInWater & operator=(const G4DNAElectronElasticScatteringInWater & right);
};
#include "G4DNAElectronElasticScatteringInWater.icc"
#endif /* G4DNAELECTRONELASTICSCATTERINGINWATER_HH */
G4String name;
G4double lowEnergyLimitDefault;
G4double highEnergyLimitDefault;
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
G4CrossSectionChargeDecreasePartial partialCrossSection;
};
#endif

Some files were not shown because too many files have changed in this diff Show More