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
G4ParticleChangeForTransport.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// GEANT 4 class header file
32//
33//
34// ------------------------------------------------------------
35// Implemented for the new scheme 10 May. 1998 H.Kurahige
36// Added theMaterialChange 16 FEb. 2000 H.Kurahige
37// Remove thePolarizationChange 12 Feb. 2001 H.Kurashige
38// Modification for G4TouchableHandle 22 Oct. 2001 R.Chytracek
39// Add MaterialCutsCouple 8 Oct. 2002 H.Kurashige
40//
41// Class Description
42// This class is a concrete class for ParticleChange for transportation
43//
44#ifndef G4ParticleChangeForTransport_h
45#define G4ParticleChangeForTransport_h 1
46
47#include "globals.hh"
48#include "G4ios.hh"
49#include "G4TouchableHandle.hh"
50#include "G4ParticleChange.hh"
51
54
56{
57 public:
58 // default constructor
60
61 // destructor
63
64 protected:
65 // hide copy constructor and assignment operator as protected
68
69 public: // with description
70 // ----------------------------------------------------
71 // --- the following methods are for updating G4Step -----
72 // Return the pointer to the G4Step after updating the Step information
73 // by using final state information of the track given by a physics
74 // process
75 virtual G4Step* UpdateStepForAlongStep(G4Step* Step);
76 virtual G4Step* UpdateStepForAtRest(G4Step* Step);
77 virtual G4Step* UpdateStepForPostStep(G4Step* Step);
78 // A physics process gives the final state of the particle
79 // based on information of G4Track (or equivalently the PreStepPoint)
80
81 virtual void Initialize(const G4Track&);
82 // Initialize all propoerties by using G4Track information
83
84 // ----------------------------------------------------
85 //--- methods to keep information of the final state--
86 // IMPORTANT NOTE: Although the name of the class and methods are
87 // "Change", what it stores (and returns in get) are the "FINAL"
88 // values of the Position, Momentum, etc.
89
91 void SetTouchableHandle(const G4TouchableHandle& fTouchable);
92 // Get/Set the touchable of the current particle.
93 // Note: Touchable in PostStepPoint will be updated only after PostStepDoIt
94
97 // Get/Propose the material in the touchable of the current particle.
98
101 // Get/Set the materialCutsCouple in the touchable of the current particle.
102
105 // Get/Set the sensitive detector in the touchable of the current particle.
106
109
110 public:
111 virtual void DumpInfo() const;
112
113 protected:
115 // The changed touchable of a given particle.
116
117 public:
118
119 // Prototype implementation of smooth representation of curved trajectories.
120 // Auxiliary points are ThreeVectors for now; change to G4AuxiliaryPoints.
121
122 inline void SetPointerToVectorOfAuxiliaryPoints( std::vector<G4ThreeVector>* theNewVectorPointer );
123 inline std::vector<G4ThreeVector>* GetPointerToVectorOfAuxiliaryPoints() const;
124
125 private:
126 G4bool isMomentumChanged;
127 // The flag which is set if momentum is changed in current step
128 G4Material* theMaterialChange;
129 const G4MaterialCutsCouple* theMaterialCutsCoupleChange;
130 G4VSensitiveDetector* theSensitiveDetectorChange;
131 // The material (and MaterialCutsCouple) where given track
132 // currently locates
133
134 private:
135 std::vector<G4ThreeVector>* fpVectorOfAuxiliaryPointsPointer;
136};
137
138#include "G4ParticleChangeForTransport.icc"
139
140#endif
141
142
143
144
145
146
bool G4bool
Definition: G4Types.hh:67
const G4TouchableHandle & GetTouchableHandle() const
void SetMaterialInTouchable(G4Material *fMaterial)
G4VSensitiveDetector * GetSensitiveDetectorInTouchable() const
G4ParticleChangeForTransport & operator=(const G4ParticleChangeForTransport &right)
void SetTouchableHandle(const G4TouchableHandle &fTouchable)
const G4MaterialCutsCouple * GetMaterialCutsCoupleInTouchable() const
G4Material * GetMaterialInTouchable() const
void SetMaterialCutsCoupleInTouchable(const G4MaterialCutsCouple *fMaterialCutsCouple)
void SetPointerToVectorOfAuxiliaryPoints(std::vector< G4ThreeVector > *theNewVectorPointer)
virtual void Initialize(const G4Track &)
virtual G4Step * UpdateStepForAtRest(G4Step *Step)
std::vector< G4ThreeVector > * GetPointerToVectorOfAuxiliaryPoints() const
void SetSensitiveDetectorInTouchable(G4VSensitiveDetector *fSensitiveDetector)
void SetMomentumChanged(G4bool b)
virtual G4Step * UpdateStepForPostStep(G4Step *Step)
G4bool GetMomentumChanged() const
virtual G4Step * UpdateStepForAlongStep(G4Step *Step)
Definition: G4Step.hh:78