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 #ifndef G4BinaryLightIonReaction_h
00027 #define G4BinaryLightIonReaction_h 1
00028
00029 #include "G4BinaryCascade.hh"
00030 #include "G4PreCompoundModel.hh"
00031 #include "G4HadFinalState.hh"
00032 #include "G4ExcitationHandler.hh"
00033
00034 class G4BinaryLightIonReaction : public G4HadronicInteraction
00035 {
00036 public:
00037 G4BinaryLightIonReaction(G4VPreCompoundModel* ptr = 0);
00038 virtual ~G4BinaryLightIonReaction();
00039 G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
00040 G4Nucleus& theNucleus);
00041 inline void SetPrecompound(G4VPreCompoundModel* ptr);
00042 inline void SetDeExcitation(G4ExcitationHandler* ptr);
00043
00044 virtual void ModelDescription(std::ostream&) const ;
00045
00046 private:
00047 G4bool EnergyAndMomentumCorrector(G4ReactionProductVector* products,
00048 G4LorentzVector& TotalCollisionMom);
00049 G4bool SetLighterAsProjectile(G4LorentzVector & mom,const G4LorentzRotation & toBreit);
00050 G4ReactionProductVector * FuseNucleiAndPrompound(const G4LorentzVector & mom);
00051 G4ReactionProductVector * Interact(G4LorentzVector & mom, const G4LorentzRotation & );
00052 G4double GetProjectileExcitation();
00053 void DeExciteSpectatorNucleus(G4ReactionProductVector * spectators, G4ReactionProductVector * cascaders,
00054 G4double theStatisticalExEnergy, G4LorentzVector & momentum);
00055 G4LorentzVector SortResult(G4ReactionProductVector * result,G4ReactionProductVector * spectators,G4ReactionProductVector * cascaders);
00056
00057 G4BinaryCascade* theModel;
00058 G4ExcitationHandler* theHandler;
00059 G4VPreCompoundModel* theProjectileFragmentation;
00060 G4HadFinalState theResult;
00061 G4int pA, pZ, tA, tZ,spectatorA,spectatorZ;
00062 G4Fancy3DNucleus * projectile3dNucleus, * target3dNucleus;
00063 G4FermiMomentum theFermi;
00064 G4LorentzVector pInitialState, pFinalState;
00065
00066 G4bool debug_G4BinaryLightIonReactionResults;
00067
00068 };
00069 inline void G4BinaryLightIonReaction::SetPrecompound(G4VPreCompoundModel* ptr)
00070 {
00071 if(ptr) { theProjectileFragmentation = ptr; }
00072 theHandler = theProjectileFragmentation->GetExcitationHandler();
00073 }
00074 inline void G4BinaryLightIonReaction::SetDeExcitation(G4ExcitationHandler* ptr)
00075 {
00076 theProjectileFragmentation->SetExcitationHandler(ptr);
00077 theHandler = ptr;
00078 }
00079
00080 #endif