G4IntraNucleiCascader

public G4CascadeColliderBase

产生对撞产物!!!

void collide(G4InuclParticle* bullet, G4InuclParticle* target, G4CollisionOutput& globalOutput);
  G4bool initialize(G4InuclParticle* bullet, G4InuclParticle* target);

  void newCascade(G4int itry);        // Clear buffers for next attempt
  void setupCascade();            // Fill cascade using nuclear model
  void generateCascade();        // Track secondaries through nucleus
  G4bool finishCascade();        // Clean up output, check consistency

  void finalize(G4int itry,         // Transfer final state for return
        G4InuclParticle* bullet, G4InuclParticle* target,
        G4CollisionOutput& globalOutput);
  • G4NucleiModel

class

public:
  G4IntraNucleiCascader();
  virtual ~G4IntraNucleiCascader();

  void collide(G4InuclParticle* bullet, G4InuclParticle* target,
           G4CollisionOutput& globalOutput);

  // For use with Propagate to preload a set of secondaries
  void rescatter(G4InuclParticle* bullet, G4KineticTrackVector* theSecondaries,
         G4V3DNucleus* theNucleus, G4CollisionOutput& globalOutput);

  void setVerboseLevel(G4int verbose=0);

private:
  static const G4int itry_max;        // Maximum number of attempts
  static const G4int reflection_cut;    // Maximum number of reflections
  static const G4double small_ekin;    // Tolerance for round-off zero
  static const G4double quasielast_cut;    // To recover elastic scatters

protected:
  G4bool initialize(G4InuclParticle* bullet, G4InuclParticle* target);

  void newCascade(G4int itry);        // Clear buffers for next attempt
  void setupCascade();            // Fill cascade using nuclear model
  void generateCascade();        // Track secondaries through nucleus
  G4bool finishCascade();        // Clean up output, check consistency

  void finalize(G4int itry,         // Transfer final state for return
        G4InuclParticle* bullet, G4InuclParticle* target,
        G4CollisionOutput& globalOutput);

  G4InuclParticle* createTarget(G4V3DNucleus* theNucleus);

  // Functions to transfer input high-energy cascade for propagation
  void preloadCascade(G4V3DNucleus* theNucleus,
              G4KineticTrackVector* theSecondaries);
  void copyWoundedNucleus(G4V3DNucleus* theNucleus);
  void copySecondaries(G4KineticTrackVector* theSecondaries);
  void processSecondary(const G4KineticTrack* aSecondary);
  void releaseSecondary(const G4KineticTrack* aSecondary);

  // Functions to handle, e.g., low-energy hyperons stuck inside potential
  void processTrappedParticle(const G4CascadParticle& trapped);
  void decayTrappedParticle(const G4CascadParticle& trapped);

  // Test if particle is able to interact in nucleus
  G4bool particleCanInteract(const G4CascadParticle& cpart) const;

private: 
  G4NucleiModel* model;
  G4ElementaryParticleCollider* theElementaryParticleCollider;
  G4CascadeRecoilMaker* theRecoilMaker;
  G4CascadeCoalescence* theClusterMaker;
  G4CascadeHistory* theCascadeHistory;

  // Buffers and parameters for cascade attempts
  G4InuclNuclei* tnuclei;        // Target nucleus (must be non-zero)
  G4InuclNuclei* bnuclei;        // Non-zero if ion-ion collision
  G4InuclElementaryParticle* bparticle;    // Non-zero if hadron-ion collision

  G4double minimum_recoil_A;        // Require fragment with this mass
  G4double coulombBarrier;

  // Buffers for creation (and reuse) of rescattering targets
  G4InuclNuclei* nucleusTarget;
  G4InuclElementaryParticle* protonTarget;

  // Buffers for collecting result of cascade (reset on each iteration)
  G4CollisionOutput output;
  std::vector<G4CascadParticle> cascad_particles;
  std::vector<G4CascadParticle> new_cascad_particles;
  G4ExitonConfiguration theExitonConfiguration;

  std::vector<G4ThreeVector> hitNucleons;    // Nucleons hit before rescatter

private:
  // Copying of modules is forbidden
  G4IntraNucleiCascader(const G4IntraNucleiCascader&);
  G4IntraNucleiCascader& operator=(const G4IntraNucleiCascader&);
© Hongyi Wu            updated: 2018-09-04 05:46:05

results matching ""

    No results matching ""