G4QEnvironment.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 //
00027 // $Id$
00028 //
00029 //      ---------------- G4QEnvironment ----------------
00030 //             by Mikhail Kossov, August 2000.
00031 //      header for Multy Quasmon Environment in the CHIPS Model
00032 // ------------------------------------------------------------
00033 // Short description: The G4QEnvironment class corresponds to the nuclear
00034 // environment,  containing excited nucleons or nuclear clusters
00035 // (G4Quasmons). In the constructer the nucleus (G4QNucleus) is clusterized
00036 // and then the projectile hadron (or hadrons) can create one (or a few)
00037 // Quasmons, which are fragmented by the Fragment member function. As a
00038 // result a vector of G4QHadrons is created, which can include the residual
00039 // nucleus in the ground state.
00040 //---------------------------------------------------------------------
00041 
00042 #ifndef G4QEnvironment_h
00043 #define G4QEnvironment_h 1
00044 
00045 #include "G4RandomDirection.hh"
00046 #include "G4QuasmonVector.hh"
00047 #include "G4QFreeScattering.hh"
00048 #include "G4QThd.hh"
00049 
00050 class G4QEnvironment 
00051 {
00052 public:
00053   G4QEnvironment(const G4QNucleus& theEnv); // Create Env and add Quasmons
00054                                             // later
00055   G4QEnvironment(const G4QHadronVector& projHadrons, const G4int targPDG);
00056   G4QEnvironment(const G4QEnvironment& right);  // copy QEnvironment by value
00057   G4QEnvironment(G4QEnvironment* right);        // copy QEnvironment by pointer
00058   ~G4QEnvironment();                                   // Public Destructor
00059 
00060   // Overloaded operators
00061   const G4QEnvironment& operator=(const G4QEnvironment& right);
00062   G4bool operator==(const G4QEnvironment &right) const;
00063   G4bool operator!=(const G4QEnvironment &right) const;
00064 
00065   //Selectors
00066   G4QNucleus       GetEnvironment() const;
00067   G4QuasmonVector* GetQuasmons();           // User is responsible for Destroy/Clear/Delete
00068   G4QHadronVector* GetQHadrons();           // User is responsible for Destroy/Clear/Delete
00069   G4QHadronVector* GetProjectiles();        // User is responsible for Destroy/Clear/Delete
00070 
00071   // Modifiers
00072   void AddQuasmon(G4Quasmon* Q);            // Add aQuasmon to theEnvironment
00073   G4QHadronVector* Fragment();              // User must clear and destroy the G4QHadronVec
00074 
00075   // External managment
00076   void DecayBaryon(G4QHadron* dB, G4QHadronVector* HV);     // Decay baryon
00077   void DecayMeson(G4QHadron* dB, G4QHadronVector* HV);      // Decay meson
00078   void DecayAntistrange(G4QHadron* aS, G4QHadronVector* HV);// Decay AntiStrNuc
00079   void CheckMassShell(G4QHadronVector* HV);                 // All hadrons on mass shell
00080 
00081   // Static functions
00082   static void SetParameters(G4double solAn=0.4,G4bool efFlag=false,G4double piThresh=141.4,
00083                             G4double mpisq=20000., G4double dinum=1880.);
00084   static void OpenElectromagneticDecays();
00085   static void CloseElectromagneticDecays();
00086 
00087 protected:
00088   void CleanUpQHadrons();  // Only another G4QEnvironment issue can use it (can make mess)
00089   void FillQHadrons(G4QHadronVector* input); //Only another G4QEnvironment issue can use it
00090 
00091 private:
00092   G4QHadronVector* FSInteraction();         // Final State Interaction after Hadronization
00093   G4QHadronVector  HadronizeQEnvironment(); // Main HadronizationFunction used in Fragment
00094   void             CopyAndDeleteHadronVector(G4QHadronVector* HV);//Copy HadrVect to Output
00095   void CreateQuasmon(const G4QContent& pQC, const G4LorentzVector& p4M, G4bool f=false);
00096   void             InitClustersVector(G4int maxC, G4int maxA);//Init.NucClust's for 1st int
00097   void             CleanUp();               // Makes theEnvironment=vacuum & kill Quasmons
00098   void             PrepareInteractionProbabilities(const G4QContent& projQC, G4double AP);
00099   void             EvaporateResidual(G4QHadron* h, G4bool f=true);// Evaporate NuclearFragm
00100   G4bool           CheckGroundState(G4Quasmon* quasm,G4bool corFlag=false);//as G4Q for QHV
00101   G4bool           DecayInEnvQ(G4Quasmon* quasm);  // Use befor evaporation in PANIC case
00102 
00103 // Body
00104 private:
00105   // Static Parameters
00106   static G4bool      WeakDecays;     // Flag for opening WeakDecays (notUsed: allAreClosed)
00107   static G4bool      ElMaDecays;     // Flag for opening ElectroMagDecays (true by default)
00108   static G4bool      EnergyFlux;     // Flag for Energy Flux use instead of Multy Quasmon
00109   static G4double    SolidAngle;     // Part of Solid Angle to capture secondaries(@@A-dep)
00110   static G4double    PiPrThresh;     // Pion Production Threshold for gammas
00111   static G4double    M2ShiftVir;     // Shift for M2=-Q2=m_pi^2 of the virtual gamma
00112   static G4double    DiNuclMass;     // Double Nucleon Mass for virtual normalization
00113   // Output hadrons
00114   G4QHadronVector    theQHadrons;    // Vector of generated secondary hadrons
00115   // Internal working objects
00116   G4QHadronVector    intQHadrons;    // Vector of postponed secondary hadrons
00117   G4QCHIPSWorld*     theWorld;       // the CHIPS World
00118   G4int              nBarClust;      // Maximum BarionNumber of clusters (To optimize calc)
00119   G4double           f2all;          // Ratio of freeNucleons to free+denseNucleons
00120   G4QuasmonVector    theQuasmons;    // Intermediate vectorOfQuasmons before fragmentation
00121   G4QCandidateVector theQCandidates; // Vector of possible candidates to clusters
00122   G4QNucleus theEnvironment; // InitialNucleus (later ResidualNuclearEnvironment)
00123   G4LorentzVector    tot4Mom;        // Total 4-momentum in the reaction
00124   G4int              totCharge;      // Total charge in the reaction (for current control)
00125   G4int              totBaryoN;      // Total baryon number in the reaction (for cur.cont)
00126   G4QHadronVector    theProjectiles; // Vector of projectiles in the interaction
00127   G4int              theTargetPDG;   // PDG of the target nucleus in the interaction
00128   G4QFreeScattering* theQFScat;      // Pointer to the CHIPS Quasi-Free Scatterer
00129 };
00130 
00131 // Inline functions
00132 inline G4bool G4QEnvironment::operator==(const G4QEnvironment &rhs) const
00133                                                                      {return this == &rhs;}
00134 inline G4bool G4QEnvironment::operator!=(const G4QEnvironment &rhs) const
00135                                                                      {return this != &rhs;}
00136 inline G4QNucleus G4QEnvironment::GetEnvironment() const {return theEnvironment;}
00137 
00138 #endif

Generated on Mon May 27 17:49:33 2013 for Geant4 by  doxygen 1.4.7