GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Private Member Functions | Private Attributes | List of all members
genie::flux::GFluxBlender Class Reference

GENIE GFluxI adapter to allow flavor modification. More...

#include <GFluxBlender.h>

Inheritance diagram for genie::flux::GFluxBlender:
Inheritance graph
[legend]
Collaboration diagram for genie::flux::GFluxBlender:
Collaboration graph
[legend]

Public Member Functions

 GFluxBlender ()
 
 ~GFluxBlender ()
 
const PDGCodeListFluxParticles (void)
 declare list of flux neutrinos that can be generated (for init. purposes) More...
 
double MaxEnergy (void)
 declare the max flux neutrino energy that can be generated (for init. purposes) More...
 
bool GenerateNext (void)
 generate the next flux neutrino (return false in err) More...
 
int PdgCode (void)
 returns the flux neutrino pdg code More...
 
double Weight (void)
 returns the flux neutrino weight (if any) More...
 
const TLorentzVector & Momentum (void)
 returns the flux neutrino 4-momentum More...
 
const TLorentzVector & Position (void)
 returns the flux neutrino 4-position (note: expect SI rather than physical units) More...
 
bool End (void)
 true if no more flux nu's can be thrown (eg reaching end of beam sim ntuples) More...
 
long int Index (void)
 returns corresponding index for current flux neutrino (e.g. for a flux ntuple returns the current entry number) More...
 
void Clear (Option_t *opt)
 reset state variables based on opt More...
 
void GenerateWeighted (bool gen_weighted)
 set whether to generate weighted or unweighted neutrinos More...
 
int PdgCodeGenerated (void)
 returns the flux neutrino original pdg code More...
 
double Energy (void)
 
double TravelDist (void)
 returns the distance used in the flavor mixing More...
 
void SetBaselineDist (double dist)
 
double GetBaselineDist (void)
 
GFluxIAdoptFluxGenerator (GFluxI *generator)
 return previous More...
 
GFlavorMixerIAdoptFlavorMixer (GFlavorMixerI *mixer)
 return previous More...
 
GFluxIGetFluxGenerator ()
 access, not ownership More...
 
GFlavorMixerIGetFlavorMixer ()
 access, not ownership More...
 
void PrintConfig (void)
 
void PrintState (bool verbose=true)
 
- Public Member Functions inherited from genie::GFluxI
virtual ~GFluxI ()
 

Private Member Functions

int ChooseFlavor (int pdg_init, double energy, double dist)
 

Private Attributes

GFluxIfRealGFluxI
 actual flux generator More...
 
GNuMIFluxfGNuMIFlux
 ref to avoid repeat dynamic_cast More...
 
GSimpleNtpFluxfGSimpleFlux
 ref to avoid repeat dynamic_cast More...
 
GFlavorMixerIfFlavorMixer
 flavor modification schema More...
 
PDGCodeList fPDGListGenerator
 possible flavors from generator More...
 
PDGCodeList fPDGListMixed
 possible flavors after mixing More...
 
size_t fNPDGOut
 

of possible output flavors

More...
 
double fBaselineDist
 travel dist for mixing (if flux doesn't support GetDecayDist()) More...
 
double fEnergy
 current neutrino's energy More...
 
double fDistance
 current neutrino's travel distance More...
 
int fPdgCGenerated
 current neutrino's original flavor More...
 
int fPdgCMixed
 current neutrino's new flavor More...
 
std::vector< double > fProb
 individual transition probs More...
 
std::vector< double > fSumProb
 cummulative probability More...
 
double fRndm
 random # used to make choice More...
 

Additional Inherited Members

- Protected Member Functions inherited from genie::GFluxI
 GFluxI ()
 

Detailed Description

GENIE GFluxI adapter to allow flavor modification.

     This adapter intervenes between the GENIE GMCJDriver class
     (MC job driver) and a concrete GFluxI flux generator, to
     allow user modification of the neutrino flavor.  This
     modification could be a fixed "swap" or an energy and/or
     distance dependent (standard oscillations) one.

     Because the GMCJDriver only queries the flavor of a
     generated neutrino once, prior to propagation through
     the geometry, this approach is _not_ appropriate with
     use of an oscillatory model in situations where the flavor
     might change significantly over the scale of the geometry.
     In such cases one would have to generate with a fixed flavor
     (energy/distance independent) swap and reweight after the fact.

     Do not use this as a means of selecting only certain flavor
     from flux generators that support other means (e.g. GNuMIFlux,
     GSimpleNtpFlux which have SetFluxParticles(PDGCodeList)) as
     those will be more efficient.
Author
Robert Hatcher <rhatcher fnal.gov> Fermi National Accelerator Laboratory
Created:
2010/12/22
License:
Copyright (c) 2003-2024, The GENIE Collaboration for the full text of the license visit http://copyright.genie-mc.org

Definition at line 52 of file GFluxBlender.h.

Constructor & Destructor Documentation

genie::flux::GFluxBlender::GFluxBlender ( )

Definition at line 32 of file GFluxBlender.cxx.

32  :
33  GFluxI(),
34  fRealGFluxI(0),
35  fGNuMIFlux(0),
36  fGSimpleFlux(0),
37  fFlavorMixer(0),
39  fPDGListMixed(),
40  fNPDGOut(0),
41  fBaselineDist(0),
42  fEnergy(0),
43  fDistance(0),
44  fPdgCGenerated(0),
45  fPdgCMixed(0)
46 { ; }
GSimpleNtpFlux * fGSimpleFlux
ref to avoid repeat dynamic_cast
Definition: GFluxBlender.h:108
double fEnergy
current neutrino&#39;s energy
Definition: GFluxBlender.h:118
double fDistance
current neutrino&#39;s travel distance
Definition: GFluxBlender.h:119
int fPdgCMixed
current neutrino&#39;s new flavor
Definition: GFluxBlender.h:121
GFluxI * fRealGFluxI
actual flux generator
Definition: GFluxBlender.h:106
int fPdgCGenerated
current neutrino&#39;s original flavor
Definition: GFluxBlender.h:120
PDGCodeList fPDGListMixed
possible flavors after mixing
Definition: GFluxBlender.h:113
double fBaselineDist
travel dist for mixing (if flux doesn&#39;t support GetDecayDist())
Definition: GFluxBlender.h:116
size_t fNPDGOut
of possible output flavors
Definition: GFluxBlender.h:114
GNuMIFlux * fGNuMIFlux
ref to avoid repeat dynamic_cast
Definition: GFluxBlender.h:107
GFlavorMixerI * fFlavorMixer
flavor modification schema
Definition: GFluxBlender.h:110
PDGCodeList fPDGListGenerator
possible flavors from generator
Definition: GFluxBlender.h:112
genie::flux::GFluxBlender::~GFluxBlender ( )

Definition at line 48 of file GFluxBlender.cxx.

References fFlavorMixer, and fRealGFluxI.

49 {
50  if ( fRealGFluxI ) { delete fRealGFluxI; fRealGFluxI = 0; }
51  if ( fFlavorMixer ) { delete fFlavorMixer; fFlavorMixer = 0; }
52 }
GFluxI * fRealGFluxI
actual flux generator
Definition: GFluxBlender.h:106
GFlavorMixerI * fFlavorMixer
flavor modification schema
Definition: GFluxBlender.h:110

Member Function Documentation

GFlavorMixerI * genie::flux::GFluxBlender::AdoptFlavorMixer ( GFlavorMixerI mixer)

return previous

Definition at line 148 of file GFluxBlender.cxx.

References fFlavorMixer.

149 {
150  GFlavorMixerI* oldmix = fFlavorMixer;
151  fFlavorMixer = mixer;
152  return oldmix;
153 }
GFlavorMixerI * fFlavorMixer
flavor modification schema
Definition: GFluxBlender.h:110
GFluxI * genie::flux::GFluxBlender::AdoptFluxGenerator ( GFluxI generator)

return previous

Definition at line 134 of file GFluxBlender.cxx.

References fGNuMIFlux, fGSimpleFlux, FluxParticles(), fRealGFluxI, and generator().

135 {
136  GFluxI* oldgen = fRealGFluxI;
138  // avoid re-casting
139  fGNuMIFlux = dynamic_cast<GNuMIFlux*>(fRealGFluxI);
140  fGSimpleFlux = dynamic_cast<GSimpleNtpFlux*>(fRealGFluxI);
141  // force evaluation of particle lists
142  this->FluxParticles();
143 
144  return oldgen;
145 }
GSimpleNtpFlux * fGSimpleFlux
ref to avoid repeat dynamic_cast
Definition: GFluxBlender.h:108
GFluxI * fRealGFluxI
actual flux generator
Definition: GFluxBlender.h:106
TRandom3 generator(0)
GNuMIFlux * fGNuMIFlux
ref to avoid repeat dynamic_cast
Definition: GFluxBlender.h:107
const PDGCodeList & FluxParticles(void)
declare list of flux neutrinos that can be generated (for init. purposes)
int genie::flux::GFluxBlender::ChooseFlavor ( int  pdg_init,
double  energy,
double  dist 
)
private

Definition at line 156 of file GFluxBlender.cxx.

References fFlavorMixer, fNPDGOut, fPDGListMixed, fProb, fRndm, fSumProb, genie::RandomGen::Instance(), genie::flux::GFlavorMixerI::Probability(), and genie::RandomGen::RndFlux().

Referenced by GenerateNext().

157 {
158  // choose a new flavor
159  bool isset = false;
160  int pdg_out = 0;
161  double sumprob = 0;
162 
163  fRndm = RandomGen::Instance()->RndFlux().Rndm();
164  for (size_t indx = 0; indx < fNPDGOut; ++indx ) {
165  int pdg_test = fPDGListMixed[indx];
166  double prob = fFlavorMixer->Probability(pdg_init,pdg_test,energy,dist);
167  fProb[indx] = prob;
168  sumprob += fProb[indx];
169  fSumProb[indx] = sumprob;
170  if ( ! isset && fRndm < sumprob ) {
171  isset = true;
172  pdg_out = pdg_test;
173  }
174  }
175 
176  return pdg_out;
177 }
static RandomGen * Instance()
Access instance.
Definition: RandomGen.cxx:71
PDGCodeList fPDGListMixed
possible flavors after mixing
Definition: GFluxBlender.h:113
std::vector< double > fProb
individual transition probs
Definition: GFluxBlender.h:123
virtual double Probability(int pdg_initial, int pdg_final, double energy, double dist)=0
double fRndm
random # used to make choice
Definition: GFluxBlender.h:125
size_t fNPDGOut
of possible output flavors
Definition: GFluxBlender.h:114
GFlavorMixerI * fFlavorMixer
flavor modification schema
Definition: GFluxBlender.h:110
TRandom3 & RndFlux(void) const
rnd number generator used by flux drivers
Definition: RandomGen.h:71
std::vector< double > fSumProb
cummulative probability
Definition: GFluxBlender.h:124
void genie::flux::GFluxBlender::Clear ( Option_t *  opt)
virtual

reset state variables based on opt

Implements genie::GFluxI.

Definition at line 111 of file GFluxBlender.cxx.

References genie::GFluxI::Clear(), and fRealGFluxI.

112 {
113 // Clear method needed to conform to GFluxI interface
114 //
115  fRealGFluxI->Clear(opt);
116 }
GFluxI * fRealGFluxI
actual flux generator
Definition: GFluxBlender.h:106
virtual void Clear(Option_t *opt)=0
reset state variables based on opt
bool genie::flux::GFluxBlender::End ( void  )
inlinevirtual

true if no more flux nu's can be thrown (eg reaching end of beam sim ntuples)

Implements genie::GFluxI.

Definition at line 72 of file GFluxBlender.h.

References genie::GFluxI::End(), and fRealGFluxI.

double genie::flux::GFluxBlender::Energy ( void  )
inline

Definition at line 81 of file GFluxBlender.h.

References fEnergy.

81 { return fEnergy; } //< returns the current neutrino's energy
double fEnergy
current neutrino&#39;s energy
Definition: GFluxBlender.h:118
const PDGCodeList & genie::flux::GFluxBlender::FluxParticles ( void  )
virtual

declare list of flux neutrinos that can be generated (for init. purposes)

Return (reference to) list of possible neutrinos after mixing. These are PDG code that might be interacted.

Implements genie::GFluxI.

Definition at line 55 of file GFluxBlender.cxx.

References fFlavorMixer, genie::GFluxI::FluxParticles(), fNPDGOut, fPDGListGenerator, fPDGListMixed, fProb, fRealGFluxI, fSumProb, genie::kPdgAntiNuE, genie::kPdgAntiNuMu, genie::kPdgAntiNuTau, genie::kPdgNuE, genie::kPdgNuMu, genie::kPdgNuTau, and genie::PDGCodeList::push_back().

Referenced by AdoptFluxGenerator().

56 {
57  /// Return (reference to) list of possible neutrinos *after* mixing.
58  /// These are PDG code that might be interacted.
59 
60  // this is only ever called by GMCJDriver::GetParticleLists()
61  // during GMCJDriver::Configure() which should happen just once
62  // so don't try to be too clever.
64 
65  // okay, really stupid at this time ...
66  fPDGListMixed.clear();
73 
74  // size the probability arrays to the same number of entries
75  fNPDGOut = fPDGListMixed.size();
76  fProb.resize(fNPDGOut);
77  fSumProb.resize(fNPDGOut);
78 
79  if ( ! fFlavorMixer ) return fRealGFluxI->FluxParticles();
80  else return fPDGListMixed;
81 }
const int kPdgNuE
Definition: PDGCodes.h:28
const int kPdgAntiNuE
Definition: PDGCodes.h:29
const int kPdgNuMu
Definition: PDGCodes.h:30
GFluxI * fRealGFluxI
actual flux generator
Definition: GFluxBlender.h:106
PDGCodeList fPDGListMixed
possible flavors after mixing
Definition: GFluxBlender.h:113
std::vector< double > fProb
individual transition probs
Definition: GFluxBlender.h:123
size_t fNPDGOut
of possible output flavors
Definition: GFluxBlender.h:114
const int kPdgAntiNuTau
Definition: PDGCodes.h:33
const int kPdgAntiNuMu
Definition: PDGCodes.h:31
virtual const PDGCodeList & FluxParticles(void)=0
declare list of flux neutrinos that can be generated (for init. purposes)
const int kPdgNuTau
Definition: PDGCodes.h:32
GFlavorMixerI * fFlavorMixer
flavor modification schema
Definition: GFluxBlender.h:110
std::vector< double > fSumProb
cummulative probability
Definition: GFluxBlender.h:124
void push_back(int pdg_code)
Definition: PDGCodeList.cxx:58
PDGCodeList fPDGListGenerator
possible flavors from generator
Definition: GFluxBlender.h:112
bool genie::flux::GFluxBlender::GenerateNext ( void  )
virtual

generate the next flux neutrino (return false in err)

Implements genie::GFluxI.

Definition at line 84 of file GFluxBlender.cxx.

References ChooseFlavor(), fBaselineDist, fDistance, fEnergy, fFlavorMixer, fGNuMIFlux, fGSimpleFlux, fPdgCGenerated, fPdgCMixed, fRealGFluxI, genie::GFluxI::GenerateNext(), genie::flux::GSimpleNtpFlux::GetDecayDist(), genie::flux::GNuMIFlux::GetDecayDist(), genie::GFluxI::Momentum(), and genie::GFluxI::PdgCode().

85 {
86 
87  bool gen1 = false;
88  while ( ! gen1 ) {
89  if ( ! fRealGFluxI->GenerateNext() ) return false;
90  // have a new entry
92  if ( ! fFlavorMixer ) {
93  // simple case when not configured with a mixing model
95  gen1 = true;
96  } else {
97  // now pick a new flavor
101  fEnergy = fRealGFluxI->Momentum().Energy();
103  // we may have to generate a new neutrino if it oscillates away
104  // don't pass non-particles to GENIE ... it won't like it
105  gen1 = ( fPdgCMixed != 0 );
106  }
107  }
108  return true;
109 }
GSimpleNtpFlux * fGSimpleFlux
ref to avoid repeat dynamic_cast
Definition: GFluxBlender.h:108
double fEnergy
current neutrino&#39;s energy
Definition: GFluxBlender.h:118
double fDistance
current neutrino&#39;s travel distance
Definition: GFluxBlender.h:119
int fPdgCMixed
current neutrino&#39;s new flavor
Definition: GFluxBlender.h:121
GFluxI * fRealGFluxI
actual flux generator
Definition: GFluxBlender.h:106
int fPdgCGenerated
current neutrino&#39;s original flavor
Definition: GFluxBlender.h:120
double fBaselineDist
travel dist for mixing (if flux doesn&#39;t support GetDecayDist())
Definition: GFluxBlender.h:116
GNuMIFlux * fGNuMIFlux
ref to avoid repeat dynamic_cast
Definition: GFluxBlender.h:107
virtual bool GenerateNext(void)=0
generate the next flux neutrino (return false in err)
double GetDecayDist() const
dist (user units) from dk to current pos
Definition: GNuMIFlux.cxx:395
int ChooseFlavor(int pdg_init, double energy, double dist)
virtual int PdgCode(void)=0
returns the flux neutrino pdg code
virtual const TLorentzVector & Momentum(void)=0
returns the flux neutrino 4-momentum
GFlavorMixerI * fFlavorMixer
flavor modification schema
Definition: GFluxBlender.h:110
double GetDecayDist() const
dist (user units) from dk to current pos
void genie::flux::GFluxBlender::GenerateWeighted ( bool  gen_weighted)
virtual

set whether to generate weighted or unweighted neutrinos

Implements genie::GFluxI.

Definition at line 125 of file GFluxBlender.cxx.

References LOG, and pERROR.

126 {
127 // Dummy implementation needed to conform to GFluxI interface
128 //
129  LOG("FluxBlender", pERROR) <<
130  "No GenerateWeighted(bool gen_weighted) method implemented for " <<
131  "gen_weighted: " << gen_weighted;
132 }
#define pERROR
Definition: Messenger.h:59
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
Definition: Messenger.h:96
double genie::flux::GFluxBlender::GetBaselineDist ( void  )
inline

Definition at line 90 of file GFluxBlender.h.

References fBaselineDist.

90 { return fBaselineDist; }
double fBaselineDist
travel dist for mixing (if flux doesn&#39;t support GetDecayDist())
Definition: GFluxBlender.h:116
GFlavorMixerI* genie::flux::GFluxBlender::GetFlavorMixer ( )
inline

access, not ownership

Definition at line 98 of file GFluxBlender.h.

References fFlavorMixer.

GFluxI* genie::flux::GFluxBlender::GetFluxGenerator ( )
inline

access, not ownership

Definition at line 97 of file GFluxBlender.h.

References fRealGFluxI.

long int genie::flux::GFluxBlender::Index ( void  )
virtual

returns corresponding index for current flux neutrino (e.g. for a flux ntuple returns the current entry number)

Implements genie::GFluxI.

Definition at line 118 of file GFluxBlender.cxx.

References fRealGFluxI, and genie::GFluxI::Index().

119 {
120 // Index method needed to conform to GFluxI interface
121 //
122  return fRealGFluxI->Index();
123 }
GFluxI * fRealGFluxI
actual flux generator
Definition: GFluxBlender.h:106
virtual long int Index(void)=0
returns corresponding index for current flux neutrino (e.g. for a flux ntuple returns the current ent...
double genie::flux::GFluxBlender::MaxEnergy ( void  )
inlinevirtual

declare the max flux neutrino energy that can be generated (for init. purposes)

Implements genie::GFluxI.

Definition at line 66 of file GFluxBlender.h.

References fRealGFluxI, and genie::GFluxI::MaxEnergy().

const TLorentzVector& genie::flux::GFluxBlender::Momentum ( void  )
inlinevirtual

returns the flux neutrino 4-momentum

Implements genie::GFluxI.

Definition at line 70 of file GFluxBlender.h.

References fRealGFluxI, and genie::GFluxI::Momentum().

int genie::flux::GFluxBlender::PdgCode ( void  )
inlinevirtual

returns the flux neutrino pdg code

Implements genie::GFluxI.

Definition at line 68 of file GFluxBlender.h.

References fPdgCMixed.

int genie::flux::GFluxBlender::PdgCodeGenerated ( void  )
inline

returns the flux neutrino original pdg code

Definition at line 80 of file GFluxBlender.h.

References fPdgCGenerated.

const TLorentzVector& genie::flux::GFluxBlender::Position ( void  )
inlinevirtual

returns the flux neutrino 4-position (note: expect SI rather than physical units)

Implements genie::GFluxI.

Definition at line 71 of file GFluxBlender.h.

References fRealGFluxI, and genie::GFluxI::Position().

void genie::flux::GFluxBlender::PrintConfig ( void  )

Definition at line 180 of file GFluxBlender.cxx.

References fBaselineDist, fFlavorMixer, fNPDGOut, fPDGListGenerator, fPDGListMixed, fRealGFluxI, LOG_BEGIN, LOG_END, and pINFO.

181 {
182  LOG_BEGIN("FluxBlender", pINFO) << "GFluxBlender::PrintConfig()" << LOG_END;
183  if ( fRealGFluxI ) {
184  LOG_BEGIN("FluxBlender", pINFO)
185  << " fRealGFluxI is a \""
186  << typeid(fRealGFluxI).name() << "\""
187  << LOG_END;
188  } else {
189  LOG_BEGIN("FluxBlender", pINFO)
190  << " fRealGFluxI is not initialized" << LOG_END;
191  }
192  if ( fFlavorMixer ) {
193  LOG_BEGIN("FluxBlender", pINFO)
194  << " fFlavorMixer is a \""
195  << typeid(fFlavorMixer).name() << "\""
196  << LOG_END;
197  } else {
198  LOG_BEGIN("FluxBlender", pINFO)
199  << " fFlavorMixer is not initialized" << LOG_END;
200  }
201  LOG_BEGIN("FluxBlender", pINFO)
202  << " BaselineDist " << fBaselineDist << LOG_END;
203  LOG_BEGIN("FluxBlender", pINFO)
204  << "PDG List from Generator" << fPDGListGenerator << LOG_END;
205  LOG_BEGIN("FluxBlender", pINFO)
206  << "PDG List after mixing (n=" << fNPDGOut << ")"
207  << fPDGListMixed << LOG_END;
208 
209 }
GFluxI * fRealGFluxI
actual flux generator
Definition: GFluxBlender.h:106
PDGCodeList fPDGListMixed
possible flavors after mixing
Definition: GFluxBlender.h:113
double fBaselineDist
travel dist for mixing (if flux doesn&#39;t support GetDecayDist())
Definition: GFluxBlender.h:116
size_t fNPDGOut
of possible output flavors
Definition: GFluxBlender.h:114
#define pINFO
Definition: Messenger.h:62
const char * name
GFlavorMixerI * fFlavorMixer
flavor modification schema
Definition: GFluxBlender.h:110
#define LOG_BEGIN(a, b)
PDGCodeList fPDGListGenerator
possible flavors from generator
Definition: GFluxBlender.h:112
#define LOG_END
void genie::flux::GFluxBlender::PrintState ( bool  verbose = true)

Definition at line 212 of file GFluxBlender.cxx.

References fDistance, fEnergy, fNPDGOut, fPdgCGenerated, fPdgCMixed, fPDGListMixed, fProb, fRndm, fSumProb, LOG_BEGIN, LOG_END, and pINFO.

213 {
214  LOG_BEGIN("FluxBlender", pINFO) << "GFluxBlender::PrintState()" << LOG_END;
215  LOG_BEGIN("FluxBlender", pINFO)
216  << " Flavor " << fPdgCGenerated
217  << " ==> " << fPdgCMixed
218  << " (E=" << fEnergy << ", dist=" << fDistance << ")" << LOG_END;
219  if ( verbose ) {
220  LOG_BEGIN("FluxBlender", pINFO) << " Rndm = " << fRndm << LOG_END;
221  for (size_t indx = 0; indx < fNPDGOut; ++indx ) {
222  LOG_BEGIN("FluxBlender", pINFO)
223  << " [" << indx << "] "
224  << std::setw(3) << fPdgCGenerated << " => "
225  << std::setw(3) << fPDGListMixed[indx]
226  << " p = " << std::setw(10) << fProb[indx]
227  << " sum_p = " << std::setw(10) << fSumProb[indx] << LOG_END;
228  }
229  }
230 }
double fEnergy
current neutrino&#39;s energy
Definition: GFluxBlender.h:118
double fDistance
current neutrino&#39;s travel distance
Definition: GFluxBlender.h:119
int fPdgCMixed
current neutrino&#39;s new flavor
Definition: GFluxBlender.h:121
int fPdgCGenerated
current neutrino&#39;s original flavor
Definition: GFluxBlender.h:120
PDGCodeList fPDGListMixed
possible flavors after mixing
Definition: GFluxBlender.h:113
std::vector< double > fProb
individual transition probs
Definition: GFluxBlender.h:123
double fRndm
random # used to make choice
Definition: GFluxBlender.h:125
size_t fNPDGOut
of possible output flavors
Definition: GFluxBlender.h:114
#define pINFO
Definition: Messenger.h:62
#define LOG_BEGIN(a, b)
std::vector< double > fSumProb
cummulative probability
Definition: GFluxBlender.h:124
#define LOG_END
void genie::flux::GFluxBlender::SetBaselineDist ( double  dist)
inline

Definition at line 89 of file GFluxBlender.h.

References fBaselineDist.

89 { fBaselineDist = dist; }
double fBaselineDist
travel dist for mixing (if flux doesn&#39;t support GetDecayDist())
Definition: GFluxBlender.h:116
double genie::flux::GFluxBlender::TravelDist ( void  )
inline

returns the distance used in the flavor mixing

Definition at line 82 of file GFluxBlender.h.

References fDistance.

double genie::flux::GFluxBlender::Weight ( void  )
inlinevirtual

returns the flux neutrino weight (if any)

Implements genie::GFluxI.

Definition at line 69 of file GFluxBlender.h.

References fRealGFluxI, and genie::GFluxI::Weight().

Member Data Documentation

double genie::flux::GFluxBlender::fBaselineDist
private

travel dist for mixing (if flux doesn't support GetDecayDist())

Definition at line 116 of file GFluxBlender.h.

Referenced by GenerateNext(), GetBaselineDist(), PrintConfig(), and SetBaselineDist().

double genie::flux::GFluxBlender::fDistance
private

current neutrino's travel distance

Definition at line 119 of file GFluxBlender.h.

Referenced by GenerateNext(), PrintState(), and TravelDist().

double genie::flux::GFluxBlender::fEnergy
private

current neutrino's energy

Definition at line 118 of file GFluxBlender.h.

Referenced by Energy(), GenerateNext(), and PrintState().

GFlavorMixerI* genie::flux::GFluxBlender::fFlavorMixer
private

flavor modification schema

Definition at line 110 of file GFluxBlender.h.

Referenced by AdoptFlavorMixer(), ChooseFlavor(), FluxParticles(), GenerateNext(), GetFlavorMixer(), PrintConfig(), and ~GFluxBlender().

GNuMIFlux* genie::flux::GFluxBlender::fGNuMIFlux
private

ref to avoid repeat dynamic_cast

Definition at line 107 of file GFluxBlender.h.

Referenced by AdoptFluxGenerator(), and GenerateNext().

GSimpleNtpFlux* genie::flux::GFluxBlender::fGSimpleFlux
private

ref to avoid repeat dynamic_cast

Definition at line 108 of file GFluxBlender.h.

Referenced by AdoptFluxGenerator(), and GenerateNext().

size_t genie::flux::GFluxBlender::fNPDGOut
private

of possible output flavors

Definition at line 114 of file GFluxBlender.h.

Referenced by ChooseFlavor(), FluxParticles(), PrintConfig(), and PrintState().

int genie::flux::GFluxBlender::fPdgCGenerated
private

current neutrino's original flavor

Definition at line 120 of file GFluxBlender.h.

Referenced by GenerateNext(), PdgCodeGenerated(), and PrintState().

int genie::flux::GFluxBlender::fPdgCMixed
private

current neutrino's new flavor

Definition at line 121 of file GFluxBlender.h.

Referenced by GenerateNext(), PdgCode(), and PrintState().

PDGCodeList genie::flux::GFluxBlender::fPDGListGenerator
private

possible flavors from generator

Definition at line 112 of file GFluxBlender.h.

Referenced by FluxParticles(), and PrintConfig().

PDGCodeList genie::flux::GFluxBlender::fPDGListMixed
private

possible flavors after mixing

Definition at line 113 of file GFluxBlender.h.

Referenced by ChooseFlavor(), FluxParticles(), PrintConfig(), and PrintState().

std::vector<double> genie::flux::GFluxBlender::fProb
private

individual transition probs

Definition at line 123 of file GFluxBlender.h.

Referenced by ChooseFlavor(), FluxParticles(), and PrintState().

GFluxI* genie::flux::GFluxBlender::fRealGFluxI
private
double genie::flux::GFluxBlender::fRndm
private

random # used to make choice

Definition at line 125 of file GFluxBlender.h.

Referenced by ChooseFlavor(), and PrintState().

std::vector<double> genie::flux::GFluxBlender::fSumProb
private

cummulative probability

Definition at line 124 of file GFluxBlender.h.

Referenced by ChooseFlavor(), FluxParticles(), and PrintState().


The documentation for this class was generated from the following files: