Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
gibuu::GiBUURegen Class Reference
Inheritance diagram for gibuu::GiBUURegen:
art::EDProducer art::ProducerBase art::Consumer art::EngineCreator art::ProductRegistryHelper

Classes

struct  Key
 

Public Types

using Parameters = art::EDProducer::Table< GiBUURegenParams >
 
using ModuleType = EDProducer
 
using WorkerType = WorkerT< EDProducer >
 
template<typename UserConfig , typename KeysToIgnore = void>
using Table = ProducerBase::Table< UserConfig, KeysToIgnore >
 

Public Member Functions

 GiBUURegen (const Parameters &params)
 
virtual ~GiBUURegen ()
 
void beginJob ()
 
void produce (art::Event &evt)
 
void endSubRun (art::SubRun &sr)
 
template<typename PROD , BranchType B = InEvent>
ProductID getProductID (std::string const &instanceName={}) const
 
template<typename PROD , BranchType B>
ProductID getProductID (ModuleDescription const &moduleDescription, std::string const &instanceName) const
 
bool modifiesEvent () const
 
template<typename T , BranchType = InEvent>
ProductToken< Tconsumes (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ProductToken< Tconsumes (InputTag const &it)
 
template<typename T , BranchType = InEvent>
void consumesMany ()
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > consumesView (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ViewToken< TconsumesView (InputTag const &it)
 
template<typename T , BranchType = InEvent>
ProductToken< TmayConsume (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ProductToken< TmayConsume (InputTag const &it)
 
template<typename T , BranchType = InEvent>
void mayConsumeMany ()
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > mayConsumeView (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ViewToken< TmayConsumeView (InputTag const &it)
 
base_engine_tcreateEngine (seed_t seed)
 
base_engine_tcreateEngine (seed_t seed, std::string const &kind_of_engine_to_make)
 
base_engine_tcreateEngine (seed_t seed, std::string const &kind_of_engine_to_make, label_t const &engine_label)
 
seed_t get_seed_value (fhicl::ParameterSet const &pset, char const key[]="seed", seed_t const implicit_seed=-1)
 

Static Public Member Functions

static cet::exempt_ptr< Consumernon_module_context ()
 

Protected Member Functions

std::string ExpandLibraryPath () const
 
void LoadGiBUURecords ()
 
void LoadGenieXSecs ()
 
void LoadGiBUUCorrs ()
 
simb::MCTruth GetEvent (const simb::MCTruth &genieTruth, int &trackId) const
 
Key GetKey (const simb::MCTruth &genieTruth) const
 
const IRecordListGetRecordList (const simb::MCTruth &genieTruth) const
 
std::vector< TVector3 > Basis (TVector3 z) const
 
void Kinematics (const TLorentzVector &nu, const TLorentzVector &lep, double &W, double &x, double &y, double &Qsq) const
 
double GetGenieXSec (const simb::MCNeutrino &mcn) const
 
simb::MCTruth CopyGenieEvent (const simb::MCTruth &genieTruth, int &trackId) const
 
CurrentProcessingContext const * currentContext () const
 
void validateConsumedProduct (BranchType const bt, ProductInfo const &pi)
 
void prepareForJob (fhicl::ParameterSet const &pset)
 
void showMissingConsumes () const
 

Protected Attributes

GiBUURegenParams fParams
 
const art::ProductToken< sumdata::SpillDatafSpillToken
 
const art::ProductToken< std::vector< simb::MCTruth > > fTruthToken
 
const art::ProductToken< sumdata::POTSumfPOTSumToken
 
int fNGiBUU
 
int fNGENIE
 
std::map< Key, const IRecordList * > fRecords
 
std::map< Key, TGraph > fGenieXSec
 
std::map< Key, TH1 * > fGiBUUCorr
 

Detailed Description

Definition at line 123 of file GiBUURegen_module.cc.

Member Typedef Documentation

using art::EDProducer::ModuleType = EDProducer
inherited

Definition at line 34 of file EDProducer.h.

Definition at line 127 of file GiBUURegen_module.cc.

template<typename UserConfig , typename KeysToIgnore = void>
using art::EDProducer::Table = ProducerBase::Table<UserConfig, KeysToIgnore>
inherited

Definition at line 43 of file EDProducer.h.

using art::EDProducer::WorkerType = WorkerT<EDProducer>
inherited

Definition at line 35 of file EDProducer.h.

Constructor & Destructor Documentation

gibuu::GiBUURegen::GiBUURegen ( const Parameters params)
explicit

Definition at line 187 of file GiBUURegen_module.cc.

References ana::assert(), om::cout, allTimeWatchdog::endl, ExpandLibraryPath(), fParams, cet::getenv(), and string.

188  : fParams(params()),
189  fSpillToken(consumes<sumdata::SpillData>(fParams.generatorLabel())),
190  fTruthToken(consumes<std::vector<simb::MCTruth>>(fParams.generatorLabel())),
191  fPOTSumToken(consumes<sumdata::POTSum, art::InSubRun>(fParams.generatorLabel())),
192  fNGiBUU(0), fNGENIE(0)
193  {
194  produces<std::vector<simb::MCTruth>>();
195  // Associate every truth with the flux it came from
196  produces<art::Assns<simb::MCTruth, simb::MCFlux>>();
197 
198  if(fParams.copyMCFlux()){
199  produces<std::vector<simb::MCFlux>>();
200  }
201  if(fParams.copyGTruth()){
202  produces<std::vector<simb::GTruth>>();
203  produces<art::Assns<simb::MCTruth, simb::GTruth>>();
204  }
205  if(fParams.copyBSim()){
206  produces<std::vector<bsim::Dk2Nu>>();
207  produces<std::vector<bsim::NuChoice>>();
208 #ifdef PUT_DK2NU_ASSN
209  produces<art::Assns<simb::MCTruth, bsim::Dk2Nu>>();
210  produces<art::Assns<simb::MCTruth, bsim::NuChoice>>();
211 #endif
212  }
213 
214  produces<sumdata::SpillData>();
215  produces<sumdata::POTSum, art::InSubRun>();
216 
217  assert(fParams.boundingBoxLo().size() == fParams.boundingBoxHi().size() &&
218  (fParams.boundingBoxLo.size() == 0 ||
219  fParams.boundingBoxLo.size() == 3));
220 
221  const bool onGrid = (getenv("_CONDOR_SCRATCH_DIR") != 0);
222  const std::string libPath = ExpandLibraryPath();
223 
224  // On the grid, absolute path, and it's not to CVMFS = likely bluearc
225  if(onGrid && libPath.find("/") == 0 && libPath.find("/cvmfs/") != 0){
226  std::cout << "Refusing to run on grid with GiBUURegen's LibraryPath set to '"
227  << libPath
228  << "' which is presumably bluearc. Use CVMFS version or arrange your job to copy the files locally." << std::endl;
229  abort();
230  }
231  }
GiBUURegenParams fParams
const art::ProductToken< std::vector< simb::MCTruth > > fTruthToken
std::string ExpandLibraryPath() const
std::string getenv(std::string const &name)
OStream cout
Definition: OStream.cxx:6
const art::ProductToken< sumdata::POTSum > fPOTSumToken
assert(nhit_max >=nhit_nbins)
ProductToken< T > consumes(InputTag const &)
const art::ProductToken< sumdata::SpillData > fSpillToken
enum BeamMode string
gibuu::GiBUURegen::~GiBUURegen ( )
virtual

Definition at line 234 of file GiBUURegen_module.cc.

References om::cout, allTimeWatchdog::endl, fNGENIE, fNGiBUU, fRecords, and it.

235  {
236  if(fNGENIE > 0){
237  std::cout << "GiBUURegen: " << (100*fNGENIE) / (fNGiBUU+fNGENIE)
238  << "% of generated events copied from GENIE" << std::endl;
239  }
240 
241  for(auto it: fRecords) delete it.second;
242  }
set< int >::iterator it
std::map< Key, const IRecordList * > fRecords
OStream cout
Definition: OStream.cxx:6

Member Function Documentation

std::vector< TVector3 > gibuu::GiBUURegen::Basis ( TVector3  z) const
protected

Definition at line 550 of file GiBUURegen_module.cc.

References a, std::cos(), M_PI, std::sin(), submit_syst::x, and submit_syst::y.

Referenced by GetEvent().

551  {
552  const TVector3 up(0, 1, 0);
553  const TVector3 x = up.Cross(z).Unit(); // Perpendicular to neutrino and up
554  const TVector3 y = x.Cross(z).Unit(); // Defines the third axis
555 
556  // Let's rotate around the neutrino axis to make reuse less obvious
557  const double a = gRandom->Uniform(0, 2*M_PI);
558 
559  const TVector3 xp = cos(a) * x + sin(a) * y;
560  const TVector3 yp = -sin(a) * x + cos(a) * y;
561  const TVector3 zp = z.Unit();
562 
563  return {xp, yp, zp};
564  }
#define M_PI
Definition: SbMath.h:34
const double a
z
Definition: test.py:28
T sin(T number)
Definition: d0nt_math.hpp:132
T cos(T number)
Definition: d0nt_math.hpp:78
void gibuu::GiBUURegen::beginJob ( )
virtual

Reimplemented from art::EDProducer.

Definition at line 278 of file GiBUURegen_module.cc.

References LoadGenieXSecs(), LoadGiBUUCorrs(), and LoadGiBUURecords().

279  {
280  LoadGenieXSecs();
281  LoadGiBUUCorrs();
283  }
template<typename T , BranchType = InEvent>
ProductToken<T> art::Consumer::consumes ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ProductToken<T> art::Consumer::consumes ( InputTag const &  it)
inherited

Definition at line 146 of file Consumer.h.

References art::InputTag::instance(), PandAna.reco_validation.prod5_pid_validation::invalid, art::InputTag::label(), art::InputTag::process(), and T.

147 {
148  if (!moduleContext_)
149  return ProductToken<T>::invalid();
150 
151  consumables_[BT].emplace_back(ConsumableType::Product,
152  TypeID{typeid(T)},
153  it.label(),
154  it.instance(),
155  it.process());
156  return ProductToken<T>{it};
157 }
set< int >::iterator it
static ProductToken< T > invalid()
Definition: ProductToken.h:47
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
template<typename T , art::BranchType BT>
void art::Consumer::consumesMany ( )
inherited

Definition at line 161 of file Consumer.h.

References T.

162 {
163  if (!moduleContext_)
164  return;
165 
166  consumables_[BT].emplace_back(ConsumableType::Many, TypeID{typeid(T)});
167 }
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
template<typename Element , BranchType = InEvent>
ViewToken<Element> art::Consumer::consumesView ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ViewToken<T> art::Consumer::consumesView ( InputTag const &  it)
inherited

Definition at line 171 of file Consumer.h.

References art::InputTag::instance(), PandAna.reco_validation.prod5_pid_validation::invalid, art::InputTag::label(), art::InputTag::process(), and T.

172 {
173  if (!moduleContext_)
174  return ViewToken<T>::invalid();
175 
176  consumables_[BT].emplace_back(ConsumableType::ViewElement,
177  TypeID{typeid(T)},
178  it.label(),
179  it.instance(),
180  it.process());
181  return ViewToken<T>{it};
182 }
set< int >::iterator it
static ViewToken< Element > invalid()
Definition: ProductToken.h:75
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
simb::MCTruth gibuu::GiBUURegen::CopyGenieEvent ( const simb::MCTruth genieTruth,
int trackId 
) const
protected

Definition at line 595 of file GiBUURegen_module.cc.

References abs(), simb::MCTruth::Add(), simb::MCParticle::AddTrajectoryPoint(), simb::MCNeutrino::CCNC(), simb::MCTruth::GetNeutrino(), simb::MCTruth::GetParticle(), simb::MCNeutrino::HitNuc(), simb::MCNeutrino::HitQuark(), MECModelEnuComparisons::i, simb::MCNeutrino::InteractionType(), simb::kBeamNeutrino, simb::MCParticle::Mass(), simb::MCNeutrino::Mode(), simb::MCParticle::Momentum(), simb::MCParticle::Mother(), simb::MCTruth::NParticles(), simb::MCParticle::PdgCode(), simb::MCParticle::Position(), simb::MCParticle::Process(), simb::MCNeutrino::QSqr(), runNovaSAM::ret, simb::MCTruth::SetNeutrino(), simb::MCTruth::SetOrigin(), simb::MCParticle::StatusCode(), simb::MCNeutrino::Target(), simb::MCNeutrino::W(), simb::MCNeutrino::X(), and simb::MCNeutrino::Y().

Referenced by GetEvent().

597  {
598  // Have to do this in order to renumber the trackIDs properly
599 
602 
603  const int nuTrackId = trackId; // neutrino is always first
604 
605  for(int i = 0; i < genieTruth.NParticles(); ++i){
606  const simb::MCParticle& p = genieTruth.GetParticle(i);
607 
608  simb::MCParticle p_out(trackId++, p.PdgCode(), p.Process(),
609  (p.Mother() == -1) ? -1 : nuTrackId,
610  p.Mass(), p.StatusCode());
611  p_out.AddTrajectoryPoint(p.Position(), p.Momentum());
612 
613  if(abs(p.PdgCode()) == 12 ||
614  abs(p.PdgCode()) == 14 ||
615  abs(p.PdgCode()) == 16){
616  // Stick the event weight on the neutrino
617  p_out.SetWeight(1);
618  }
619 
620  ret.Add(p_out);
621  } // end for i
622 
623  const simb::MCNeutrino& mcn = genieTruth.GetNeutrino();
624 
625  ret.SetNeutrino(mcn.CCNC(), mcn.Mode(), mcn.InteractionType(),
626  mcn.Target(), mcn.HitNuc(), mcn.HitQuark(),
627  mcn.W(), mcn.X(), mcn.Y(), mcn.QSqr());
628 
629  return ret;
630  }
const TLorentzVector & Position(const int i=0) const
Definition: MCParticle.h:218
int PdgCode() const
Definition: MCParticle.h:211
int CCNC() const
Definition: MCNeutrino.h:148
double QSqr() const
Definition: MCNeutrino.h:157
const simb::MCNeutrino & GetNeutrino() const
Definition: MCTruth.h:76
void AddTrajectoryPoint(TLorentzVector const &position, TLorentzVector const &momentum)
Definition: MCParticle.h:256
int HitQuark() const
Definition: MCNeutrino.h:153
void SetOrigin(simb::Origin_t origin)
Definition: MCTruth.h:80
int Mother() const
Definition: MCParticle.h:212
const char * p
Definition: xmltok.h:285
double Mass() const
Definition: MCParticle.h:238
int HitNuc() const
Definition: MCNeutrino.h:152
void abs(TH1 *hist)
int StatusCode() const
Definition: MCParticle.h:210
int NParticles() const
Definition: MCTruth.h:74
void SetNeutrino(int CCNC, int mode, int interactionType, int target, int nucleon, int quark, double w, double x, double y, double qsqr)
Definition: MCTruth.cxx:30
std::string Process() const
Definition: MCParticle.h:214
void Add(simb::MCParticle &part)
Definition: MCTruth.h:79
int InteractionType() const
Definition: MCNeutrino.h:150
double W() const
Definition: MCNeutrino.h:154
double Y() const
Definition: MCNeutrino.h:156
double X() const
Definition: MCNeutrino.h:155
const simb::MCParticle & GetParticle(int i) const
Definition: MCTruth.h:75
int Target() const
Definition: MCNeutrino.h:151
const TLorentzVector & Momentum(const int i=0) const
Definition: MCParticle.h:219
Event generator information.
Definition: MCTruth.h:32
Event generator information.
Definition: MCNeutrino.h:18
int Mode() const
Definition: MCNeutrino.h:149
Beam neutrinos.
Definition: MCTruth.h:23
base_engine_t& art::EngineCreator::createEngine ( seed_t  seed)
inherited
base_engine_t& art::EngineCreator::createEngine ( seed_t  seed,
std::string const &  kind_of_engine_to_make 
)
inherited
base_engine_t& art::EngineCreator::createEngine ( seed_t  seed,
std::string const &  kind_of_engine_to_make,
label_t const &  engine_label 
)
inherited
CurrentProcessingContext const* art::EDProducer::currentContext ( ) const
protectedinherited
void gibuu::GiBUURegen::endSubRun ( art::SubRun sr)
virtual

Reimplemented from art::EDProducer.

Definition at line 498 of file GiBUURegen_module.cc.

References fPOTSumToken, art::DataViewImpl::getByToken(), and art::SubRun::put().

499  {
501  sr.getByToken(fPOTSumToken, potsum);
502  sr.put(std::make_unique<sumdata::POTSum>(*potsum));
503  }
const art::ProductToken< sumdata::POTSum > fPOTSumToken
ProductID put(std::unique_ptr< PROD > &&)
bool getByToken(ProductToken< PROD > const &token, Handle< PROD > &result) const
Definition: DataViewImpl.h:387
std::string gibuu::GiBUURegen::ExpandLibraryPath ( ) const
protected

Definition at line 245 of file GiBUURegen_module.cc.

References om::cerr, allTimeWatchdog::endl, fParams, runNovaSAM::ret, fabricate::status, and string.

Referenced by GiBUURegen(), LoadGiBUUCorrs(), and LoadGiBUURecords().

246  {
247  wordexp_t p;
248  const int status = wordexp(fParams.libraryPath().c_str(), &p, WRDE_SHOWERR | WRDE_UNDEF);
249  if(status != 0){
250  std::cerr << "LibraryPath string '" << fParams.libraryPath()
251  << "' returned error " << status << " from wordexp()."
252  << std::endl;
253  abort();
254  }
255 
256  if(p.we_wordc == 0){
257  std::cerr << "LibraryPath string '" << fParams.libraryPath()
258  << "' didn't expand to anything."
259  << std::endl;
260  abort();
261  }
262 
263  if(p.we_wordc > 1){
264  std::cerr << "LibraryPath string '" << fParams.libraryPath()
265  << "' expanded to " << p.we_wordc << " locations."
266  << std::endl;
267  abort();
268  }
269 
270  const std::string ret = p.we_wordv[0];
271 
272  wordfree(&p);
273 
274  return ret;
275  }
GiBUURegenParams fParams
int status
Definition: fabricate.py:1613
const char * p
Definition: xmltok.h:285
OStream cerr
Definition: OStream.cxx:7
enum BeamMode string
seed_t art::EngineCreator::get_seed_value ( fhicl::ParameterSet const &  pset,
char const  key[] = "seed",
seed_t const  implicit_seed = -1 
)
inherited
simb::MCTruth gibuu::GiBUURegen::GetEvent ( const simb::MCTruth genieTruth,
int trackId 
) const
protected

Definition at line 633 of file GiBUURegen_module.cc.

References abs(), simb::MCTruth::Add(), simb::MCParticle::AddTrajectoryPoint(), Basis(), simb::MCNeutrino::CCNC(), CopyGenieEvent(), om::cout, DEFINE_ART_MODULE(), gibuu::Particle::E, simb::MCParticle::E(), allTimeWatchdog::endl, fGiBUUCorr, fNGENIE, fNGiBUU, GetGenieXSec(), GetKey(), simb::MCTruth::GetNeutrino(), simb::MCTruth::GetParticle(), gibuu::IRecordList::GetRecord(), GetRecordList(), MECModelEnuComparisons::i, simb::kBeamNeutrino, Kinematics(), simb::kUnknownInteraction, simb::MCParticle::Mass(), simb::MCParticle::Momentum(), simb::MCParticle::Mother(), simb::MCTruth::NParticles(), simb::MCNeutrino::Nu(), part, gibuu::Record::parts, gibuu::Particle::pdg, simb::MCParticle::PdgCode(), simb::MCParticle::Position(), simb::MCParticle::Process(), gibuu::Record::prod_id, gibuu::Particle::px, gibuu::Particle::py, gibuu::Particle::pz, rec, runNovaSAM::ret, simb::MCTruth::SetNeutrino(), simb::MCTruth::SetOrigin(), simb::MCParticle::StatusCode(), simb::MCNeutrino::Target(), W, gibuu::Record::weight, submit_syst::x, and submit_syst::y.

Referenced by produce().

635  {
636  const simb::MCNeutrino& mcn = genieTruth.GetNeutrino();
637  const simb::MCParticle& nu = mcn.Nu();
638 
639  const IRecordList* recs = GetRecordList(genieTruth);
640  if(!recs){
641  // The reason has already been printed
642  ++fNGENIE;
643  return CopyGenieEvent(genieTruth, trackId);
644  }
645 
646  const Record* rec = recs->GetRecord(nu.E());
647 
648  if(!rec){
649  std::cout << "GiBUURegen: No match for energy " << nu.E() << " GeV? "
650  << "Copying GENIE event." << std::endl;
651  ++fNGENIE;
652  return CopyGenieEvent(genieTruth, trackId);
653  }
654 
655  const double genie_xsec = GetGenieXSec(mcn);
656  const int tgtA = (mcn.Target()%1000)/10;
657  TH1* hcorr = fGiBUUCorr.find(GetKey(genieTruth))->second;
658  const double gibuu_corr = tgtA * hcorr->GetBinContent(hcorr->FindBin(nu.E()));
659 
662 
663  const int nuTrackId = trackId; // neutrino is always first
664  // Copy the incoming neutrino and the nucleus into the output record
665  for(int i = 0; i < genieTruth.NParticles(); ++i){
666  const simb::MCParticle& p = genieTruth.GetParticle(i);
667  if(p.Mother() != -1) continue; // Only want to copy the initial state particles
668 
669  simb::MCParticle p_out(trackId++, p.PdgCode(), p.Process(), -1,
670  p.Mass(), p.StatusCode());
671  p_out.AddTrajectoryPoint(p.Position(), p.Momentum());
672 
673  if(abs(p.PdgCode()) == 12 ||
674  abs(p.PdgCode()) == 14 ||
675  abs(p.PdgCode()) == 16){
676  // Stick the event weight on the neutrino
677  p_out.SetWeight(rec->weight * gibuu_corr / genie_xsec);
678  }
679 
680  ret.Add(p_out);
681  } // end for i
682 
683  const std::vector<TVector3> basis = Basis(nu.Momentum().Vect());
684 
685  TLorentzVector p_lep;
686 
687  // Then all the particles from GiBUU
688  for(const Particle& part: rec->parts){
689  simb::MCParticle mcp(trackId++, part.pdg, "primary", nuTrackId);
690 
691  mcp.AddTrajectoryPoint(nu.Position(),
692  TLorentzVector(part.px*basis[0] + part.py*basis[1] + part.pz*basis[2],
693  part.E));
694 
695  ret.Add(mcp);
696 
697  if(abs(part.pdg) >= 11 && abs(part.pdg) <= 16) p_lep = mcp.Momentum();
698  }
699 
700 
701  double W, x, y, Qsq;
702  Kinematics(nu.Momentum(), p_lep, W, x, y, Qsq);
703 
704  ret.SetNeutrino(mcn.CCNC(), -rec->prod_id, simb::kUnknownInteraction,
705  mcn.Target(), -1, -1,
706  W, x, y, Qsq);
707 
708  ++fNGiBUU;
709  return ret;
710  }
double E(const int i=0) const
Definition: MCParticle.h:232
const TLorentzVector & Position(const int i=0) const
Definition: MCParticle.h:218
std::map< Key, TH1 * > fGiBUUCorr
int PdgCode() const
Definition: MCParticle.h:211
int CCNC() const
Definition: MCNeutrino.h:148
const simb::MCNeutrino & GetNeutrino() const
Definition: MCTruth.h:76
void AddTrajectoryPoint(TLorentzVector const &position, TLorentzVector const &momentum)
Definition: MCParticle.h:256
void SetOrigin(simb::Origin_t origin)
Definition: MCTruth.h:80
int Mother() const
Definition: MCParticle.h:212
const char * p
Definition: xmltok.h:285
const simb::MCParticle & Nu() const
Definition: MCNeutrino.h:146
double Mass() const
Definition: MCParticle.h:238
const IRecordList * GetRecordList(const simb::MCTruth &genieTruth) const
caf::StandardRecord * rec
Definition: tutCAFMacro.C:20
simb::MCTruth CopyGenieEvent(const simb::MCTruth &genieTruth, int &trackId) const
Key GetKey(const simb::MCTruth &genieTruth) const
void abs(TH1 *hist)
int StatusCode() const
Definition: MCParticle.h:210
void Kinematics(const TLorentzVector &nu, const TLorentzVector &lep, double &W, double &x, double &y, double &Qsq) const
int NParticles() const
Definition: MCTruth.h:74
void SetNeutrino(int CCNC, int mode, int interactionType, int target, int nucleon, int quark, double w, double x, double y, double qsqr)
Definition: MCTruth.cxx:30
std::string Process() const
Definition: MCParticle.h:214
double GetGenieXSec(const simb::MCNeutrino &mcn) const
void Add(simb::MCParticle &part)
Definition: MCTruth.h:79
TString part[npart]
Definition: Style.C:32
OStream cout
Definition: OStream.cxx:6
const simb::MCParticle & GetParticle(int i) const
Definition: MCTruth.h:75
n.b.: this group is similar but not quite, entirely unlike GENIE ScatteringType convention ...
Definition: MCNeutrino.h:80
int Target() const
Definition: MCNeutrino.h:151
const TLorentzVector & Momentum(const int i=0) const
Definition: MCParticle.h:219
Event generator information.
Definition: MCTruth.h:32
Event generator information.
Definition: MCNeutrino.h:18
#define W(x)
std::vector< TVector3 > Basis(TVector3 z) const
Beam neutrinos.
Definition: MCTruth.h:23
double gibuu::GiBUURegen::GetGenieXSec ( const simb::MCNeutrino mcn) const
protected

Definition at line 585 of file GiBUURegen_module.cc.

References ana::assert(), simb::MCNeutrino::CCNC(), simb::MCParticle::E(), fGenieXSec, it, simb::kCC, simb::MCNeutrino::Nu(), simb::MCParticle::PdgCode(), and simb::MCNeutrino::Target().

Referenced by GetEvent().

586  {
587  auto it = fGenieXSec.find(Key(mcn.Target(),
588  mcn.Nu().PdgCode(),
589  mcn.CCNC() == simb::kCC));
590  assert(it != fGenieXSec.end());
591  return it->second.Eval(mcn.Nu().E());
592  }
double E(const int i=0) const
Definition: MCParticle.h:232
int PdgCode() const
Definition: MCParticle.h:211
int CCNC() const
Definition: MCNeutrino.h:148
set< int >::iterator it
const simb::MCParticle & Nu() const
Definition: MCNeutrino.h:146
std::map< Key, TGraph > fGenieXSec
int Target() const
Definition: MCNeutrino.h:151
assert(nhit_max >=nhit_nbins)
GiBUURegen::Key gibuu::GiBUURegen::GetKey ( const simb::MCTruth genieTruth) const
protected

Definition at line 506 of file GiBUURegen_module.cc.

References simb::MCNeutrino::CCNC(), simb::MCTruth::GetNeutrino(), GetRecordList(), iscc, simb::kCC, simb::MCNeutrino::Nu(), make_root_from_grid_output::pdg, simb::MCParticle::PdgCode(), and simb::MCNeutrino::Target().

Referenced by GetEvent(), and GetRecordList().

507  {
508  const simb::MCNeutrino& mcn = genieTruth.GetNeutrino();
509  const simb::MCParticle& nu = genieTruth.GetNeutrino().Nu();
510  const bool iscc = mcn.CCNC() == simb::kCC;
511  // TODO TODO - when fixing weights etc in GiBUU simulation, NC != NCbar
512  const int pdg = iscc ? nu.PdgCode() : 14; // all NCs are the same
513 
514  return Key(mcn.Target(), pdg, iscc);
515  }
int PdgCode() const
Definition: MCParticle.h:211
int CCNC() const
Definition: MCNeutrino.h:148
const simb::MCNeutrino & GetNeutrino() const
Definition: MCTruth.h:76
const simb::MCParticle & Nu() const
Definition: MCNeutrino.h:146
int iscc
int Target() const
Definition: MCNeutrino.h:151
Event generator information.
Definition: MCNeutrino.h:18
template<typename PROD , BranchType B>
ProductID art::EDProducer::getProductID ( std::string const &  instanceName = {}) const
inlineinherited

Definition at line 123 of file EDProducer.h.

References art::EDProducer::moduleDescription_.

Referenced by skim::NueSkimmer::CopyMichelSlice(), and skim::NueSkimmer::CopyMichelTrack().

124  {
125  return ProducerBase::getProductID<PROD, B>(moduleDescription_,
126  instanceName);
127  }
ModuleDescription moduleDescription_
Definition: EDProducer.h:115
template<typename PROD , BranchType B>
ProductID art::ProducerBase::getProductID ( ModuleDescription const &  moduleDescription,
std::string const &  instanceName 
) const
inherited

Definition at line 56 of file ProducerBase.h.

References art::ModuleDescription::moduleLabel().

Referenced by art::ProducerBase::modifiesEvent().

58  {
59  auto const& pd =
60  get_ProductDescription<PROD>(B, md.moduleLabel(), instanceName);
61  return pd.productID();
62  }
const IRecordList * gibuu::GiBUURegen::GetRecordList ( const simb::MCTruth genieTruth) const
protected

Definition at line 519 of file GiBUURegen_module.cc.

References abs(), ana::assert(), om::cout, allTimeWatchdog::endl, fRecords, GetKey(), simb::MCTruth::GetNeutrino(), gibuu::GiBUURegen::Key::iscc, it, simb::kCoh, simb::kElectronScattering, simb::MCNeutrino::Mode(), gibuu::GiBUURegen::Key::nu_pdg, and gibuu::GiBUURegen::Key::nucl_pdg.

Referenced by GetEvent(), and GetKey().

520  {
521  const Key k = GetKey(genieTruth);
522 
523  const simb::MCNeutrino& mcn = genieTruth.GetNeutrino();
524 
525  if(k.iscc && abs(k.nu_pdg) != 12 && abs(k.nu_pdg) != 14){
526  std::cout << "GiBUURegen: No match for CC PDG " << k.nu_pdg
527  << ". Copying GENIE event." << std::endl;
528  return 0;
529  }
530 
531  if(nucleus_to_label.find(k.nucl_pdg) == nucleus_to_label.end()){
532  std::cout << "GiBUURegen: No match for target " << k.nucl_pdg
533  << ". Copying GENIE event." << std::endl;
534  return 0;
535  }
536 
537  if(mcn.Mode() == simb::kCoh ||
539  std::cout << "GiBUURegen: COH or nu-on-e interaction. Copying GENIE event."
540  << std::endl;
541  return 0;
542  }
543 
544  auto it = fRecords.find(k);
545  assert(it != fRecords.end());
546  return it->second;
547  }
const simb::MCNeutrino & GetNeutrino() const
Definition: MCTruth.h:76
set< int >::iterator it
Key GetKey(const simb::MCTruth &genieTruth) const
void abs(TH1 *hist)
std::map< Key, const IRecordList * > fRecords
OStream cout
Definition: OStream.cxx:6
assert(nhit_max >=nhit_nbins)
Event generator information.
Definition: MCNeutrino.h:18
int Mode() const
Definition: MCNeutrino.h:149
void gibuu::GiBUURegen::Kinematics ( const TLorentzVector &  nu,
const TLorentzVector &  lep,
double &  W,
double &  x,
double &  y,
double &  Qsq 
) const
protected

Definition at line 567 of file GiBUURegen_module.cc.

References Mag().

Referenced by GetEvent().

570  {
571  const TLorentzVector q = nu-lep;
572 
573  const TLorentzVector p_p(0, 0, 0, .9315); // parton
574 
575  Qsq = -q.Mag2();
576 
577  W = (q + p_p).Mag();
578 
579  x = Qsq / (2*p_p.Dot(q));
580 
581  y = 1-lep.E()/nu.E(); // Identical results, no dependence on p_nuc
582  }
float Mag() const
#define W(x)
void gibuu::GiBUURegen::LoadGenieXSecs ( )
protected

Definition at line 317 of file GiBUURegen_module.cc.

References ana::assert(), om::cout, allTimeWatchdog::endl, fGenieXSec, MECModelEnuComparisons::g, cet::getenv(), iscc, it, make_root_from_grid_output::pdg, canMan::sign(), and string.

Referenced by beginJob().

318  {
319  const char* xsec_dir = getenv("GENIEXSECPATH");
320  if(!xsec_dir){
321  std::cout << "GiBUURegen: Environment variable $GENIEXSECPATH is not set." << std::endl;
322  abort();
323  }
324  const std::string xsec_fname = xsec_dir+std::string("/xsec_graphs.root");
325  std::cout << "GiBUURegen: Loading GENIE cross-sections from " << xsec_fname << std::endl;
326 
327  TFile f_xsec(xsec_fname.c_str());
328  assert(!f_xsec.IsZombie());
329 
330  for(bool iscc: {false, true}){
331  for(int sign: {+1, -1}){
332  for(int pdg: {12, 14}){
333  for(std::pair<int, std::string> it: nucleus_to_label){
334  const std::string genieStr = nu_to_genie_label[sign*pdg]+"_"+it.second+"/tot_"+(iscc ? "cc" : "nc");
335  std::cout << " " << genieStr << std::endl;
336  TGraph* g = (TGraph*)f_xsec.Get(genieStr.c_str());
337  assert(g);
338 
339  fGenieXSec[Key(it.first, sign*pdg, iscc)] = TGraph(*g);
340  // ROOT6 only?
341  // fGenieXSec[Key(it.first, sign*pdg, iscc)].SetBit(TGraph::kIsSortedX);
342  } // end for nucleus
343  } // end for pdg
344  } // end for sign
345  } // end for iscc
346  }
set< int >::iterator it
int iscc
std::string getenv(std::string const &name)
std::map< Key, TGraph > fGenieXSec
OStream cout
Definition: OStream.cxx:6
assert(nhit_max >=nhit_nbins)
def sign(x)
Definition: canMan.py:197
enum BeamMode string
void gibuu::GiBUURegen::LoadGiBUUCorrs ( )
protected

Definition at line 349 of file GiBUURegen_module.cc.

References ana::assert(), dir, ExpandLibraryPath(), fGiBUUCorr, genie::utils::style::Format(), iscc, it, findDuplicateFiles::key, make_root_from_grid_output::pdg, canMan::sign(), and string.

Referenced by beginJob().

350  {
352 
353  for(bool iscc: {true, false}){
354  for(int sign: {+1, -1}){
355  for(int pdg: {12, 14}){
356  if(!iscc && pdg == 12) continue;
357  for(std::pair<int, std::string> it: nucleus_to_label){
358 
359  const TString gibuuStr =
360  TString::Format("%s/%s%s_%s/%s/corr.root",
361  dir.c_str(),
362  iscc ? "cc" : "nc",
363  (sign < 0) ? "bar" : "",
364  nu_to_gibuu_label[pdg].c_str(),
365  it.second.c_str());
366 
367  const Key key(it.first, sign*pdg, iscc);
368 
369  TFile f_corr(gibuuStr.Data());
370  assert(!f_corr.IsZombie());
371  fGiBUUCorr[key] = (TH1*)f_corr.Get("corr");
372  assert(fGiBUUCorr[key]);
373  fGiBUUCorr[key]->SetDirectory(0);
374  }
375  }
376  }
377  }
378  }
std::map< Key, TH1 * > fGiBUUCorr
set< int >::iterator it
int iscc
std::string ExpandLibraryPath() const
TDirectory * dir
Definition: macro.C:5
assert(nhit_max >=nhit_nbins)
void Format(TGraph *gr, int lcol, int lsty, int lwid, int mcol, int msty, double msiz)
Definition: Style.cxx:154
def sign(x)
Definition: canMan.py:197
enum BeamMode string
void gibuu::GiBUURegen::LoadGiBUURecords ( )
protected

Definition at line 286 of file GiBUURegen_module.cc.

References dir, ExpandLibraryPath(), genie::utils::style::Format(), fParams, fRecords, iscc, it, findDuplicateFiles::key, make_root_from_grid_output::pdg, canMan::sign(), and string.

Referenced by beginJob().

287  {
289 
290  for(bool iscc: {true, false}){
291  for(int sign: {+1, -1}){
292  for(int pdg: {12, 14}){
293  if(!iscc && pdg == 12) continue;
294  for(std::pair<int, std::string> it: nucleus_to_label){
295 
296  const TString gibuuStr =
297  TString::Format("%s/%s%s_%s/%s/records.root",
298  dir.c_str(),
299  iscc ? "cc" : "nc",
300  (sign < 0) ? "bar" : "",
301  nu_to_gibuu_label[pdg].c_str(),
302  it.second.c_str());
303 
304  const Key key(it.first, sign*pdg, iscc);
305 
306  if(fParams.lowMemory())
307  fRecords[key] = new OnDemandRecordList(gibuuStr.Data());
308  else
309  fRecords[key] = new SimpleRecordList(gibuuStr.Data());
310  } // end for nucleus
311  } // end for pdg
312  } // end for sign
313  } // end for iscc
314  }
GiBUURegenParams fParams
set< int >::iterator it
int iscc
std::map< Key, const IRecordList * > fRecords
std::string ExpandLibraryPath() const
TDirectory * dir
Definition: macro.C:5
void Format(TGraph *gr, int lcol, int lsty, int lwid, int mcol, int msty, double msiz)
Definition: Style.cxx:154
def sign(x)
Definition: canMan.py:197
enum BeamMode string
template<typename T , BranchType = InEvent>
ProductToken<T> art::Consumer::mayConsume ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ProductToken<T> art::Consumer::mayConsume ( InputTag const &  it)
inherited

Definition at line 189 of file Consumer.h.

References art::InputTag::instance(), PandAna.reco_validation.prod5_pid_validation::invalid, art::InputTag::label(), art::InputTag::process(), and T.

190 {
191  if (!moduleContext_)
192  return ProductToken<T>::invalid();
193 
194  consumables_[BT].emplace_back(ConsumableType::Product,
195  TypeID{typeid(T)},
196  it.label(),
197  it.instance(),
198  it.process());
199  return ProductToken<T>{it};
200 }
set< int >::iterator it
static ProductToken< T > invalid()
Definition: ProductToken.h:47
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
template<typename T , art::BranchType BT>
void art::Consumer::mayConsumeMany ( )
inherited

Definition at line 204 of file Consumer.h.

References T.

205 {
206  if (!moduleContext_)
207  return;
208 
209  consumables_[BT].emplace_back(ConsumableType::Many, TypeID{typeid(T)});
210 }
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
template<typename Element , BranchType = InEvent>
ViewToken<Element> art::Consumer::mayConsumeView ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ViewToken<T> art::Consumer::mayConsumeView ( InputTag const &  it)
inherited

Definition at line 214 of file Consumer.h.

References art::InputTag::instance(), PandAna.reco_validation.prod5_pid_validation::invalid, art::InputTag::label(), art::InputTag::process(), and T.

215 {
216  if (!moduleContext_)
217  return ViewToken<T>::invalid();
218 
219  consumables_[BT].emplace_back(ConsumableType::ViewElement,
220  TypeID{typeid(T)},
221  it.label(),
222  it.instance(),
223  it.process());
224  return ViewToken<T>{it};
225 }
set< int >::iterator it
static ViewToken< Element > invalid()
Definition: ProductToken.h:75
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
bool art::ProducerBase::modifiesEvent ( ) const
inlineinherited

Definition at line 40 of file ProducerBase.h.

References art::ProducerBase::getProductID(), and string.

41  {
42  return true;
43  }
static cet::exempt_ptr<Consumer> art::Consumer::non_module_context ( )
staticinherited
void art::Consumer::prepareForJob ( fhicl::ParameterSet const &  pset)
protectedinherited
void gibuu::GiBUURegen::produce ( art::Event evt)
virtual

Implements art::EDProducer.

Definition at line 381 of file GiBUURegen_module.cc.

References ana::assert(), util::CreateAssn(), PandAna.Demos.pi0_spectra::fmt, fParams, fSpillToken, fTruthToken, art::DataViewImpl::getByLabel(), art::DataViewImpl::getByToken(), GetEvent(), simb::MCTruth::GetNeutrino(), MECModelEnuComparisons::i, simb::MCNeutrino::Nu(), simb::MCParticle::Position(), and art::Event::put().

382  {
383  // Always filled
384  auto truthcol = std::make_unique<std::vector<simb::MCTruth>>();
385  auto assns = std::make_unique<art::Assns<simb::MCTruth, simb::MCFlux>>();
386  // Filled if CopyMCFlux
387  auto fluxcol = std::make_unique<std::vector<simb::MCFlux>>();
388  // Filled if CopyGTruth
389  auto gtruthcol = std::make_unique<std::vector<simb::GTruth>>();
390  auto assnsGTruth = std::make_unique<art::Assns<simb::MCTruth, simb::GTruth>>();
391  // Filled if CopyBSim
392  auto dk2nucol = std::make_unique<std::vector<bsim::Dk2Nu>>();
393  auto nuchoicecol = std::make_unique<std::vector<bsim::NuChoice>>();
394 #ifdef PUT_DK2NU_ASSN
395  auto assnsdk2nu = std::make_unique<art::Assns<simb::MCTruth, bsim::Dk2Nu>>();
396  auto assnsnuchoice = std::make_unique<art::Assns<simb::MCTruth, bsim::NuChoice>>();
397 #endif
398 
399  // First up, copy GENIE's POT accounting
401  evt.getByToken(fSpillToken, spilldata);
402  evt.put(std::make_unique<sumdata::SpillData>(*spilldata));
403 
404 
406  evt.getByToken(fTruthToken, genieTruths);
407 
408  art::FindManyP<simb::MCFlux> fmp(genieTruths, evt, fParams.generatorLabel());
409 
410  art::FindManyP<simb::GTruth> fmt(genieTruths, evt, fParams.generatorLabel());
411 
412 #ifdef PUT_DK2NU_ASSN
413  art::FindManyP<bsim::Dk2Nu> fmdk(genieTruths, evt, fParams.generatorLabel());
414  art::FindManyP<bsim::NuChoice> fmnc(genieTruths, evt, fParams.generatorLabel());
415 #else
416  // Otherwise assume they match by index
418  evt.getByLabel(fParams.generatorLabel(), dk2nus);
420  evt.getByLabel(fParams.generatorLabel(), nuchoices);
421 #endif
422 
423  int trackId = 0;
424 
425  for(unsigned int i = 0; i < genieTruths->size(); ++i){
426  const simb::MCTruth& genieTruth = (*genieTruths)[i];
427 
428  const TVector3 vtx = genieTruth.GetNeutrino().Nu().Position().Vect();
429  const std::vector<double> r0 = fParams.boundingBoxLo();
430  const std::vector<double> r1 = fParams.boundingBoxHi();
431 
432  if(!r0.empty() &&
433  (vtx.X() < r0[0] || vtx.Y() < r0[1] || vtx.Z() < r0[2] ||
434  vtx.X() > r1[0] || vtx.Y() > r1[1] || vtx.Z() > r1[2])) continue;
435 
436  truthcol->push_back(GetEvent(genieTruth, trackId));
437 
438  std::vector<art::Ptr<simb::MCFlux>> fluxes = fmp.at(i);
439  assert(fluxes.size() == 1);
440 
441  // Associate most recently added truth with the flux
442  if(fParams.copyMCFlux()){
443  fluxcol->push_back(*fluxes[0]);
444  util::CreateAssn(*this, evt, *truthcol, *fluxcol, *assns, i, i+1);
445  }
446  else{
447  util::CreateAssn(*this, evt, *truthcol, fluxes[0], *assns);
448  }
449 
450  if(fParams.copyGTruth()){
451  std::vector<art::Ptr<simb::GTruth>> gtruths = fmt.at(i);
452  assert(gtruths.size() == 1);
453  gtruthcol->push_back(*gtruths[0]);
454  util::CreateAssn(*this, evt, *truthcol, *gtruthcol, *assnsGTruth, i, i+1);
455  }
456 
457  if(fParams.copyBSim()){
458 #ifdef PUT_DK2NU_ASSN
459  std::vector<art::Ptr<bsim::Dk2Nu>> dk2nus = fmdk.at(i);
460  assert(dk2nus.size() == 1);
461  dk2nucol->push_back(*dk2nus[0]);
462 
463  std::vector<art::Ptr<bsim::NuChoice>> nuchoices = fmnc.at(i);
464  assert(nuchoices.size() == 1);
465  nuchoicecol->push_back(*nuchoices[0]);
466 
467  util::CreateAssn(*this, evt, *truthcol, *dk2nucol, *assnsdk2nu, i, i+1);
468  util::CreateAssn(*this, evt, *truthcol, *nuchoicecol, *assnsnuchoice, i, i+1);
469 #else
470  if(dk2nus->size() > i) dk2nucol->push_back((*dk2nus)[i]);
471  if(nuchoices->size() > i) nuchoicecol->push_back((*nuchoices)[i]);
472 #endif
473  }
474 
475  } // end for i
476 
477  // put the collections in the event
478  evt.put(std::move(truthcol));
479  evt.put(std::move(assns));
480  if(fParams.copyMCFlux()){
481  evt.put(std::move(fluxcol));
482  }
483  if(fParams.copyGTruth()){
484  evt.put(std::move(gtruthcol));
485  evt.put(std::move(assnsGTruth));
486  }
487  if(fParams.copyBSim()){
488  evt.put(std::move(dk2nucol));
489  evt.put(std::move(nuchoicecol));
490 #ifdef PUT_DK2NU_ASSN
491  evt.put(std::move(assnsdk2nu));
492  evt.put(std::move(assnsnuchoice));
493 #endif
494  }
495  }
const TLorentzVector & Position(const int i=0) const
Definition: MCParticle.h:218
static bool CreateAssn(art::EDProducer const &prod, art::Event &evt, std::vector< T > &a, art::Ptr< U > b, art::Assns< T, U > &assn, size_t indx=UINT_MAX, std::string const &instance=std::string())
Create a 1 to 1 association between a new product and one already in the event.
const simb::MCNeutrino & GetNeutrino() const
Definition: MCTruth.h:76
GiBUURegenParams fParams
const art::ProductToken< std::vector< simb::MCTruth > > fTruthToken
const simb::MCParticle & Nu() const
Definition: MCNeutrino.h:146
ProductID put(std::unique_ptr< PROD > &&product)
Definition: Event.h:102
bool getByLabel(std::string const &label, std::string const &productInstanceName, Handle< PROD > &result) const
Definition: DataViewImpl.h:344
assert(nhit_max >=nhit_nbins)
simb::MCTruth GetEvent(const simb::MCTruth &genieTruth, int &trackId) const
Event generator information.
Definition: MCTruth.h:32
bool getByToken(ProductToken< PROD > const &token, Handle< PROD > &result) const
Definition: DataViewImpl.h:387
const art::ProductToken< sumdata::SpillData > fSpillToken
void art::Consumer::showMissingConsumes ( ) const
protectedinherited

Referenced by art::RootOutput::endJob().

void art::Consumer::validateConsumedProduct ( BranchType const  bt,
ProductInfo const &  pi 
)
protectedinherited

Member Data Documentation

std::map<Key, TGraph> gibuu::GiBUURegen::fGenieXSec
protected

Definition at line 182 of file GiBUURegen_module.cc.

Referenced by GetGenieXSec(), and LoadGenieXSecs().

std::map<Key, TH1*> gibuu::GiBUURegen::fGiBUUCorr
protected

Definition at line 183 of file GiBUURegen_module.cc.

Referenced by GetEvent(), and LoadGiBUUCorrs().

int gibuu::GiBUURegen::fNGENIE
mutableprotected

Definition at line 179 of file GiBUURegen_module.cc.

Referenced by GetEvent(), and ~GiBUURegen().

int gibuu::GiBUURegen::fNGiBUU
mutableprotected

Definition at line 179 of file GiBUURegen_module.cc.

Referenced by GetEvent(), and ~GiBUURegen().

GiBUURegenParams gibuu::GiBUURegen::fParams
protected

Definition at line 174 of file GiBUURegen_module.cc.

Referenced by ExpandLibraryPath(), GiBUURegen(), LoadGiBUURecords(), and produce().

const art::ProductToken<sumdata::POTSum> gibuu::GiBUURegen::fPOTSumToken
protected

Definition at line 177 of file GiBUURegen_module.cc.

Referenced by endSubRun().

std::map<Key, const IRecordList*> gibuu::GiBUURegen::fRecords
protected

Definition at line 181 of file GiBUURegen_module.cc.

Referenced by GetRecordList(), LoadGiBUURecords(), and ~GiBUURegen().

const art::ProductToken<sumdata::SpillData> gibuu::GiBUURegen::fSpillToken
protected

Definition at line 175 of file GiBUURegen_module.cc.

Referenced by produce().

const art::ProductToken<std::vector<simb::MCTruth> > gibuu::GiBUURegen::fTruthToken
protected

Definition at line 176 of file GiBUURegen_module.cc.

Referenced by produce().


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