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
+10 -1
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.43 2007/06/04 13:05:14 ahoward Exp $
$Id: History,v 1.45 2007/11/09 15:22:38 ahoward Exp $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,15 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
November 9th, 2007 A.Howard geombias-V09-00-01
- Revised search algorithm to Weight/UpperBound + 1.
November 9th, 2007 A.Howard geombias-V09-00-00
- Modified WeightWindow algorithm according to Thomas Booth's
recommendation (MCNP author). In order to not introduce extra variance
in the case of splitting to the survival weight when the weight is
above the upper weight window - modified G4WeightWindowAlgorithm.cc
June 4th, 2007 A.Howard geombias-V08-03-02
- Put back some missing store and scoring classes:
G4IStore, G4VCellScorerstore, G4VCellScorer
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometryCell.hh,v 1.6 2006/06/29 18:15:49 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4GeometryCell
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometryCellComp.hh,v 1.2 2006/06/29 18:15:52 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4GeometryCellComp
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometryCellImportance.hh,v 1.4 2006/06/29 18:15:54 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4GeometryCellImportance
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometryCellStep.hh,v 1.2 2006/06/29 18:15:57 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4GeometryCellStep
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometryCellStepStream.hh,v 1.3 2006/06/29 18:15:59 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Declarations
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometryCellWeight.hh,v 1.3 2006/06/29 18:16:02 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4GeometryCellWeight
+1 -1
View File
@@ -25,7 +25,7 @@
//
//
// $Id: G4IStore.hh,v 1.10 2006/06/29 18:16:04 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4IStore
@@ -25,7 +25,7 @@
//
//
// $Id: G4ImportanceAlgorithm.hh,v 1.7 2006/06/29 18:16:06 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4ImportanceAlgorithm
@@ -25,7 +25,7 @@
//
//
// $Id: G4Nsplit_Weight.hh,v 1.11 2006/06/29 18:16:21 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4Nsplit_Weight
@@ -25,7 +25,7 @@
//
//
// $Id: G4VCellScorer.hh,v 1.7 2006/06/29 18:16:29 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4VCellScorer
@@ -25,7 +25,7 @@
//
//
// $Id: G4VCellScorerStore.hh,v 1.7 2006/06/29 18:16:32 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4VCellScorerStore
@@ -25,7 +25,7 @@
//
//
// $Id: G4VGCellFinder.hh,v 1.2 2006/06/29 18:16:34 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4VGCellFinder
+1 -1
View File
@@ -25,7 +25,7 @@
//
//
// $Id: G4VIStore.hh,v 1.9 2006/06/29 18:16:37 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4VIStore
@@ -25,7 +25,7 @@
//
//
// $Id: G4VImportanceAlgorithm.hh,v 1.8 2006/06/29 18:16:40 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4VImportanceAlgorithm
@@ -25,7 +25,7 @@
//
//
// $Id: G4VImportanceSplitExaminer.hh,v 1.5 2006/06/29 18:16:42 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4VImportanceSplitExaminer
@@ -25,7 +25,7 @@
//
//
// $Id: G4VWeightWindowAlgorithm.hh,v 1.8 2006/06/29 18:16:52 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4VWeightWindowAlgorithm
@@ -25,7 +25,7 @@
//
//
// $Id: G4VWeightWindowStore.hh,v 1.3 2006/06/29 18:16:57 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4VWeightWindowStore
@@ -25,7 +25,7 @@
//
//
// $Id: G4WeightWindowAlgorithm.hh,v 1.7 2006/06/29 18:16:59 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4WeightWindowAlgorithm
@@ -25,7 +25,7 @@
//
//
// $Id: G4WeightWindowStore.hh,v 1.3 2006/06/29 18:17:05 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// Class G4WeightWindowStore
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometryCell.cc,v 1.6 2006/06/29 18:17:07 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4GeometryCellComp.cc,v 1.4 2006/06/29 18:17:10 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometryCellImportance.cc,v 1.5 2006/06/29 18:17:12 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometryCellStep.cc,v 1.2 2006/06/29 18:17:14 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometryCellStepStream.cc,v 1.3 2006/06/29 18:17:16 gunter 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: G4IStore.cc,v 1.14 2006/06/29 18:17:18 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4ImportanceAlgorithm.cc,v 1.14 2006/06/29 18:17:20 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4Nsplit_Weight.cc,v 1.10 2006/06/29 18:17:25 gunter 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: G4VCellScorer.cc,v 1.6 2006/06/29 18:17:35 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4VCellScorerStore.cc,v 1.4 2006/06/29 18:17:37 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4VGCellFinder.cc,v 1.2 2006/06/29 18:17:39 gunter 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: G4VIStore.cc,v 1.2 2006/06/29 18:17:41 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4VImportanceAlgorithm.cc,v 1.2 2006/06/29 18:17:43 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4VImportanceSplitExaminer.cc,v 1.2 2006/06/29 18:17:45 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4VWeightWindowAlgorithm.cc,v 1.2 2006/06/29 18:17:54 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4VWeightWindowStore.cc,v 1.3 2006/06/29 18:17:59 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4WeightWindowAlgorithm.cc,v 1.8 2006/06/29 18:18:01 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4WeightWindowAlgorithm.cc,v 1.11 2007/11/09 15:43:07 ahoward Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -66,29 +66,38 @@ G4WeightWindowAlgorithm::Calculate(G4double init_w,
if (init_w > upperWeight) {
// splitting
G4double wi_ws = init_w/survivalWeight;
G4int int_wi_ws = static_cast<int>(wi_ws);
//TB G4double wi_ws = init_w/survivalWeight;
//TB
G4double temp_wi_ws = init_w/upperWeight;
G4int split_i = static_cast<int>(temp_wi_ws);
if(split_i != temp_wi_ws) split_i++;
G4double wi_ws = init_w/split_i;
//TB
//TB G4int int_wi_ws = static_cast<int>(wi_ws);
// values in case integer mode or in csae of double
// mode and the lower number of splits will be diced
nw.fN = int_wi_ws;
nw.fW = survivalWeight;
//TB nw.fN = int_wi_ws;
//TB nw.fW = survivalWeight;
nw.fN = split_i;
nw.fW = wi_ws;
if (wi_ws <= fMaxNumberOfSplits) {
if (wi_ws > int_wi_ws) {
// double mode
G4double p2 = wi_ws - int_wi_ws;
G4double r = G4UniformRand();
if (r<p2) {
nw.fN = int_wi_ws + 1;
}
}
}
else {
// fMaxNumberOfSplits < wi_ws
nw.fN = fMaxNumberOfSplits;
nw.fW = init_w/fMaxNumberOfSplits;
}
//TB if (wi_ws <= fMaxNumberOfSplits) {
//TB if (wi_ws > int_wi_ws) {
//TB // double mode
//TB G4double p2 = wi_ws - int_wi_ws;
//TB G4double r = G4UniformRand();
//TB if (r<p2) {
//TB nw.fN = int_wi_ws + 1;
//TB }
//TB }
//TB }
//TB else {
//TB // fMaxNumberOfSplits < wi_ws
//TB nw.fN = fMaxNumberOfSplits;
//TB nw.fW = init_w/fMaxNumberOfSplits;
//TB }
} else if (init_w < lowerWeightBound) {
@@ -25,7 +25,7 @@
//
//
// $Id: G4WeightWindowStore.cc,v 1.5 2006/06/29 18:18:05 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4PVDivision.hh,v 1.12 2006/06/29 18:18:07 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// class G4PVDivision
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4PVDivisionFactory.hh,v 1.2 2006/06/29 18:18:09 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4PVDivisionFactory
@@ -25,7 +25,7 @@
//
//
// $Id: G4ParameterisationBox.hh,v 1.6 2006/06/29 18:18:11 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// classes G4ParameterisationBoxX,
// G4ParameterisationBoxY,
@@ -25,7 +25,7 @@
//
//
// $Id: G4ParameterisationCons.hh,v 1.6 2006/06/29 18:18:13 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// classes G4ParameterisationConsRho,
// G4ParameterisationConsPhi,
@@ -25,7 +25,7 @@
//
//
// $Id: G4ParameterisationPara.hh,v 1.7 2006/06/29 18:18:15 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// classes G4ParameterisationParaX,
// G4ParameterisationParaY,
@@ -25,7 +25,7 @@
//
//
// $Id: G4ParameterisationPolycone.hh,v 1.7 2006/06/29 18:18:18 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// classes G4ParameterisationPolyconeRho,
// G4ParameterisationPolyconePhi,
@@ -25,7 +25,7 @@
//
//
// $Id: G4ParameterisationPolyhedra.hh,v 1.8 2006/06/29 18:18:20 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// classes G4ParameterisationPolyhedraRho,
// G4ParameterisationPolyhedraPhi,
@@ -25,7 +25,7 @@
//
//
// $Id: G4ParameterisationTrd.hh,v 1.7 2006/06/29 18:18:22 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// classes G4ParameterisationTrdX
// G4ParameterisationTrdY
@@ -25,7 +25,7 @@
//
//
// $Id: G4ParameterisationTubs.hh,v 1.6 2006/06/29 18:18:24 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// classes G4ParameterisationTubsRho
// G4ParameterisationTubsPhi
@@ -25,7 +25,7 @@
//
//
// $Id: G4VDivisionParameterisation.hh,v 1.11 2007/05/11 13:26:26 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// class G4VDivisionParameterisation
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4VDivisionParameterisation.icc,v 1.4 2006/06/29 18:18:29 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// class G4VDivisionParameterisation Inline Implementation file
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4PVDivision.cc,v 1.20 2006/06/29 18:18:31 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// class G4PVDivision Implementation file
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4PVDivisionFactory.cc,v 1.2 2006/06/29 18:18:33 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// class G4PVDivisionFactory Implementation file
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4ParameterisationBox.cc,v 1.10 2006/06/29 18:18:35 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// class G4ParameterisationBox Implementation file
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4ParameterisationCons.cc,v 1.9 2006/06/29 18:18:38 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// class G4ParameterisationCons Implementation file
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4ParameterisationPara.cc,v 1.11 2006/06/29 18:18:42 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// class G4ParameterisationPara Implementation file
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4ParameterisationPolycone.cc,v 1.15 2006/06/29 18:18:44 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// class G4ParameterisationPolycone Implementation file
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4ParameterisationPolyhedra.cc,v 1.16 2007/05/18 07:27:23 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// class G4ParameterisationPolyhedra Implementation file
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4ParameterisationTrd.cc,v 1.14 2006/06/29 18:18:48 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// class G4ParameterisationTrd Implementation file
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4ParameterisationTubs.cc,v 1.8 2006/06/29 18:18:50 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// class G4ParameterisationTubs Implementation file
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4VDivisionParameterisation.cc,v 1.12 2007/05/11 13:26:26 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// class G4VDivisionParameterisation Implementation file
//
+36 -8
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.121 2007/06/08 09:38:43 gcosmo Exp $
$Id: History,v 1.125.2.2 2007/12/10 13:17:13 gcosmo Exp $
-------------------------------------------------------------------
=========================================================
@@ -17,14 +17,42 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
June 8th, 2007 T. Nikitina - field-V08-03-03
--------------------------
- Relax FatalExeption to Warning in AccurateAdvance() for case of step zero
and return previous value. This fixes problem observed by ATLAS in release
8.3 when using very conservative values for field parameters.
September 9th, 2007 G.Cosmo - field-V09-00-02a
----------------------------
- Some code cleanup in G4MagHelicalStepper.cc.
May 18th, 2007 T. Nikitina - field-V08-03-02
--------------------------
August 30th, 2007 P.Gumplinger - field-V09-00-02
---------------------------------
- Add G4EqEMFieldWithSpin class to allow tracking of spin also in
G4ElectroMagneticFields
August 21st, 2007 T.Nikitina - field-V09-00-01
-------------------------------
- Fix to DistChord() method for Helical Steppers: adopt 'special' case
also for Ang<2pi not only for Ang<pi; use cos() in place of tan(), to
improve CPU performance.
- Improved AdvanceHelix() to be able to make half step and full step
in one call.
- In G4HelixMixedStepper added possibility to call different steppers for
small steps and add some statistics how offen different steppers are called.
- G4RKG3_Stepper: improved internal algorithm to use pre-computed values;
the stepper now gives comparable CPU performance as ClassicalRK4.
- Updated unit tests.
August 17th, 2007 G.Cosmo - field-V09-00-00
----------------------------
- Changed FatalException to EventMustBeAborted in AccurateAdvance()
if proposed integration step is negative.
June 8th, 2007 T.Nikitina - field-V08-03-03
----------------------------
- Relaxed FatalException to Warning in G4MagIntegratorDriver::AccurateAdvance()
for case of step zero and return previous value. This fixes problem
observed by ATLAS in release 8.3 when requiring very accurate propagation
-- ie using very small values for acceptable integration error.
May 18th, 2007 T.Nikitina - field-V08-03-02
----------------------------
- New class G4HelixMixedStepper, mixing helical stepper and RK
G4MagHelicalStepper
- Keep values of inverse Radius, ..
@@ -25,7 +25,7 @@
//
//
// $Id: G4CashKarpRKF45.hh,v 1.10 2006/06/29 18:20:45 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4CashKarpRKF45
@@ -25,7 +25,7 @@
//
//
// $Id: G4ChordFinder.hh,v 1.17 2006/06/29 18:21:02 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4ChordFinder
@@ -25,7 +25,7 @@
//
//
// $Id: G4ChordFinder.icc,v 1.12 2006/06/29 18:21:32 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// G4ChordFinder inline implementations
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4ChordFinderSaf.hh,v 1.3 2006/06/29 18:21:52 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4ChordFinderRad
@@ -25,7 +25,7 @@
//
//
// $Id: G4ClassicalRK4.hh,v 1.10 2006/06/29 18:21:55 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4ClassicalRK4
@@ -25,7 +25,7 @@
//
//
// $Id: G4DELPHIMagField.hh,v 1.4 2006/06/29 18:21:57 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4DELPHIMagField
@@ -25,7 +25,7 @@
//
//
// $Id: G4ElectricField.hh,v 1.2 2006/06/29 18:21:59 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4ElectricField
@@ -25,7 +25,7 @@
//
//
// $Id: G4ElectroMagneticField.hh,v 1.11 2006/06/29 18:22:01 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4ElectroMagneticField
@@ -0,0 +1,80 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
// $Id: G4EqEMFieldWithSpin.hh,v 1.1 2007/08/30 23:34:01 gum Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4EqEMFieldWithSpin
//
// Class description:
//
// This is the right-hand side of equation of motion in a combined
// electric and magnetic field.
// History:
// - Created. Chris Gong, P.Gumplinger, 30.08.2007
// -------------------------------------------------------------------
#ifndef G4EQEMFIELDWITHSPIN_hh
#define G4EQEMFIELDWITHSPIN_hh
#include "G4EquationOfMotion.hh"
#include "G4ElectroMagneticField.hh"
class G4EqEMFieldWithSpin : public G4EquationOfMotion
{
public: // with description
G4EqEMFieldWithSpin(G4ElectroMagneticField *emField );
~G4EqEMFieldWithSpin() {;}
void SetChargeMomentumMass(G4double particleCharge, // in e+ units
G4double MomentumXc,
G4double mass);
void EvaluateRhsGivenB(const G4double y[],
const G4double Field[],
G4double dydx[] ) const;
// Given the value of the electromagnetic field, this function
// calculates the value of the derivative dydx.
private:
G4double fElectroMagCof ;
G4double fMassCof;
G4double omegac;
G4double anomaly;
G4double ParticleCharge;
G4double E;
G4double gamma;
G4double beta;
};
#endif
@@ -25,7 +25,7 @@
//
//
// $Id: G4EqMagElectricField.hh,v 1.9 2006/06/29 18:22:03 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4EqMagElectricField
@@ -25,7 +25,7 @@
//
//
// $Id: G4EquationOfMotion.hh,v 1.10 2006/06/29 18:22:05 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4EquationOfMotion
@@ -25,7 +25,7 @@
//
//
// $Id: G4EquationOfMotion.icc,v 1.9 2006/06/29 18:22:07 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// Inline implementation
@@ -25,7 +25,7 @@
//
//
// $Id: G4ErrorMag_UsualEqRhs.hh,v 1.1 2007/05/16 12:54:02 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// --------------------------------------------------------------------
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4ExactHelixStepper.hh,v 1.5 2007/05/18 12:50:31 tnikitin Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4ExactHelixStepper
@@ -25,7 +25,7 @@
//
//
// $Id: G4ExplicitEuler.hh,v 1.9 2006/06/29 18:22:11 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4ExplicitEuler
@@ -25,7 +25,7 @@
//
//
// $Id: G4Field.hh,v 1.10 2006/06/29 18:22:13 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4Field
@@ -25,7 +25,7 @@
//
//
// $Id: G4FieldManager.hh,v 1.16 2006/06/29 18:22:15 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4FieldManager
@@ -25,7 +25,7 @@
//
//
// $Id: G4FieldManager.icc,v 1.12 2006/06/29 18:22:18 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// G4FieldManager inline implementation
@@ -25,7 +25,7 @@
//
//
// $Id: G4FieldTrack.hh,v 1.21 2006/11/13 18:24:35 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4FieldTrack
@@ -25,7 +25,7 @@
//
//
// $Id: G4FieldTrack.icc,v 1.21 2006/11/13 18:24:35 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
@@ -25,7 +25,7 @@
//
//
// $Id: G4HarmonicPolMagField.hh,v 1.4 2006/06/29 18:22:24 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// class G4HarmonicPolMagField
//
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4HelixExplicitEuler.hh,v 1.8 2006/06/29 18:22:29 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4HelixExplicitEuler.hh,v 1.9 2007/08/21 08:52:00 tnikitin Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4HelixExplicitEuler
@@ -54,12 +54,18 @@ class G4HelixExplicitEuler : public G4MagHelicalStepper
: G4MagHelicalStepper(EqRhs) {}
~G4HelixExplicitEuler() {}
void DumbStepper( const G4double y[],
G4ThreeVector Bfld,
G4double h,
G4double yout[]);
void Stepper( const G4double y[],
const G4double*,
G4double h,
G4double yout[],
G4double yerr[] );
void DumbStepper( const G4double y[],
G4ThreeVector Bfld,
G4double h,
G4double yout[]);
G4double DistChord() const;
public: // without description
// DELETED RightHandSide( ) !!!!
@@ -25,7 +25,7 @@
//
//
// $Id: G4HelixHeum.hh,v 1.8 2006/06/29 18:22:36 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4HelixHeum
@@ -25,7 +25,7 @@
//
//
// $Id: G4HelixImplicitEuler.hh,v 1.8 2006/06/29 18:22:38 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4HelixImplicitEuler
@@ -29,9 +29,21 @@
//
// G4HelixMixedStepper split the Method used for Integration in two:
//
// If Stepping Angle ( h / R_curve) < pi/3 : use Classical RK4Stepper
// If Stepping Angle ( h / R_curve) < pi/3 : use Stepper for small step
//
// Else use HelixExplicitEuler Stepper
//
// Stepper for the small step is G4ClassicalRK4 by default, but
// it possible to choose other stepper,like G4CashKarpRK45 or G4RKG3_Stepper,
// by setting StepperNumber : new HelixMixedStepper(EqRhs,N)
//
// N=0 G4ExplicitEuler; N=1 G4ImplicitEuler;
// N=2 G4SimpleRunge; N=3 G4SimpleHeum;
// N=4 G4ClassicalRK4; N=5 G4HelixExplicitEuler;
// N=6 G4HelixExplicitEuler; N=7 G4HelixSimpleRunge;
// N=8 G4CashKarpRK45; N=9 G4ExactHelixStepper;
// N=10 G4RKG3_Stepper;
//
// History:
// Derived from ExactHelicalStepper 18/05/07
//
@@ -48,7 +60,7 @@ class G4HelixMixedStepper: public G4MagHelicalStepper
public:
G4HelixMixedStepper(G4Mag_EqRhs *EqRhs);
G4HelixMixedStepper(G4Mag_EqRhs *EqRhs,G4int fStepperNumber=0);
~G4HelixMixedStepper();
void Stepper( const G4double y[],
@@ -67,19 +79,28 @@ class G4HelixMixedStepper: public G4MagHelicalStepper
G4double yout[]);
G4double DistChord() const;
// Estimate maximum distance of curved solution and chord ...
public: // with description
inline void SetVerbose (G4int newvalue){fVerbose=newvalue;}
public: // without description
public: // without description
void PrintCalls();
G4MagIntegratorStepper* SetupStepper(G4Mag_EqRhs* EqRhs, G4int StepperName);
G4int IntegratorOrder() const { return 4; }
private:
// Mixed Integration RK4 for 'small' steps
G4MagIntegratorStepper* fRK4Stepper;
private:
// Used for DistChord Calculation
G4double fLastStepSize; // Length of last step
// Used for statistic = how many calls to different steppers
G4int fVerbose;
G4int fNumCallsRK4;
G4int fNumCallsHelix;
};
#endif /* G4HELIXMIXEDSTEPPER_HH */
@@ -25,7 +25,7 @@
//
//
// $Id: G4HelixSimpleRunge.hh,v 1.7 2006/06/29 18:22:41 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4HelixSimpleRunge
@@ -25,7 +25,7 @@
//
//
// $Id: G4ImplicitEuler.hh,v 1.8 2006/06/29 18:22:44 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4ImplicitEuler
@@ -25,7 +25,7 @@
//
//
// $Id: G4LineCurrentMagField.hh,v 1.4 2006/06/29 18:22:46 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4LineCurrentMagField
@@ -25,7 +25,7 @@
//
//
// $Id: G4LineSection.hh,v 1.9 2006/06/29 18:22:48 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4LineSection
@@ -25,7 +25,7 @@
//
//
// $Id: G4MagErrorStepper.hh,v 1.11 2006/06/29 18:22:50 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4MagErrorStepper
@@ -25,7 +25,7 @@
//
//
// $Id: G4MagErrorStepper.icc,v 1.13 2006/06/29 18:22:52 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// --------------------------------------------------------------------
@@ -24,8 +24,10 @@
// ********************************************************************
//
//
// $Id: G4MagHelicalStepper.hh,v 1.13 2007/05/18 15:45:22 tnikitin Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
// $Id: G4MagHelicalStepper.hh,v 1.15 2007/08/21 08:48:28 tnikitin Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
//
//
// class G4MagHelicalStepper
@@ -83,7 +85,7 @@ class G4MagHelicalStepper : public G4MagIntegratorStepper
void AdvanceHelix( const G4double yIn[],
G4ThreeVector Bfld,
G4double h,
G4double yHelix[]); // output
G4double yHelix[],G4double yHelix2[]=0); // output
// A first order Step along a helix inside the field.
inline void MagFieldEvaluate( const G4double y[], G4ThreeVector& Bfield );
@@ -25,7 +25,7 @@
//
//
// $Id: G4MagHelicalStepper.icc,v 1.13 2007/05/18 15:45:15 tnikitin Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Linear Step in regions of no field
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4MagIntegratorDriver.hh,v 1.20 2007/05/10 10:10:05 japost Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4MagInt_Driver
@@ -25,7 +25,7 @@
//
//
// $Id: G4MagIntegratorDriver.icc,v 1.13 2007/05/10 10:10:48 japost Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// --------------------------------------------------------------------
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4MagIntegratorStepper.hh,v 1.12 2006/09/20 09:31:01 japost Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4MagIntegratorStepper
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4MagIntegratorStepper.icc,v 1.10 2006/09/20 09:31:46 japost Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
inline
@@ -25,7 +25,7 @@
//
//
// $Id: G4Mag_EqRhs.hh,v 1.9 2006/06/29 18:23:07 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4Mag_EqRhs
@@ -25,7 +25,7 @@
//
//
// $Id: G4Mag_SpinEqRhs.hh,v 1.11 2006/06/29 18:23:09 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4Mag_SpinEqRhs
@@ -25,7 +25,7 @@
//
//
// $Id: G4Mag_UsualEqRhs.hh,v 1.7 2006/06/29 18:23:12 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
//
// class G4Mag_UsualEqRhs

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