source: trunk/source/track/include/G4ParticleChangeForMSC.hh @ 1202

Last change on this file since 1202 was 826, checked in by garnier, 16 years ago

import all except CVS

File size: 5.1 KB
Line 
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: G4ParticleChangeForMSC.hh,v 1.9 2006/06/29 21:14:25 gunter Exp $
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"
51class G4DynamicParticle;
52#include "G4VParticleChange.hh"
53
54class G4ParticleChangeForMSC: public G4VParticleChange
55{ 
56  public:
57    // default constructor
58    G4ParticleChangeForMSC();
59
60    // destructor
61    virtual ~G4ParticleChangeForMSC();
62
63  protected:
64    // hide copy constructor and assignment operaor as protected
65    G4ParticleChangeForMSC(const G4ParticleChangeForMSC &right);
66    G4ParticleChangeForMSC & operator=(const G4ParticleChangeForMSC &right);
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
89    void ProposeMomentumDirection(const G4ThreeVector& Pfinal);
90    void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz);
91    const G4ThreeVector* GetMomentumDirection() const;
92    const G4ThreeVector* GetProposedMomentumDirection() const;
93    void SetProposedMomentumDirection(const G4ThreeVector& Pfinal);
94    // Get/Set theMomentumDirectionChange vector: it is the final momentum direction.
95
96    const G4ThreeVector* GetPosition() const;
97    void  ProposePosition(const G4ThreeVector& finalPosition);
98    const G4ThreeVector* GetProposedPosition() const;
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
Note: See TracBrowser for help on using the repository browser.