ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4ParticleChangeForMSC.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4ParticleChangeForMSC.hh
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 // GEANT4 tag $ $
28 //
29 //
30 // ------------------------------------------------------------
31 // GEANT 4 class header file
32 //
33 //
34 // Class Description
35 // This class is special "Particle Change" for Multiple Scattering process
36 //
37 // ------------------------------------------------------------
38 // Implemented for the new scheme 23 Mar. 1998 H.Kurahige
39 // Add Get/SetMomentumDirectionChange 6 Feb. 1999 H.Kurashige
40 // Update for model variant of msc 16 Jan 2004 V.Ivanchenko
41 //
42 // -------------------------------------------------------------
43 #ifndef G4ParticleChangeForMSC_h
44 #define G4ParticleChangeForMSC_h 1
45 
46 #include "globals.hh"
47 #include "G4ios.hh"
48 #include "G4ThreeVector.hh"
49 #include "G4ThreeVector.hh"
50 class G4DynamicParticle;
51 #include "G4VParticleChange.hh"
52 
54 {
55  public:
56  // default constructor
58 
59  // destructor
60  virtual ~G4ParticleChangeForMSC();
61 
62  protected:
63  // hide copy constructor and assignment operaor as protected
66 
67 
68  public: // with description
69  // ----------------------------------------------------
70  // --- the following methods are for updating G4Step -----
71  // Return the pointer to the G4Step after updating the Step information
72  // by using final state information of the track given by a physics
73  // process
74  virtual G4Step* UpdateStepForAlongStep(G4Step* Step);
75  virtual G4Step* UpdateStepForPostStep(G4Step* Step);
76  // A physics process gives the final state of the particle
77  // based on information of G4Track (or equivalently the PreStepPoint)
78 
79  virtual void Initialize(const G4Track&);
80  // Initialize all propoerties by using G4Track information
81 
82  // ----------------------------------------------------
83  //--- methods to keep information of the final state--
84  // IMPORTANT NOTE: Although the name of the class and methods are
85  // "Change", what it stores (and returns in get) are the "FINAL"
86  // values of the Position, Momentum, etc.
87 
88  void ProposeMomentumDirection(const G4ThreeVector& Pfinal);
90  const G4ThreeVector* GetMomentumDirection() const;
92  void SetProposedMomentumDirection(const G4ThreeVector& Pfinal);
93  // Get/Set theMomentumDirectionChange vector: it is the final momentum direction.
94 
95  const G4ThreeVector* GetPosition() const;
96  void ProposePosition(const G4ThreeVector& finalPosition);
97  const G4ThreeVector* GetProposedPosition() const;
98  void SetProposedPosition(const G4ThreeVector& finalPosition);
99  // Get/Set the final position of the current particle.
100 
101  public:
102  virtual void DumpInfo() const;
103  // for Debug
104  virtual G4bool CheckIt(const G4Track&);
105 
106  private:
108  // It is the vector containing the final momentum direction
109  // after the invoked process. The application of the change
110  // of the momentum direction of the particle is not Done here.
111  // The responsibility to apply the change is up the entity
112  // which invoked the process.
113 
115  // The changed (final) position of a given particle.
116 
117 };
118 
119 #include "G4ParticleChangeForMSC.icc"
120 #endif
121