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
G4QIonIonCollision.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 for ion-ion inelastic
41// -----------------------------------------------------------------------------
42//
43#ifndef G4QIonIonCollision_h
44#define G4QIonIonCollision_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"
57#include "G4QStringVector.hh"
58
60{
61 public:
62 G4QIonIonCollision(G4QNucleus& pNucleus, const G4QNucleus& tNucleus);
64
65 G4QHadronVector* Fragment(); // Calls Breeder & fragments Quasmons inside ResidualNucleus
66
67 // Static functions
68 static void SetParameters(G4int nC, G4double strTens, G4double tubeDens, G4double SigPt);
69
70 protected:
71 G4bool ExciteDiffParticipants(G4QHadron* aPartner, G4QHadron* bPartner) const; //@@Once
72 G4bool ExciteSingDiffParticipants(G4QHadron* aPartner, G4QHadron* bPartner) const;//@@Onc
73 std::pair<G4int,G4int> ReducePair(G4int P1, G4int P2) const; // Reduce Q-pairs to singles
74 void Breeder(); // String fragmentation algoritm, which makes Hadrons & Quasmons from Str
75 // @@ At present always SingleDiffractive, so this is a fake member function
76 G4bool IsSingleDiffractive() {G4bool r=false; if(G4UniformRand()<1.) r=true; return r;}
77 G4int SumPartonPDG(G4int PDG1, G4int PFG2) const;
78 G4double ChooseX(G4double Xmin, G4double Xmax) const;
79 G4ThreeVector GaussianPt(G4double widthSquare, G4double maxPtSquare) const;
80 G4int AnnihilationOrder(G4int LS, G4int MS, G4int uP, G4int mP, G4int sP, G4int nP);
81 void SwapPartons(); // Try to swap partons of strings, if one of strings has negative M2
82
83 private:
84 enum {SOFT, DIFFRACTIVE};
85 // static model parameters
86 static G4int nCutMax; // Maximum number of Soft Cuts
87 static G4double stringTension; // String Tension to absorb energy
88 static G4double tubeDensity; // Nucleon density in the FluxTube
89 static G4double widthOfPtSquare; // width^2 of pt(StringExcitation)
90
91 // Body
92 G4QNucleus theProjNucleus; // ProjectileNucleus moving LS->CM
93 G4QNucleus theTargNucleus; // 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 G4QCHIPSWorld* theWorld; // Pointer to the CHIPS World
100};
101
102#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 AnnihilationOrder(G4int LS, G4int MS, G4int uP, G4int mP, G4int sP, G4int nP)
G4ThreeVector GaussianPt(G4double widthSquare, G4double maxPtSquare) const
G4bool ExciteSingDiffParticipants(G4QHadron *aPartner, G4QHadron *bPartner) const
std::pair< G4int, G4int > ReducePair(G4int P1, G4int P2) const
G4QHadronVector * Fragment()
static void SetParameters(G4int nC, G4double strTens, G4double tubeDens, G4double SigPt)
G4int SumPartonPDG(G4int PDG1, G4int PFG2) const
G4double ChooseX(G4double Xmin, G4double Xmax) const
G4bool ExciteDiffParticipants(G4QHadron *aPartner, G4QHadron *bPartner) const