51 name( name ), fermiMotionIsOn( fermiMotionIsOn ), incidentParticle( NULL ),
52 nucleusParticle( NULL ), outputParticle( NULL ),
53 nucleusOutputParticle( NULL ), messenger( NULL )
69 if ( ! IsValidCandidateForAngularRange( top, bottom, nmbOfDivs ) )
72 if ( ! IsGoodCandidateForAngularRange( top, bottom ) )
77 for (
int i( 0 ); i < nmbOfDivs; ++i )
79 G4double binWidth( ( top - bottom ) / nmbOfDivs );
81 curBottom -= binWidth;
85 CexmcHistoManager::Instance()->SetupARHistos(
angularRanges );
93 if ( ! IsValidCandidateForAngularRange( top, bottom, nmbOfDivs ) )
96 if ( ! IsGoodCandidateForAngularRange( top, bottom ) )
101 for (
int i( 0 ); i < nmbOfDivs; ++i )
103 G4double binWidth( ( top - bottom ) / nmbOfDivs );
105 curBottom -= binWidth;
108 #ifdef CEXMC_USE_ROOT
109 CexmcHistoManager::Instance()->AddARHistos( aRange );
119 for ( CexmcAngularRangeList::iterator k(
angularRanges.begin() );
122 if ( opCosThetaSCM <= k->top && opCosThetaSCM > k->bottom )
124 k->top, k->bottom, k->index ) );
134 G4bool CexmcProductionModel::IsGoodCandidateForAngularRange(
G4double top,
140 if ( ! runManager->ProjectIsRead() )
146 for ( CexmcAngularRangeList::iterator k( normalizedARanges.begin() );
147 k != normalizedARanges.end(); ++k )
149 if ( top <= k->top && bottom >= k->bottom )
void SetAngularRange(G4double top, G4double bottom, G4int nmbOfDivs)
void AddAngularRange(G4double top, G4double bottom, G4int nmbOfDivs)
void SetTriggeredAngularRanges(G4double opCosThetaSCM)
CexmcProductionModel(const G4String &name="unspecified", G4bool fermiMotionIsOn=false)
CexmcAngularRangeList angularRangesRef
void GetNormalizedAngularRange(const CexmcAngularRangeList &src, CexmcAngularRangeList &dst)
virtual void FermiMotionStatusChangeHook(void)
virtual ~CexmcProductionModel()
static G4RunManager * GetRunManager()
CexmcAngularRangeList angularRanges
CexmcAngularRangeList triggeredAngularRanges
std::vector< CexmcAngularRange > CexmcAngularRangeList