Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4QProbability.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#ifndef G4QProbability_h
27#define G4QProbability_h 1
28//
29// $Id$
30//
31// ------------------------------------------------------------
32// GEANT 4 class implementation file
33//
34// ---------------- G4QProbability ----------------
35// by Mikhail Kossov Oct, 2006
36// class for Pomeron & Reggeon amplitudes used by CHIPS
37// For comparison similar member functions are in the G4 class:
38// G4PomeronCrossSection
39// ------------------------------------------------------------
40// Short description: Pomeron is one of the possible vacuum pole (the
41// second is Oderon, but they are identical in the present model), by
42// which particle exchang in the ellastic scattering process. Others
43// are Reggeons and, possibly Instantons (for spin-flip reactions).
44// Strings are cuts of Pomerons and Reggeons (optic theorem connects
45// the amplitude of scattering at zero angle with the total inelastic
46// cross-section). They describe inelastic processes at high energies.
47// ------------------------------------------------------------------
48
50#include "globals.hh"
51
53{
54 public:
55 G4QProbability(G4int PDGCode = 2212);
57 void SetS0(G4double aS0) {S0 = aS0;}
58 void SetPom_Gamma(G4double aPom_Gamma) {pom_Gamma = aPom_Gamma;}
59 void SetGamma(const G4double aGam) {pom_Gamma=aGam/CLHEP::GeV/CLHEP::GeV;}// @@ Temporary?
60 void SetPom_C(G4double aPom_C) {pom_C = aPom_C;}
61 void SetPom_R2(G4double aPom_R2) {pom_R2 = aPom_R2;}
62 void SetPom_Alpha(G4double aPom_Alpha) {pom_Alpha = aPom_Alpha;}
63 void SetPom_Alphaprime(G4double aPom_Alphaprime){pom_Alphaprime = aPom_Alphaprime;}
64 // Genegal (with low energies)
69 G4double GetQexSinDiffProbability(const G4double s, const G4double imp2);//For each T & B
71 G4double GetQexElProbability(const G4double s, const G4double imp2);
73 // Only Pomeron (high energies)
75 {return 2*(1.-std::exp(-PomEikonal(s_value,imp2)))/pom_C;}
77 {return sqr(1.-std::exp(-PomEikonal(s_value,imp2)))/pom_C;}
79 {return ((pom_C-1.)/pom_C)*GetPomCohProbability(s_value,imp2);}
81 {return (sqr(pom_sqC-1.)/pom_C)*GetPomCohProbability(s_value,imp2);}
82 G4double GetPomSinDiffProbability(const G4double s_value, const G4double imp2) //For each T & B
83 {return ((pom_sqC-1.)/pom_C)*GetPomCohProbability(s_value,imp2);}
85 {return (1.-std::exp(-2*PomEikonal(s_value,imp2)))/pom_C;}
86 G4double GetPomElProbability(const G4double s_value, const G4double imp2)
87 {return GetPomCohProbability(s_value,imp2)/pom_C;}
89 {return GetPomDiffProbability(s_value,imp2) + GetPomAbsProbability(s_value,imp2);}
90
91 G4double GetCutPomProbability(const G4double s, const G4double ip2, const G4int nPom);
92 G4double GetCutQexProbability(const G4double s, const G4double ip2, const G4int nQex);
93 private:
94 void InitForNucleon();
95 void InitForHyperon();
96 void InitForAntiBaryon();
97 void InitForPion();
98 void InitForKaon();
99 void InitForGamma();
100
101 G4double Expand(G4double z);
102 G4double PowerQex(const G4double s_value) {return qex_Gamma/(s_value/S0);} // qex_Alpha=0 (anti-p?)
103 G4double PowerPom(const G4double s_value) {return pom_Gamma*std::pow(s_value/S0, pom_Alpha-1.);}
104 G4double SigQex(const G4double s_value) {return 8*CLHEP::pi*CLHEP::hbarc_squared*PowerQex(s_value);}
105 G4double SigPom(const G4double s_value) {return 8*CLHEP::pi*CLHEP::hbarc_squared*PowerPom(s_value);}
106 G4double LambdaQex(const G4double s_value) {return qex_R2+qex_Alphaprime*std::log(s_value/S0);}
107 G4double LambdaPom(const G4double s_value) {return pom_R2+pom_Alphaprime*std::log(s_value/S0);}
108 G4double ZQex(const G4double s_value) {return 2*PowerQex(s_value)/LambdaQex(s_value);} // qex_C=1.
109 G4double ZPom(const G4double s_value) {return 2*pom_C*PowerPom(s_value)/LambdaPom(s_value);}
110 G4double QexEikonal(const G4double s_value, const G4double imp2)
111 {return ZQex(s_value)*std::exp(-imp2/LambdaQex(s_value)/CLHEP::hbarc_squared/4)/2;}
112 G4double PomEikonal(G4double s_value, G4double imp2)
113 {return ZPom(s_value)*std::exp(-imp2/LambdaPom(s_value)/CLHEP::hbarc_squared/4)/2;}
114 // Body
115 G4double S0;
116 G4double pom_Gamma;
117 G4double pom_C;
118 G4double pom_sqC;
119 G4double pom_R2;
120 G4double pom_Alpha;
121 G4double pom_Alphaprime;
122 G4double qex_Gamma;
123 G4double qex_R2;
124 G4double qex_Alphaprime;
125};
126#endif
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
void SetPom_R2(G4double aPom_R2)
G4double GetQexDubDiffProbability(const G4double s, const G4double imp2)
G4double GetQexCohProbability(const G4double s, const G4double imp2)
G4double GetPomDiffProbability(const G4double s_value, const G4double imp2)
G4double GetPomAbsProbability(const G4double s_value, const G4double imp2)
void SetPom_C(G4double aPom_C)
G4double GetPomDubDiffProbability(const G4double s_value, const G4double imp2)
G4double GetQexElProbability(const G4double s, const G4double imp2)
G4double GetQexTotProbability(const G4double s, const G4double imp2)
G4double GetCutQexProbability(const G4double s, const G4double ip2, const G4int nQex)
G4double GetQexDiffProbability(const G4double s, const G4double imp2)
G4double GetPomElProbability(const G4double s_value, const G4double imp2)
void SetPom_Alpha(G4double aPom_Alpha)
G4double GetPomSinDiffProbability(const G4double s_value, const G4double imp2)
void SetPom_Alphaprime(G4double aPom_Alphaprime)
G4double GetCutPomProbability(const G4double s, const G4double ip2, const G4int nPom)
G4double GetPomInelProbability(const G4double s_value, const G4double imp2)
G4double GetPomCohProbability(const G4double s_value, const G4double imp2)
G4double GetQexInelProbability(const G4double s, const G4double imp2)
G4double GetPomTotProbability(const G4double s_value, const G4double imp2)
void SetS0(G4double aS0)
void SetGamma(const G4double aGam)
G4double GetQexAbsProbability(const G4double s, const G4double imp2)
void SetPom_Gamma(G4double aPom_Gamma)
G4double GetQexSinDiffProbability(const G4double s, const G4double imp2)
T sqr(const T &x)
Definition: templates.hh:145