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

Last change on this file since 836 was 819, checked in by garnier, 16 years ago

import all except CVS

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