source: trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QEnvironment.hh @ 1055

Last change on this file since 1055 was 1055, checked in by garnier, 15 years ago

maj sur la beta de geant 4.9.3

File size: 7.5 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer                                           *
4// *                                                                  *
5// * The  Geant4 software  is  copyright of the Copyright Holders  of *
6// * the Geant4 Collaboration.  It is provided  under  the terms  and *
7// * conditions of the Geant4 Software License,  included in the file *
8// * LICENSE and available at  http://cern.ch/geant4/license .  These *
9// * include a list of copyright holders.                             *
10// *                                                                  *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work  make  any representation or  warranty, express or implied, *
14// * regarding  this  software system or assume any liability for its *
15// * use.  Please see the license in the file  LICENSE  and URL above *
16// * for the full disclaimer and the limitation of liability.         *
17// *                                                                  *
18// * This  code  implementation is the result of  the  scientific and *
19// * technical work of the GEANT4 collaboration.                      *
20// * By using,  copying,  modifying or  distributing the software (or *
21// * any work based  on the software)  you  agree  to acknowledge its *
22// * use  in  resulting  scientific  publications,  and indicate your *
23// * acceptance of all terms of the Geant4 Software license.          *
24// ********************************************************************
25//
26//
27// $Id: G4QEnvironment.hh,v 1.33 2009/02/23 09:49:24 mkossov Exp $
28// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
29//
30//      ---------------- G4QEnvironment ----------------
31//             by Mikhail Kossov, August 2000.
32//      header for Multy Quasmon Environment in the CHIPS Model
33// ------------------------------------------------------------
34// Short description: The G4QEnvironment class corresponds to the nuclear
35// environment,  containing excited nucleons or nuclear clusters
36// (G4Quasmons). In the constructer the nucleus (G4QNucleus) is clusterized
37// and then the projectile hadron (or hadrons) can create one (or a few)
38// Quasmons, which are fragmented by the Fragment member function. As a
39// result a vector of G4QHadrons is created, which can include the residual
40// nucleus in the ground state.
41//---------------------------------------------------------------------
42
43#ifndef G4QEnvironment_h
44#define G4QEnvironment_h 1
45
46#include "G4QuasmonVector.hh"
47
48class G4QEnvironment 
49{
50public:
51  G4QEnvironment(const G4QNucleus theEnv);             // Create Env and add Quasmons later
52  G4QEnvironment(const G4QHadronVector& projHadrons, const G4int targPDG);
53  G4QEnvironment(const G4QEnvironment& right);         // copy QEnvironment by value
54  G4QEnvironment(G4QEnvironment* right);               // copy QEnvironment by pointer
55  ~G4QEnvironment();                                   // Public Destructor
56
57  // Overloaded operators
58  const G4QEnvironment& operator=(const G4QEnvironment& right);
59  G4bool operator==(const G4QEnvironment &right) const;
60  G4bool operator!=(const G4QEnvironment &right) const;
61
62  //Selectors
63  G4QNucleus       GetEnvironment() const;
64  G4QuasmonVector* GetQuasmons();           // User is responsible for Destroy/Clear/Delete
65  G4QHadronVector* GetQHadrons();           // User is responsible for Destroy/Clear/Delete
66  G4QHadronVector* GetProjectiles();        // User is responsible for Destroy/Clear/Delete
67
68  // Modifiers
69  void AddQuasmon(G4Quasmon* Q);            // Add aQuasmon to theEnvironment
70  G4QHadronVector* Fragment();              // User must clear and destroy the G4QHadronVec
71
72  // Static functions
73  static void SetParameters(G4double solAn=0.4,G4bool efFlag=false,G4double piThresh=141.4,
74                            G4double mpisq=20000., G4double dinum=1880.);
75  static void OpenElectromagneticDecays();
76  static void CloseElectromagneticDecays();
77
78protected:
79  void CleanUpQHadrons();  // Only another G4QEnvironment issue can use it (can make mess)
80  void FillQHadrons(G4QHadronVector* input); //Only another G4QEnvironment issue can use it
81
82private:
83  G4QHadronVector* FSInteraction();         // Final State Interaction after Hadronization
84  G4QHadronVector  HadronizeQEnvironment(); // Main HadronizationFunction used in Fragment
85  void             CopyAndDeleteHadronVector(G4QHadronVector* HV);//Copy HadrVect to Output
86  void CreateQuasmon(const G4QContent& pQC, const G4LorentzVector& p4M, G4bool f=false);
87  void             InitClustersVector(G4int maxC, G4int maxA);//Init.NucClust's for 1st int
88  void             CleanUp();               // Makes theEnvironment=vacuum & kill Quasmons
89  void             PrepareInteractionProbabilities(const G4QContent& projQC, G4double AP);
90  void             EvaporateResidual(G4QHadron* h);// Final Evaporation of a nucl. fragment
91  void             DecayBaryon(G4QHadron* dB);     // Decay baryon (gamma+N or Delta->N+Pi)
92  void             DecayAntistrange(G4QHadron* aS);// Decay Antistrange nucleus
93  G4bool           CheckGroundState(G4Quasmon* quasm,G4bool corFlag=false);//as G4Q for QHV
94  G4bool           DecayInEnvQ(G4Quasmon* quasm);  // Use befor evaporation in PANIC case
95
96// Body
97private:
98  // Static Parameters
99  static G4bool      WeakDecays;     // Flag for opening WeakDecays (notUsed: allAreClosed)
100  static G4bool      ElMaDecays;     // Flag for opening ElectroMagDecays (true by default)
101  static G4bool      EnergyFlux;     // Flag for Energy Flux use instead of Multy Quasmon
102  static G4double    SolidAngle;     // Part of Solid Angle to capture secondaries(@@A-dep)
103  static G4double    PiPrThresh;     // Pion Production Threshold for gammas
104  static G4double    M2ShiftVir;     // Shift for M2=-Q2=m_pi^2 of the virtual gamma
105  static G4double    DiNuclMass;     // Double Nucleon Mass for virtual normalization
106  // Output hadrons
107  G4QHadronVector    theQHadrons;    // Vector of generated secondary hadrons
108  // Internal working objects
109  G4QHadronVector    intQHadrons;    // Vector of postponed secondary hadrons
110  G4QCHIPSWorld*     theWorld;       // the CHIPS World
111  G4int              nBarClust;      // Maximum BarionNumber of clusters (To optimize calc)
112  G4double           f2all;          // Ratio of freeNucleons to free+denseNucleons
113  G4QuasmonVector    theQuasmons;    // Intermediate vectorOfQuasmons before fragmentation
114  G4QCandidateVector theQCandidates; // Vector of possible candidates to clusters
115  G4QNucleus         theEnvironment; // InitialNucleus (later ResidualNuclearEnvironment)
116  G4LorentzVector    tot4Mom;        // Total 4-momentum in the reaction
117  G4int              totCharge;      // Total charge in the reaction (for current control)
118  G4int              totBaryoN;      // Total baryon number in the reaction (for cur.cont)
119  G4QHadronVector    theProjectiles; // Vector of projectiles in the interaction
120  G4int              theTargetPDG;   // PDG of the target nucleus in the interaction
121};
122
123//General function makes Random Unit 3D-Vector
124G4ThreeVector RndmDir();
125
126// Inline functions
127inline G4bool G4QEnvironment::operator==(const G4QEnvironment &rhs) const
128                                                                     {return this == &rhs;}
129inline G4bool G4QEnvironment::operator!=(const G4QEnvironment &rhs) const
130                                                                     {return this != &rhs;}
131inline G4QNucleus G4QEnvironment::GetEnvironment() const {return theEnvironment;}
132#endif
Note: See TracBrowser for help on using the repository browser.