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
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