Geant4  10.02.p03
G4ParticleHPChannel Class Reference

#include <G4ParticleHPChannel.hh>

Collaboration diagram for G4ParticleHPChannel:

Public Member Functions

 G4ParticleHPChannel (G4ParticleDefinition *projectile)
 
 G4ParticleHPChannel ()
 
 ~G4ParticleHPChannel ()
 
G4double GetXsec (G4double energy)
 
G4double GetWeightedXsec (G4double energy, G4int isoNumber)
 
G4double GetFSCrossSection (G4double energy, G4int isoNumber)
 
G4bool IsActive (G4int isoNumber)
 
G4bool HasFSData (G4int isoNumber)
 
G4bool HasAnyData (G4int isoNumber)
 
G4bool Register (G4ParticleHPFinalState *theFS)
 
void Init (G4Element *theElement, const G4String dirName)
 
void Init (G4Element *theElement, const G4String dirName, const G4String fsType)
 
void UpdateData (G4int A, G4int Z, G4int index, G4double abundance, G4ParticleDefinition *projectile)
 
void UpdateData (G4int A, G4int Z, G4int M, G4int index, G4double abundance, G4ParticleDefinition *projectile)
 
void Harmonise (G4ParticleHPVector *&theStore, G4ParticleHPVector *theNew)
 
G4HadFinalStateApplyYourself (const G4HadProjectile &theTrack, G4int isoNumber=-1)
 
G4int GetNiso ()
 
G4double GetN (G4int i)
 
G4double GetZ (G4int i)
 
G4double GetM (G4int i)
 
G4bool HasDataInAnyFinalState ()
 
void DumpInfo ()
 
G4String GetFSType () const
 
G4ParticleHPFinalState ** GetFinalStates () const
 

Private Attributes

G4ParticleDefinitiontheProjectile
 
G4ParticleHPVectortheChannelData
 
G4ParticleHPVectortheBuffer
 
G4ParticleHPIsoDatatheIsotopeWiseData
 
G4ParticleHPFinalState ** theFinalStates
 
G4boolactive
 
G4int niso
 
G4StableIsotopes theStableOnes
 
G4String theDir
 
G4String theFSType
 
G4ElementtheElement
 
G4int registerCount
 
G4WendtFissionFragmentGenerator *const wendtFissionGenerator
 

Detailed Description

Definition at line 57 of file G4ParticleHPChannel.hh.

Constructor & Destructor Documentation

◆ G4ParticleHPChannel() [1/2]

G4ParticleHPChannel::G4ParticleHPChannel ( G4ParticleDefinition projectile)
inline

Definition at line 61 of file G4ParticleHPChannel.hh.

62  : wendtFissionGenerator(getenv("G4NEUTRON_HP_USE_WENDT_FISSION_MODEL") == NULL ? NULL : G4WendtFissionFragmentGenerator::GetInstance())
63  {
64  theProjectile = const_cast<G4ParticleDefinition*>(projectile);
66  theBuffer = 0;
68  theFinalStates = 0;
69  active = 0;
70  registerCount = -1;
71  }
static G4WendtFissionFragmentGenerator * GetInstance()
G4ParticleHPFinalState ** theFinalStates
G4ParticleHPIsoData * theIsotopeWiseData
G4ParticleDefinition * theProjectile
G4ParticleHPVector * theChannelData
G4ParticleHPVector * theBuffer
G4WendtFissionFragmentGenerator *const wendtFissionGenerator

◆ G4ParticleHPChannel() [2/2]

G4ParticleHPChannel::G4ParticleHPChannel ( )
inline

Definition at line 73 of file G4ParticleHPChannel.hh.

74  : wendtFissionGenerator(getenv("G4NEUTRON_HP_USE_WENDT_FISSION_MODEL") == NULL ? NULL : G4WendtFissionFragmentGenerator::GetInstance())
75  {
78  theBuffer = 0;
80  theFinalStates = 0;
81  active = 0;
82  registerCount = -1;
83  }
static G4WendtFissionFragmentGenerator * GetInstance()
G4ParticleHPFinalState ** theFinalStates
G4ParticleHPIsoData * theIsotopeWiseData
static G4Neutron * Neutron()
Definition: G4Neutron.cc:104
G4ParticleDefinition * theProjectile
G4ParticleHPVector * theChannelData
G4ParticleHPVector * theBuffer
G4WendtFissionFragmentGenerator *const wendtFissionGenerator
Here is the call graph for this function:

◆ ~G4ParticleHPChannel()

G4ParticleHPChannel::~G4ParticleHPChannel ( )
inline

Definition at line 85 of file G4ParticleHPChannel.hh.

86  {
87  delete theChannelData;
88  // Following statement disabled to avoid SEGV
89  // theBuffer is also deleted as "theChannelData" in
90  // ~G4ParticleHPIsoData. FWJ 06-Jul-1999
91  //if(theBuffer != 0) delete theBuffer;
92  if(theIsotopeWiseData != 0) delete [] theIsotopeWiseData;
93  // Deletion of FinalStates disabled to avoid endless looping
94  // in the destructor heirarchy. FWJ 06-Jul-1999
95  //if(theFinalStates != 0)
96  //{
97  // for(i=0; i<niso; i++)
98  // {
99  // delete theFinalStates[i];
100  // }
101  // delete [] theFinalStates;
102  //}
103  // FWJ experiment
104  //if(active!=0) delete [] active;
105 // T.K.
106  if ( theFinalStates != 0 )
107  {
108  for ( G4int i = 0 ; i < niso ; i++ )
109  {
110  delete theFinalStates[i];
111  }
112  delete [] theFinalStates;
113  }
114  if ( active != 0 ) delete [] active;
115 
116  }
G4ParticleHPFinalState ** theFinalStates
int G4int
Definition: G4Types.hh:78
G4ParticleHPIsoData * theIsotopeWiseData
G4ParticleHPVector * theChannelData
Here is the call graph for this function:

Member Function Documentation

◆ ApplyYourself()

G4HadFinalState * G4ParticleHPChannel::ApplyYourself ( const G4HadProjectile theTrack,
G4int  isoNumber = -1 
)

Definition at line 225 of file G4ParticleHPChannel.cc.

226  {
227 // G4cout << "G4ParticleHPChannel::ApplyYourself+"<<niso<<G4endl;
228  if ( anIsotope != -1 && anIsotope != -2 )
229  {
230  //Inelastic Case
231  //G4cout << "G4ParticleHPChannel Inelastic Case"
232  //<< " Z= " << this->GetZ(it) << " A = " << this->GetN(it) << G4endl;
235  return theFinalStates[anIsotope]->ApplyYourself(theTrack);
236  }
237  G4double sum=0;
238  G4int it=0;
239  G4double * xsec = new G4double[niso];
240  G4ParticleHPThermalBoost aThermalE;
241  for (G4int i=0; i<niso; i++)
242  {
243  if(theFinalStates[i]->HasAnyData())
244  {
245  xsec[i] = theIsotopeWiseData[i].GetXsec(aThermalE.GetThermalEnergy(theTrack,
246  theFinalStates[i]->GetN(),
247  theFinalStates[i]->GetZ(),
248  theTrack.GetMaterial()->GetTemperature()));
249  sum += xsec[i];
250  }
251  else
252  {
253  xsec[i]=0;
254  }
255  }
256  if(sum == 0)
257  {
258 // G4cout << "G4ParticleHPChannel::ApplyYourself theFinalState->Initialize+"<<G4endl;
259 // G4cout << "G4ParticleHPChannel::ApplyYourself theFinalState->Initialize-"<<G4endl;
260  it = static_cast<G4int>(niso*G4UniformRand());
261  }
262  else
263  {
264 // G4cout << "Are we still here? "<<sum<<G4endl;
265 // G4cout << "TESTHP 23 NISO="<<niso<<G4endl;
266  G4double random = G4UniformRand();
267  G4double running=0;
268 // G4cout << "G4ParticleHPChannel::ApplyYourself Done the sum"<<niso<<G4endl;
269 // G4cout << "TESTHP 24 NISO="<<niso<<G4endl;
270  for (G4int ix=0; ix<niso; ix++)
271  {
272  running += xsec[ix];
273  //if(random<=running/sum)
274  if( sum == 0 || random <= running/sum )
275  {
276  it = ix;
277  break;
278  }
279  }
280  if(it==niso) it--;
281  }
282  delete [] xsec;
283  G4HadFinalState * theFinalState=0;
284  const G4int A = (G4int)this->GetN(it);
285  const G4int Z = (G4int)this->GetZ(it);
286  const G4int M = (G4int)this->GetM(it);
287 
288  //-2:Marker for Fission
289  if(wendtFissionGenerator&&anIsotope==-2)
290  {
291  theFinalState = wendtFissionGenerator->ApplyYourself(theTrack, Z, A);
292  }
293 
294  // Use the standard procedure if the G4FissionFragmentGenerator model fails
295  if (!theFinalState)
296  {
297 
298  G4int icounter=0;
299  G4int icounter_max=1024;
300  while(theFinalState==0) // Loop checking, 11.05.2015, T. Koi
301  {
302  icounter++;
303  if ( icounter > icounter_max ) {
304  G4cout << "Loop-counter exceeded the threshold value at " << __LINE__ << "th line of " << __FILE__ << "." << G4endl;
305  break;
306  }
307 // G4cout << "TESTHP 24 it="<<it<<G4endl;
308  theFinalState = theFinalStates[it]->ApplyYourself(theTrack);
309  }
310  }
311 
312  //G4cout <<"THE IMPORTANT RETURN"<<G4endl;
313  //G4cout << "TK G4ParticleHPChannel Elastic, Capture and Fission Cases "
314  //<< " Z= " << this->GetZ(it) << " A = " << this->GetN(it) << G4endl;
318 
319  return theFinalState;
320  }
static G4ParticleHPManager * GetInstance()
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile &)
const G4Material * GetMaterial() const
G4HadFinalState * ApplyYourself(const G4HadProjectile &projectile, G4int Z, G4int A)
G4double GetM(G4int i)
G4ParticleHPFinalState ** theFinalStates
G4double GetXsec(G4double energy)
G4double GetN(G4int i)
int G4int
Definition: G4Types.hh:78
G4ParticleHPIsoData * theIsotopeWiseData
#define G4UniformRand()
Definition: Randomize.hh:97
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
Float_t Z
G4double GetZ(G4int i)
G4double GetTemperature() const
Definition: G4Material.hh:182
G4double GetThermalEnergy(const G4HadProjectile &aP, const G4Element *anE, G4double aT)
G4bool HasAnyData(G4int isoNumber)
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76
G4WendtFissionFragmentGenerator *const wendtFissionGenerator
G4ParticleHPReactionWhiteBoard * GetReactionWhiteBoard()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ DumpInfo()

void G4ParticleHPChannel::DumpInfo ( )

Definition at line 323 of file G4ParticleHPChannel.cc.

323  {
324 
325  G4cout<<" Element: "<<theElement->GetName()<<G4endl;
326  G4cout<<" Directory name: "<<theDir<<G4endl;
327  G4cout<<" FS name: "<<theFSType<<G4endl;
328  G4cout<<" Number of Isotopes: "<<niso<<G4endl;
329  G4cout<<" Have cross sections: "<<G4endl;
330  for(int i=0;i<niso;i++){
331  G4cout<<theFinalStates[i]->HasXsec()<<" ";
332  }
333  G4cout<<G4endl;
334  if(theChannelData){
335  G4cout<<" Cross Section (total for this channel):"<<G4endl;
337  G4cout<<np<<G4endl;
338  for(int i=0;i<np;i++){
340  }
341  }
342 
343 }
G4ParticleHPFinalState ** theFinalStates
G4double GetEnergy(G4int i) const
G4double GetXsec(G4int i)
G4GLOB_DLL std::ostream G4cout
G4int GetVectorLength() const
const G4String & GetName() const
Definition: G4Element.hh:127
static const double eV
Definition: G4SIunits.hh:212
G4ParticleHPVector * theChannelData
#define G4endl
Definition: G4ios.hh:61
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetFinalStates()

G4ParticleHPFinalState** G4ParticleHPChannel::GetFinalStates ( ) const
inline

Definition at line 167 of file G4ParticleHPChannel.hh.

167  {
168  return theFinalStates;
169  }
G4ParticleHPFinalState ** theFinalStates

◆ GetFSCrossSection()

G4double G4ParticleHPChannel::GetFSCrossSection ( G4double  energy,
G4int  isoNumber 
)

Definition at line 57 of file G4ParticleHPChannel.cc.

58  {
59  return theFinalStates[isoNumber]->GetXsec(energy);
60  }
G4ParticleHPFinalState ** theFinalStates
double energy
Definition: plottest35.C:25
virtual G4double GetXsec(G4double)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetFSType()

G4String G4ParticleHPChannel::GetFSType ( ) const
inline

Definition at line 163 of file G4ParticleHPChannel.hh.

163  {
164  return theFSType;
165  }

◆ GetM()

G4double G4ParticleHPChannel::GetM ( G4int  i)
inline

Definition at line 148 of file G4ParticleHPChannel.hh.

148 {return theFinalStates[i]->GetM();}
G4ParticleHPFinalState ** theFinalStates
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetN()

G4double G4ParticleHPChannel::GetN ( G4int  i)
inline

Definition at line 146 of file G4ParticleHPChannel.hh.

146 {return theFinalStates[i]->GetN();}
G4ParticleHPFinalState ** theFinalStates
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetNiso()

G4int G4ParticleHPChannel::GetNiso ( )
inline

Definition at line 144 of file G4ParticleHPChannel.hh.

144 {return niso;}
Here is the caller graph for this function:

◆ GetWeightedXsec()

G4double G4ParticleHPChannel::GetWeightedXsec ( G4double  energy,
G4int  isoNumber 
)

Definition at line 52 of file G4ParticleHPChannel.cc.

53  {
54  return theIsotopeWiseData[isoNumber].GetXsec(energy);
55  }
G4double GetXsec(G4double energy)
G4ParticleHPIsoData * theIsotopeWiseData
double energy
Definition: plottest35.C:25
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetXsec()

G4double G4ParticleHPChannel::GetXsec ( G4double  energy)

Definition at line 47 of file G4ParticleHPChannel.cc.

48  {
49  return std::max(0., theChannelData->GetXsec(energy));
50  }
G4double GetXsec(G4int i)
double energy
Definition: plottest35.C:25
G4ParticleHPVector * theChannelData
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetZ()

G4double G4ParticleHPChannel::GetZ ( G4int  i)
inline

Definition at line 147 of file G4ParticleHPChannel.hh.

147 {return theFinalStates[i]->GetZ();}
G4ParticleHPFinalState ** theFinalStates
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Harmonise()

void G4ParticleHPChannel::Harmonise ( G4ParticleHPVector *&  theStore,
G4ParticleHPVector theNew 
)

Definition at line 180 of file G4ParticleHPChannel.cc.

181  {
182  G4int s_tmp = 0, n=0, m_tmp=0;
183  G4ParticleHPVector * theMerge = new G4ParticleHPVector;
184  G4ParticleHPVector * anActive = theStore;
185  G4ParticleHPVector * aPassive = theNew;
187  G4int a = s_tmp, p = n, t;
188  while (a<anActive->GetVectorLength()&&p<aPassive->GetVectorLength()) // Loop checking, 11.05.2015, T. Koi
189  {
190  if(anActive->GetEnergy(a) <= aPassive->GetEnergy(p))
191  {
192  G4double xa = anActive->GetEnergy(a);
193  theMerge->SetData(m_tmp, xa, anActive->GetXsec(a)+std::max(0., aPassive->GetXsec(xa)) );
194  m_tmp++;
195  a++;
196  G4double xp = aPassive->GetEnergy(p);
197  if( std::abs(std::abs(xp-xa)/xa)<0.001 )
198  {
199  p++;
200  }
201  } else {
202  tmp = anActive; t=a;
203  anActive = aPassive; a=p;
204  aPassive = tmp; p=t;
205  }
206  }
207  while (a!=anActive->GetVectorLength()) // Loop checking, 11.05.2015, T. Koi
208  {
209  theMerge->SetData(m_tmp++, anActive->GetEnergy(a), anActive->GetXsec(a));
210  a++;
211  }
212  while (p!=aPassive->GetVectorLength()) // Loop checking, 11.05.2015, T. Koi
213  {
214  if(std::abs(theMerge->GetEnergy(std::max(0,m_tmp-1))-aPassive->GetEnergy(p))/aPassive->GetEnergy(p)>0.001)
215  theMerge->SetData(m_tmp++, aPassive->GetEnergy(p), aPassive->GetXsec(p));
216  p++;
217  }
218  delete theStore;
219  theStore = theMerge;
220  }
Float_t tmp
void SetData(G4int i, G4double x, G4double y)
G4double GetEnergy(G4int i) const
int G4int
Definition: G4Types.hh:78
G4double GetXsec(G4int i)
Char_t n[5]
G4int GetVectorLength() const
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:
Here is the caller graph for this function:

◆ HasAnyData()

G4bool G4ParticleHPChannel::HasAnyData ( G4int  isoNumber)
inline

Definition at line 128 of file G4ParticleHPChannel.hh.

128 { return theFinalStates[isoNumber]->HasAnyData(); }
G4ParticleHPFinalState ** theFinalStates
Here is the call graph for this function:
Here is the caller graph for this function:

◆ HasDataInAnyFinalState()

G4bool G4ParticleHPChannel::HasDataInAnyFinalState ( )
inline

Definition at line 150 of file G4ParticleHPChannel.hh.

151  {
152  G4bool result = false;
153  G4int i;
154  for(i=0; i<niso; i++)
155  {
156  if(theFinalStates[i]->HasAnyData()) result = true;
157  }
158  return result;
159  }
G4ParticleHPFinalState ** theFinalStates
int G4int
Definition: G4Types.hh:78
bool G4bool
Definition: G4Types.hh:79
G4bool HasAnyData(G4int isoNumber)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ HasFSData()

G4bool G4ParticleHPChannel::HasFSData ( G4int  isoNumber)
inline

Definition at line 126 of file G4ParticleHPChannel.hh.

126 { return theFinalStates[isoNumber]->HasFSData(); }
G4ParticleHPFinalState ** theFinalStates
Here is the call graph for this function:

◆ Init() [1/2]

void G4ParticleHPChannel::Init ( G4Element theElement,
const G4String  dirName 
)

Definition at line 69 of file G4ParticleHPChannel.cc.

70  {
71  theDir = dirName;
72  theElement = anElement;
73  }
Here is the caller graph for this function:

◆ Init() [2/2]

void G4ParticleHPChannel::Init ( G4Element theElement,
const G4String  dirName,
const G4String  fsType 
)

Definition at line 63 of file G4ParticleHPChannel.cc.

64  {
65  theFSType = aFSType;
66  Init(anElement, dirName);
67  }
void Init(G4Element *theElement, const G4String dirName)
Here is the call graph for this function:

◆ IsActive()

G4bool G4ParticleHPChannel::IsActive ( G4int  isoNumber)
inline

Definition at line 124 of file G4ParticleHPChannel.hh.

124 { return active[isoNumber]; }

◆ Register()

G4bool G4ParticleHPChannel::Register ( G4ParticleHPFinalState theFS)

Definition at line 75 of file G4ParticleHPChannel.cc.

76  {
77  registerCount++;
79 
80  Z = Z-registerCount;
81  if ( registerCount > 5 ) throw G4HadronicException(__FILE__, __LINE__, "Channel: Do not know what to do with this material"); // for Elastic, Capture, Fission case
82  if ( Z < 1 ) return false;
83 /*
84  if(registerCount<5)
85  {
86  Z = Z-registerCount;
87  }
88 */
89  //if(Z=theElement->GetZ()-5) throw G4HadronicException(__FILE__, __LINE__, "Channel: Do not know what to do with this material");
90  // Bug fix by TK on behalf of AH
91  if ( Z <=theElement->GetZ()-5 ) throw G4HadronicException(__FILE__, __LINE__, "Channel: Do not know what to do with this material");
92  G4int count = 0;
93  if(registerCount==0) count = theElement->GetNumberOfIsotopes();
94  if(count == 0||registerCount!=0) count +=
96  niso = count;
97  delete [] theIsotopeWiseData;
99  delete [] active;
100  active = new G4bool[niso];
101 
102  delete [] theFinalStates;
104  delete theChannelData;
106  for(G4int i=0; i<niso; i++)
107  {
108  theFinalStates[i] = theFS->New();
110  }
111  count = 0;
112  G4int nIsos = niso;
113  if(theElement->GetNumberOfIsotopes()!=0&&registerCount==0)
114  {
115  for (G4int i1=0; i1<nIsos; i1++)
116  {
117  // G4cout <<" Init: normal case"<<G4endl;
118  G4int A = theElement->GetIsotope(i1)->GetN();
119  G4int M = theElement->GetIsotope(i1)->Getm();
121  //theFinalStates[i1]->SetA_Z(A, Z);
122  //UpdateData(A, Z, count++, frac);
123  theFinalStates[i1]->SetA_Z(A, Z, M);
124  UpdateData(A, Z, M, count++, frac, theProjectile);
125  }
126  } else {
127  //G4cout <<" Init: mean case: "
128  // <<theStableOnes.GetNumberOfIsotopes(Z)<<" "
129  // <<Z<<" "<<theElement
130  // << G4endl;
132  for(G4int i1=0;
134  i1++)
135  {
137  G4double frac = theStableOnes.GetAbundance(first+i1);
138  theFinalStates[i1]->SetA_Z(A, Z);
139  UpdateData(A, Z, count++, frac, theProjectile);
140  }
141  }
142  G4bool result = HasDataInAnyFinalState();
143 
144  //To avoid issuing hash by worker threads
145  if ( result ) theChannelData->Hash();
146 
147  return result;
148  }
void UpdateData(G4int A, G4int Z, G4int index, G4double abundance, G4ParticleDefinition *projectile)
const G4Isotope * GetIsotope(G4int iso) const
Definition: G4Element.hh:169
G4int GetFirstIsotope(G4int Z)
G4ParticleHPFinalState ** theFinalStates
virtual G4ParticleHPFinalState * New()=0
int G4int
Definition: G4Types.hh:78
size_t GetNumberOfIsotopes() const
Definition: G4Element.hh:158
G4double * GetRelativeAbundanceVector() const
Definition: G4Element.hh:166
G4ParticleHPIsoData * theIsotopeWiseData
double A(double temperature)
Float_t Z
G4int Getm() const
Definition: G4Isotope.hh:100
bool G4bool
Definition: G4Types.hh:79
G4double GetZ(G4int i)
static const double perCent
Definition: G4SIunits.hh:329
G4StableIsotopes theStableOnes
void SetProjectile(G4ParticleDefinition *projectile)
G4int GetNumberOfIsotopes(G4int Z)
G4ParticleDefinition * theProjectile
G4ParticleHPVector * theChannelData
G4int GetIsotopeNucleonCount(G4int number)
int G4lrint(double ad)
Definition: templates.hh:163
G4int GetN() const
Definition: G4Isotope.hh:94
void SetA_Z(G4double anA, G4double aZ, G4int aM=0)
G4double GetAbundance(G4int number)
double G4double
Definition: G4Types.hh:76
G4double GetZ() const
Definition: G4Element.hh:131
Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateData() [1/2]

void G4ParticleHPChannel::UpdateData ( G4int  A,
G4int  Z,
G4int  index,
G4double  abundance,
G4ParticleDefinition projectile 
)
inline

Definition at line 137 of file G4ParticleHPChannel.hh.

137 { G4int M = 0; UpdateData( A, Z, M, index, abundance, projectile); };
void UpdateData(G4int A, G4int Z, G4int index, G4double abundance, G4ParticleDefinition *projectile)
Int_t index
int G4int
Definition: G4Types.hh:78
double A(double temperature)
Float_t Z
Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateData() [2/2]

void G4ParticleHPChannel::UpdateData ( G4int  A,
G4int  Z,
G4int  M,
G4int  index,
G4double  abundance,
G4ParticleDefinition projectile 
)

Definition at line 151 of file G4ParticleHPChannel.cc.

152  {
153  // Initialze the G4FissionFragment generator for this isomer if needed
155  {
157  }
158 
159  theFinalStates[index]->Init(A, Z, M, theDir, theFSType, projectile);
160  if(!theFinalStates[index]->HasAnyData()) return; // nothing there for exactly this isotope.
161 
162  // the above has put the X-sec into the FS
163  theBuffer = 0;
164  if(theFinalStates[index]->HasXsec())
165  {
167  theBuffer->Times(abundance/100.);
169  }
170  else // get data from CrossSection directory
171  {
172  G4String tString = "/CrossSection";
173  //active[index] = theIsotopeWiseData[index].Init(A, Z, abundance, theDir, tString);
174  active[index] = theIsotopeWiseData[index].Init(A, Z, M, abundance, theDir, tString);
176  }
178  }
void Init(G4double A, G4double Z, G4String &dirName, G4String &aFSType, G4ParticleDefinition *projectile)
Int_t index
G4ParticleHPFinalState ** theFinalStates
G4ParticleHPIsoData * theIsotopeWiseData
void Harmonise(G4ParticleHPVector *&theStore, G4ParticleHPVector *theNew)
void InitializeANucleus(const G4int A, const G4int Z, const G4int M, const G4String &dataDirectory)
double A(double temperature)
Float_t Z
void Times(G4double factor)
G4ParticleHPVector * MakeChannelData()
G4bool HasAnyData(G4int isoNumber)
G4ParticleHPVector * theChannelData
G4ParticleHPVector * theBuffer
virtual G4double GetXsec(G4double)
G4bool Init(G4int A, G4int Z, G4double abun, G4String dirName, G4String aFSType)
void FillChannelData(G4ParticleHPVector *aBuffer)
G4WendtFissionFragmentGenerator *const wendtFissionGenerator
Here is the call graph for this function:

Member Data Documentation

◆ active

G4bool* G4ParticleHPChannel::active
private

Definition at line 179 of file G4ParticleHPChannel.hh.

◆ niso

G4int G4ParticleHPChannel::niso
private

Definition at line 180 of file G4ParticleHPChannel.hh.

◆ registerCount

G4int G4ParticleHPChannel::registerCount
private

Definition at line 188 of file G4ParticleHPChannel.hh.

◆ theBuffer

G4ParticleHPVector* G4ParticleHPChannel::theBuffer
private

Definition at line 175 of file G4ParticleHPChannel.hh.

◆ theChannelData

G4ParticleHPVector* G4ParticleHPChannel::theChannelData
private

Definition at line 174 of file G4ParticleHPChannel.hh.

◆ theDir

G4String G4ParticleHPChannel::theDir
private

Definition at line 184 of file G4ParticleHPChannel.hh.

◆ theElement

G4Element* G4ParticleHPChannel::theElement
private

Definition at line 186 of file G4ParticleHPChannel.hh.

◆ theFinalStates

G4ParticleHPFinalState** G4ParticleHPChannel::theFinalStates
private

Definition at line 178 of file G4ParticleHPChannel.hh.

◆ theFSType

G4String G4ParticleHPChannel::theFSType
private

Definition at line 185 of file G4ParticleHPChannel.hh.

◆ theIsotopeWiseData

G4ParticleHPIsoData* G4ParticleHPChannel::theIsotopeWiseData
private

Definition at line 177 of file G4ParticleHPChannel.hh.

◆ theProjectile

G4ParticleDefinition* G4ParticleHPChannel::theProjectile
private

Definition at line 172 of file G4ParticleHPChannel.hh.

◆ theStableOnes

G4StableIsotopes G4ParticleHPChannel::theStableOnes
private

Definition at line 182 of file G4ParticleHPChannel.hh.

◆ wendtFissionGenerator

G4WendtFissionFragmentGenerator* const G4ParticleHPChannel::wendtFissionGenerator
private

Definition at line 190 of file G4ParticleHPChannel.hh.


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