00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #define INCLXX_IN_GEANT4_MODE 1
00034
00035 #include "globals.hh"
00036
00037 #ifndef G4INCLXXInterface_hh
00038 #define G4INCLXXInterface_hh 1
00039
00040 #include "G4Nucleon.hh"
00041 #include "G4Nucleus.hh"
00042 #include "G4HadronicInteraction.hh"
00043 #include "G4VIntraNuclearTransportModel.hh"
00044 #include "G4KineticTrackVector.hh"
00045 #include "G4FragmentVector.hh"
00046 #include "G4ParticleChange.hh"
00047 #include "G4ReactionProductVector.hh"
00048 #include "G4ReactionProduct.hh"
00049 #include "globals.hh"
00050
00051
00052 #include "G4INCLCascade.hh"
00053
00054
00055 #include "G4ExcitationHandler.hh"
00056
00057
00058 #include "G4BinaryLightIonReaction.hh"
00059
00060 #include <fstream>
00061 #include <iostream>
00062
00063 using namespace std;
00064
00065 class G4INCLXXInterfaceStore;
00066
00091 class G4INCLXXInterface : public G4VIntraNuclearTransportModel {
00092 public:
00093 G4INCLXXInterface(const G4String& name = "INCL++ cascade with G4ExcitationHandler");
00094 ~G4INCLXXInterface();
00095
00096 G4int operator==(G4INCLXXInterface& right) {
00097 return (this == &right);
00098 }
00099
00100 G4int operator!=(G4INCLXXInterface& right) {
00101 return (this != &right);
00102 }
00103
00104 G4ReactionProductVector* Propagate(G4KineticTrackVector* theSecondaries, G4V3DNucleus* theNucleus);
00105
00112 G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& theNucleus);
00113
00114 void DeleteModel() {
00115 delete theINCLModel;
00116 theINCLModel = NULL;
00117 }
00118
00119 private:
00120 G4bool AccurateProjectile(const G4HadProjectile &aTrack, const G4Nucleus &theTargetNucleus) const;
00121
00123 G4INCLXXInterface(const G4INCLXXInterface &rhs);
00124
00126 G4INCLXXInterface &operator=(G4INCLXXInterface const &rhs);
00127
00129 G4INCL::ParticleType toINCLParticleType(G4ParticleDefinition const * const) const;
00130
00132 G4INCL::ParticleSpecies toINCLParticleSpecies(G4HadProjectile const &) const;
00133
00135 G4double toINCLKineticEnergy(G4HadProjectile const &) const;
00136
00138 G4DynamicParticle *toG4Particle(G4int A, G4int Z , G4double kinE, G4double px, G4double py, G4double pz) const;
00139
00141 G4ParticleDefinition *toG4ParticleDefinition (G4int A, G4int Z) const;
00142
00144 G4double remnant4MomentumScaling(G4double mass,
00145 G4double kineticE,
00146 G4double px, G4double py, G4double pz) const;
00147
00148 G4INCL::INCL *theINCLModel;
00149 G4HadFinalState theResult;
00150
00151 G4ExcitationHandler *theExcitationHandler;
00152
00153 G4HadronicInteraction *theBackupModel;
00154
00155 G4INCLXXInterfaceStore * const theInterfaceStore;
00156
00157 G4bool complainedAboutBackupModel;
00158
00159 };
00160
00161 #endif