G4ParticleChangeForMSC.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 //
00027 // $Id$
00028 // GEANT4 tag $ $
00029 //
00030 // 
00031 // ------------------------------------------------------------
00032 //      GEANT 4 class header file 
00033 //
00034 // 
00035 // Class Description
00036 //   This class is special "Particle Change" for Multiple Scattering process
00037 //
00038 // ------------------------------------------------------------
00039 //   Implemented for the new scheme                 23 Mar. 1998  H.Kurahige
00040 //   Add Get/SetMomentumDirectionChange              6 Feb. 1999  H.Kurashige 
00041 //   Update for model variant of msc                16 Jan  2004  V.Ivanchenko
00042 //
00043 // -------------------------------------------------------------
00044 #ifndef G4ParticleChangeForMSC_h
00045 #define G4ParticleChangeForMSC_h 1
00046 
00047 #include "globals.hh"
00048 #include "G4ios.hh"
00049 #include "G4ThreeVector.hh"
00050 #include "G4ThreeVector.hh"
00051 class G4DynamicParticle;
00052 #include "G4VParticleChange.hh"
00053 
00054 class G4ParticleChangeForMSC: public G4VParticleChange
00055 { 
00056   public:
00057     // default constructor
00058     G4ParticleChangeForMSC();
00059 
00060     // destructor
00061     virtual ~G4ParticleChangeForMSC();
00062 
00063   protected:
00064     // hide copy constructor and assignment operaor as protected
00065     G4ParticleChangeForMSC(const G4ParticleChangeForMSC &right);
00066     G4ParticleChangeForMSC & operator=(const G4ParticleChangeForMSC &right);
00067 
00068 
00069   public: // with description
00070     // ----------------------------------------------------
00071     // --- the following methods are for updating G4Step -----
00072     // Return the pointer to the G4Step after updating the Step information
00073     // by using final state information of the track given by a physics
00074     // process
00075     virtual G4Step* UpdateStepForAlongStep(G4Step* Step);
00076     virtual G4Step* UpdateStepForPostStep(G4Step* Step);
00077     // A physics process gives the final state of the particle
00078     // based on information of G4Track (or equivalently the PreStepPoint)
00079 
00080     virtual void Initialize(const G4Track&);
00081     // Initialize all propoerties by using G4Track information
00082 
00083     // ----------------------------------------------------
00084     //--- methods to keep information of the final state--
00085     //  IMPORTANT NOTE: Although the name of the class and methods are
00086     //   "Change", what it stores (and returns in get) are the "FINAL"
00087     //   values of the Position, Momentum, etc.
00088 
00089     void ProposeMomentumDirection(const G4ThreeVector& Pfinal);
00090     void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz);
00091     const G4ThreeVector* GetMomentumDirection() const;
00092     const G4ThreeVector* GetProposedMomentumDirection() const;
00093     void SetProposedMomentumDirection(const G4ThreeVector& Pfinal);
00094     // Get/Set theMomentumDirectionChange vector: it is the final momentum direction.
00095 
00096     const G4ThreeVector* GetPosition() const;
00097     void  ProposePosition(const G4ThreeVector& finalPosition);
00098     const G4ThreeVector* GetProposedPosition() const;
00099     void  SetProposedPosition(const G4ThreeVector& finalPosition);
00100     //  Get/Set the final position of the current particle.
00101 
00102   public:
00103     virtual void DumpInfo() const;
00104     // for Debug
00105     virtual G4bool CheckIt(const G4Track&);
00106 
00107   private:
00108     G4ThreeVector theMomentumDirection;
00109     //  It is the vector containing the final momentum direction
00110     //  after the invoked process. The application of the change
00111     //  of the momentum direction of the particle is not Done here.
00112     //  The responsibility to apply the change is up the entity
00113     //  which invoked the process.
00114 
00115     G4ThreeVector thePosition;
00116     //  The changed (final) position of a given particle.
00117 
00118 };
00119 
00120 #include "G4ParticleChangeForMSC.icc"
00121 #endif
00122 

Generated on Mon May 27 17:49:15 2013 for Geant4 by  doxygen 1.4.7