G4ReactionDynamics.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 //
00028  // Hadronic Process: Reaction Dynamics
00029  // original by H.P. Wellisch
00030  // Modified by J.L.Chuma 19-Nov-96
00031  // Modified by J.L.Chuma 27-Mar-97
00032  // Modified by J.L.Chuma 30-Apr-97
00033  // Modified by J.L.Chuma 06-Aug-97  to include the original incident particle
00034  //                                  before Fermi motion and evaporation effects
00035  
00036 #ifndef G4ReactionDynamics_h
00037 #define G4ReactionDynamics_h 1
00038 
00039 #include "G4ParticleTypes.hh"
00040 #include "G4DynamicParticle.hh"
00041 #include "G4ReactionProduct.hh"
00042 #include "G4Nucleus.hh"
00043 #include "G4FastVector.hh"
00044 #include "G4HadProjectile.hh"
00045 
00046 enum{ GHADLISTSIZE=256};
00047 
00048  class G4ReactionDynamics 
00049  {
00050  public:
00051     
00052     G4ReactionDynamics() {}
00053     
00054     virtual ~G4ReactionDynamics() {}
00055     
00056     virtual G4double FindInelasticity()
00057     { return 0.0; }
00058     
00059     virtual G4double FindTimeDelay()
00060     { return 0.0; }
00061     
00062     G4bool GenerateXandPt(                   // derived from GENXPT
00063      G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
00064      G4int &vecLen,
00065      G4ReactionProduct &modifiedOriginal, // Fermi motion & evap. effect included
00066      const G4HadProjectile *originalIncident,
00067      G4ReactionProduct &currentParticle,
00068      G4ReactionProduct &targetParticle,
00069      const G4DynamicParticle* originalTarget,
00070      const G4Nucleus &targetNucleus,
00071      G4bool &incidentHasChanged, 
00072      G4bool &targetHasChanged,
00073      G4bool leadFlag,
00074      G4ReactionProduct &leadingStrangeParticle );
00075     
00076     void SuppressChargedPions(
00077      G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
00078      G4int &vecLen,
00079      const G4ReactionProduct &modifiedOriginal,
00080      G4ReactionProduct &currentParticle,
00081      G4ReactionProduct &targetParticle,
00082      const G4Nucleus &targetNucleus,
00083      G4bool &incidentHasChanged,
00084      G4bool &targetHasChanged );
00085       
00086     G4bool TwoCluster(                       // derived from TWOCLU
00087      G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
00088      G4int &vecLen,
00089      G4ReactionProduct &modifiedOriginal, // Fermi motion & evap. effect included
00090      const G4HadProjectile *originalIncident,
00091      G4ReactionProduct &currentParticle,
00092      G4ReactionProduct &targetParticle,
00093      const G4DynamicParticle* originalTarget,
00094      const G4Nucleus &targetNucleus,
00095      G4bool &incidentHasChanged, 
00096      G4bool &targetHasChanged,
00097      G4bool leadFlag,
00098      G4ReactionProduct &leadingStrangeParticle );
00099     
00100     void TwoBody(                         // derived from TWOB
00101      G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
00102      G4int &vecLen,
00103      G4ReactionProduct &modifiedOriginal,
00104      const G4DynamicParticle *originalTarget,
00105      G4ReactionProduct &currentParticle,
00106      G4ReactionProduct &targetParticle,
00107      const G4Nucleus &targetNucleus,
00108      G4bool &targetHasChanged );
00109     
00110     G4int Factorial( G4int n );
00111     
00112     G4double GenerateNBodyEvent(                // derived from PHASP
00113      const G4double totalEnergy,
00114      const G4bool constantCrossSection,
00115      G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
00116      G4int &vecLen );
00117     
00118     void ProduceStrangeParticlePairs(
00119      G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
00120      G4int &vecLen,
00121      const G4ReactionProduct &modifiedOriginal,
00122      const G4DynamicParticle *originalTarget, 
00123      G4ReactionProduct &currentParticle,
00124      G4ReactionProduct &targetParticle,
00125      G4bool &incidentHasChanged,
00126      G4bool &targetHasChanged );
00127     
00128     void NuclearReaction(                     // derived from NUCREC
00129      G4FastVector<G4ReactionProduct,4> &vec,
00130      G4int &vecLen,
00131      const G4HadProjectile *originalIncident,
00132      const G4Nucleus &aNucleus,
00133      const G4double theAtomicMass,
00134      const G4double *massVec );
00135     
00136  private:
00137     
00138     void Rotate(
00139      const G4double numberofFinalStateNucleons,
00140      const G4ThreeVector &temp,
00141      const G4ReactionProduct &modifiedOriginal, // Fermi motion & evap. effect included
00142      const G4HadProjectile *originalIncident,
00143      const G4Nucleus &targetNucleus,
00144      G4ReactionProduct &currentParticle,
00145      G4ReactionProduct &targetParticle,
00146      G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
00147      G4int &vecLen );
00148     
00149     void Defs1(
00150      const G4ReactionProduct &modifiedOriginal,
00151      G4ReactionProduct &currentParticle,
00152      G4ReactionProduct &targetParticle,
00153      G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
00154      G4int &vecLen );
00155     
00156     void AddBlackTrackParticles(
00157      const G4double epnb,
00158      const G4int npnb,
00159      const G4double edta,
00160      const G4int ndta,
00161      const G4double sprob,
00162      const G4double kineticMinimum,
00163      const G4double kineticFactor,
00164      const G4ReactionProduct &modifiedOriginal,
00165      G4int PinNucleus,
00166      G4int NinNucleus,
00167      const G4Nucleus &aNucleus,
00168      G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
00169      G4int &vecLen );
00170     
00171     std::pair<G4int, G4int> GetFinalStateNucleons(
00172      const G4DynamicParticle* originalTarget,
00173      const G4FastVector<G4ReactionProduct,GHADLISTSIZE>& vec,
00174      const G4int& vecLen );
00175 
00176     void MomentumCheck(
00177      const G4ReactionProduct &modifiedOriginal,
00178      G4ReactionProduct &currentParticle,
00179      G4ReactionProduct &targetParticle,
00180      G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
00181      G4int &vecLen );
00182     
00183     G4double normal();
00184     
00185     G4int Poisson( G4double x );
00186 
00187  };
00188  
00189 #endif
00190  

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