Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4ChipsAntiBaryonInelasticXS Class Reference

#include <G4ChipsAntiBaryonInelasticXS.hh>

+ Inheritance 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=nullptr)
 
virtual G4bool IsIsoApplicable (const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
 
G4double GetCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)
 
G4double ComputeCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)
 
virtual G4double ComputeCrossSectionPerElement (G4double kinEnergy, G4double loge, const G4ParticleDefinition *, const G4Element *, const G4Material *mat=nullptr)
 
virtual G4double GetElementCrossSection (const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr)
 
virtual G4double GetIsoCrossSection (const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=nullptr, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
 
virtual G4double ComputeIsoCrossSection (G4double kinEnergy, G4double loge, const G4ParticleDefinition *, G4int Z, G4int A, const G4Isotope *iso=nullptr, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
 
virtual const G4IsotopeSelectIsotope (const G4Element *, G4double kinEnergy, G4double logE)
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
virtual void DumpPhysicsTable (const G4ParticleDefinition &)
 
virtual void CrossSectionDescription (std::ostream &) const
 
virtual void SetVerboseLevel (G4int value)
 
G4double GetMinKinEnergy () const
 
void SetMinKinEnergy (G4double value)
 
G4double GetMaxKinEnergy () const
 
void SetMaxKinEnergy (G4double value)
 
bool ForAllAtomsAndEnergies () const
 
void SetForAllAtomsAndEnergies (G4bool val)
 
const G4StringGetName () const
 
void SetName (const G4String &nam)
 
G4VCrossSectionDataSetoperator= (const G4VCrossSectionDataSet &right)=delete
 
 G4VCrossSectionDataSet (const G4VCrossSectionDataSet &)=delete
 

Static Public Member Functions

static const char * Default_Name ()
 

Additional Inherited Members

- Protected Attributes inherited from G4VCrossSectionDataSet
G4int verboseLevel
 
G4String name
 

Detailed Description

Definition at line 44 of file G4ChipsAntiBaryonInelasticXS.hh.

Constructor & Destructor Documentation

◆ G4ChipsAntiBaryonInelasticXS()

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}

◆ ~G4ChipsAntiBaryonInelasticXS()

G4ChipsAntiBaryonInelasticXS::~G4ChipsAntiBaryonInelasticXS ( )

Definition at line 76 of file G4ChipsAntiBaryonInelasticXS.cc.

77{
78 std::size_t lens=LEN->size();
79 for(std::size_t i=0; i<lens; ++i) delete[] (*LEN)[i];
80 delete LEN;
81 std::size_t hens=HEN->size();
82 for(std::size_t i=0; i<hens; ++i) delete[] (*HEN)[i];
83 delete HEN;
84}

Member Function Documentation

◆ CrossSectionDescription()

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}

◆ Default_Name()

static const char * G4ChipsAntiBaryonInelasticXS::Default_Name ( )
inlinestatic

Definition at line 52 of file G4ChipsAntiBaryonInelasticXS.hh.

52{return "ChipsAntiBaryonInelasticXS";}

Referenced by G4ChipsComponentXS::G4ChipsComponentXS().

◆ GetChipsCrossSection()

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 = (G4int)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 {
194 //!!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)
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}
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85

Referenced by G4ChipsComponentXS::GetInelasticElementCrossSection(), GetIsoCrossSection(), and G4ChipsComponentXS::GetTotalElementCrossSection().

◆ GetIsoCrossSection()

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}
double G4double
Definition: G4Types.hh:83
const G4double A[17]
virtual G4double GetChipsCrossSection(G4double momentum, G4int Z, G4int N, G4int pdg)
G4ParticleDefinition * GetDefinition() const
G4double GetTotalMomentum() const

◆ IsIsoApplicable()

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: