Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4VFastSimulationModel.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// $Id$
28//
29//
30//---------------------------------------------------------------
31//
32// G4VFastSimulationModel.hh
33//
34// Description:
35// Base class for fast simulation models.
36//
37// History:
38// Oct 97: Verderi && MoraDeFreitas - First Implementation.
39//
40//---------------------------------------------------------------
41
42
43#ifndef G4VFastSimulationModel_h
44#define G4VFastSimulationModel_h
45
46#include "G4FastTrack.hh"
47#include "G4FastStep.hh"
48
49//---------------------------
50// For possible future needs:
51//---------------------------
53
54//-------------------------------------------
55//
56// G4VFastSimulationModel class
57//
58//-------------------------------------------
59
60// Class Description:
61// This is the abstract class for the implementation of parameterisations.
62// You have to inherit from it to implement your concrete parameterisation
63// model.
64//
65
67{
68 public: // With description
69
70 G4VFastSimulationModel(const G4String& aName);
71 // aName identifies the parameterisation model.
72
74 G4bool IsUnique=FALSE);
75 // This constructor allows you to get a quick "getting started".
76 // In addition to the model name, this constructor accepts a G4LogicalVolume
77 // pointer. This volume will automatically becomes the envelope, and the
78 // needed G4FastSimulationManager object is constructed if necessary giving
79 // it the G4LogicalVolume pointer and the boolean value. If it already
80 // exists, the model is simply added to this manager. However the
81 // G4VFastSimulationModel object will not keep track of the envelope given
82 // in the constructor.
83 // The boolean argument is there for optimization purpose: if you know that
84 // the G4LogicalVolume envelope is placed only once you can turn this
85 // boolean value to "true" (an automated mechanism is foreseen here.)
86
87public: // Without description
89
90public: // With description
91
93 // In your implementation, you have to return "true" when your model is
94 // applicable to the G4ParticleDefinition passed to this method. The
95 // G4ParticleDefinition provides all intrisic particle informations (mass,
96 // charge, spin, name ...).
97
98 virtual G4bool ModelTrigger(const G4FastTrack &) = 0;
99 // You have to return "true" when the dynamics conditions to trigger your
100 // parameterisation are fulfiled. The G4FastTrack provides you access to
101 // the current G4Track, gives simple access to envelope related features
102 // (G4LogicalVolume, G4VSolid, G4AffineTransform references between the
103 // global and the envelope local coordinates systems) and simple access to
104 // the position, momentum expressed in the envelope coordinate system.
105 // Using those quantities and the G4VSolid methods, you can for example
106 // easily check how far you are from the envelope boundary.
107
108 virtual void DoIt(const G4FastTrack&, G4FastStep&) = 0;
109 // Your parameterisation properly said. The G4FastTrack reference provides
110 // input informations. The final state of the particles after parameterisation
111 // has to be returned through the G4FastStep reference. This final state is
112 // described has "requests" the tracking will apply after your
113 // parameterisation has been invoked.
114
115 // ---------------------------
116 // -- Idem for AtRest methods:
117 // ---------------------------
118 // -- A default dummy implementation is provided.
119
120 virtual
121 G4bool AtRestModelTrigger(const G4FastTrack&) {return false;}
122 // You have to return "true" when the dynamics conditions to trigger your
123 // parameterisation are fulfiled. The G4FastTrack provides you access to
124 // the current G4Track, gives simple access to envelope related features
125 // (G4LogicalVolume, G4VSolid, G4AffineTransform references between the
126 // global and the envelope local coordinates systems) and simple access to
127 // the position, momentum expressed in the envelope coordinate system.
128 // Using those quantities and the G4VSolid methods, you can for example
129 // easily check how far you are from the envelope boundary.
130
131 virtual
133 // Your parameterisation properly said. The G4FastTrack reference provides
134 // input informations. The final state of the particles after parameterisation
135 // has to be returned through the G4FastStep reference. This final state is
136 // described has "requests" the tracking will apply after your
137 // parameterisation has been invoked.
138
139public: // Without description
140
141 // Useful public methods :
142 const G4String GetName() const;
144
145private:
146 //-------------
147 // Model Name:
148 //-------------
149 G4String theModelName;
150};
151
153{
154 return theModelName;
155}
156
157inline G4bool
159{
160 return (this==&fsm) ? true : false;
161}
162#endif
bool G4bool
Definition: G4Types.hh:67
G4Region G4Envelope
virtual void DoIt(const G4FastTrack &, G4FastStep &)=0
virtual G4bool ModelTrigger(const G4FastTrack &)=0
virtual void AtRestDoIt(const G4FastTrack &, G4FastStep &)
virtual G4bool IsApplicable(const G4ParticleDefinition &)=0
const G4String GetName() const
G4bool operator==(const G4VFastSimulationModel &) const
virtual G4bool AtRestModelTrigger(const G4FastTrack &)
#define FALSE
Definition: globals.hh:52