49#ifndef G4AdjointCSManager_h
50#define G4AdjointCSManager_h 1
143 G4bool IsScatProjToProjCase,
144 std::vector<G4double>&
145 AdjointCS_for_each_element);
153 G4bool IsScatProjToProjCase);
176 std::vector< std::vector<G4AdjointCSMatrix*> > theAdjointCSMatricesForScatProjToProj;
177 std::vector< std::vector<G4AdjointCSMatrix*> > theAdjointCSMatricesForProdToProj;
178 std::vector< G4VEmAdjointModel*> listOfAdjointEMModel;
180 std::vector<G4AdjointCSMatrix*>
184 G4int nbin_pro_decade);
186 std::vector<G4AdjointCSMatrix*>
189 G4int nbin_pro_decade);
195 std::vector< size_t> listOfIndexOfAdjointEMModelInAction;
196 std::vector< G4bool> listOfIsScatProjToProjCase;
197 std::vector< std::vector<G4double> > lastAdjointCSVsModelsAndElements;
198 G4bool CrossSectionMatrixesAreBuilt;
199 size_t currentParticleIndex;
204 std::vector<G4PhysicsTable*> theTotalForwardSigmaTableVector;
205 std::vector<G4PhysicsTable*> theTotalAdjointSigmaTableVector;
206 std::vector< std::vector<G4double> > EminForFwdSigmaTables;
207 std::vector< std::vector<G4double> > EminForAdjSigmaTables;
208 std::vector< std::vector<G4double> > EkinofFwdSigmaMax;
209 std::vector< std::vector<G4double> > EkinofAdjSigmaMax;
210 G4bool TotalSigmaTableAreBuilt;
213 std::vector<G4PhysicsTable*> listSigmaTableForAdjointModelScatProjToProj;
214 std::vector<G4PhysicsTable*> listSigmaTableForAdjointModelProdToProj;
218 std::vector< std::vector<G4VEmProcess*>* > listOfForwardEmProcess;
219 std::vector< std::vector<G4VEnergyLossProcess*>* > listOfForwardEnergyLossProcess;
223 std::vector< G4ParticleDefinition*> theListOfAdjointParticlesInAction;
232 size_t currentMatIndex;
241 G4bool forward_CS_is_used;
void BuildTotalSigmaTables()
size_t RegisterEmAdjointModel(G4VEmAdjointModel *)
void RegisterAdjointParticle(G4ParticleDefinition *aPartDef)
G4ParticleDefinition * GetForwardParticleEquivalent(G4ParticleDefinition *theAdjPartDef)
void GetMaxAdjTotalCS(G4ParticleDefinition *aPartDef, const G4MaterialCutsCouple *aCouple, G4double &e_sigma_max, G4double &sigma_max)
G4double GetCrossSectionCorrection(G4ParticleDefinition *aPartDef, G4double PreStepEkin, const G4MaterialCutsCouple *aCouple, G4bool &fwd_is_used, G4double &fwd_TotCS)
G4double GetTotalForwardCS(G4ParticleDefinition *aPartDef, G4double Ekin, const G4MaterialCutsCouple *aCouple)
void SetIon(G4ParticleDefinition *adjIon, G4ParticleDefinition *fwdIon)
G4double ComputeTotalAdjointCS(const G4MaterialCutsCouple *aMatCutCouple, G4ParticleDefinition *aPart, G4double PrimEnergy)
G4ParticleDefinition * GetAdjointParticleEquivalent(G4ParticleDefinition *theFwdPartDef)
G4Element * SampleElementFromCSMatrices(G4Material *aMaterial, G4VEmAdjointModel *aModel, G4double PrimEnergy, G4double Tcut, G4bool IsScatProjToProjCase)
void SetNbins(G4int aInt)
G4double GetContinuousWeightCorrection(G4ParticleDefinition *aPartDef, G4double PreStepEkin, G4double AfterStepEkin, const G4MaterialCutsCouple *aCouple, G4double step_length)
void SetTmin(G4double aVal)
G4double GetPostStepWeightCorrection()
void GetEminForTotalCS(G4ParticleDefinition *aPartDef, const G4MaterialCutsCouple *aCouple, G4double &emin_adj, G4double &emin_fwd)
static G4AdjointCSManager * GetAdjointCSManager()
G4double GetTotalAdjointCS(G4ParticleDefinition *aPartDef, G4double Ekin, const G4MaterialCutsCouple *aCouple)
G4double GetAdjointSigma(G4double Ekin_nuc, size_t index_model, G4bool is_scat_proj_to_proj, const G4MaterialCutsCouple *aCouple)
void RegisterEmProcess(G4VEmProcess *aProcess, G4ParticleDefinition *aPartDef)
void SetTmax(G4double aVal)
void BuildCrossSectionMatrices()
void RegisterEnergyLossProcess(G4VEnergyLossProcess *aProcess, G4ParticleDefinition *aPartDef)
void GetMaxFwdTotalCS(G4ParticleDefinition *aPartDef, const G4MaterialCutsCouple *aCouple, G4double &e_sigma_max, G4double &sigma_max)
G4double ComputeAdjointCS(G4Material *aMaterial, G4VEmAdjointModel *aModel, G4double PrimEnergy, G4double Tcut, G4bool IsScatProjToProjCase, std::vector< G4double > &AdjointCS_for_each_element)
void SetFwdCrossSectionMode(G4bool aBool)