Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4AdjointProcessEquivalentToDirectProcess.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// $Id$
27//
28/////////////////////////////////////////////////////////////////////////////////
29// Class: G4AdjointProcessEquivalentToDirectProcess
30// Author: L. Desorgher
31// Organisation: SpaceIT GmbH
32// Contract: ESA contract 21435/08/NL/AT
33// Customer: ESA/ESTEC
34/////////////////////////////////////////////////////////////////////////////////
35//
36// CHANGE HISTORY
37// --------------
38// ChangeHistory:
39// 25 Sept. 2009 Created by L.Desorgher. Inspired from G4WrapperProcess
40//
41//-------------------------------------------------------------
42// Documentation:
43// Adjoint process equivalent to direct process, used for some multiple scattering
44//
45//
46
47
48#ifndef G4AdjointProcessEquivalentToDirectProcess_h
49#define G4AdjointProcessEquivalentToDirectProcess_h 1
50
51#include "globals.hh"
52#include "G4ios.hh"
53#include "G4VProcess.hh"
54
56{
57 // A virtual class for wrapper process objects.
58
59 public: // with description
60 // constructor requires the process name and type
62
63
64
65 public:
66 // destructor
68
69
70 public: // with description
71 ////////////////////////////
72 // DoIt /////////////////
73 ///////////////////////////
75 const G4Track& track,
76 const G4Step& stepData
77 );
78
80 const G4Track& track,
81 const G4Step& stepData
82 );
84 const G4Track& track,
85 const G4Step& stepData
86 );
87 //////////////////////////
88 // GPIL //////////////
89 /////////////////////////
91 const G4Track& track,
92 G4double previousStepSize,
93 G4double currentMinimumStep,
94 G4double& proposedSafety,
95 G4GPILSelection* selection);
96
98 const G4Track& track,
100 );
101
103 const G4Track& track,
104 G4double previousStepSize,
106 ) ;
107
108 //////////////////////
110 // Returns true if this process object is applicable to
111 // the particle type
112 // Process will not be registered to a particle if IsApplicable is false
113
114 virtual void BuildPhysicsTable(const G4ParticleDefinition&);
115 // Messaged by the Particle definition (via the Process manager)
116 // whenever cross section tables have to be rebuilt (i.e. if new
117 // materials have been defined).
118 // It is overloaded by individual processes when they need physics
119 // tables.
120
121 // Processes which Build (for example in their
122 // constructors) physics tables independent of cuts
123 // should preferably use a
124 // private void BuildThePhysicsTable()
125 // function. Not another BuildPhysicsTable, please.
126
127 virtual void PreparePhysicsTable(const G4ParticleDefinition&);
128 // Messaged by the Particle definition (via the Process manager)
129 // whenever cross section tables have to be prepare for rebuilt
130 // (i.e. if new materials have been defined).
131 // It is overloaded by individual processes when they need physics
132 // tables.
133
134 // Processes which Build physics tables independent of cuts
135 // (for example in their constructors)
136 // should preferably use private
137 // void BuildThePhysicsTable() and void PreparePhysicsTable().
138 // Not another BuildPhysicsTable, please.
139
140
142 const G4String& directory,
143 G4bool ascii = false);
144 // Store PhysicsTable in a file.
145 // (return false in case of failure at I/O )
146
148 const G4String& directory,
149 G4bool ascii = false);
150 // Retrieve Physics from a file.
151 // (return true if the Physics Table can be build by using file)
152 // (return false if the process has no functionality or in case of failure)
153 // File name should be defined by each process
154 // and the file should be placed under the directory specifed by the argument.
155 ////////////////////////////
156 virtual void StartTracking(G4Track*);
157 virtual void EndTracking();
158 // inform Start/End of tracking for each track to the physics process
159
160
161
162 public:
164 // reset (determine the value of)NumberOfInteractionLengthLeft
165 private:
166 G4ParticleDefinition* theFwdParticleDef;
167 G4VProcess* theDirectProcess;
168
169};
170
171
172#endif
G4double condition(const G4ErrorSymMatrix &m)
G4ForceCondition
G4GPILSelection
double G4double
Definition: G4Types.hh:64
bool G4bool
Definition: G4Types.hh:67
virtual G4VParticleChange * AlongStepDoIt(const G4Track &track, const G4Step &stepData)
virtual G4bool StorePhysicsTable(const G4ParticleDefinition *, const G4String &directory, G4bool ascii=false)
virtual G4VParticleChange * PostStepDoIt(const G4Track &track, const G4Step &stepData)
virtual G4double AlongStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &proposedSafety, G4GPILSelection *selection)
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
virtual G4bool RetrievePhysicsTable(const G4ParticleDefinition *, const G4String &directory, G4bool ascii=false)
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
virtual G4double AtRestGetPhysicalInteractionLength(const G4Track &track, G4ForceCondition *condition)
virtual G4bool IsApplicable(const G4ParticleDefinition &)
virtual G4VParticleChange * AtRestDoIt(const G4Track &track, const G4Step &stepData)
virtual void PreparePhysicsTable(const G4ParticleDefinition &)
Definition: G4Step.hh:78