Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4ChipsAntiBaryonInelasticXS Class Reference

#include <G4ChipsAntiBaryonInelasticXS.hh>

Inheritance diagram for G4ChipsAntiBaryonInelasticXS:
Collaboration diagram for G4ChipsAntiBaryonInelasticXS:

Public Member Functions

 G4ChipsAntiBaryonInelasticXS ()
 
 ~G4ChipsAntiBaryonInelasticXS ()
 
virtual void CrossSectionDescription (std::ostream &) const
 
virtual G4bool IsIsoApplicable (const G4DynamicParticle *Pt, G4int Z, G4int A, const G4Element *elm, const G4Material *mat)
 
virtual G4double GetIsoCrossSection (const G4DynamicParticle *, G4int tgZ, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
 
virtual G4double GetChipsCrossSection (G4double momentum, G4int Z, G4int N, G4int pdg)
 
- Public Member Functions inherited from G4VCrossSectionDataSet
 G4VCrossSectionDataSet (const G4String &nam="")
 
virtual ~G4VCrossSectionDataSet ()
 
virtual G4bool IsElementApplicable (const G4DynamicParticle *, G4int Z, const G4Material *mat=0)
 
G4double GetCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=0)
 
G4double ComputeCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=0)
 
virtual G4double GetElementCrossSection (const G4DynamicParticle *, G4int Z, const G4Material *mat=0)
 
virtual G4IsotopeSelectIsotope (const G4Element *, G4double kinEnergy)
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
virtual void DumpPhysicsTable (const G4ParticleDefinition &)
 
virtual G4int GetVerboseLevel () const
 
virtual void SetVerboseLevel (G4int value)
 
G4double GetMinKinEnergy () const
 
void SetMinKinEnergy (G4double value)
 
G4double GetMaxKinEnergy () const
 
void SetMaxKinEnergy (G4double value)
 
const G4StringGetName () const
 

Static Public Member Functions

static const char * Default_Name ()
 

Additional Inherited Members

- Protected Member Functions inherited from G4VCrossSectionDataSet
void SetName (const G4String &)
 
- Protected Attributes inherited from G4VCrossSectionDataSet
G4int verboseLevel
 

Detailed Description

Definition at line 44 of file G4ChipsAntiBaryonInelasticXS.hh.

Constructor & Destructor Documentation

G4ChipsAntiBaryonInelasticXS::G4ChipsAntiBaryonInelasticXS ( )

Definition at line 62 of file G4ChipsAntiBaryonInelasticXS.cc.

63 {
64  lastLEN=0; // Pointer to lastArray of LowEn CS
65  lastHEN=0; // Pointer to lastArray of HighEn CS
66  lastN=0; // The last N of calculated nucleus
67  lastZ=0; // The last Z of calculated nucleus
68  lastP=0.; // Last used Cross Section Momentum
69  lastTH=0.; // Last threshold momentum
70  lastCS=0.; // Last value of the Cross Section
71  lastI=0; // The last position in the DAMDB
72  LEN = new std::vector<G4double*>;
73  HEN = new std::vector<G4double*>;
74 }
G4VCrossSectionDataSet(const G4String &nam="")
Definition: inflate.h:41
G4ChipsAntiBaryonInelasticXS::~G4ChipsAntiBaryonInelasticXS ( )

Definition at line 76 of file G4ChipsAntiBaryonInelasticXS.cc.

77 {
78  G4int lens=LEN->size();
79  for(G4int i=0; i<lens; ++i) delete[] (*LEN)[i];
80  delete LEN;
81  G4int hens=HEN->size();
82  for(G4int i=0; i<hens; ++i) delete[] (*HEN)[i];
83  delete HEN;
84 }
int G4int
Definition: G4Types.hh:78
Definition: inflate.h:41

Member Function Documentation

void G4ChipsAntiBaryonInelasticXS::CrossSectionDescription ( std::ostream &  outFile) const
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 86 of file G4ChipsAntiBaryonInelasticXS.cc.

87 {
88  outFile << "G4ChipsAntiBaryonInelasticXS provides the inelastic cross\n"
89  << "section for anti-baryon nucleus scattering as a function of incident\n"
90  << "momentum. The cross section is calculated using M. Kossov's\n"
91  << "CHIPS parameterization of cross section data.\n";
92 }
static const char* G4ChipsAntiBaryonInelasticXS::Default_Name ( )
inlinestatic

Definition at line 52 of file G4ChipsAntiBaryonInelasticXS.hh.

52 {return "ChipsAntiBaryonInelasticXS";}

Here is the caller graph for this function:

G4double G4ChipsAntiBaryonInelasticXS::GetChipsCrossSection ( G4double  momentum,
G4int  Z,
G4int  N,
G4int  pdg 
)
virtual

!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)

Definition at line 156 of file G4ChipsAntiBaryonInelasticXS.cc.

157 {
158 
159  G4bool in=false; // By default the isotope must be found in the AMDB
160  if(tgN!=lastN || tgZ!=lastZ) // The nucleus was not the last used isotope
161  {
162  in = false; // By default the isotope haven't be found in AMDB
163  lastP = 0.; // New momentum history (nothing to compare with)
164  lastN = tgN; // The last N of the calculated nucleus
165  lastZ = tgZ; // The last Z of the calculated nucleus
166  lastI = colN.size(); // Size of the Associative Memory DB in the heap
167  j = 0; // A#0f records found in DB for this projectile
168  if(lastI) for(G4int i=0; i<lastI; i++) // AMDB exists, try to find the (Z,N) isotope
169  {
170  if(colN[i]==tgN && colZ[i]==tgZ) // Try the record "i" in the AMDB
171  {
172  lastI=i; // Remember the index for future fast/last use
173  lastTH =colTH[i]; // The last THreshold (A-dependent)
174  if(pMom<=lastTH)
175  {
176  return 0.; // Energy is below the Threshold value
177  }
178  lastP =colP [i]; // Last Momentum (A-dependent)
179  lastCS =colCS[i]; // Last CrossSect (A-dependent)
180  in = true; // This is the case when the isotop is found in DB
181  // Momentum pMom is in IU ! @@ Units
182  lastCS=CalculateCrossSection(-1,j,cPDG,lastZ,lastN,pMom); // read & update
183  if(lastCS<=0. && pMom>lastTH) // Correct the threshold (@@ No intermediate Zeros)
184  {
185  lastCS=0.;
186  lastTH=pMom;
187  }
188  break; // Go out of the LOOP
189  }
190  j++; // Increment a#0f records found in DB
191  }
192  if(!in) // This isotope has not been calculated previously
193  {
195  lastCS=CalculateCrossSection(0,j,cPDG,lastZ,lastN,pMom); //calculate & create
196  //if(lastCS>0.) // It means that the AMBD was initialized
197  //{
198 
199  lastTH = 0; //ThresholdEnergy(tgZ, tgN); // The Threshold Energy which is now the last
200  colN.push_back(tgN);
201  colZ.push_back(tgZ);
202  colP.push_back(pMom);
203  colTH.push_back(lastTH);
204  colCS.push_back(lastCS);
205  //} // M.K. Presence of H1 with high threshold breaks the syncronization
206  return lastCS*millibarn;
207  } // End of creation of the new set of parameters
208  else
209  {
210  colP[lastI]=pMom;
211  colCS[lastI]=lastCS;
212  }
213  } // End of parameters udate
214  else if(pMom<=lastTH)
215  {
216  return 0.; // Momentum is below the Threshold Value -> CS=0
217  }
218  else // It is the last used -> use the current tables
219  {
220  lastCS=CalculateCrossSection(1,j,cPDG,lastZ,lastN,pMom); // Only read and UpdateDB
221  lastP=pMom;
222  }
223  return lastCS*millibarn;
224 }
int G4int
Definition: G4Types.hh:78
bool G4bool
Definition: G4Types.hh:79
static constexpr double millibarn
Definition: G4SIunits.hh:106

Here is the caller graph for this function:

G4double G4ChipsAntiBaryonInelasticXS::GetIsoCrossSection ( const G4DynamicParticle Pt,
G4int  tgZ,
G4int  A,
const G4Isotope iso = 0,
const G4Element elm = 0,
const G4Material mat = 0 
)
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 144 of file G4ChipsAntiBaryonInelasticXS.cc.

148 {
149  G4double pMom=Pt->GetTotalMomentum();
150  G4int tgN = A - tgZ;
151  G4int pdg = Pt->GetDefinition()->GetPDGEncoding();
152 
153  return GetChipsCrossSection(pMom, tgZ, tgN, pdg);
154 }
G4ParticleDefinition * GetDefinition() const
int G4int
Definition: G4Types.hh:78
G4double GetTotalMomentum() const
double A(double temperature)
virtual G4double GetChipsCrossSection(G4double momentum, G4int Z, G4int N, G4int pdg)
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

G4bool G4ChipsAntiBaryonInelasticXS::IsIsoApplicable ( const G4DynamicParticle Pt,
G4int  Z,
G4int  A,
const G4Element elm,
const G4Material mat 
)
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 95 of file G4ChipsAntiBaryonInelasticXS.cc.

98 {
99  /*
100  const G4ParticleDefinition* particle = Pt->GetDefinition();
101 
102  if(particle == G4AntiNeutron::AntiNeutron())
103  {
104  return true;
105  }
106  else if(particle == G4AntiProton::AntiProton())
107  {
108  return true;
109  }
110  else if(particle == G4AntiLambda::AntiLambda())
111  {
112  return true;
113  }
114  else if(particle == G4AntiSigmaPlus::AntiSigmaPlus())
115  {
116  return true;
117  }
118  else if(particle == G4AntiSigmaMinus::AntiSigmaMinus())
119  {
120  return true;
121  }
122  else if(particle == G4AntiSigmaZero::AntiSigmaZero())
123  {
124  return true;
125  }
126  else if(particle == G4AntiXiMinus::AntiXiMinus())
127  {
128  return true;
129  }
130  else if(particle == G4AntiXiZero::AntiXiZero())
131  {
132  return true;
133  }
134  else if(particle == G4AntiOmegaMinus::AntiOmegaMinus())
135  {
136  return true;
137  }
138  */
139  return true;
140 }

The documentation for this class was generated from the following files: