44 #ifndef CEXMC_PRODUCTION_MODEL_HH
45 #define CEXMC_PRODUCTION_MODEL_HH
48 #include <G4String.hh>
159 #ifdef CEXMC_USE_ROOT
160 CexmcHistoManager::Instance()->SetupARHistos(
angularRanges );
174 const char * fermiMotionMsg(
"Fermi motion in the target is off" );
176 fermiMotionMsg =
"Fermi motion in the target is on";
247 return top > bottom && top <= 1.0 && top > -1.0 && bottom < 1.0 &&
248 bottom >= -1.0 && nmbOfDivs >= 1;
G4ParticleDefinition * outputParticle
CexmcProductionModel(const G4String &name="unspecified", G4bool fermiMotionIsOn=false)
const G4String & GetName(void) const
CexmcAngularRangeList angularRangesRef
G4ParticleDefinition * GetIncidentParticle(void) const
void PrintInitialData(void) const
G4ParticleDefinition * GetNucleusParticle(void) const
void SetTriggeredAngularRanges(G4double opCosThetaSCM)
void AddAngularRange(G4double top, G4double bottom, G4int nmbOfDivs)
CexmcProductionModelData productionModelData
G4ParticleDefinition * incidentParticle
const CexmcProductionModelData & GetProductionModelData(void) const
G4bool IsGoodCandidateForAngularRange(G4double top, G4double bottom) const
G4ParticleDefinition * nucleusOutputParticle
G4bool IsFermiMotionOn(void) const
void ThrowExceptionIfProjectIsRead(CexmcExceptionType type, G4bool extraCond=true)
CexmcAngularRangeList angularRanges
void SetProductionModelData(const CexmcProductionModelData &productionModelData_)
CexmcProductionModelMessenger * messenger
void SetAngularRange(G4double top, G4double bottom, G4int nmbOfDivs)
void SetAngularRanges(const CexmcAngularRangeList &angularRanges_)
const CexmcAngularRangeList & GetTriggeredAngularRanges(void) const
std::vector< CexmcAngularRange > CexmcAngularRangeList
G4ParticleDefinition * GetNucleusOutputParticle(void) const
G4ParticleDefinition * GetOutputParticle(void) const
CexmcAngularRangeList triggeredAngularRanges
G4GLOB_DLL std::ostream G4cout
G4bool IsValidCandidateForAngularRange(G4double top, G4double bottom, G4int nmbOfDivs=1) const
virtual ~CexmcProductionModel()
const CexmcAngularRangeList & GetAngularRanges(void) const
virtual void FermiMotionStatusChangeHook(void)
void ApplyFermiMotion(G4bool on, G4bool fromMessenger=true)
G4ParticleDefinition * nucleusParticle