Import Geant4 9.0.0 source tree
This commit is contained in:
@@ -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: G4GCellFinder.hh,v 1.1 2006/11/20 10:02:05 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
// Class G4ParallelGCellFinder
|
||||
//
|
||||
// Class description:
|
||||
//
|
||||
// Finds a G4GeometryCell in the mass geometry.
|
||||
|
||||
// Author: Michael Dressel (Michael.Dressel@cern.ch)
|
||||
// ----------------------------------------------------------------------
|
||||
#ifndef G4GCellFinder_hh
|
||||
#define G4GCellFinder_hh G4GCellFinder_hh
|
||||
|
||||
class G4Navigator;
|
||||
class G4TransportationManager;
|
||||
class G4PathFinder;
|
||||
class G4VTouchable;
|
||||
class G4VPhysicalVolume;
|
||||
|
||||
|
||||
#include "G4Types.hh"
|
||||
#include "G4VGCellFinder.hh"
|
||||
|
||||
class G4GCellFinder : public G4VGCellFinder
|
||||
{
|
||||
|
||||
public: // with description
|
||||
|
||||
// G4GCellFinder(G4VPhysicalVolume &worldvolume);
|
||||
G4GCellFinder();
|
||||
virtual ~G4GCellFinder();
|
||||
|
||||
virtual G4GeometryCell
|
||||
GetPreGeometryCell(const G4Step &aStep) const;
|
||||
virtual G4GeometryCell
|
||||
GetPostGeometryCell(const G4Step &aStep) const;
|
||||
|
||||
private:
|
||||
|
||||
// G4Navigator* fGhostNavigator;
|
||||
// G4TouchableHandle fGhostTouchable;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,107 +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: G4GeometrySampler.hh,v 1.1 2006/11/20 10:02:05 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
// Class G4GeometrySampler
|
||||
//
|
||||
// Class description:
|
||||
// This class inherits from G4VSampler. It is used for scoring and
|
||||
// importance sampling in the tracking (mass) geometry.
|
||||
// See also the description in G4VSampler.hh.
|
||||
|
||||
// Author: Michael Dressel (Michael.Dressel@cern.ch)
|
||||
// ----------------------------------------------------------------------
|
||||
#ifndef G4GeometrySampler_hh
|
||||
#define G4GeometrySampler_hh G4GeometrySampler_hh
|
||||
|
||||
#include "G4Types.hh"
|
||||
#include "G4String.hh"
|
||||
#include "G4VSampler.hh"
|
||||
#include "G4VSamplerConfigurator.hh"
|
||||
|
||||
class G4ImportanceConfigurator;
|
||||
class G4WeightWindowConfigurator;
|
||||
class G4ScoreConfigurator;
|
||||
class G4NewWeightCutOffConfigurator;
|
||||
class G4VGCellFinder;
|
||||
|
||||
class G4GeometrySampler : public G4VSampler
|
||||
{
|
||||
|
||||
public: // with description
|
||||
|
||||
explicit G4GeometrySampler(G4VPhysicalVolume *worldvolume, const G4String &particlename);
|
||||
virtual ~G4GeometrySampler();
|
||||
|
||||
virtual void PrepareScoring(G4VScorer *Scorer);
|
||||
virtual void PrepareImportanceSampling(G4VIStore *istore,
|
||||
const G4VImportanceAlgorithm
|
||||
*ialg);
|
||||
virtual void PrepareWeightRoulett(G4double wsurvive,
|
||||
G4double wlimit,
|
||||
G4double isource);
|
||||
|
||||
virtual void PrepareWeightWindow(G4VWeightWindowStore *wwstore,
|
||||
G4VWeightWindowAlgorithm *wwAlg,
|
||||
G4PlaceOfAction placeOfAction);
|
||||
|
||||
virtual void Configure();
|
||||
|
||||
virtual void ClearSampling();
|
||||
virtual G4bool IsConfigured() const;
|
||||
|
||||
void SetParallel(G4bool paraflag);
|
||||
void SetParticle(const G4String &particlename);
|
||||
|
||||
private:
|
||||
|
||||
G4GeometrySampler(const G4GeometrySampler &);
|
||||
G4GeometrySampler &
|
||||
operator=(const G4GeometrySampler &);
|
||||
|
||||
private:
|
||||
|
||||
G4String fParticleName;
|
||||
G4VPhysicalVolume* fWorld;
|
||||
G4ImportanceConfigurator *fImportanceConfigurator;
|
||||
G4ScoreConfigurator *fScoreConfigurator;
|
||||
G4VGCellFinder *fGCellFinder;
|
||||
G4NewWeightCutOffConfigurator *fNewWeightCutOffConfigurator;
|
||||
G4VIStore *fIStore;
|
||||
G4WeightWindowConfigurator *fWeightWindowConfigurator;
|
||||
G4VWeightWindowStore *fWWStore;
|
||||
G4bool fIsConfigured;
|
||||
G4Configurators fConfigurators;
|
||||
|
||||
G4bool paraflag;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,87 +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: G4ImportanceConfigurator.hh,v 1.1 2006/11/20 10:02:05 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
// Class G4ImportanceConfigurator
|
||||
//
|
||||
// Class description:
|
||||
// This class builds and places the G4ImportanceProcess.
|
||||
// If the object is deleted the process is removed from the
|
||||
// process list.
|
||||
|
||||
// Author: Michael Dressel (Michael.Dressel@cern.ch)
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
#ifndef G4ImportanceConfigurator_hh
|
||||
#define G4ImportanceConfigurator_hh G4ImportanceConfigurator_hh
|
||||
|
||||
#include "G4Types.hh"
|
||||
#include "G4NewProcessPlacer.hh"
|
||||
#include "G4VSamplerConfigurator.hh"
|
||||
|
||||
class G4ImportanceProcess;
|
||||
class G4VImportanceAlgorithm;
|
||||
class G4VIStore;
|
||||
class G4VPhysicalVolume;
|
||||
|
||||
class G4ImportanceConfigurator : public G4VSamplerConfigurator
|
||||
{
|
||||
|
||||
public: // with description
|
||||
|
||||
G4ImportanceConfigurator(G4VPhysicalVolume* worldvolume,
|
||||
const G4String &particlename,
|
||||
G4VIStore &istore,
|
||||
const G4VImportanceAlgorithm *ialg,
|
||||
G4bool paraflag);
|
||||
|
||||
virtual ~G4ImportanceConfigurator();
|
||||
virtual void Configure(G4VSamplerConfigurator *preConf);
|
||||
virtual const G4VTrackTerminator *GetTrackTerminator() const;
|
||||
|
||||
private:
|
||||
|
||||
G4ImportanceConfigurator(const G4ImportanceConfigurator &);
|
||||
G4ImportanceConfigurator &
|
||||
operator=(const G4ImportanceConfigurator &);
|
||||
|
||||
G4VPhysicalVolume* fWorld;
|
||||
G4NewProcessPlacer fPlacer;
|
||||
G4VIStore &fIStore;
|
||||
G4bool fDeleteIalg;
|
||||
const G4VImportanceAlgorithm *fIalgorithm;
|
||||
G4ImportanceProcess *fImportanceProcess;
|
||||
|
||||
|
||||
G4bool paraflag;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,164 +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: G4ImportanceProcess.hh,v 1.1 2006/11/20 10:02:05 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
// Class G4ImportanceProcess
|
||||
//
|
||||
// Class description:
|
||||
//
|
||||
// Used internally by importance sampling in the "mass" geometry.
|
||||
// This process is a forced post step process. I will apply
|
||||
// importance sampling if the particle crosses a boundary in the
|
||||
// "mass" geometry.
|
||||
|
||||
// Author: Michael Dressel (Michael.Dressel@cern.ch)
|
||||
// ----------------------------------------------------------------------
|
||||
#ifndef G4ImportanceProcess_hh
|
||||
#define G4ImportanceProcess_hh G4ImportanceProcess_hh
|
||||
|
||||
#include "G4VProcess.hh"
|
||||
#include "G4VTrackTerminator.hh"
|
||||
|
||||
class G4SamplingPostStepAction;
|
||||
class G4VImportanceAlgorithm;
|
||||
class G4VIStore;
|
||||
|
||||
class G4Step;
|
||||
class G4Navigator;
|
||||
class G4TransportationManager;
|
||||
class G4PathFinder;
|
||||
class G4VTouchable;
|
||||
|
||||
#include "G4FieldTrack.hh"
|
||||
#include "G4TouchableHandle.hh"
|
||||
|
||||
|
||||
class G4ImportanceProcess : public G4VProcess, public G4VTrackTerminator
|
||||
{
|
||||
|
||||
public: // with description
|
||||
|
||||
G4ImportanceProcess(const G4VImportanceAlgorithm &aImportanceAlgorithm,
|
||||
const G4VIStore &aIstore,
|
||||
const G4VTrackTerminator *TrackTerminator,
|
||||
const G4String &aName = "ImportanceProcess", G4bool para = false);
|
||||
// creates a G4ParticleChange
|
||||
|
||||
virtual ~G4ImportanceProcess();
|
||||
// delete the G4ParticleChange
|
||||
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Set Paralle World
|
||||
//--------------------------------------------------------------
|
||||
|
||||
void SetParallelWorld(G4String parallelWorldName);
|
||||
void SetParallelWorld(G4VPhysicalVolume* parallelWorld);
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Process interface
|
||||
//--------------------------------------------------------------
|
||||
|
||||
void StartTracking(G4Track*);
|
||||
|
||||
|
||||
virtual G4double
|
||||
PostStepGetPhysicalInteractionLength(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
// make process beeing forced
|
||||
virtual G4VParticleChange *PostStepDoIt(const G4Track&, const G4Step&);
|
||||
// manage the importance sampling in the "mass" geometry
|
||||
|
||||
virtual void KillTrack() const;
|
||||
// used in case no scoring process follows that does the killing
|
||||
|
||||
virtual const G4String &GetName() const;
|
||||
|
||||
|
||||
public: // without description
|
||||
|
||||
// no operation in AtRestDoIt and AlongStepDoIt
|
||||
|
||||
virtual G4double
|
||||
AlongStepGetPhysicalInteractionLength(const G4Track&,
|
||||
G4double ,
|
||||
G4double ,
|
||||
G4double& ,
|
||||
G4GPILSelection*);
|
||||
virtual G4double
|
||||
AtRestGetPhysicalInteractionLength(const G4Track& ,
|
||||
G4ForceCondition*);
|
||||
|
||||
virtual G4VParticleChange*
|
||||
AtRestDoIt(const G4Track&, const G4Step&);
|
||||
|
||||
|
||||
virtual G4VParticleChange*
|
||||
AlongStepDoIt(const G4Track&, const G4Step&);
|
||||
|
||||
private:
|
||||
|
||||
G4ImportanceProcess(const G4ImportanceProcess &);
|
||||
G4ImportanceProcess &operator=(const G4ImportanceProcess &);
|
||||
|
||||
private:
|
||||
|
||||
void CopyStep(const G4Step & step);
|
||||
|
||||
G4Step * fGhostStep;
|
||||
G4StepPoint * fGhostPreStepPoint;
|
||||
G4StepPoint * fGhostPostStepPoint;
|
||||
|
||||
G4ParticleChange *fParticleChange;
|
||||
const G4VImportanceAlgorithm &fImportanceAlgorithm;
|
||||
const G4VIStore &fIStore;
|
||||
G4SamplingPostStepAction *fPostStepAction;
|
||||
|
||||
G4TransportationManager* fTransportationManager;
|
||||
G4PathFinder* fPathFinder;
|
||||
|
||||
// -------------------------------
|
||||
// Navigation in the Ghost World:
|
||||
// -------------------------------
|
||||
G4String fGhostWorldName;
|
||||
G4VPhysicalVolume* fGhostWorld;
|
||||
G4Navigator* fGhostNavigator;
|
||||
G4int fNavigatorID;
|
||||
G4TouchableHandle fOldGhostTouchable;
|
||||
G4TouchableHandle fNewGhostTouchable;
|
||||
G4FieldTrack fFieldTrack;
|
||||
G4double fGhostSafety;
|
||||
G4bool fOnBoundary;
|
||||
|
||||
G4bool paraflag;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,94 +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: G4NewProcessPlacer.hh,v 1.1 2006/11/20 10:02:05 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
// Class G4NewProcessPlacer
|
||||
//
|
||||
// Class description:
|
||||
//
|
||||
// Used internally by importance sampling and scoring.
|
||||
// See G4VProcessPlacer.
|
||||
|
||||
// Author: Michael Dressel (Michael.Dressel@cern.ch)
|
||||
// ----------------------------------------------------------------------
|
||||
#ifndef G4NewProcessPlacer_hh
|
||||
#define G4NewProcessPlacer_hh G4NewProcessPlacer_hh
|
||||
|
||||
#include "G4Types.hh"
|
||||
#include "G4String.hh"
|
||||
#include "G4VProcessPlacer.hh"
|
||||
|
||||
class G4ProcessManager;
|
||||
class G4ProcessVector;
|
||||
|
||||
class G4NewProcessPlacer : public G4VProcessPlacer
|
||||
{
|
||||
|
||||
public: // with description
|
||||
|
||||
explicit G4NewProcessPlacer(const G4String &particlename);
|
||||
// create a process placer for a particle type
|
||||
|
||||
virtual ~G4NewProcessPlacer();
|
||||
|
||||
virtual void AddProcessAsLastDoIt(G4VProcess *process);
|
||||
// place a post step do it process such that the
|
||||
// PostStepDoIt function is called last
|
||||
// THE ORDER CHANGES BY SUBSEQUENT CALLS
|
||||
|
||||
virtual void AddProcessAsSecondDoIt(G4VProcess *process);
|
||||
// place a post step do it process such that the
|
||||
// PostStepDoIt function is called second
|
||||
// THE ORDER CHANGES BY SUBSEQUENT CALLS
|
||||
|
||||
virtual void RemoveProcess(G4VProcess *process);
|
||||
// removes a given process
|
||||
|
||||
enum SecondOrLast
|
||||
{
|
||||
eSecond = 1,
|
||||
eLast = 0
|
||||
};
|
||||
|
||||
private:
|
||||
|
||||
G4ProcessManager *GetProcessManager();
|
||||
void AddProcessAs(G4VProcess *process, SecondOrLast);
|
||||
|
||||
void PrintProcVec(G4ProcessVector* processVec);
|
||||
void PrintPostStepGPILVec();
|
||||
void PrintPostStepDoItVec();
|
||||
|
||||
private:
|
||||
|
||||
G4String fParticleName;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,84 +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: G4NewWeightCutOffConfigurator.hh,v 1.1 2006/11/20 10:02:05 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
// Class G4NewWeightCutOffConfigurator
|
||||
//
|
||||
// Class description:
|
||||
// This class builds and places the G4NewWeightCutOffProcess.
|
||||
// If the object is deleted the process is removed from the
|
||||
// process list.
|
||||
|
||||
// Author: Michael Dressel (Michael.Dressel@cern.ch)
|
||||
// ----------------------------------------------------------------------
|
||||
#ifndef G4NewWeightCutOffConfigurator_hh
|
||||
#define G4NewWeightCutOffConfigurator_hh G4NewWeightCutOffConfigurator_hh
|
||||
|
||||
#include "G4Types.hh"
|
||||
#include "G4VSamplerConfigurator.hh"
|
||||
#include "G4NewProcessPlacer.hh"
|
||||
|
||||
class G4NewWeightCutOffProcess;
|
||||
class G4VGCellFinder;
|
||||
class G4VIStore;
|
||||
class G4VPhysicalVolume;
|
||||
|
||||
class G4NewWeightCutOffConfigurator : public G4VSamplerConfigurator
|
||||
{
|
||||
|
||||
public: // with description
|
||||
|
||||
G4NewWeightCutOffConfigurator(G4VPhysicalVolume* worldvolume,
|
||||
const G4String &particlename,
|
||||
G4double wsurvival,
|
||||
G4double wlimit,
|
||||
G4double isource,
|
||||
G4VIStore *istore,
|
||||
const G4VGCellFinder &aGCellFinder,G4bool paraflag);
|
||||
|
||||
virtual ~G4NewWeightCutOffConfigurator();
|
||||
virtual void Configure(G4VSamplerConfigurator *preConf);
|
||||
virtual const G4VTrackTerminator *GetTrackTerminator() const ;
|
||||
|
||||
private:
|
||||
|
||||
G4NewWeightCutOffConfigurator(const G4NewWeightCutOffConfigurator&);
|
||||
G4NewWeightCutOffConfigurator &
|
||||
operator=(const G4NewWeightCutOffConfigurator&);
|
||||
G4VPhysicalVolume* fWorld;
|
||||
G4NewProcessPlacer fPlacer;
|
||||
G4NewWeightCutOffProcess *fNewWeightCutOffProcess;
|
||||
G4bool fPlaced;
|
||||
|
||||
|
||||
G4bool paraflag;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,159 +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: G4NewWeightCutOffProcess.hh,v 1.1 2006/11/20 10:02:05 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
// Class G4NewWeightCutOffProcess
|
||||
//
|
||||
// Class description:
|
||||
//
|
||||
// Process for biasing particle-change cutoff.
|
||||
|
||||
// Author: Michael Dressel (Michael.Dressel@cern.ch)
|
||||
// ----------------------------------------------------------------------
|
||||
#ifndef G4NewWeightCutOffProcess_hh
|
||||
#define G4NewWeightCutOffProcess_hh G4NewWeightCutOffProcess_hh
|
||||
|
||||
#include "G4VProcess.hh"
|
||||
#include "G4VTrackTerminator.hh"
|
||||
#include "G4GeometryCell.hh"
|
||||
|
||||
class G4VGCellFinder;
|
||||
class G4VIStore;
|
||||
|
||||
class G4Step;
|
||||
class G4Navigator;
|
||||
class G4TransportationManager;
|
||||
class G4PathFinder;
|
||||
class G4VTouchable;
|
||||
|
||||
#include "G4FieldTrack.hh"
|
||||
#include "G4TouchableHandle.hh"
|
||||
|
||||
|
||||
|
||||
class G4NewWeightCutOffProcess : public G4VProcess
|
||||
{
|
||||
|
||||
public: // with description
|
||||
|
||||
G4NewWeightCutOffProcess(G4double wsurvival,
|
||||
G4double wlimit,
|
||||
G4double isource,
|
||||
G4VIStore *istore,
|
||||
const G4VGCellFinder &aGCellFinder,
|
||||
const G4String &aName = "NewWeightCutOffProcess", G4bool para = false);
|
||||
// create a G4ParticleChange
|
||||
|
||||
virtual ~G4NewWeightCutOffProcess();
|
||||
// delete the G4ParticleChange
|
||||
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Set Paralle World
|
||||
//--------------------------------------------------------------
|
||||
|
||||
void SetParallelWorld(G4String parallelWorldName);
|
||||
void SetParallelWorld(G4VPhysicalVolume* parallelWorld);
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Process interface
|
||||
//--------------------------------------------------------------
|
||||
|
||||
void StartTracking(G4Track*);
|
||||
|
||||
virtual G4double
|
||||
PostStepGetPhysicalInteractionLength(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
// make the process beeing forced
|
||||
|
||||
virtual G4VParticleChange * PostStepDoIt(const G4Track&,
|
||||
const G4Step&);
|
||||
|
||||
|
||||
const G4String &GetName() const;
|
||||
|
||||
public: // without description
|
||||
|
||||
// no operation in AtRestDoIt and AlongStepDoIt
|
||||
|
||||
virtual G4double
|
||||
AlongStepGetPhysicalInteractionLength(const G4Track&,
|
||||
G4double ,
|
||||
G4double ,
|
||||
G4double& ,
|
||||
G4GPILSelection*);
|
||||
|
||||
virtual G4double
|
||||
AtRestGetPhysicalInteractionLength(const G4Track& ,
|
||||
G4ForceCondition*);
|
||||
|
||||
virtual G4VParticleChange* AtRestDoIt(const G4Track&, const G4Step&);
|
||||
virtual G4VParticleChange* AlongStepDoIt(const G4Track&, const G4Step&);
|
||||
|
||||
private:
|
||||
|
||||
void CopyStep(const G4Step & step);
|
||||
|
||||
G4Step * fGhostStep;
|
||||
G4StepPoint * fGhostPreStepPoint;
|
||||
G4StepPoint * fGhostPostStepPoint;
|
||||
|
||||
G4NewWeightCutOffProcess(const G4NewWeightCutOffProcess &);
|
||||
G4NewWeightCutOffProcess &operator=(const G4NewWeightCutOffProcess &);
|
||||
|
||||
G4ParticleChange *fParticleChange;
|
||||
G4double fWeightSurvival;
|
||||
G4double fWeightLimit;
|
||||
G4double fSourceImportance;
|
||||
G4VIStore *fIStore;
|
||||
const G4VGCellFinder &fGCellFinder;
|
||||
|
||||
|
||||
G4TransportationManager* fTransportationManager;
|
||||
G4PathFinder* fPathFinder;
|
||||
|
||||
// -------------------------------
|
||||
// Navigation in the Ghost World:
|
||||
// -------------------------------
|
||||
G4String fGhostWorldName;
|
||||
G4VPhysicalVolume* fGhostWorld;
|
||||
G4Navigator* fGhostNavigator;
|
||||
G4int fNavigatorID;
|
||||
G4TouchableHandle fOldGhostTouchable;
|
||||
G4TouchableHandle fNewGhostTouchable;
|
||||
G4FieldTrack fFieldTrack;
|
||||
G4double fGhostSafety;
|
||||
G4bool fOnBoundary;
|
||||
|
||||
G4bool paraflag;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4ParallelWorldScoringProcess.hh,v 1.2 2006/11/13 18:36:02 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: G4ParallelWorldScoringProcess.hh,v 1.4 2007/05/30 17:47:10 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-09-00 $
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------
|
||||
|
||||
@@ -1,49 +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: G4PlaceOfAction.hh,v 1.1 2006/11/20 10:02:06 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
// Class G4PlaceOfAction
|
||||
//
|
||||
// Class description:
|
||||
// This is an enum to specify when weight window sampling shoul be
|
||||
// applied: onBoundary, onCollision, onBoundaryAndCollision.
|
||||
|
||||
// Author: Michael Dressel (Michael.Dressel@cern.ch)
|
||||
// ----------------------------------------------------------------------
|
||||
#ifndef G4PlaceOfAction_hh
|
||||
#define G4PlaceOfAction_hh G4PlaceOfAction_hh
|
||||
|
||||
enum G4PlaceOfAction
|
||||
{
|
||||
onBoundary = 1,
|
||||
onCollision = 2,
|
||||
onBoundaryAndCollision = 3
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,86 +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: G4ScoreConfigurator.hh,v 1.1 2006/11/20 10:02:06 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
// Class G4ScoreConfigurator
|
||||
//
|
||||
// Class description:
|
||||
// This class builds and places the G4ScoreProcess.
|
||||
// If the object is deleted the process is removed from the
|
||||
// process list.
|
||||
|
||||
// Author: Michael Dressel (Michael.Dressel@cern.ch)
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
#ifndef G4ScoreConfigurator_hh
|
||||
#define G4ScoreConfigurator_hh G4ScoreConfigurator_hh
|
||||
|
||||
#include "G4Types.hh"
|
||||
#include "G4NewProcessPlacer.hh"
|
||||
|
||||
#include "G4VSamplerConfigurator.hh"
|
||||
|
||||
class G4VScorer;
|
||||
class G4VTrackTerminator;
|
||||
class G4ScoreProcess;
|
||||
|
||||
class G4VPhysicalVolume;
|
||||
|
||||
class G4ScoreConfigurator : public G4VSamplerConfigurator
|
||||
{
|
||||
|
||||
public: // with description
|
||||
|
||||
G4ScoreConfigurator(G4VPhysicalVolume* worldvolume,
|
||||
const G4String &particlename,
|
||||
G4VScorer &scorer,
|
||||
G4bool paraflag);
|
||||
|
||||
virtual ~G4ScoreConfigurator();
|
||||
|
||||
virtual void Configure(G4VSamplerConfigurator *preConf);
|
||||
virtual const G4VTrackTerminator *GetTrackTerminator() const;
|
||||
|
||||
private:
|
||||
|
||||
G4ScoreConfigurator(const G4ScoreConfigurator&);
|
||||
G4ScoreConfigurator &operator=(const G4ScoreConfigurator&);
|
||||
|
||||
G4VPhysicalVolume* fWorld;
|
||||
G4NewProcessPlacer fPlacer;
|
||||
G4VScorer &fScorer;
|
||||
G4ScoreProcess *fScoreProcess;
|
||||
|
||||
|
||||
G4bool paraflag;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,164 +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: G4ScoreProcess.hh,v 1.1 2006/11/20 10:02:06 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
// Class G4ScoreProcess
|
||||
//
|
||||
// Class description:
|
||||
//
|
||||
// Used internally by scoring in the "mass" world.
|
||||
// This is a forced post step process messaging a "scorer"
|
||||
// derived from G4VScorer.
|
||||
|
||||
// Author: Michael Dressel (Michael.Dressel@cern.ch)
|
||||
// ----------------------------------------------------------------------
|
||||
#ifndef G4ScoreProcess_hh
|
||||
#define G4ScoreProcess_hh G4ScoreProcess_hh
|
||||
|
||||
#include "G4VProcess.hh"
|
||||
#include "G4VTrackTerminator.hh"
|
||||
|
||||
class G4VScorer;
|
||||
|
||||
class G4Step;
|
||||
class G4Navigator;
|
||||
class G4TransportationManager;
|
||||
class G4PathFinder;
|
||||
class G4VTouchable;
|
||||
|
||||
#include "G4FieldTrack.hh"
|
||||
#include "G4TouchableHandle.hh"
|
||||
|
||||
|
||||
class G4ScoreProcess : public G4VProcess, public G4VTrackTerminator
|
||||
{
|
||||
|
||||
public: // with description
|
||||
|
||||
explicit G4ScoreProcess(G4VScorer &aScorer,
|
||||
const G4String &aName = "ScoreProcess", G4bool para = false);
|
||||
// take reference to scorer and coppy particle name and
|
||||
// create a G4ParticleChange
|
||||
|
||||
virtual ~G4ScoreProcess();
|
||||
// delete the G4ParticleChange
|
||||
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Set Paralle World
|
||||
//--------------------------------------------------------------
|
||||
|
||||
void SetParallelWorld(G4String parallelWorldName);
|
||||
void SetParallelWorld(G4VPhysicalVolume* parallelWorld);
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Process interface
|
||||
//--------------------------------------------------------------
|
||||
|
||||
void StartTracking(G4Track*);
|
||||
|
||||
|
||||
|
||||
virtual G4double
|
||||
PostStepGetPhysicalInteractionLength(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
// make processed being forced
|
||||
|
||||
virtual G4VParticleChange * PostStepDoIt(const G4Track&, const G4Step&);
|
||||
// message "scorer" with G4Step and a G4GeometryCellStep from the "mass"
|
||||
// geometry
|
||||
|
||||
virtual void KillTrack() const;
|
||||
|
||||
// to be called by the importance process if the track should
|
||||
// be killed after scoring
|
||||
virtual const G4String &GetName() const ;
|
||||
|
||||
public: // without description
|
||||
|
||||
// no operation in AtRestDoIt and AlongStepDoIt
|
||||
|
||||
virtual G4double
|
||||
AlongStepGetPhysicalInteractionLength(const G4Track&,
|
||||
G4double ,
|
||||
G4double ,
|
||||
G4double& ,
|
||||
G4GPILSelection*);
|
||||
|
||||
virtual G4double
|
||||
AtRestGetPhysicalInteractionLength(const G4Track&,
|
||||
G4ForceCondition*);
|
||||
|
||||
virtual G4VParticleChange* AtRestDoIt(const G4Track&,
|
||||
const G4Step&);
|
||||
virtual G4VParticleChange* AlongStepDoIt(const G4Track&,
|
||||
const G4Step&);
|
||||
|
||||
private:
|
||||
|
||||
G4ScoreProcess(const G4ScoreProcess &);
|
||||
G4ScoreProcess &operator=(const G4ScoreProcess &);
|
||||
|
||||
private:
|
||||
|
||||
void CopyStep(const G4Step & step);
|
||||
|
||||
G4Step * fGhostStep;
|
||||
G4StepPoint * fGhostPreStepPoint;
|
||||
G4StepPoint * fGhostPostStepPoint;
|
||||
|
||||
G4ParticleChange *fParticleChange;
|
||||
|
||||
G4VScorer &fScorer;
|
||||
mutable G4bool fKillTrack;
|
||||
|
||||
|
||||
G4TransportationManager* fTransportationManager;
|
||||
G4PathFinder* fPathFinder;
|
||||
|
||||
// -------------------------------
|
||||
// Navigation in the Ghost World:
|
||||
// -------------------------------
|
||||
G4String fGhostWorldName;
|
||||
G4VPhysicalVolume* fGhostWorld;
|
||||
G4Navigator* fGhostNavigator;
|
||||
G4int fNavigatorID;
|
||||
G4TouchableHandle fOldGhostTouchable;
|
||||
G4TouchableHandle fNewGhostTouchable;
|
||||
G4FieldTrack fFieldTrack;
|
||||
G4double fGhostSafety;
|
||||
G4bool fOnBoundary;
|
||||
|
||||
G4bool paraflag;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -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: G4TrackTerminator.hh,v 1.1 2006/11/20 10:02:06 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
// Class G4TrackTerminator
|
||||
//
|
||||
// Class description:
|
||||
//
|
||||
// This is an interface for an object which can be called to kill a track.
|
||||
// The type it provides is needed in case importance biasing and scoring
|
||||
// is done at the same time.
|
||||
// For navigation in the parallel geometry which is done by the importance
|
||||
// biasing process (it derives from G4ParallelTransport), importance
|
||||
// biasing has to be done before scoring (to score the correct volume).
|
||||
// But since scoring would not be called if the importance biasing kills
|
||||
// a track, it only tells a G4TrackTerminator to kill the track.
|
||||
// The scoring process implements the interface G4TrackTerminator
|
||||
// and is now able to kill the track after it has performed the scoring.
|
||||
|
||||
// Author: Michael Dressel (Michael.Dressel@cern.ch)
|
||||
// ----------------------------------------------------------------------
|
||||
#ifndef G4TrackTerminator_hh
|
||||
#define G4TrackTerminator_hh G4TrackTerminator_hh
|
||||
|
||||
#include "G4Types.hh"
|
||||
|
||||
class G4TrackTerminator
|
||||
{
|
||||
|
||||
public: // without description
|
||||
|
||||
G4TrackTerminator()
|
||||
: fKillTrack(false) {}
|
||||
~G4TrackTerminator();
|
||||
|
||||
void SetKillTrack(){fKillTrack = true;}
|
||||
G4bool GetKillTrack() const {return fKillTrack;}
|
||||
|
||||
private:
|
||||
|
||||
G4bool fKillTrack;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -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: G4VProcessPlacer.hh,v 1.1 2006/11/20 10:02:06 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
// Class G4VProcessPlacer
|
||||
//
|
||||
// Class description:
|
||||
//
|
||||
// Used internally by importance sampling and scoring to place
|
||||
// processes as second or last PostStepDoIt processes.
|
||||
|
||||
// Author: Michael Dressel (Michael.Dressel@cern.ch)
|
||||
// ----------------------------------------------------------------------
|
||||
#ifndef G4VProcessPlacer_hh
|
||||
#define G4VProcessPlacer_hh G4VProcessPlacer_hh
|
||||
|
||||
#include "G4Types.hh"
|
||||
|
||||
class G4VProcess;
|
||||
|
||||
class G4VProcessPlacer
|
||||
{
|
||||
|
||||
public: // with description
|
||||
|
||||
G4VProcessPlacer();
|
||||
virtual ~G4VProcessPlacer();
|
||||
|
||||
virtual void AddProcessAsLastDoIt(G4VProcess *process) = 0;
|
||||
// place a post step do it process such that the
|
||||
// PostStepDoIt function is called last
|
||||
// THE ORDER CHANGES BY SUBSEQUENT CALLS
|
||||
|
||||
virtual void AddProcessAsSecondDoIt(G4VProcess *process) = 0;
|
||||
// place a post step do it process such that the
|
||||
// PostStepDoIt function is called second
|
||||
// THE ORDER CHANGES BY SUBSEQUENT CALLS
|
||||
|
||||
virtual void RemoveProcess(G4VProcess *process) = 0;
|
||||
// removes a given process
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,87 +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: G4WeightWindowConfigurator.hh,v 1.1 2006/11/20 10:02:07 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
// Class G4WeightWindowConfigurator
|
||||
//
|
||||
// Class description:
|
||||
// Configuration of weight window processes.
|
||||
|
||||
// Author: Michael Dressel (Michael.Dressel@cern.ch)
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
#ifndef G4WeightWindowConfigurator_hh
|
||||
#define G4WeightWindowConfigurator_hh G4WeightWindowConfigurator_hh
|
||||
|
||||
#include "G4Types.hh"
|
||||
#include "G4NewProcessPlacer.hh"
|
||||
#include "G4VSamplerConfigurator.hh"
|
||||
#include "G4PlaceOfAction.hh"
|
||||
|
||||
class G4VWeightWindowStore;
|
||||
class G4VWeightWindowAlgorithm;
|
||||
class G4WeightWindowProcess;
|
||||
class G4VPhysicalVolume;
|
||||
|
||||
class G4WeightWindowConfigurator : public G4VSamplerConfigurator
|
||||
{
|
||||
|
||||
public: // with description
|
||||
|
||||
G4WeightWindowConfigurator(G4VPhysicalVolume* worldvolume,
|
||||
const G4String &particlename,
|
||||
G4VWeightWindowStore &wwstore,
|
||||
const G4VWeightWindowAlgorithm *wwAlg,
|
||||
G4PlaceOfAction placeOfAction,
|
||||
G4bool paraflag);
|
||||
|
||||
virtual ~G4WeightWindowConfigurator();
|
||||
virtual void Configure(G4VSamplerConfigurator *preConf);
|
||||
virtual const G4VTrackTerminator *GetTrackTerminator() const;
|
||||
|
||||
private:
|
||||
|
||||
G4WeightWindowConfigurator(const G4WeightWindowConfigurator &);
|
||||
G4WeightWindowConfigurator &
|
||||
operator=(const G4WeightWindowConfigurator &);
|
||||
|
||||
G4VPhysicalVolume* fWorld;
|
||||
G4NewProcessPlacer fPlacer;
|
||||
G4VWeightWindowStore &fWeightWindowStore;
|
||||
G4bool fDeleteWWalg;
|
||||
const G4VWeightWindowAlgorithm *fWWalgorithm;
|
||||
G4WeightWindowProcess *fWeightWindowProcess;
|
||||
G4PlaceOfAction fPlaceOfAction;
|
||||
|
||||
|
||||
G4bool paraflag;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,170 +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: G4WeightWindowProcess.hh,v 1.1 2006/11/20 10:02:07 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
// Class G4MassWeioghtWindowProcess
|
||||
//
|
||||
// Class description:
|
||||
//
|
||||
// Used internally by weight window technique in the "mass" geometry.
|
||||
// This process is a forced post step process. It will apply
|
||||
// weight window biasing on boundaries, collisions
|
||||
// or both according to the G4PlaceOfAction argument.
|
||||
|
||||
// Author: Michael Dressel (Michael.Dressel@cern.ch)
|
||||
// ----------------------------------------------------------------------
|
||||
#ifndef G4MassWeioghtWindowProcess_hh
|
||||
#define G4MassWeioghtWindowProcess_hh G4MassWeioghtWindowProcess_hh
|
||||
|
||||
#include "G4VProcess.hh"
|
||||
#include "G4VTrackTerminator.hh"
|
||||
#include "G4PlaceOfAction.hh"
|
||||
|
||||
class G4SamplingPostStepAction;
|
||||
class G4VWeightWindowAlgorithm;
|
||||
class G4VWeightWindowStore;
|
||||
|
||||
class G4Step;
|
||||
class G4Navigator;
|
||||
class G4TransportationManager;
|
||||
class G4PathFinder;
|
||||
class G4VTouchable;
|
||||
|
||||
#include "G4FieldTrack.hh"
|
||||
#include "G4TouchableHandle.hh"
|
||||
|
||||
|
||||
class G4WeightWindowProcess : public G4VProcess, public G4VTrackTerminator
|
||||
{
|
||||
|
||||
public: // with description
|
||||
|
||||
G4WeightWindowProcess(const G4VWeightWindowAlgorithm &
|
||||
aWeightWindowAlgorithm,
|
||||
const G4VWeightWindowStore &aWWStore,
|
||||
const G4VTrackTerminator *TrackTerminator,
|
||||
G4PlaceOfAction placeOfAction,
|
||||
const G4String &aName =
|
||||
"WeightWindowProcess", G4bool para = false);
|
||||
// creates a G4ParticleChange
|
||||
|
||||
virtual ~G4WeightWindowProcess();
|
||||
// delete the G4ParticleChange
|
||||
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Set Paralle World
|
||||
//--------------------------------------------------------------
|
||||
|
||||
void SetParallelWorld(G4String parallelWorldName);
|
||||
void SetParallelWorld(G4VPhysicalVolume* parallelWorld);
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Process interface
|
||||
//--------------------------------------------------------------
|
||||
|
||||
void StartTracking(G4Track*);
|
||||
|
||||
|
||||
|
||||
virtual G4double
|
||||
PostStepGetPhysicalInteractionLength(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
// make process beeing forced
|
||||
virtual G4VParticleChange *PostStepDoIt(const G4Track&, const G4Step&);
|
||||
// aply weight window sampling
|
||||
|
||||
virtual void KillTrack() const;
|
||||
// used in case no scoring process follows that does the killing
|
||||
|
||||
virtual const G4String &GetName() const;
|
||||
|
||||
|
||||
public: // without description
|
||||
|
||||
// no operation in AtRestDoIt and AlongStepDoIt
|
||||
|
||||
virtual G4double
|
||||
AlongStepGetPhysicalInteractionLength(const G4Track&,
|
||||
G4double ,
|
||||
G4double ,
|
||||
G4double& ,
|
||||
G4GPILSelection*);
|
||||
virtual G4double
|
||||
AtRestGetPhysicalInteractionLength(const G4Track& ,
|
||||
G4ForceCondition*);
|
||||
|
||||
virtual G4VParticleChange*
|
||||
AtRestDoIt(const G4Track&, const G4Step&);
|
||||
|
||||
|
||||
virtual G4VParticleChange*
|
||||
AlongStepDoIt(const G4Track&, const G4Step&);
|
||||
|
||||
private:
|
||||
|
||||
G4WeightWindowProcess(const G4WeightWindowProcess &);
|
||||
G4WeightWindowProcess &operator=(const G4WeightWindowProcess &);
|
||||
|
||||
private:
|
||||
|
||||
void CopyStep(const G4Step & step);
|
||||
|
||||
G4Step * fGhostStep;
|
||||
G4StepPoint * fGhostPreStepPoint;
|
||||
G4StepPoint * fGhostPostStepPoint;
|
||||
|
||||
G4ParticleChange *fParticleChange;
|
||||
const G4VWeightWindowAlgorithm &fWeightWindowAlgorithm;
|
||||
const G4VWeightWindowStore &fWeightWindowStore;
|
||||
G4SamplingPostStepAction *fPostStepAction;
|
||||
G4PlaceOfAction fPlaceOfAction;
|
||||
|
||||
G4TransportationManager* fTransportationManager;
|
||||
G4PathFinder* fPathFinder;
|
||||
|
||||
// -------------------------------
|
||||
// Navigation in the Ghost World:
|
||||
// -------------------------------
|
||||
G4String fGhostWorldName;
|
||||
G4VPhysicalVolume* fGhostWorld;
|
||||
G4Navigator* fGhostNavigator;
|
||||
G4int fNavigatorID;
|
||||
G4TouchableHandle fOldGhostTouchable;
|
||||
G4TouchableHandle fNewGhostTouchable;
|
||||
G4FieldTrack fFieldTrack;
|
||||
G4double fGhostSafety;
|
||||
G4bool fOnBoundary;
|
||||
|
||||
G4bool paraflag;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user