1670 TRandom* old_gRandom = gRandom;
1681 double flxweight =
fFluxD->Weight();
1689 bool viableInteraction =
true;
1695 genie::flux::GFluxExposureI* fexposure =
1696 dynamic_cast<genie::flux::GFluxExposureI*
>(
fFluxD);
1705 if ( ! viableInteraction )
return false;
1712 double timeoffset = 0;
1721 std::unordered_map<std::string, std::string> genConfig;
1723 if(
fFluxType.find(
"PowerSpectrum") != std::string::npos){
1739 if (
fFluxType.find(
"histogram") == 0 ) {
1748 std::vector<double> fluxes(6, 0.);
1766 else if (
fFluxType.find(
"mono") == 0 ||
1770 else if (
fFluxType.find(
"atmo_FLUKA") == 0 ||
1772 fFluxType.find(
"atmo_PowerSpectrum") == 0 ||
1784 TLorentzVector nuray_pos =
fFluxD->Position();
1785 TVector3 ray2vtx = nuray_pos.Vect() - vertex->Vect();
1786 flux.
fgenx = nuray_pos.X();
1787 flux.
fgeny = nuray_pos.Y();
1788 flux.
fgenz = nuray_pos.Z();
1791 genie::flux::GFluxBlender* blender =
1792 dynamic_cast<genie::flux::GFluxBlender*
>(
fFluxD2GMCJD);
1800 mf::LogInfo(
"GENIEHelper") <<
"vertex loc " << vertex->X() <<
"," 1801 << vertex->Y() <<
"," << vertex->Z() << std::endl
1802 <<
" flux ray start " << nuray_pos.X() <<
"," 1803 << nuray_pos.Y() <<
"," << nuray_pos.Z() << std::endl
1805 <<
" dk2ray = " << flux.
fdk2gen;
double E(const int i=0) const
static const int kNuTauBar
bool fUseHelperRndGen4GENIE
use fHelperRandom for gRandom during Sample()
const simb::MCNeutrino & GetNeutrino() const
std::string fTuneName
GENIE R-3 Tune name (defines model configuration)
void FillMCTruth(const genie::EventRecord *grec, double spillTime, simb::MCTruth &mctruth, const std::string &genieVersion="unknown", const std::string &genieTune="unknown", bool addGenieVtxTime=false, const std::unordered_map< std::string, std::string > genConfig={})
double fgen2vtx
distance from ray origin to event vtx
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
void FillMCFlux(genie::GFluxI *fdriver, simb::MCFlux &mcflux)
const simb::MCParticle & Nu() const
double fgenx
origin of ray from flux generator
simb::flux_code_ fFluxType
double fRandomTimeOffset
additional random time shift (ns) added to every particle time
double fGlobalTimeOffset
overall time shift (ns) added to every particle time
TGeoManager * fGeoManager
pointer to ROOT TGeoManager
std::vector< int > fGenFlavors
pdg codes for flavors to generate
evgb::EvtTimeShiftI * fTimeShifter
generator for time offset within a spill
double fdk2gen
distance from decay to ray origin
genie::GMCJDriver * fDriver
genie::EventRecord * fGenieEventRecord
last generated event
std::vector< TH1D * > fFluxHistograms
histograms for each nu species
Flux for positive horn focus.
int fGHepPrintLevel
GHepRecord::SetPrintLevel(), -1=no-print.
std::string fWorldVolume
name of the world volume in the ROOT geometry
decltype(auto) constexpr to_string(T &&obj)
ADL-aware version of std::to_string.
bool fForceApplyFlxWgt
apply GFluxI::Weight() before returning event
double fTotalExposure
pot used from flux ntuple
TRandom3 * fHelperRandom
random # generator for GENIEHelper
std::string fTopVolume
top volume in the ROOT geometry in which to generate events
bool fUseBlenderDist
get neutrino's travel distance from blender (default: true)
static const int kNuMuBar
genie::GFluxI * fFluxD
real flux driver
void SetFluxGen(double nue, double nuebar, double numu, double numubar, double nutau, double nutaubar)
bool fAddGenieVtxTime
incorporate time from flux window to interaction point and (possibily) proton-on-target to flux windo...
double fAtmoSpectralIndex
atmo: Spectral index for power spectrum generation
double fSpillExposure
total exposure (i.e. pot) for this spill
unsigned int fDebugFlags
set bits to enable debug info
virtual double TimeOffset()=0
void FillGTruth(const genie::EventRecord *grec, simb::GTruth >ruth)
int fSpillEvents
total events for this spill
genie::GFluxI * fFluxD2GMCJD
flux driver passed to genie GMCJDriver, might be GFluxBlender