50 #ifndef G4AdjointCSManager_h 
   51 #define G4AdjointCSManager_h 1 
  144                         G4bool IsScatProjToProjCase,
 
  145                         std::vector<G4double>& 
 
  146                              AdjointCS_for_each_element);
 
  154                                G4bool IsScatProjToProjCase);
 
  177     std::vector< std::vector<G4AdjointCSMatrix*> > theAdjointCSMatricesForScatProjToProj; 
 
  178     std::vector< std::vector<G4AdjointCSMatrix*> > theAdjointCSMatricesForProdToProj;
 
  179     std::vector< G4VEmAdjointModel*> listOfAdjointEMModel;
 
  181     std::vector<G4AdjointCSMatrix*> 
 
  185                                            G4int nbin_pro_decade);
 
  187     std::vector<G4AdjointCSMatrix*> 
 
  190                                            G4int nbin_pro_decade);
 
  196     std::vector< size_t> listOfIndexOfAdjointEMModelInAction;
 
  197     std::vector< G4bool> listOfIsScatProjToProjCase;
 
  198     std::vector< std::vector<G4double> > lastAdjointCSVsModelsAndElements;
 
  199     G4bool CrossSectionMatrixesAreBuilt;
 
  200     size_t  currentParticleIndex;
 
  205     std::vector<G4PhysicsTable*>        theTotalForwardSigmaTableVector;
 
  206     std::vector<G4PhysicsTable*>        theTotalAdjointSigmaTableVector;
 
  207     std::vector< std::vector<G4double> >    EminForFwdSigmaTables;  
 
  208     std::vector< std::vector<G4double> >    EminForAdjSigmaTables;  
 
  209     std::vector< std::vector<G4double> >    EkinofFwdSigmaMax;  
 
  210     std::vector< std::vector<G4double> >    EkinofAdjSigmaMax;
 
  211     G4bool TotalSigmaTableAreBuilt;
 
  214     std::vector<G4PhysicsTable*>        listSigmaTableForAdjointModelScatProjToProj;
 
  215     std::vector<G4PhysicsTable*>        listSigmaTableForAdjointModelProdToProj;
 
  219     std::vector< std::vector<G4VEmProcess*>* >      listOfForwardEmProcess;
 
  220     std::vector< std::vector<G4VEnergyLossProcess*>* >  listOfForwardEnergyLossProcess;
 
  224     std::vector< G4ParticleDefinition*> theListOfAdjointParticlesInAction;
 
  233     size_t  currentMatIndex;
 
  242     G4bool forward_CS_is_used;
 
G4double GetTotalAdjointCS(G4ParticleDefinition *aPartDef, G4double Ekin, const G4MaterialCutsCouple *aCouple)
 
G4double GetCrossSectionCorrection(G4ParticleDefinition *aPartDef, G4double PreStepEkin, const G4MaterialCutsCouple *aCouple, G4bool &fwd_is_used, G4double &fwd_TotCS)
 
void SetTmin(G4double aVal)
 
G4double GetAdjointSigma(G4double Ekin_nuc, size_t index_model, G4bool is_scat_proj_to_proj, const G4MaterialCutsCouple *aCouple)
 
G4double ComputeTotalAdjointCS(const G4MaterialCutsCouple *aMatCutCouple, G4ParticleDefinition *aPart, G4double PrimEnergy)
 
G4double GetPostStepWeightCorrection()
 
void GetMaxFwdTotalCS(G4ParticleDefinition *aPartDef, const G4MaterialCutsCouple *aCouple, G4double &e_sigma_max, G4double &sigma_max)
 
size_t RegisterEmAdjointModel(G4VEmAdjointModel *)
 
void SetIon(G4ParticleDefinition *adjIon, G4ParticleDefinition *fwdIon)
 
void RegisterEnergyLossProcess(G4VEnergyLossProcess *aProcess, G4ParticleDefinition *aPartDef)
 
void SetFwdCrossSectionMode(G4bool aBool)
 
void RegisterAdjointParticle(G4ParticleDefinition *aPartDef)
 
double A(double temperature)
 
G4ParticleDefinition * GetAdjointParticleEquivalent(G4ParticleDefinition *theFwdPartDef)
 
void SetNbins(G4int aInt)
 
void SetTmax(G4double aVal)
 
G4double GetTotalForwardCS(G4ParticleDefinition *aPartDef, G4double Ekin, const G4MaterialCutsCouple *aCouple)
 
void GetEminForTotalCS(G4ParticleDefinition *aPartDef, const G4MaterialCutsCouple *aCouple, G4double &emin_adj, G4double &emin_fwd)
 
G4ParticleDefinition * GetForwardParticleEquivalent(G4ParticleDefinition *theAdjPartDef)
 
G4double GetContinuousWeightCorrection(G4ParticleDefinition *aPartDef, G4double PreStepEkin, G4double AfterStepEkin, const G4MaterialCutsCouple *aCouple, G4double step_length)
 
void RegisterEmProcess(G4VEmProcess *aProcess, G4ParticleDefinition *aPartDef)
 
void BuildTotalSigmaTables()
 
void GetMaxAdjTotalCS(G4ParticleDefinition *aPartDef, const G4MaterialCutsCouple *aCouple, G4double &e_sigma_max, G4double &sigma_max)
 
void BuildCrossSectionMatrices()
 
G4Element * SampleElementFromCSMatrices(G4Material *aMaterial, G4VEmAdjointModel *aModel, G4double PrimEnergy, G4double Tcut, G4bool IsScatProjToProjCase)
 
static G4AdjointCSManager * GetAdjointCSManager()
 
G4double ComputeAdjointCS(G4Material *aMaterial, G4VEmAdjointModel *aModel, G4double PrimEnergy, G4double Tcut, G4bool IsScatProjToProjCase, std::vector< G4double > &AdjointCS_for_each_element)