G4VQCrossSection Class Reference

#include <G4VQCrossSection.hh>

Inheritance diagram for G4VQCrossSection:

G4QAntiBaryonElasticCrossSection G4QAntiBaryonNuclearCrossSection G4QAntiBaryonPlusNuclearCrossSection G4QANuANuNuclearCrossSection G4QANuENuclearCrossSection G4QANuMuNuclearCrossSection G4QElectronNuclearCrossSection G4QHyperonElasticCrossSection G4QHyperonNuclearCrossSection G4QHyperonPlusElasticCrossSection G4QHyperonPlusNuclearCrossSection G4QIonIonCrossSection G4QKaonMinusElasticCrossSection G4QKaonMinusNuclearCrossSection G4QKaonPlusElasticCrossSection G4QKaonPlusNuclearCrossSection G4QKaonZeroNuclearCrossSection G4QMuonNuclearCrossSection G4QNeutronElasticCrossSection G4QNeutronNuclearCrossSection G4QNuENuclearCrossSection G4QNuMuNuclearCrossSection G4QNuNuNuclearCrossSection G4QPhotonNuclearCrossSection G4QPionMinusElasticCrossSection G4QPionMinusNuclearCrossSection G4QPionPlusElasticCrossSection G4QPionPlusNuclearCrossSection G4QProtonElasticCrossSection G4QProtonNuclearCrossSection G4QTauNuclearCrossSection

Public Member Functions

virtual ~G4VQCrossSection ()
virtual G4double GetCrossSection (G4bool, G4double, G4int, G4int, G4int pPDG=0)
virtual G4double ThresholdEnergy (G4int Z, G4int N, G4int PDG=0)
virtual G4double CalculateCrossSection (G4bool CS, G4int F, G4int I, G4int PDG, G4int tgZ, G4int tgN, G4double pMom)=0
virtual G4double GetLastTOTCS ()
virtual G4double GetLastQELCS ()
virtual G4double GetDirectPart (G4double Q2)
virtual G4double GetNPartons (G4double Q2)
virtual G4double GetExchangeEnergy ()
virtual G4double GetExchangeT (G4int tZ, G4int tN, G4int pPDG)
virtual G4double GetSlope (G4int tZ, G4int tN, G4int pPDG)
virtual G4double GetHMaxT ()
virtual G4double GetExchangeQ2 (G4double nu=0)
virtual G4double GetVirtualFactor (G4double nu, G4double Q2)
virtual G4double GetQEL_ExchangeQ2 ()
virtual G4double GetNQE_ExchangeQ2 ()
virtual G4int GetExchangePDGCode ()

Static Public Member Functions

static void setTolerance (G4double tol)

Protected Member Functions

 G4VQCrossSection ()
G4double LinearFit (G4double X, G4int N, G4double *XN, G4double *YN)
G4double EquLinearFit (G4double X, G4int N, G4double X0, G4double DX, G4double *Y)

Static Protected Attributes

static G4double tolerance = .001

Detailed Description

Definition at line 85 of file G4VQCrossSection.hh.


Constructor & Destructor Documentation

G4VQCrossSection::G4VQCrossSection (  )  [inline, protected]

Definition at line 89 of file G4VQCrossSection.hh.

00089 {;} // for each particle a separate instance of G4QCollision should be

virtual G4VQCrossSection::~G4VQCrossSection (  )  [inline, virtual]

Definition at line 93 of file G4VQCrossSection.hh.

00093 {;}// for each particle separate instance of G4QXCrossSection


Member Function Documentation

virtual G4double G4VQCrossSection::CalculateCrossSection ( G4bool  CS,
G4int  F,
G4int  I,
G4int  PDG,
G4int  tgZ,
G4int  tgN,
G4double  pMom 
) [pure virtual]

Implemented in G4QAntiBaryonElasticCrossSection, G4QAntiBaryonNuclearCrossSection, G4QAntiBaryonPlusNuclearCrossSection, G4QANuANuNuclearCrossSection, G4QANuENuclearCrossSection, G4QANuMuNuclearCrossSection, G4QElectronNuclearCrossSection, G4QHyperonElasticCrossSection, G4QHyperonNuclearCrossSection, G4QHyperonPlusElasticCrossSection, G4QHyperonPlusNuclearCrossSection, G4QIonIonCrossSection, G4QKaonMinusElasticCrossSection, G4QKaonMinusNuclearCrossSection, G4QKaonPlusElasticCrossSection, G4QKaonPlusNuclearCrossSection, G4QKaonZeroNuclearCrossSection, G4QMuonNuclearCrossSection, G4QNeutronElasticCrossSection, G4QNeutronNuclearCrossSection, G4QNuENuclearCrossSection, G4QNuMuNuclearCrossSection, G4QNuNuNuclearCrossSection, G4QPhotonNuclearCrossSection, G4QPionMinusElasticCrossSection, G4QPionMinusNuclearCrossSection, G4QPionPlusElasticCrossSection, G4QPionPlusNuclearCrossSection, G4QProtonElasticCrossSection, G4QProtonNuclearCrossSection, and G4QTauNuclearCrossSection.

G4double G4VQCrossSection::EquLinearFit ( G4double  X,
G4int  N,
G4double  X0,
G4double  DX,
G4double Y 
) [protected]

Definition at line 94 of file G4VQCrossSection.cc.

References G4cerr, G4cout, and G4endl.

Referenced by G4QProtonNuclearCrossSection::CalculateCrossSection(), G4QPionPlusNuclearCrossSection::CalculateCrossSection(), G4QPionMinusNuclearCrossSection::CalculateCrossSection(), G4QPhotonNuclearCrossSection::CalculateCrossSection(), G4QNeutronNuclearCrossSection::CalculateCrossSection(), G4QKaonPlusNuclearCrossSection::CalculateCrossSection(), G4QKaonMinusNuclearCrossSection::CalculateCrossSection(), G4QIonIonCrossSection::CalculateCrossSection(), G4QHyperonPlusNuclearCrossSection::CalculateCrossSection(), G4QHyperonNuclearCrossSection::CalculateCrossSection(), G4QAntiBaryonPlusNuclearCrossSection::CalculateCrossSection(), and G4QAntiBaryonNuclearCrossSection::CalculateCrossSection().

00096 {
00097 #ifdef pdebug
00098   G4cout<<"G4VQCrossSection::EquLinearFit: ***Called*** X="<<X<<", N="<<N<<", X0="<<X0
00099         <<", DX="<<DX<<G4endl;
00100   G4cout<<"G4VQCrossSection::EquLinearFit: Y[0]="<<Y[0]<<", Y[N-1]="<<Y[N-1]<<G4endl;
00101   //for(G4int i=1; i<N; i++)G4cout<<"-----G4VQCS::EquLinearFit: Y["<<i<<"]="<<Y[i]<<G4endl;
00102 #endif
00103   if(DX<=0. || N<2)
00104   {
00105     G4cerr<<"***G4VQCrossSection::EquLinearFit: DX="<<DX<<", N="<<N<<G4endl;
00106     return Y[0];
00107   }
00108   G4int    N2=N-2;
00109   G4double d=(X-X0)/DX;
00110   G4int         j=static_cast<int>(d);
00111   if     (j<0)  j=0;
00112   else if(j>N2) j=N2;
00113   d-=j; // excess
00114   G4double yi=Y[j];
00115   G4double sigma=yi+(Y[j+1]-yi)*d;
00116 #ifdef pdebug
00117   G4cout<<"G4VQCrossSection::EquLinearFit: CS="<<sigma<<G4endl;
00118 #endif
00119   return sigma;
00120 }

virtual G4double G4VQCrossSection::GetCrossSection ( G4bool  ,
G4double  ,
G4int  ,
G4int  ,
G4int  pPDG = 0 
) [inline, virtual]

Reimplemented in G4QAntiBaryonElasticCrossSection, G4QAntiBaryonNuclearCrossSection, G4QAntiBaryonPlusNuclearCrossSection, G4QANuANuNuclearCrossSection, G4QANuENuclearCrossSection, G4QANuMuNuclearCrossSection, G4QElectronNuclearCrossSection, G4QHyperonElasticCrossSection, G4QHyperonNuclearCrossSection, G4QHyperonPlusElasticCrossSection, G4QHyperonPlusNuclearCrossSection, G4QIonIonCrossSection, G4QKaonMinusElasticCrossSection, G4QKaonMinusNuclearCrossSection, G4QKaonPlusElasticCrossSection, G4QKaonPlusNuclearCrossSection, G4QKaonZeroNuclearCrossSection, G4QMuonNuclearCrossSection, G4QNeutronElasticCrossSection, G4QNeutronNuclearCrossSection, G4QNuENuclearCrossSection, G4QNuMuNuclearCrossSection, G4QNuNuNuclearCrossSection, G4QPhotonNuclearCrossSection, G4QPionMinusElasticCrossSection, G4QPionMinusNuclearCrossSection, G4QPionPlusElasticCrossSection, G4QPionPlusNuclearCrossSection, G4QProtonElasticCrossSection, G4QProtonNuclearCrossSection, and G4QTauNuclearCrossSection.

Definition at line 99 of file G4VQCrossSection.hh.

Referenced by G4QuasiFreeRatios::ChExer(), G4QKaonZeroNuclearCrossSection::GetCrossSection(), G4QHadronInelasticDataSet::GetIsoCrossSection(), G4QHadronElasticDataSet::GetIsoCrossSection(), G4CHIPSElasticXS::GetIsoCrossSection(), G4QNGamma::GetMeanFreePath(), G4QLowEnergy::GetMeanFreePath(), G4QIonIonElastic::GetMeanFreePath(), G4QInelastic::GetMeanFreePath(), G4QElastic::GetMeanFreePath(), G4QAtomicElectronScattering::GetMeanFreePath(), G4QLowEnergy::PostStepDoIt(), G4QIonIonElastic::PostStepDoIt(), G4QInelastic::PostStepDoIt(), G4QElastic::PostStepDoIt(), G4QAtomicElectronScattering::PostStepDoIt(), G4CHIPSElastic::SampleInvariantT(), and G4QuasiFreeRatios::Scatter().

00100                                                                    {return G4double(pPDG);}

G4double G4VQCrossSection::GetDirectPart ( G4double  Q2  )  [virtual]

Reimplemented in G4QANuANuNuclearCrossSection, G4QANuENuclearCrossSection, G4QANuMuNuclearCrossSection, G4QNuENuclearCrossSection, G4QNuMuNuclearCrossSection, and G4QNuNuNuclearCrossSection.

Definition at line 56 of file G4VQCrossSection.cc.

00056 {return 0.;} // Direct interaction

G4double G4VQCrossSection::GetExchangeEnergy (  )  [virtual]

Reimplemented in G4QElectronNuclearCrossSection, G4QMuonNuclearCrossSection, and G4QTauNuclearCrossSection.

Definition at line 64 of file G4VQCrossSection.cc.

Referenced by G4QInelastic::PostStepDoIt(), and G4QAtomicElectronScattering::PostStepDoIt().

00064 {return 0.;}

G4int G4VQCrossSection::GetExchangePDGCode (  )  [virtual]

Reimplemented in G4QANuANuNuclearCrossSection, G4QANuENuclearCrossSection, G4QANuMuNuclearCrossSection, G4QElectronNuclearCrossSection, G4QMuonNuclearCrossSection, G4QNuENuclearCrossSection, G4QNuMuNuclearCrossSection, G4QNuNuNuclearCrossSection, and G4QTauNuclearCrossSection.

Definition at line 78 of file G4VQCrossSection.cc.

Referenced by G4QInelastic::PostStepDoIt().

00078 {return 0;}

G4double G4VQCrossSection::GetExchangeQ2 ( G4double  nu = 0  )  [virtual]

Reimplemented in G4QElectronNuclearCrossSection, G4QMuonNuclearCrossSection, and G4QTauNuclearCrossSection.

Definition at line 66 of file G4VQCrossSection.cc.

Referenced by G4QInelastic::PostStepDoIt(), and G4QAtomicElectronScattering::PostStepDoIt().

00066 {return 0.;}

G4double G4VQCrossSection::GetExchangeT ( G4int  tZ,
G4int  tN,
G4int  pPDG 
) [virtual]

Reimplemented in G4QAntiBaryonElasticCrossSection, G4QHyperonElasticCrossSection, G4QHyperonPlusElasticCrossSection, G4QKaonMinusElasticCrossSection, G4QKaonPlusElasticCrossSection, G4QNeutronElasticCrossSection, G4QPionMinusElasticCrossSection, G4QPionPlusElasticCrossSection, and G4QProtonElasticCrossSection.

Definition at line 70 of file G4VQCrossSection.cc.

Referenced by G4QuasiFreeRatios::ChExer(), G4QLowEnergy::PostStepDoIt(), G4QIonIonElastic::PostStepDoIt(), G4QElastic::PostStepDoIt(), G4CHIPSElastic::SampleInvariantT(), and G4QuasiFreeRatios::Scatter().

00070 {return 0.;}

G4double G4VQCrossSection::GetHMaxT (  )  [virtual]

Reimplemented in G4QAntiBaryonElasticCrossSection, G4QHyperonElasticCrossSection, G4QHyperonPlusElasticCrossSection, G4QKaonMinusElasticCrossSection, G4QKaonPlusElasticCrossSection, G4QNeutronElasticCrossSection, G4QPionMinusElasticCrossSection, G4QPionPlusElasticCrossSection, and G4QProtonElasticCrossSection.

Definition at line 72 of file G4VQCrossSection.cc.

Referenced by G4QuasiFreeRatios::ChExer(), G4QLowEnergy::PostStepDoIt(), G4QIonIonElastic::PostStepDoIt(), G4QElastic::PostStepDoIt(), and G4QuasiFreeRatios::Scatter().

00072 {return 0.;}

G4double G4VQCrossSection::GetLastQELCS (  )  [virtual]

Reimplemented in G4QANuANuNuclearCrossSection, G4QANuENuclearCrossSection, G4QANuMuNuclearCrossSection, G4QNuENuclearCrossSection, G4QNuMuNuclearCrossSection, and G4QNuNuNuclearCrossSection.

Definition at line 62 of file G4VQCrossSection.cc.

Referenced by G4QInelastic::PostStepDoIt().

00062 {return 0.;} // Get the last quasi-elast CS

G4double G4VQCrossSection::GetLastTOTCS (  )  [virtual]

Reimplemented in G4QANuANuNuclearCrossSection, G4QANuENuclearCrossSection, G4QANuMuNuclearCrossSection, G4QNuENuclearCrossSection, G4QNuMuNuclearCrossSection, and G4QNuNuNuclearCrossSection.

Definition at line 60 of file G4VQCrossSection.cc.

Referenced by G4QInelastic::PostStepDoIt().

00060 {return 0.;} // Get the last total CS

G4double G4VQCrossSection::GetNPartons ( G4double  Q2  )  [virtual]

Reimplemented in G4QANuANuNuclearCrossSection, G4QANuENuclearCrossSection, G4QANuMuNuclearCrossSection, G4QNuENuclearCrossSection, G4QNuMuNuclearCrossSection, and G4QNuNuNuclearCrossSection.

Definition at line 58 of file G4VQCrossSection.cc.

00058 {return 3.;} // Direct interaction

G4double G4VQCrossSection::GetNQE_ExchangeQ2 (  )  [virtual]

Reimplemented in G4QANuANuNuclearCrossSection, G4QANuENuclearCrossSection, G4QANuMuNuclearCrossSection, G4QNuENuclearCrossSection, G4QNuMuNuclearCrossSection, and G4QNuNuNuclearCrossSection.

Definition at line 76 of file G4VQCrossSection.cc.

Referenced by G4QInelastic::PostStepDoIt().

00076 {return 0.;}

G4double G4VQCrossSection::GetQEL_ExchangeQ2 (  )  [virtual]

Reimplemented in G4QANuANuNuclearCrossSection, G4QANuENuclearCrossSection, G4QANuMuNuclearCrossSection, G4QNuENuclearCrossSection, G4QNuMuNuclearCrossSection, and G4QNuNuNuclearCrossSection.

Definition at line 74 of file G4VQCrossSection.cc.

Referenced by G4QInelastic::PostStepDoIt().

00074 {return 0.;}

G4double G4VQCrossSection::GetSlope ( G4int  tZ,
G4int  tN,
G4int  pPDG 
) [virtual]

Reimplemented in G4QAntiBaryonElasticCrossSection, G4QHyperonElasticCrossSection, G4QHyperonPlusElasticCrossSection, G4QKaonMinusElasticCrossSection, G4QKaonPlusElasticCrossSection, G4QNeutronElasticCrossSection, G4QPionMinusElasticCrossSection, G4QPionPlusElasticCrossSection, and G4QProtonElasticCrossSection.

Definition at line 68 of file G4VQCrossSection.cc.

Referenced by G4QIonIonElastic::PostStepDoIt().

00068 {return 0.;}

G4double G4VQCrossSection::GetVirtualFactor ( G4double  nu,
G4double  Q2 
) [virtual]

Reimplemented in G4QElectronNuclearCrossSection, G4QMuonNuclearCrossSection, and G4QTauNuclearCrossSection.

Definition at line 80 of file G4VQCrossSection.cc.

Referenced by G4QInelastic::PostStepDoIt(), and G4QAtomicElectronScattering::PostStepDoIt().

00080 {return 0.*nu*Q2;}

G4double G4VQCrossSection::LinearFit ( G4double  X,
G4int  N,
G4double XN,
G4double YN 
) [protected]

Definition at line 83 of file G4VQCrossSection.cc.

00084 {
00085   G4double Xj=XN[0];
00086   G4double Xh=XN[N-1];
00087   if(X<=Xj) return YN[0]; 
00088   else if(X>=Xh) return YN[N-1];
00089   G4double Xp=0.; G4int j=0; while (X>Xj && j<N) {j++; Xp=Xj; Xj=XN[j];}
00090   return YN[j]-(Xj-X)*(YN[j]-YN[j-1])/(Xj-Xp);
00091 }

static void G4VQCrossSection::setTolerance ( G4double  tol  )  [inline, static]

Definition at line 96 of file G4VQCrossSection.hh.

References tolerance.

00096 {tolerance=tol;}// Set NewTolerance for SameCrosSec

G4double G4VQCrossSection::ThresholdEnergy ( G4int  Z,
G4int  N,
G4int  PDG = 0 
) [virtual]

Reimplemented in G4QANuANuNuclearCrossSection, G4QANuENuclearCrossSection, G4QANuMuNuclearCrossSection, G4QElectronNuclearCrossSection, G4QMuonNuclearCrossSection, G4QNuENuclearCrossSection, G4QNuMuNuclearCrossSection, G4QNuNuNuclearCrossSection, G4QPhotonNuclearCrossSection, and G4QTauNuclearCrossSection.

Definition at line 54 of file G4VQCrossSection.cc.

Referenced by G4QProtonNuclearCrossSection::GetCrossSection(), G4QProtonElasticCrossSection::GetCrossSection(), G4QPionPlusNuclearCrossSection::GetCrossSection(), G4QPionPlusElasticCrossSection::GetCrossSection(), G4QPionMinusNuclearCrossSection::GetCrossSection(), G4QPionMinusElasticCrossSection::GetCrossSection(), G4QNeutronNuclearCrossSection::GetCrossSection(), G4QNeutronElasticCrossSection::GetCrossSection(), G4QKaonPlusNuclearCrossSection::GetCrossSection(), G4QKaonPlusElasticCrossSection::GetCrossSection(), G4QKaonMinusNuclearCrossSection::GetCrossSection(), G4QKaonMinusElasticCrossSection::GetCrossSection(), G4QIonIonCrossSection::GetCrossSection(), G4QHyperonPlusNuclearCrossSection::GetCrossSection(), G4QHyperonPlusElasticCrossSection::GetCrossSection(), G4QHyperonNuclearCrossSection::GetCrossSection(), G4QHyperonElasticCrossSection::GetCrossSection(), G4QAntiBaryonPlusNuclearCrossSection::GetCrossSection(), G4QAntiBaryonNuclearCrossSection::GetCrossSection(), and G4QAntiBaryonElasticCrossSection::GetCrossSection().

00054 {return 0.;} // Fake use


Field Documentation

G4double G4VQCrossSection::tolerance = .001 [static, protected]

Definition at line 175 of file G4VQCrossSection.hh.

Referenced by G4QTauNuclearCrossSection::GetCrossSection(), G4QProtonNuclearCrossSection::GetCrossSection(), G4QPionPlusNuclearCrossSection::GetCrossSection(), G4QPionMinusNuclearCrossSection::GetCrossSection(), G4QNuNuNuclearCrossSection::GetCrossSection(), G4QNuMuNuclearCrossSection::GetCrossSection(), G4QNuENuclearCrossSection::GetCrossSection(), G4QNeutronNuclearCrossSection::GetCrossSection(), G4QKaonPlusNuclearCrossSection::GetCrossSection(), G4QKaonMinusNuclearCrossSection::GetCrossSection(), G4QIonIonCrossSection::GetCrossSection(), G4QHyperonPlusNuclearCrossSection::GetCrossSection(), G4QHyperonNuclearCrossSection::GetCrossSection(), G4QANuMuNuclearCrossSection::GetCrossSection(), G4QANuENuclearCrossSection::GetCrossSection(), G4QANuANuNuclearCrossSection::GetCrossSection(), G4QAntiBaryonPlusNuclearCrossSection::GetCrossSection(), G4QAntiBaryonNuclearCrossSection::GetCrossSection(), and setTolerance().


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:53:54 2013 for Geant4 by  doxygen 1.4.7