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

Last change on this file since 1340 was 1340, checked in by garnier, 14 years ago

update ti head

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.37 2010/02/04 09:32:33 mkossov Exp $
28// GEANT4 tag $Name: hadr-chips-V09-03-08 $
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 "G4RandomDirection.hh"
47#include "G4QuasmonVector.hh"
48
49class G4QEnvironment 
50{
51public:
52  G4QEnvironment(const G4QNucleus theEnv);             // Create Env and add Quasmons later
53  G4QEnvironment(const G4QHadronVector& projHadrons, const G4int targPDG);
54  G4QEnvironment(const G4QEnvironment& right);         // copy QEnvironment by value
55  G4QEnvironment(G4QEnvironment* right);               // copy QEnvironment by pointer
56  ~G4QEnvironment();                                   // Public Destructor
57
58  // Overloaded operators
59  const G4QEnvironment& operator=(const G4QEnvironment& right);
60  G4bool operator==(const G4QEnvironment &right) const;
61  G4bool operator!=(const G4QEnvironment &right) const;
62
63  //Selectors
64  G4QNucleus       GetEnvironment() const;
65  G4QuasmonVector* GetQuasmons();           // User is responsible for Destroy/Clear/Delete
66  G4QHadronVector* GetQHadrons();           // User is responsible for Destroy/Clear/Delete
67  G4QHadronVector* GetProjectiles();        // User is responsible for Destroy/Clear/Delete
68
69  // Modifiers
70  void AddQuasmon(G4Quasmon* Q);            // Add aQuasmon to theEnvironment
71  G4QHadronVector* Fragment();              // User must clear and destroy the G4QHadronVec
72
73  // Static functions
74  static void SetParameters(G4double solAn=0.4,G4bool efFlag=false,G4double piThresh=141.4,
75                            G4double mpisq=20000., G4double dinum=1880.);
76  static void OpenElectromagneticDecays();
77  static void CloseElectromagneticDecays();
78
79protected:
80  void CleanUpQHadrons();  // Only another G4QEnvironment issue can use it (can make mess)
81  void FillQHadrons(G4QHadronVector* input); //Only another G4QEnvironment issue can use it
82
83private:
84  G4QHadronVector* FSInteraction();         // Final State Interaction after Hadronization
85  G4QHadronVector  HadronizeQEnvironment(); // Main HadronizationFunction used in Fragment
86  void             CopyAndDeleteHadronVector(G4QHadronVector* HV);//Copy HadrVect to Output
87  void CreateQuasmon(const G4QContent& pQC, const G4LorentzVector& p4M, G4bool f=false);
88  void             InitClustersVector(G4int maxC, G4int maxA);//Init.NucClust's for 1st int
89  void             CleanUp();               // Makes theEnvironment=vacuum & kill Quasmons
90  void             PrepareInteractionProbabilities(const G4QContent& projQC, G4double AP);
91  void             EvaporateResidual(G4QHadron* h, G4bool f=true);// Evaporate NuclearFragm
92  void             DecayBaryon(G4QHadron* dB);     // Decay baryon (gamma+N or Delta->N+Pi)
93  void             DecayAntistrange(G4QHadron* aS);// Decay Antistrange nucleus
94  G4bool           CheckGroundState(G4Quasmon* quasm,G4bool corFlag=false);//as G4Q for QHV
95  G4bool           DecayInEnvQ(G4Quasmon* quasm);  // Use befor evaporation in PANIC case
96
97// Body
98private:
99  // Static Parameters
100  static G4bool      WeakDecays;     // Flag for opening WeakDecays (notUsed: allAreClosed)
101  static G4bool      ElMaDecays;     // Flag for opening ElectroMagDecays (true by default)
102  static G4bool      EnergyFlux;     // Flag for Energy Flux use instead of Multy Quasmon
103  static G4double    SolidAngle;     // Part of Solid Angle to capture secondaries(@@A-dep)
104  static G4double    PiPrThresh;     // Pion Production Threshold for gammas
105  static G4double    M2ShiftVir;     // Shift for M2=-Q2=m_pi^2 of the virtual gamma
106  static G4double    DiNuclMass;     // Double Nucleon Mass for virtual normalization
107  // Output hadrons
108  G4QHadronVector    theQHadrons;    // Vector of generated secondary hadrons
109  // Internal working objects
110  G4QHadronVector    intQHadrons;    // Vector of postponed secondary hadrons
111  G4QCHIPSWorld*     theWorld;       // the CHIPS World
112  G4int              nBarClust;      // Maximum BarionNumber of clusters (To optimize calc)
113  G4double           f2all;          // Ratio of freeNucleons to free+denseNucleons
114  G4QuasmonVector    theQuasmons;    // Intermediate vectorOfQuasmons before fragmentation
115  G4QCandidateVector theQCandidates; // Vector of possible candidates to clusters
116  G4QNucleus         theEnvironment; // InitialNucleus (later ResidualNuclearEnvironment)
117  G4LorentzVector    tot4Mom;        // Total 4-momentum in the reaction
118  G4int              totCharge;      // Total charge in the reaction (for current control)
119  G4int              totBaryoN;      // Total baryon number in the reaction (for cur.cont)
120  G4QHadronVector    theProjectiles; // Vector of projectiles in the interaction
121  G4int              theTargetPDG;   // PDG of the target nucleus in the interaction
122};
123
124//General function makes Random Unit 3D-Vector
125//G4ThreeVector RndmDir();
126
127// Inline functions
128inline G4bool G4QEnvironment::operator==(const G4QEnvironment &rhs) const
129                                                                     {return this == &rhs;}
130inline G4bool G4QEnvironment::operator!=(const G4QEnvironment &rhs) const
131                                                                     {return this != &rhs;}
132inline G4QNucleus G4QEnvironment::GetEnvironment() const {return theEnvironment;}
133#endif
Note: See TracBrowser for help on using the repository browser.