Geant4-11
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// G4ParticleChangeForMSC
27//
28// Class description:
29//
30// Concrete "Particle Change" class for Multiple Scattering process.
31
32// Author: Hisaya Kurashige, 23 March 1998
33// Revision: Vladimir Ivantchenko, 16 January 2004
34// --------------------------------------------------------------------
35#ifndef G4ParticleChangeForMSC_hh
36#define G4ParticleChangeForMSC_hh 1
37
38#include "globals.hh"
39#include "G4ios.hh"
40#include "G4ThreeVector.hh"
41#include "G4ThreeVector.hh"
42#include "G4VParticleChange.hh"
43
45
47{
48 public:
49
51 // Default constructor
52
54 // Destructor
55
56 // --- the following methods are for updating G4Step -----
57 // Return the pointer to the G4Step after updating the Step information
58 // by using final state information of the track given by a physics
59 // process
60
61 virtual G4Step* UpdateStepForAlongStep(G4Step* Step);
62 virtual G4Step* UpdateStepForPostStep(G4Step* Step);
63 // A physics process gives the final state of the particle
64 // based on information of G4Track (or equivalently the PreStepPoint)
65
66 virtual void Initialize(const G4Track&);
67 // Initialize all properties by using G4Track information
68
69 // --- methods to keep information of the final state ---
70 // IMPORTANT NOTE: despite the name, what the class stores through its
71 // methods are the "FINAL" values of the Position,
72 // Momentum, etc.
73
79 // Get/Set theMomentumDirectionChange vector: it is the final momentum
80 // direction
81
82 const G4ThreeVector* GetPosition() const;
83 void ProposePosition(const G4ThreeVector& finalPosition);
85 void SetProposedPosition(const G4ThreeVector& finalPosition);
86 // Get/Set the final position of the current particle
87
88 // --- Dump and debug methods ---
89
90 virtual void DumpInfo() const;
91
92 virtual G4bool CheckIt(const G4Track&);
93
94 protected:
95
98 // Hidden copy constructor and assignment operator
99
100 private:
101
103 // It is the vector containing the final momentum direction
104 // after the invoked process. The application of the change
105 // of the momentum direction of the particle is not done here.
106 // The responsibility to apply the change is up the entity
107 // which invoked the process
108
110 // The changed (final) position of a given particle
111};
112
114
115#endif
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
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:62