Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4QFragmentation.hh
Go to the documentation of this file.
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$
28//
29// -----------------------------------------------------------------------------
30// GEANT 4 class header file
31//
32// History:
33// Created by Mikhail Kossov, October 2006
34// CHIPS QGS fragmentation class
35// For comparison mirror member functions are taken from G4 classes:
36// G4QGSParticipants
37// G4QGSModels
38// G4ExcitedStringDecay
39// -----------------------------------------------------------------------------
40// Short description: CHIPS string fragmentation class
41// -----------------------------------------------------------------------------
42//
43#ifndef G4QFragmentation_h
44#define G4QFragmentation_h 1
45
46#include "globals.hh"
47#include "G4LorentzVector.hh"
48#include "Randomize.hh"
49#include "G4QNucleus.hh"
50#include "G4Quasmon.hh"
51#include "G4QHadronVector.hh"
52#include "G4QEnvironment.hh"
54#include "G4QProbability.hh"
55#include "G4QPartonPairVector.hh"
56#include "G4QuasiFreeRatios.hh"
58#include "G4QStringVector.hh"
59
61{
62 public:
63 G4QFragmentation(const G4QNucleus& aNucleus, const G4QHadron& aPrimary);
65
66 G4QHadronVector* Fragment(); // Calls Breeder & fragments Quasmons inside ResidualNucleus
67
68 // Static functions
69 static void SetParameters(G4int nC, G4double strTens, G4double tubeDens, G4double SigPt);
70
71 protected:
72 G4bool ExciteDiffParticipants(G4QHadron* aPartner, G4QHadron* bPartner) const; //@@Once
73 G4bool ExciteSingDiffParticipants(G4QHadron* aPartner, G4QHadron* bPartner) const;//@@Onc
74 std::pair<G4int,G4int> ReducePair(G4int P1, G4int P2) const; // Reduce Q-pairs to singles
75 void Breeder(); // String fragmentation algoritm, which makes Hadrons & Quasmons from Str
76 // @@ At present always SingleDiffractive, so this is a fake member function
77 G4bool IsSingleDiffractive() {G4bool r=false; if(G4UniformRand()<1.) r=true; return r;}
78 G4int SumPartonPDG(G4int PDG1, G4int PFG2) const;
79 G4double ChooseX(G4double Xmin, G4double Xmax) const;
80 G4ThreeVector GaussianPt(G4double widthSquare, G4double maxPtSquare) const;
81 G4int AnnihilationOrder(G4int LS, G4int MS, G4int uP, G4int mP, G4int sP, G4int nP);
82 void SwapPartons(); // Try to swap partons of strings, if one of strings has negative M2
83 void EvaporateResidual(G4QHadron* hadrNuc); //Evaporate hadrNucleus, NuclFrag->theResult
84 private:
85 enum {SOFT, DIFFRACTIVE};
86 // static model parameters
87 static G4int nCutMax; // Maximum number of Soft Cuts
88 static G4double stringTension; // String Tension to absorb energy
89 static G4double tubeDensity; // Nucleon density in the FluxTube
90 static G4double widthOfPtSquare; // width^2 of pt(StringExcitation)
91
92 // Body
93 G4QNucleus theNucleus; // TargetNucleus moving fromLStoCM
94 G4QStringVector strings; // Vector of created strings
95 G4QuasmonVector theQuasmons; // Strings converter to Quasmons
96 G4QHadronVector* theResult; // Pointer to the OUTPUT Result
97 G4double maxEn; // Energy absorbed by the nucleus
98 G4double maxNuc; // #0fNucleons in the Flux Tube
99 G4QuasiFreeRatios* theQuasiElastic; // For CHIPS Quasi-Elastic
100 G4QDiffractionRatio* theDiffraction; // For CHIPS Diffraction
101 G4QCHIPSWorld* theWorld; // Pointer to the CHIPS World
102};
103
104#endif
std::vector< G4QHadron * > G4QHadronVector
std::vector< G4QString * > G4QStringVector
std::vector< G4Quasmon * > G4QuasmonVector
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
#define G4UniformRand()
Definition: Randomize.hh:53
G4int SumPartonPDG(G4int PDG1, G4int PFG2) const
std::pair< G4int, G4int > ReducePair(G4int P1, G4int P2) const
static void SetParameters(G4int nC, G4double strTens, G4double tubeDens, G4double SigPt)
G4bool IsSingleDiffractive()
G4double ChooseX(G4double Xmin, G4double Xmax) const
G4ThreeVector GaussianPt(G4double widthSquare, G4double maxPtSquare) const
G4QHadronVector * Fragment()
G4bool ExciteDiffParticipants(G4QHadron *aPartner, G4QHadron *bPartner) const
G4bool ExciteSingDiffParticipants(G4QHadron *aPartner, G4QHadron *bPartner) const
void EvaporateResidual(G4QHadron *hadrNuc)
G4int AnnihilationOrder(G4int LS, G4int MS, G4int uP, G4int mP, G4int sP, G4int nP)