source: trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QProbability.hh @ 1340

Last change on this file since 1340 was 1340, checked in by garnier, 14 years ago

update ti head

File size: 6.7 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#ifndef G4QProbability_h
27#define G4QProbability_h 1
28//
29// $Id: G4QProbability.hh,v 1.4 2009/09/04 16:13:19 mkossov Exp $
30// GEANT4 tag $Name: hadr-chips-V09-03-08 $
31//
32// ------------------------------------------------------------
33//      GEANT 4 class implementation file
34//
35//      ---------------- G4QProbability ----------------
36//      by Mikhail Kossov Oct, 2006
37//   class for Pomeron & Reggeon amplitudes used by CHIPS
38//   For comparison similar member functions are in the G4 class:
39//   G4PomeronCrossSection
40// ------------------------------------------------------------
41// Short description: Pomeron is one of the possible vacuum pole (the
42// second is Oderon, but they are identical in the present model), by
43// which particle exchang in the ellastic scattering process. Others
44// are Reggeons and, possibly Instantons (for spin-flip reactions).
45// Strings are cuts of Pomerons and Reggeons (optic theorem connects
46// the amplitude of scattering at zero angle with the total inelastic
47// cross-section). They describe inelastic processes at high energies.
48// ------------------------------------------------------------------
49
50#include "globals.hh"
51
52class G4QProbability
53{
54 public:
55  G4QProbability(G4int PDGCode = 2212);
56  ~G4QProbability(){;}
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/GeV/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)
65  G4double GetQexTotProbability(const G4double s, const G4double imp2);
66  G4double GetQexCohProbability(const G4double s, const G4double imp2);
67  G4double GetQexDiffProbability(const G4double s, const G4double imp2);
68  G4double GetQexDubDiffProbability(const G4double s, const G4double imp2);
69  G4double GetQexSinDiffProbability(const G4double s, const G4double imp2);//For each T & B
70  G4double GetQexAbsProbability(const G4double s, const G4double imp2);
71  G4double GetQexElProbability(const G4double s, const G4double imp2);
72  G4double GetQexInelProbability(const G4double s, const G4double imp2);
73  // Only Pomeron (high energies)
74  G4double GetPomTotProbability(const G4double s, const G4double imp2)
75         {return 2*(1.-std::exp(-PomEikonal(s,imp2)))/pom_C;}
76  G4double GetPomCohProbability(const G4double s, const G4double imp2)
77         {return sqr(1.-std::exp(-PomEikonal(s,imp2)))/pom_C;}
78  G4double GetPomDiffProbability(const G4double s, const G4double imp2)
79         {return ((pom_C-1.)/pom_C)*GetPomCohProbability(s,imp2);}
80  G4double GetPomDubDiffProbability(const G4double s, const G4double imp2)
81         {return (sqr(pom_sqC-1.)/pom_C)*GetPomCohProbability(s,imp2);}
82  G4double GetPomSinDiffProbability(const G4double s, const G4double imp2) //For each T & B
83         {return ((pom_sqC-1.)/pom_C)*GetPomCohProbability(s,imp2);}
84  G4double GetPomAbsProbability(const G4double s, const G4double imp2)
85         {return (1.-std::exp(-2*PomEikonal(s,imp2)))/pom_C;}
86  G4double GetPomElProbability(const G4double s, const G4double imp2)
87         {return GetPomCohProbability(s,imp2)/pom_C;}
88  G4double GetPomInelProbability(const G4double s, const G4double imp2)
89         {return GetPomDiffProbability(s,imp2) + GetPomAbsProbability(s,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)  {return qex_Gamma/(s/S0);} // qex_Alpha=0 (anti-p?)
103  G4double PowerPom(const G4double s)  {return pom_Gamma*std::pow(s/S0, pom_Alpha-1.);}
104  G4double SigQex(const G4double s)    {return 8*pi*hbarc_squared*PowerQex(s);}
105  G4double SigPom(const G4double s)    {return 8*pi*hbarc_squared*PowerPom(s);}
106  G4double LambdaQex(const G4double s) {return qex_R2+qex_Alphaprime*std::log(s/S0);}
107  G4double LambdaPom(const G4double s) {return pom_R2+pom_Alphaprime*std::log(s/S0);}
108  G4double ZQex(const G4double s)      {return 2*PowerQex(s)/LambdaQex(s);} // qex_C=1.
109  G4double ZPom(const G4double s)      {return 2*pom_C*PowerPom(s)/LambdaPom(s);}
110  G4double QexEikonal(const G4double s, const G4double imp2)
111                         {return ZQex(s)*std::exp(-imp2/LambdaQex(s)/hbarc_squared/4)/2;}
112  G4double PomEikonal(G4double s, G4double imp2)
113                         {return ZPom(s)*std::exp(-imp2/LambdaPom(s)/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
Note: See TracBrowser for help on using the repository browser.