Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4ParticleChangeForMSC.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// GEANT4 tag $ $
29//
30//
31// ------------------------------------------------------------
32// GEANT 4 class header file
33//
34//
35// Class Description
36// This class is special "Particle Change" for Multiple Scattering process
37//
38// ------------------------------------------------------------
39// Implemented for the new scheme 23 Mar. 1998 H.Kurahige
40// Add Get/SetMomentumDirectionChange 6 Feb. 1999 H.Kurashige
41// Update for model variant of msc 16 Jan 2004 V.Ivanchenko
42//
43// -------------------------------------------------------------
44#ifndef G4ParticleChangeForMSC_h
45#define G4ParticleChangeForMSC_h 1
46
47#include "globals.hh"
48#include "G4ios.hh"
49#include "G4ThreeVector.hh"
50#include "G4ThreeVector.hh"
52#include "G4VParticleChange.hh"
53
55{
56 public:
57 // default constructor
59
60 // destructor
62
63 protected:
64 // hide copy constructor and assignment operaor as protected
67
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* UpdateStepForPostStep(G4Step* Step);
77 // A physics process gives the final state of the particle
78 // based on information of G4Track (or equivalently the PreStepPoint)
79
80 virtual void Initialize(const G4Track&);
81 // Initialize all propoerties by using G4Track information
82
83 // ----------------------------------------------------
84 //--- methods to keep information of the final state--
85 // IMPORTANT NOTE: Although the name of the class and methods are
86 // "Change", what it stores (and returns in get) are the "FINAL"
87 // values of the Position, Momentum, etc.
88
94 // Get/Set theMomentumDirectionChange vector: it is the final momentum direction.
95
96 const G4ThreeVector* GetPosition() const;
97 void ProposePosition(const G4ThreeVector& finalPosition);
99 void SetProposedPosition(const G4ThreeVector& finalPosition);
100 // Get/Set the final position of the current particle.
101
102 public:
103 virtual void DumpInfo() const;
104 // for Debug
105 virtual G4bool CheckIt(const G4Track&);
106
107 private:
108 G4ThreeVector theMomentumDirection;
109 // It is the vector containing the final momentum direction
110 // after the invoked process. The application of the change
111 // of the momentum direction of the particle is not Done here.
112 // The responsibility to apply the change is up the entity
113 // which invoked the process.
114
115 G4ThreeVector thePosition;
116 // The changed (final) position of a given particle.
117
118};
119
120#include "G4ParticleChangeForMSC.icc"
121#endif
122
double G4double
Definition: G4Types.hh:64
bool G4bool
Definition: G4Types.hh:67
const G4ThreeVector * GetProposedPosition() const
virtual void Initialize(const G4Track &)
const G4ThreeVector * GetProposedMomentumDirection() const
virtual G4Step * UpdateStepForPostStep(G4Step *Step)
virtual G4Step * UpdateStepForAlongStep(G4Step *Step)
const G4ThreeVector * GetMomentumDirection() const
void SetProposedPosition(const G4ThreeVector &finalPosition)
const G4ThreeVector * GetPosition() const
G4ParticleChangeForMSC & operator=(const G4ParticleChangeForMSC &right)
void ProposeMomentumDirection(const G4ThreeVector &Pfinal)
virtual void DumpInfo() const
virtual G4bool CheckIt(const G4Track &)
void SetProposedMomentumDirection(const G4ThreeVector &Pfinal)
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
void ProposePosition(const G4ThreeVector &finalPosition)
Definition: G4Step.hh:78