Import Geant4 9.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 15:16:48 +02:00
parent 75c7fd177d
commit a8e9364cea
6592 changed files with 84274 additions and 69292 deletions
+23 -1
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.39 2005/11/09 14:47:39 gcosmo Exp $
$Id: History,v 1.43 2007/06/04 13:05:14 ahoward Exp $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,28 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
June 4th, 2007 A.Howard geombias-V08-03-02
- Put back some missing store and scoring classes:
G4IStore, G4VCellScorerstore, G4VCellScorer
May 31st, 2007 A.Howard geombias-V08-03-01
- Removed classes from old biasing scheme. These are now replaced by
either CoupledTransportation (parallel navigation) or in
processe/biasing. In addition the scoring is implemented with the new
scoring frame-work (digits_hits) and processes/scoring.
- The following classes are removed:
G4IStore, G4ParallelNavigator, G4ParallelStepper, G4ParallelWorld,
G4VCellScorer, G4VCellScorerStore, G4VIStore, G4VParallelStepper,
G4VPGeoDriver, G4VScorer, G4ImportanceSplitExaminer,
G4VImportanceSplitExaminer, G4VWeightWindowExaminer,
G4WeightWindowExaminer
- Classes are kept in the HEAD for testing purposes.
May 11th, 2007 G.Cosmo geombias-V08-03-00
- Use call to G4GeometryTolerance instead of kCarTolerance constant in
G4ParallelNavigator.
- Requires tag "global-V08-03-00" and related tag set.
Nov, 9th 2005 G.Cosmo geombias-V07-01-00
- Implemented migration to <sstream> for affected classes:
G4ParallelNavigator and G4ImportanceAlgorithm.
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometryCell.hh,v 1.6 2006/06/29 18:15:49 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// Class G4GeometryCell
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometryCellComp.hh,v 1.2 2006/06/29 18:15:52 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// Class G4GeometryCellComp
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometryCellImportance.hh,v 1.4 2006/06/29 18:15:54 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// Class G4GeometryCellImportance
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometryCellStep.hh,v 1.2 2006/06/29 18:15:57 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// Class G4GeometryCellStep
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometryCellStepStream.hh,v 1.3 2006/06/29 18:15:59 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// Declarations
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometryCellWeight.hh,v 1.3 2006/06/29 18:16:02 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// 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-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// Class G4IStore
@@ -25,7 +25,7 @@
//
//
// $Id: G4ImportanceAlgorithm.hh,v 1.7 2006/06/29 18:16:06 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// Class G4ImportanceAlgorithm
@@ -1,80 +0,0 @@
//
// ********************************************************************
// * 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: G4ImportanceSplitExaminer.hh,v 1.8 2006/06/29 18:16:08 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// ----------------------------------------------------------------------
// Class G4ImportanceSplitExaminer
//
// Class description:
//
// This class is used internally by importance sampling.
// Implementation of a importance split examiner
// (see G4VImportanceSplitExaminer).
// This implementation is used for sampling in a "parallel"
// geometry.
// Author: Michael Dressel (Michael.Dressel@cern.ch)
// ----------------------------------------------------------------------
#ifndef G4ImportanceSplitExaminer_hh
#define G4ImportanceSplitExaminer_hh G4ImportanceSplitExaminer_hh
#include "G4VImportanceSplitExaminer.hh"
class G4VImportanceAlgorithm;
class G4VParallelStepper;
class G4VIStore;
class G4ImportanceSplitExaminer: public G4VImportanceSplitExaminer
{
public: // with description
G4ImportanceSplitExaminer(const G4VImportanceAlgorithm &aIalg,
const G4VParallelStepper &astepper,
const G4VIStore &istore);
virtual ~G4ImportanceSplitExaminer();
virtual G4Nsplit_Weight Examine(G4double w) const;
// Get G4Nsplit_Weight for a given mother track weight.
private:
G4ImportanceSplitExaminer(const G4ImportanceSplitExaminer &);
G4ImportanceSplitExaminer &operator=(const G4ImportanceSplitExaminer &);
private:
const G4VImportanceAlgorithm &fIalgorithm;
const G4VParallelStepper &fPStepper;
const G4VIStore &fIStore;
};
#endif
@@ -25,7 +25,7 @@
//
//
// $Id: G4Nsplit_Weight.hh,v 1.11 2006/06/29 18:16:21 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// Class G4Nsplit_Weight
@@ -1,146 +0,0 @@
//
// ********************************************************************
// * 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: G4ParallelNavigator.hh,v 1.10 2006/06/29 18:16:23 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// ----------------------------------------------------------------------
// Class G4ParallelNavigator
//
// Class description:
//
// Used internaly for importance sampling and scoring in a "parallel"
// geometry.
// It implements the interface G4VPGeoDriver (see G4VPGeoDriver.hh).
// It uses a G4Navigator.
// Author: Michael Dressel (Michael.Dressel@cern.ch)
// ----------------------------------------------------------------------
#ifndef G4ParallelNavigator_hh
#define G4ParallelNavigator_hh G4ParallelNavigator_hh
#include "G4VPGeoDriver.hh"
#include "geomdefs.hh"
#include "G4TouchableHandle.hh"
#include "G4Navigator.hh"
class G4GeometryCell ;
class G4VPhysicalVolume;
class G4ParallelNavigator : public G4VPGeoDriver
{
public: // with description
explicit G4ParallelNavigator(G4VPhysicalVolume &aWorldVolume);
// initialise and create G4Navigator and a TouchableHistory
virtual ~G4ParallelNavigator();
// delete Touchable and Navigator
virtual G4GeometryCell
LocateOnBoundary(const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection);
// The location of a track according to it's position
// and direction in case the track crosses a boundary
// of a "parallel" geometry.
// Must be called in the PostDOIT of the ParallelTransportation.
// (The track crosses the boundary if PostDOIT gets called.)
virtual G4GeometryCell GetCurrentGeometryCell() const;
// get the current G4GeometryCell of the "parallel" geometry
virtual G4double
ComputeStepLengthInit(const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection);
// compute step length for a starting track.
virtual G4double
ComputeStepLengthCrossBoundary(const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection);
// compute the step length after a track crossed a boundary
// in a "parallel" geometry
virtual G4double
ComputeStepLengthInVolume(const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection);
// compute step length when track moves inside a volume.
void SetVerboseity(G4int v);
private:
G4ParallelNavigator(const G4ParallelNavigator &);
G4ParallelNavigator &operator=(const G4ParallelNavigator &);
G4double ComputeStepLengthShifted(const G4String &m,
const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection);
G4double GetStepLength(const G4String &methodname,
const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection);
G4double GetStepLengthUseLocate(const G4String &methodname,
const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection);
void Locate(const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection,
G4bool historysearch,
G4bool useDirection);
void Error(const G4String &m,
const G4ThreeVector &pos,
const G4ThreeVector &dir);
G4double Shift(G4double d);
private:
G4Navigator fNavigator;
G4int fNlocated;
G4int fMaxShiftedTrys;
G4TouchableHandle fCurrentTouchableH;
G4int fVerbose;
};
#endif
@@ -1,89 +0,0 @@
//
// ********************************************************************
// * 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: G4ParallelStepper.hh,v 1.7 2006/06/29 18:16:25 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// ----------------------------------------------------------------------
// Class G4ParallelStepper
//
// Class description:
//
// Used internally by importance sampling and scoring in a "parallel"
// geometry. (See G4VParallelStepper.hh)
// Author: Michael Dressel (Michael.Dressel@cern.ch)
// ----------------------------------------------------------------------
#ifndef G4ParallelStepper_hh
#define G4ParallelStepper_hh G4ParallelStepper_hh
#include "G4VParallelStepper.hh"
#include "G4GeometryCellStep.hh"
class G4ParallelStepper : public G4VParallelStepper
{
public: // with description
G4ParallelStepper();
// imitilisation
G4ParallelStepper(const G4ParallelStepper &);
// create new G4GeometryCellStep
virtual ~G4ParallelStepper();
// delete G4Pstep if created
virtual G4GeometryCellStep GetPStep() const;
// get the current G4GeometryCellStep
virtual void Init(const G4GeometryCell &agCell);
// initialise the parallel stepper and the G4GeometryCellStep
// pre and post G4GeometryCell of the step are set equal
virtual void Update(const G4GeometryCell &agCell);
// to be called when crossing a boundary of the
// "parallel" geometry to update the G4GeometryCellStep
virtual void UnSetCrossBoundary();
// to be called to unset the fCrossBoundary member of the G4GeometryCellStep
G4ParallelStepper &operator=(const G4ParallelStepper &);
// create new G4GeometryCellStep
private:
void Error(const G4String &m);
private:
G4GeometryCellStep *fPStep;
};
#endif
@@ -1,82 +0,0 @@
//
// ********************************************************************
// * 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: G4ParallelWorld.hh,v 1.7 2006/06/29 18:16:27 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// ----------------------------------------------------------------------
// Class G4ParallelWorld
//
// Class description:
//
// Used internally by importance samplin and scoring in a "parallel"
// geometry.
// The class relates the world volume (G4VPhysicalVolume),
// G4VGeoDriver and G4VParallelStepper for one "parallel"
// geometry.
// Author: Michael Dressel (Michael.Dressel@cern.ch)
// ----------------------------------------------------------------------
#ifndef G4ParallelWorld_hh
#define G4ParallelWorld_hh G4ParallelWorld_hh
#include "globals.hh"
class G4VPhysicalVolume;
class G4VParallelStepper;
class G4VPGeoDriver;
class G4ParallelWorld
{
public: // with description
explicit G4ParallelWorld(G4VPhysicalVolume &worldvolume);
// initialisation and create G4ParallelStepper and a G4VPGeoDriver
~G4ParallelWorld();
// delete G4ParallelStepper and a G4VPGeoDriver
G4VParallelStepper &GetParallelStepper();
// get the parallel stepper
G4VPGeoDriver &GetGeoDriver();
// get the G4VPGeoDriver
private:
G4ParallelWorld(const G4ParallelWorld &rhs);
// create G4ParallelStepper and a G4VPGeoDriver
G4ParallelWorld &operator=(const G4ParallelWorld &rhs);
// create G4ParallelStepper and a G4VPGeoDriver
G4VParallelStepper *fPstepper;
G4VPGeoDriver *fPdriver;
};
#endif
@@ -25,7 +25,7 @@
//
//
// $Id: G4VCellScorer.hh,v 1.7 2006/06/29 18:16:29 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// Class G4VCellScorer
@@ -25,7 +25,7 @@
//
//
// $Id: G4VCellScorerStore.hh,v 1.7 2006/06/29 18:16:32 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// Class G4VCellScorerStore
@@ -25,7 +25,7 @@
//
//
// $Id: G4VGCellFinder.hh,v 1.2 2006/06/29 18:16:34 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// 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-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// Class G4VIStore
@@ -25,7 +25,7 @@
//
//
// $Id: G4VImportanceAlgorithm.hh,v 1.8 2006/06/29 18:16:40 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// Class G4VImportanceAlgorithm
@@ -25,7 +25,7 @@
//
//
// $Id: G4VImportanceSplitExaminer.hh,v 1.5 2006/06/29 18:16:42 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// Class G4VImportanceSplitExaminer
@@ -1,85 +0,0 @@
//
// ********************************************************************
// * 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: G4VPGeoDriver.hh,v 1.7 2006/06/29 18:16:45 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// ----------------------------------------------------------------------
// Class G4VPGeoDriver
//
// Class description:
//
// Used internally by importance sampling and scoring in a "parallel"
// geometry.
// It defines an interface to "drive" or "move" a particle in a
// "parallel" geometry.
// Author: Michael Dressel (Michael.Dressel@cern.ch)
// ----------------------------------------------------------------------
#ifndef G4VPGeoDriver_hh
#define G4VPGeoDriver_hh G4VPGeoDriver_hh
#include "globals.hh"
#include "G4ThreeVector.hh"
#include "G4GeometryCell.hh"
class G4VPhysicalVolume;
class G4VPGeoDriver
{
public: // with description
G4VPGeoDriver();
virtual ~G4VPGeoDriver();
virtual G4GeometryCell LocateOnBoundary(const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection) = 0;
// The location of a track according to it's position
// and direction in case the track crosses a boundary
// of a "parallel" geometry.
// Must be called in the PostDOIT of the ParallelTransportation.
// (The track crosses the boundary if PostDOIT gets called.)
virtual G4GeometryCell GetCurrentGeometryCell() const = 0;
// get the current G4GeometryCell of the "parallel" geometry
virtual G4double ComputeStepLengthInit(const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection) = 0;
// compute step length for a starting track.
virtual G4double ComputeStepLengthCrossBoundary(const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection) = 0;
// compute the step length after a track crossed a boundary
// in a "parallel" geometry
virtual G4double ComputeStepLengthInVolume(const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection) = 0;
// compute step length when track moves inside a volume.
};
#endif
@@ -1,73 +0,0 @@
//
// ********************************************************************
// * 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: G4VParallelStepper.hh,v 1.8 2006/06/29 18:16:47 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// ----------------------------------------------------------------------
// Class G4VParallelStepper
//
// Class description:
//
// This interface is used internally by importance sampling and scoring
// in a "parallel" geometry.
// It abstracts a parallel stepper which servs to comunicate
// information about a G4GeometryCellStep between the "transportation"
// (done by G4ParallelTransport) of a track in a "parallel" geometry
// and a scorer for that geometry.
// Author: Michael Dressel (Michael.Dressel@cern.ch)
// ----------------------------------------------------------------------
#ifndef G4VParallelStepper_hh
#define G4VParallelStepper_hh G4VParallelStepper_hh
#include "G4GeometryCellStep.hh"
class G4VParallelStepper
{
public: // with description
G4VParallelStepper();
virtual ~G4VParallelStepper();
virtual G4GeometryCellStep GetPStep() const = 0;
// get the current G4GeometryCellStep
virtual void Init(const G4GeometryCell &agCell) = 0;
// initialise the parallel stepper and the G4GeometryCellStep
// pre and post G4GeometryCell of the step are set equal
virtual void Update(const G4GeometryCell &agCell) = 0;
// to be called when crossing a boundary of the
// "parallel" geometry to update the G4GeometryCellStep
virtual void UnSetCrossBoundary() = 0;
// to be called to unset the fCrossBoundary member of the G4GeometryCellStep
};
#endif
@@ -1,64 +0,0 @@
//
// ********************************************************************
// * 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: G4VScorer.hh,v 1.2 2006/06/29 18:16:50 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// ----------------------------------------------------------------------
// Class G4VScorer
//
// Class description:
//
// This interface is known by scoring. Implementation of
// scorers should inherit from it.
// A scorer is applicable to a particle type.
// The scorer (inheriting from this interface) is informed
// about every step of a particle of the applicable type.
// The information consists of the G4Step and the G4GeometryCellStep
// (see G4GeometryCellStep.hh).
// Author: Michael Dressel (Michael.Dressel@cern.ch)
// ----------------------------------------------------------------------
#ifndef G4VScorer_hh
#define G4VScorer_hh G4VScorer_hh
class G4Step;
class G4GeometryCellStep;
class G4VScorer
{
public: // with description
G4VScorer();
virtual ~G4VScorer();
virtual void Score(const G4Step &step, const G4GeometryCellStep &gstep) = 0;
// perform scoring for the G4Step and G4GeometryCellStep
};
#endif
@@ -25,7 +25,7 @@
//
//
// $Id: G4VWeightWindowAlgorithm.hh,v 1.8 2006/06/29 18:16:52 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// Class G4VWeightWindowAlgorithm
@@ -1,64 +0,0 @@
//
// ********************************************************************
// * 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: G4VWeightWindowExaminer.hh,v 1.3 2006/06/29 18:16:54 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// ----------------------------------------------------------------------
// Class G4VWeightWindowExaminer
//
// Class description:
//
// Interface class to a weight window examiner. The examiner
// has to return the number of tracks and their weight according to
// the initial track weight and the energy of the track.
// Author: Michael Dressel (Michael.Dressel@cern.ch)
// ----------------------------------------------------------------------
#ifndef G4VWeightWindowExaminer_hh
#define G4VWeightWindowExaminer_hh G4VWeightWindowExaminer_hh
#include "globals.hh"
#include "G4Nsplit_Weight.hh"
class G4VWeightWindowExaminer
{
public: // with description
// constructor and destructor
G4VWeightWindowExaminer();
virtual ~G4VWeightWindowExaminer();
virtual G4Nsplit_Weight Examine(G4double w, G4double energy) const = 0;
// evaluate the number of tracks and their weight according
// to the initial track weight and energy
};
#endif
@@ -25,7 +25,7 @@
//
//
// $Id: G4VWeightWindowStore.hh,v 1.3 2006/06/29 18:16:57 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// Class G4VWeightWindowStore
@@ -25,7 +25,7 @@
//
//
// $Id: G4WeightWindowAlgorithm.hh,v 1.7 2006/06/29 18:16:59 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// Class G4WeightWindowAlgorithm
@@ -1,82 +0,0 @@
//
// ********************************************************************
// * 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: G4WeightWindowExaminer.hh,v 1.3 2006/06/29 18:17:02 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// ----------------------------------------------------------------------
// Class G4WeightWindowExaminer
//
// Class description:
//
// Implementation of an weight window examiner according to
// G4VWeightWindowExaminer interface.
// See also description in G4VWeightWindowExaminer.hh
// Author: Michael Dressel (Michael.Dressel@cern.ch)
// ----------------------------------------------------------------------
#ifndef G4WeightWindowExaminer_hh
#define G4WeightWindowExaminer_hh G4WeightWindowExaminer_hh
#include "G4VWeightWindowExaminer.hh"
class G4VWeightWindowAlgorithm;
class G4VParallelStepper;
class G4VWeightWindowStore;
class G4WeightWindowExaminer: public G4VWeightWindowExaminer
{
public: // with description
G4WeightWindowExaminer(const G4VWeightWindowAlgorithm &aWWalg,
const G4VParallelStepper &astepper,
const G4VWeightWindowStore &wwstore);
// constructor
virtual ~G4WeightWindowExaminer();
// destructor
virtual G4Nsplit_Weight Examine(G4double w, G4double energy) const;
// evaluate the number of tracks and their weight according
// to the initial track weight and energy
private:
G4WeightWindowExaminer(const G4WeightWindowExaminer &);
G4WeightWindowExaminer &operator=(const G4WeightWindowExaminer &);
private:
const G4VWeightWindowAlgorithm &fWWalgorithm;
const G4VParallelStepper &fPStepper;
const G4VWeightWindowStore &fWWStore;
};
#endif
@@ -25,7 +25,7 @@
//
//
// $Id: G4WeightWindowStore.hh,v 1.3 2006/06/29 18:17:05 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// Class G4WeightWindowStore
@@ -25,7 +25,7 @@
//
//
// $Id: G4GeometryCell.cc,v 1.6 2006/06/29 18:17:07 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// 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-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// 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-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// 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-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// 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-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// 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-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// 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-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -1,63 +0,0 @@
//
// ********************************************************************
// * 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: G4ImportanceSplitExaminer.cc,v 1.8 2006/06/29 18:17:22 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
//
// G4ImportanceSplitExaminer.cc
//
// ----------------------------------------------------------------------
#include "G4ImportanceSplitExaminer.hh"
#include "G4VParallelStepper.hh"
#include "G4VImportanceAlgorithm.hh"
#include "G4VIStore.hh"
G4ImportanceSplitExaminer::
G4ImportanceSplitExaminer(const G4VImportanceAlgorithm &aIalg,
const G4VParallelStepper &astepper,
const G4VIStore &istore)
: fIalgorithm(aIalg),
fPStepper(astepper),
fIStore(istore)
{}
G4ImportanceSplitExaminer::~G4ImportanceSplitExaminer()
{}
G4Nsplit_Weight G4ImportanceSplitExaminer::Examine(G4double w) const
{
G4GeometryCellStep pstep = fPStepper.GetPStep();
G4Nsplit_Weight nw = fIalgorithm.
Calculate(fIStore.GetImportance(pstep.GetPreGeometryCell()),
fIStore.GetImportance(pstep.GetPostGeometryCell()),
w);
return nw;
}
@@ -25,7 +25,7 @@
//
//
// $Id: G4Nsplit_Weight.cc,v 1.10 2006/06/29 18:17:25 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -1,282 +0,0 @@
//
// ********************************************************************
// * 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: G4ParallelNavigator.cc,v 1.20 2006/06/29 18:17:27 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
//
// G4ParallelNavigator.cc
//
// ----------------------------------------------------------------------
#include "G4ParallelNavigator.hh"
#include <sstream>
#include "G4VParallelStepper.hh"
G4ParallelNavigator::G4ParallelNavigator(G4VPhysicalVolume &aWorldVolume)
:
fNlocated(0),
fMaxShiftedTrys(10),
fCurrentTouchableH((fNavigator.SetWorldVolume(&aWorldVolume),
fNavigator.CreateTouchableHistory())),
fVerbose(0)
{}
G4ParallelNavigator::~G4ParallelNavigator()
{
}
// public functions
G4GeometryCell G4ParallelNavigator::
LocateOnBoundary(const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection)
{/*
fNavigator->SetGeometricallyLimitedStep();
fNavigator->
LocateGlobalPointAndUpdateTouchableHandle( aPosition,
aDirection,
fCurrentTouchableH,
true);
fNlocated++;
*/
if (fVerbose>=2) {
G4cout.precision(12);
G4cout << "LOB: " << aPosition << ", " << aDirection << G4endl;
}
fNavigator.SetGeometricallyLimitedStep();
Locate(aPosition, aDirection, true, false);
// since the track crosses a boundary ipdate stepper
G4GeometryCell g= GetCurrentGeometryCell();
return g;
}
G4double G4ParallelNavigator::
ComputeStepLengthInit(const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection)
{
// initialization
fNlocated = 0;
if (fVerbose>=2) {
G4cout.precision(12);
G4cout << "CSInit: " << aPosition << ", " << aDirection << G4endl;
}
Locate(aPosition, aDirection, false, false);
return GetStepLength("ComputeStepLengthInit",
aPosition, aDirection);
}
G4double G4ParallelNavigator::
ComputeStepLengthCrossBoundary(const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection)
{
if (fNlocated == 0 ) {
Error("ComputeStepLengthCrossBoundary: no location done before call",
aPosition, aDirection);
}
if (fVerbose>=2) {
G4cout.precision(12);
G4cout << "CSCB: " << aPosition << ", " << aDirection << G4endl;
}
// if the track is on boundary the LocateOnBoundary was called
// in the DOIT of the ParalleTransport
// but location in volume overcomes a problem with spheres
// fNavigator->LocateGlobalPointWithinVolume(aPosition);
return GetStepLength("ComputeStepLengthCrossBoundary",
aPosition, aDirection);
}
G4double G4ParallelNavigator::
ComputeStepLengthInVolume(const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection)
{
if (fNlocated == 0 ) {
Error("ComputeStepLengthInVolume, no location done before call",
aPosition, aDirection);
}
if (fVerbose>=2) {
G4cout.precision(12);
G4cout << "CSinV: " << aPosition << ", " << aDirection << G4endl;
}
// if the track is not on the boundary and it's
// not the first step, the location must be inside the
// volume
fNavigator.LocateGlobalPointWithinVolume(aPosition);
// Locate(aPosition, aDirection, true); // reduces stepLength<=0. calls
return GetStepLengthUseLocate("ComputeStepLengthInVolume",
aPosition, aDirection);
}
// private functions
void G4ParallelNavigator::Locate(const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection,
G4bool historysearch,
G4bool useDirection)
{
if (fVerbose>=2) {
G4cout.precision(12);
G4cout << "Locate: " << aPosition << ", " << aDirection << G4endl;
}
fNavigator.LocateGlobalPointAndSetup( aPosition,
&aDirection,
historysearch,
!useDirection);
fCurrentTouchableH = fNavigator.CreateTouchableHistory();
fNlocated++;
return;
}
G4double G4ParallelNavigator::
GetStepLength(const G4String &methodname,
const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection) {
if (fVerbose>=2) {
G4cout.precision(12);
G4cout << "GetSL: " << aPosition << ", " << aDirection << G4endl;
}
G4double newSafety = 0.;
G4double stepLength = fNavigator.ComputeStep( aPosition,
aDirection,
kInfinity,
newSafety);
// if stepLength = 0 try shifting
if (stepLength<=2*kCarTolerance) {
stepLength =
ComputeStepLengthShifted(methodname,
aPosition, aDirection);
}
return stepLength;
}
G4double G4ParallelNavigator::
GetStepLengthUseLocate(const G4String &methodname,
const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection) {
if (fVerbose>=2) {
G4cout.precision(12);
G4cout << "GetSLuseLocate: " << aPosition << ", " << aDirection << G4endl;
}
G4double newSafety = 0;
G4double stepLength = fNavigator.ComputeStep( aPosition, aDirection,
kInfinity, newSafety);
// if stepLength = 0 try locate
if (stepLength<=2*kCarTolerance) {
Locate(aPosition, aDirection, true, true);
stepLength = GetStepLength(methodname +
"form GetStepLengthUseLocate",
aPosition,
aDirection);
}
return stepLength;
}
G4double
G4ParallelNavigator::
ComputeStepLengthShifted(const G4String &m,
const G4ThreeVector &aPosition,
const G4ThreeVector &aDirection)
{
G4ThreeVector shift_pos(aPosition);
G4double stepLength = 0.;
G4int trys = 0;
while (stepLength<=2*kCarTolerance && trys < fMaxShiftedTrys) {
shift_pos+=G4ThreeVector(Shift(aDirection.x()),
Shift(aDirection.y()),
Shift(aDirection.z()));
if (fVerbose>=1 || trys >= fMaxShiftedTrys - 1) {
G4cout << "G4ParallelNavigator::ComputeStepLengthShifted: invoked by: "
<< m << G4endl;
G4cout << " trys = "
<< ++trys << G4endl;
G4cout.precision(12);
G4cout << " shifted position: " << shift_pos
<< ", direction: " << aDirection << G4endl;
}
fNavigator.SetGeometricallyLimitedStep();
Locate(shift_pos, aDirection, true, false); // to get into the correct volume
G4double newSafety = 0;
fNavigator.LocateGlobalPointWithinVolume(aPosition); // to place at the correct position
stepLength = fNavigator.ComputeStep( aPosition, aDirection,
kInfinity, newSafety);
}
if (stepLength<=kCarTolerance) {
std::ostringstream os;
os << "still got stepLength<=kCarTolerance: "
<< shift_pos
<< "\n"
<< '\0';
G4String m = os.str();
Error(m, aPosition, aDirection);
}
return stepLength;
}
G4GeometryCell G4ParallelNavigator::GetCurrentGeometryCell() const
{
return G4GeometryCell(*fCurrentTouchableH->GetVolume(),
fCurrentTouchableH->GetReplicaNumber());
}
void G4ParallelNavigator::SetVerboseity(G4int v) {
fVerbose = v;
}
void G4ParallelNavigator::Error(const G4String &m,
const G4ThreeVector &pos,
const G4ThreeVector &dir)
{
G4cerr << "ERROR - G4ParallelNavigator: " << m << G4endl
<< " aPosition: " << pos << G4endl
<< " dir: " << dir << G4endl;
G4Exception("G4ParallelNavigator::Error()",
"FatalException", FatalException, m);
}
G4double G4ParallelNavigator::Shift(G4double d)
{
G4double s(0);
G4double ds(10 * kCarTolerance);
if (d>0){
s = ds;
}
else if (d<0) {
s = -1 * ds;
}
return s;
}
@@ -1,116 +0,0 @@
//
// ********************************************************************
// * 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: G4ParallelStepper.cc,v 1.12 2006/06/29 18:17:30 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
//
// G4ParallelStepper.cc
//
// ----------------------------------------------------------------------
#include "G4ParallelStepper.hh"
#include "G4VPhysicalVolume.hh"
G4ParallelStepper::G4ParallelStepper() :
G4VParallelStepper(),
fPStep(0)
{}
G4ParallelStepper::~G4ParallelStepper()
{
if (fPStep) {
delete fPStep;
}
}
G4ParallelStepper::G4ParallelStepper(const G4ParallelStepper &rhs)
: G4VParallelStepper(), fPStep(new G4GeometryCellStep(rhs.GetPStep()))
{
if (!fPStep) {
Error("G4ParallelStepper:: new failed to create a G4GeometryCellStep!");
}
}
G4ParallelStepper &G4ParallelStepper::operator=(const G4ParallelStepper &rhs)
{
if (this != &rhs) {
fPStep = new G4GeometryCellStep(rhs.GetPStep());
if (!fPStep) {
Error("operator=: new failed to create a G4GeometryCellStep!");
}
}
return *this;
}
G4GeometryCellStep G4ParallelStepper::GetPStep() const {
G4GeometryCellStep p = *fPStep;
return p;
}
void G4ParallelStepper::Init(const G4GeometryCell &agCell)
{
if (!fPStep) {
fPStep = new G4GeometryCellStep(agCell, agCell);
if (!fPStep) {
Error("Init new failed to create a G4GeometryCellStep!");
}
}
else {
fPStep->SetPreGeometryCell(agCell);
fPStep->SetPostGeometryCell(agCell);
fPStep->SetCrossBoundary(false);
}
}
void G4ParallelStepper::Update(const G4GeometryCell &agCell)
{
if (!fPStep) {
Error("fPStep == 0, Init not called?");
}
fPStep->SetPreGeometryCell(fPStep->GetPostGeometryCell());
fPStep->SetPostGeometryCell(agCell);
fPStep->SetCrossBoundary(true);
}
void G4ParallelStepper::UnSetCrossBoundary()
{
if (!fPStep) {
Error("fPStep == 0, Init not called?");
}
fPStep->SetCrossBoundary(false);
}
void G4ParallelStepper::Error(const G4String &m)
{
G4cout << "ERROR: in G4ParallelStepper: " << m << G4endl;
G4Exception("G4ParallelStepper::Error()",
"FatalException", FatalException, m);
}
@@ -1,70 +0,0 @@
//
// ********************************************************************
// * 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: G4ParallelWorld.cc,v 1.8 2006/06/29 18:17:33 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
//
// G4ParallelWorld.cc
//
// ----------------------------------------------------------------------
#include "G4ParallelWorld.hh"
#include "G4ParallelStepper.hh"
#include "G4ParallelNavigator.hh"
#include "G4VPhysicalVolume.hh"
G4ParallelWorld::G4ParallelWorld(G4VPhysicalVolume &worldvolume)
: fPstepper(new G4ParallelStepper),
fPdriver(new G4ParallelNavigator(worldvolume))
{
if (!fPstepper) {
G4Exception("G4ParallelWorld::G4ParallelWorld()", "FatalException",
FatalException, "NULL stepper. Failure in creation.");
}
if (!fPdriver) {
G4Exception("G4ParallelWorld::G4ParallelWorld()", "FatalException",
FatalException, "NULL navigator driver. Failure in creation.");
}
}
G4ParallelWorld::~G4ParallelWorld()
{
delete fPdriver;
delete fPstepper;
}
G4VParallelStepper &G4ParallelWorld::GetParallelStepper()
{
return *fPstepper;
}
G4VPGeoDriver &G4ParallelWorld::GetGeoDriver()
{
return *fPdriver;
}
+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-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// 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-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// 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-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// 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-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// 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-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// 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-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -1,44 +0,0 @@
//
// ********************************************************************
// * 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: G4VPGeoDriver.cc,v 1.2 2006/06/29 18:17:48 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
//
// G4VPGeoDriver.cc
//
// ----------------------------------------------------------------------
#include "G4VPGeoDriver.hh"
G4VPGeoDriver::G4VPGeoDriver()
{}
G4VPGeoDriver::~G4VPGeoDriver()
{}
@@ -1,43 +0,0 @@
//
// ********************************************************************
// * 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: G4VParallelStepper.cc,v 1.2 2006/06/29 18:17:50 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
//
// G4VParallelStepper.cc
//
// ----------------------------------------------------------------------
#include "G4VParallelStepper.hh"
G4VParallelStepper::G4VParallelStepper()
{}
G4VParallelStepper::~G4VParallelStepper()
{}
-45
View File
@@ -1,45 +0,0 @@
//
// ********************************************************************
// * 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: G4VScorer.cc,v 1.2 2006/06/29 18:17:52 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
//
// G4VScorer.cc
//
// ----------------------------------------------------------------------
#include "G4VScorer.hh"
G4VScorer::G4VScorer()
{}
G4VScorer::~G4VScorer()
{}
@@ -25,7 +25,7 @@
//
//
// $Id: G4VWeightWindowAlgorithm.cc,v 1.2 2006/06/29 18:17:54 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -1,43 +0,0 @@
//
// ********************************************************************
// * 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: G4VWeightWindowExaminer.cc,v 1.2 2006/06/29 18:17:56 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
//
// G4VWeightWindowExaminer.cc
//
// ----------------------------------------------------------------------
#include "G4VWeightWindowExaminer.hh"
G4VWeightWindowExaminer::G4VWeightWindowExaminer()
{}
G4VWeightWindowExaminer::~G4VWeightWindowExaminer()
{}
@@ -25,7 +25,7 @@
//
//
// $Id: G4VWeightWindowStore.cc,v 1.3 2006/06/29 18:17:59 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -25,7 +25,7 @@
//
//
// $Id: G4WeightWindowAlgorithm.cc,v 1.8 2006/06/29 18:18:01 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
@@ -1,66 +0,0 @@
//
// ********************************************************************
// * 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: G4WeightWindowExaminer.cc,v 1.2 2006/06/29 18:18:03 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file
//
// G4WeightWindowExaminer.cc
//
// ----------------------------------------------------------------------
#include "G4WeightWindowExaminer.hh"
#include "G4VParallelStepper.hh"
#include "G4VWeightWindowAlgorithm.hh"
#include "G4GeometryCellStep.hh"
#include "G4VWeightWindowStore.hh"
G4WeightWindowExaminer::
G4WeightWindowExaminer(const G4VWeightWindowAlgorithm &aWWalg,
const G4VParallelStepper &astepper,
const G4VWeightWindowStore &wwstore)
: fWWalgorithm(aWWalg),
fPStepper(astepper),
fWWStore(wwstore)
{}
G4WeightWindowExaminer::~G4WeightWindowExaminer()
{}
G4Nsplit_Weight G4WeightWindowExaminer::Examine(G4double w,
G4double energy) const
{
G4GeometryCellStep pstep = fPStepper.GetPStep();
G4Nsplit_Weight nw = fWWalgorithm.
Calculate(w, fWWStore.GetLowerWeitgh(pstep.GetPostGeometryCell(),
energy));
return nw;
}
@@ -25,7 +25,7 @@
//
//
// $Id: G4WeightWindowStore.cc,v 1.5 2006/06/29 18:18:05 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// GEANT4 tag $Name: geant4-09-00 $
//
// ----------------------------------------------------------------------
// GEANT 4 class source file