All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Public Types | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
icarus::simfilter::FilterNeutrinosActiveVolume Class Reference

Accepts only neutrino-like events with vertices in a specified volume. More...

Inheritance diagram for icarus::simfilter::FilterNeutrinosActiveVolume:

Classes

struct  BoxCoordConfig
 Configuration of box volume geometry. More...
 
struct  Config
 Configuration parameter structure. More...
 

Public Types

using Parameters = art::EDFilter::Table< Config >
 

Public Member Functions

 FilterNeutrinosActiveVolume (Parameters const &config)
 Constructor: reads configuration and extracts information from geometry. More...
 
virtual bool filter (art::Event &event) override
 Framework hook: applies the filter. More...
 
virtual void endJob () override
 Framework hook: prints the summary of the passed events. More...
 

Private Member Functions

void addActiveVolumes ()
 Adds all active volumes of detector into the qualifying volume list. More...
 
void addVolumeBoxes (fhicl::OptionalSequence< fhicl::Table< BoxCoordConfig >> const &boxConfig)
 Adds the specified volumes into the qualifying volume list. More...
 
unsigned addVolumeByName (std::string const &volumeName)
 Adds all volName from geometry into the qualifying volume list. More...
 
bool qualifying (simb::MCTruth const &truth) const
 Returns whether the interaction described in truth qualifies. More...
 
bool qualifyingInteractionType (int const interactionType) const
 Returns whether the interaction type is qualifying. More...
 
bool qualifyingWeakCurrent (int const CCNC) const
 Returns whether the weak current type is qualifying. More...
 
bool qualifyingLocation (geo::Point_t const &location) const
 Returns whether the location is among the accepted ones. More...
 

Static Private Member Functions

template<typename Coll >
static Coll sorted (Coll const &coll)
 Returns a sorted copy of the specified collection. More...
 

Private Attributes

std::vector< geo::BoxBoundedGeofVolumes
 Volumes for qualifying interactions. More...
 
std::vector< int > const fInteractions
 List of qualifying interaction types. More...
 
icarus::WeakCurrentType const fWeakCurrentType
 Selected weak current. More...
 
std::string const fLogCategory
 Category name for the output stream. More...
 
std::atomic< unsigned int > fNObserved { 0U }
 Number of observed events. More...
 
std::atomic< unsigned int > fNPassed { 0U }
 Number of passed events. More...
 

Detailed Description

Accepts only neutrino-like events with vertices in a specified volume.

The module identifies a list of volumes to filter on. The filter selects "qualifying" neutrino interactions that:

The event is kept if there is at least one qualifying interaction. In that case, the whole event is passed (including any other interaction).

Input

Truth information from all data products in the form std::vector<simb::MCTruth> will be evaluated. It is an error for an event to have no such data product (but they can all be empty, in which case the event does not qualify).

Configuration

Parameters

The module can be operated in one of two ways: active volumes or generic. In the active volume mode, all TPC active volumes are used for filtering. In the generic mode, all the specified volumes are used for filtering.

It is required that at least one among inActive, volumeNames, volumeBoxes, weakCurrent and interactionTypes are specified.

Filtering

This is a filter module: its configuration must appear in the filters table and to be included in a path in trigger_path, and the output module must be told to include that path in SelectEvents configuration key; e.g.:

eventActive: @local::icarus_FilterNeutrinoActive
# ...
} # filters
# ...
appliedFilters: [ eventActive ]
trigger_paths: [ appliedFilters ]
rootoutput: {
module_type: RootOutput
fileName: "%ifb_%tc-%p.root"
SelectEvents: [ appliedFilters ]
}
}

Definition at line 161 of file FilterNeutrinosActiveVolume_module.cc.

Member Typedef Documentation

Definition at line 244 of file FilterNeutrinosActiveVolume_module.cc.

Constructor & Destructor Documentation

icarus::simfilter::FilterNeutrinosActiveVolume::FilterNeutrinosActiveVolume ( Parameters const &  config)
explicit

Constructor: reads configuration and extracts information from geometry.

Definition at line 317 of file FilterNeutrinosActiveVolume_module.cc.

318  : art::EDFilter(config)
319  , fInteractions(sorted(config().interactionTypes()))
320  , fWeakCurrentType(config().weakCurrent())
321  , fLogCategory(config().logCategory())
322 {
323 
324  { // local scope
325  mf::LogInfo log(fLogCategory);
326 
327  log << "Filter configuration:";
328 
329  if (!fInteractions.empty()) {
330  log << "\n * required one of these " << size(fInteractions)
331  << " interaction types:";
332  for (int intType: fInteractions)
333  log << "\n - " << sim::TruthInteractionTypeName(intType);
334  } // if
335 
336  log << "\n * weak current type: " << std::string(fWeakCurrentType);
337 
338  log << "\nConfiguration of qualifying volumes:";
339 
340  }
341 
342  //
343  // load volumes from the different sources
344  //
345  if (config().inActive()) addActiveVolumes();
346 
347  addVolumeBoxes(config().volumeBoxes);
348 
349  for (std::string const& volName: config().volumeNames())
350  addVolumeByName(volName);
351 
352  //
353  // check that we are doing at least something
354  //
355  if (fVolumes.empty()
356  && fInteractions.empty()
358  ) {
359 
360  throw art::Exception(art::errors::Configuration)
361  << "No filtering action specified (volume, current nor interaction type).\n"
362  ;
363 
364  } // if no filter
365 
366 } // icarus::simfilter::FilterNeutrinosActiveVolume::FilterNeutrinosActiveVolume()
icarus::WeakCurrentType const fWeakCurrentType
Selected weak current.
std::string const fLogCategory
Category name for the output stream.
std::string TruthInteractionTypeName(int type)
std::size_t size(FixedBins< T, C > const &) noexcept
Definition: FixedBins.h:561
std::vector< geo::BoxBoundedGeo > fVolumes
Volumes for qualifying interactions.
unsigned addVolumeByName(std::string const &volumeName)
Adds all volName from geometry into the qualifying volume list.
void addVolumeBoxes(fhicl::OptionalSequence< fhicl::Table< BoxCoordConfig >> const &boxConfig)
Adds the specified volumes into the qualifying volume list.
std::vector< int > const fInteractions
List of qualifying interaction types.
constexpr WeakCurrentType AnyWeakCurrentType
Constant value for any weak current type.
static Coll sorted(Coll const &coll)
Returns a sorted copy of the specified collection.
void addActiveVolumes()
Adds all active volumes of detector into the qualifying volume list.

Member Function Documentation

void icarus::simfilter::FilterNeutrinosActiveVolume::addActiveVolumes ( )
private

Adds all active volumes of detector into the qualifying volume list.

Definition at line 445 of file FilterNeutrinosActiveVolume_module.cc.

445  {
446 
447  geo::GeometryCore const& geom = *(lar::providerFrom<geo::Geometry>());
448 
449  for (geo::TPCGeo const& TPC: geom.IterateTPCs()) {
450 
451  geo::BoxBoundedGeo const& box = TPC.ActiveBoundingBox();
452 
453  mf::LogVerbatim(fLogCategory)
454  << "[volume #" << fVolumes.size() << "] active volume from " << TPC.ID()
455  << ": [ " << box.Min() << " -- " << box.Max() << " ]";
456 
457  fVolumes.push_back(box);
458 
459  } // for all TPCs
460 
461 } // icarus::simfilter::FilterNeutrinosActiveVolume::addActiveVolumes()
std::string const fLogCategory
Category name for the output stream.
Geometry information for a single TPC.
Definition: TPCGeo.h:38
std::vector< geo::BoxBoundedGeo > fVolumes
Volumes for qualifying interactions.
BEGIN_PROLOG TPC
IteratorBox< TPC_iterator,&GeometryCore::begin_TPC,&GeometryCore::end_TPC > IterateTPCs() const
Enables ranged-for loops on all TPCs of the detector.
geo::Point_t Min() const
Returns the corner point with the smallest coordinates.
Description of geometry of one entire detector.
A base class aware of world box coordinatesAn object describing a simple shape can inherit from this ...
Definition: BoxBoundedGeo.h:33
geo::Point_t Max() const
Returns the corner point with the largest coordinates.
void icarus::simfilter::FilterNeutrinosActiveVolume::addVolumeBoxes ( fhicl::OptionalSequence< fhicl::Table< BoxCoordConfig >> const &  boxConfig)
private

Adds the specified volumes into the qualifying volume list.

Definition at line 466 of file FilterNeutrinosActiveVolume_module.cc.

467 {
468  std::vector<BoxCoordConfig> boxParams;
469 
470  if (!boxConfig(boxParams)) return;
471 
472  for (auto const& [ iBox, boxParam ]: util::enumerate(boxParams)) {
473 
474  geo::BoxBoundedGeo box {
475  boxParam.Xmin(), boxParam.Xmax(),
476  boxParam.Ymin(), boxParam.Ymax(),
477  boxParam.Zmin(), boxParam.Zmax()
478  };
479 
480  mf::LogVerbatim(fLogCategory)
481  << "[volume #" << fVolumes.size() << "] box coordinates #" << iBox
482  << ": [ " << box.Min() << " -- " << box.Max() << " ]";
483 
484  fVolumes.push_back(std::move(box));
485 
486  } // for boxes
487 
488 } // icarus::simfilter::FilterNeutrinosActiveVolume::addVolumeBoxes()
std::string const fLogCategory
Category name for the output stream.
std::vector< geo::BoxBoundedGeo > fVolumes
Volumes for qualifying interactions.
auto enumerate(Iterables &&...iterables)
Range-for loop helper tracking the number of iteration.
Definition: enumerate.h:69
A base class aware of world box coordinatesAn object describing a simple shape can inherit from this ...
Definition: BoxBoundedGeo.h:33
unsigned int icarus::simfilter::FilterNeutrinosActiveVolume::addVolumeByName ( std::string const &  volumeName)
private

Adds all volName from geometry into the qualifying volume list.

Definition at line 493 of file FilterNeutrinosActiveVolume_module.cc.

494 {
495 
496  geo::GeometryCore const& geom = *(lar::providerFrom<geo::Geometry>());
497 
498  //
499  // find the path of all volumes matching the given pattern
500  //
501  std::regex const namePattern { volumePattern };
502  std::vector<geo::GeoNodePath> volumePaths;
503  auto const matchMe = [&pattern=namePattern](std::string const& s)
504  { std::smatch match; return (std::regex_match(s, match, pattern)); };
505  auto const findVolume = [&volumePaths, &patternMatcher=matchMe](auto& path)
506  {
507  if (patternMatcher(path.current().GetVolume()->GetName()))
508  volumePaths.push_back(path);
509  return true;
510  };
511 
512  geo::ROOTGeometryNavigator navigator { *(geom.ROOTGeoManager()) };
513 
514  navigator.apply(findVolume);
515 
516  if (volumePaths.empty()) {
517  throw art::Exception(art::errors::Configuration)
518  << "No volume matching '" << volumePattern
519  << "' has been found in the detector '" << geom.DetectorName()
520  << "'.\n";
521  }
522 
523  //
524  // convert each volume into world coordinates and add it to the list
525  //
526  for (auto const& [ iVolume, path ] : util::enumerate(volumePaths)) {
527 
528  //
529  // find the coordinates of the volume in local coordinates
530  //
531  TGeoShape const* pShape = path.current().GetVolume()->GetShape();
532  auto pBox = dynamic_cast<TGeoBBox const*>(pShape);
533  if (!pBox) {
534  throw cet::exception("FilterNeutrinosActiveVolume") << "Volume '"
535  << path.current().GetName() << "' is a " << pShape->IsA()->GetName()
536  << ", not a TGeoBBox.\n";
537  }
538 
539  geo::Point_t const origin
540  = geo::vect::makeFromCoords<geo::Point_t>(pBox->GetOrigin());
541  geo::Vector_t const diag = {
542  std::abs(pBox->GetDX()), std::abs(pBox->GetDY()), std::abs(pBox->GetDZ())
543  };
544 
545  //
546  // convert to world coordinates
547  //
548 
549  auto const trans
550  = path.currentTransformation<geo::TransformationMatrix>();
551 
552  geo::Point_t min, max;
553  trans.Transform(origin - diag, min);
554  trans.Transform(origin + diag, max);
555 
556  //
557  // add to the coordinates
558  //
559  geo::BoxBoundedGeo box { min, max };
560 
561  mf::LogVerbatim(fLogCategory)
562  << " c* [volume #" << fVolumes.size() << "] volume box '"
563  << path.current().GetVolume()->GetName()
564  << "' [(" << (iVolume + 1U) << "/" << volumePaths.size()
565  << "): [ " << box.Min() << " -- " << box.Max() << " ]";
566 
567  fVolumes.push_back(std::move(box));
568 
569  } // for all volume paths
570 
571  return volumePaths.size();
572 } // icarus::simfilter::FilterNeutrinosActiveVolume::addVolumeByName()
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Vector_t
Type for representation of momenta in 3D space.
Definition: geo_vectors.h:164
std::string const fLogCategory
Category name for the output stream.
bool apply(geo::GeoNodePath &path, Op &&op) const
Applies the specified operation to all nodes under the path.
Executes an operation on all the nodes of the ROOT geometry.
std::vector< geo::BoxBoundedGeo > fVolumes
Volumes for qualifying interactions.
TGeoManager * ROOTGeoManager() const
Access to the ROOT geometry description manager.
auto enumerate(Iterables &&...iterables)
Range-for loop helper tracking the number of iteration.
Definition: enumerate.h:69
BEGIN_PROLOG triggeremu_data_config_icarus settings PMTADCthresholds sequence::icarus_stage0_multiTPC_TPC physics sequence::icarus_stage0_EastHits_TPC physics sequence::icarus_stage0_WestHits_TPC physics producers purityana0 caloskimCalorimetryCryoE physics caloskimCalorimetryCryoW physics path
T abs(T value)
std::string DetectorName() const
Returns a string with the name of the detector, as configured.
Description of geometry of one entire detector.
A base class aware of world box coordinatesAn object describing a simple shape can inherit from this ...
Definition: BoxBoundedGeo.h:33
then echo File list $list not found else cat $list while read file do echo $file sed s
Definition: file_to_url.sh:60
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space.
Definition: geo_vectors.h:184
ROOT::Math::Transform3D TransformationMatrix
Type of transformation matrix used in geometry.
constexpr Point origin()
Returns a origin position with a point of the specified type.
Definition: geo_vectors.h:227
void icarus::simfilter::FilterNeutrinosActiveVolume::endJob ( )
overridevirtual

Framework hook: prints the summary of the passed events.

Definition at line 432 of file FilterNeutrinosActiveVolume_module.cc.

432  {
433 
434  mf::LogInfo log(fLogCategory);
435  log
436  << "FilterNeutrinosActiveVolume: passed " << fNPassed << " / " << fNObserved
437  << " events";
438  if (fNObserved > 0U)
439  log << " (" << (float(fNPassed) * 100. / fNObserved) << "%)";
440 
441 } // icarus::simfilter::FilterNeutrinosActiveVolume::endJob()
std::string const fLogCategory
Category name for the output stream.
std::atomic< unsigned int > fNPassed
Number of passed events.
std::atomic< unsigned int > fNObserved
Number of observed events.
bool icarus::simfilter::FilterNeutrinosActiveVolume::filter ( art::Event &  event)
overridevirtual

Framework hook: applies the filter.

Definition at line 370 of file FilterNeutrinosActiveVolume_module.cc.

370  {
371 
372  ++fNObserved;
373 
374  /*
375  * Consider all truth information available in the event.
376  * Any record of any truth data product will be enough to pass the event.
377  */
378  //std::vector<art::Handle<std::vector<simb::MCTruth>>> allTruth;
379  //event.getManyByType(allTruth);
380  auto allTruth = event.getMany<std::vector<simb::MCTruth>>();
381 
382  if (allTruth.empty()) { // is this real data?
383  throw art::Exception(art::errors::ProductNotFound)
384  << event.id() << " has no truth information!\n";
385  } // if no truth
386 
387  mf::LogDebug(fLogCategory)
388  << "Event " << event.id() << " (#" << fNObserved << ") has "
389  << allTruth.size() << " truth data products.";
390 
391  for (auto const& handle: allTruth) {
392 
393  art::InputTag const& tag [[gnu::unused]] = handle.provenance()->inputTag();
394 
395  std::vector<simb::MCTruth> const& truths = *handle;
396  if (truths.empty()) {
397  mf::LogTrace(fLogCategory)
398  << "No truth records from " << tag.encode() << ": skipped.";
399  continue;
400  } // if no truth
401 
402  for (auto const& [ iTruth, truth ]: util::enumerate(truths)) {
403 
404  mf::LogTrace(fLogCategory)
405  << "Processing record [" << (iTruth + 1U) << "/" << truths.size()
406  << "] from " << tag.encode();
407 
408  if (!qualifying(truth)) continue; // neeext!
409 
410  ++fNPassed;
411  mf::LogTrace(fLogCategory) << "Event " << event.id()
412  << " (#" << fNObserved << ") passes the filter in virtue of "
413  << tag.encode() << " record " << (iTruth + 1U)
414  << " (" << fNPassed << "/" << fNObserved << " passed so far)."
415  ;
416  return true;
417 
418  } // for truth record
419 
420  } // for truth data product
421 
422  mf::LogTrace(fLogCategory) << "Event " << event.id() << " (#" << fNObserved
423  << ") does not pass the filter (" << fNPassed << "/" << fNObserved
424  << " passed so far).";
425 
426  return false;
427 
428 } // icarus::simfilter::FilterNeutrinosActiveVolume::filter()
std::string const fLogCategory
Category name for the output stream.
std::atomic< unsigned int > fNPassed
Number of passed events.
auto enumerate(Iterables &&...iterables)
Range-for loop helper tracking the number of iteration.
Definition: enumerate.h:69
std::atomic< unsigned int > fNObserved
Number of observed events.
bool qualifying(simb::MCTruth const &truth) const
Returns whether the interaction described in truth qualifies.
bool icarus::simfilter::FilterNeutrinosActiveVolume::qualifying ( simb::MCTruth const &  truth) const
private

Returns whether the interaction described in truth qualifies.

Definition at line 577 of file FilterNeutrinosActiveVolume_module.cc.

578 {
579  /*
580  * Apply all the needed cuts:
581  * * interaction type
582  * * current type
583  * * location
584  *
585  */
586 
587  //
588  // only neutrino record types may qualify:
589  //
590  if (!truth.NeutrinoSet()) {
591  mf::LogTrace(fLogCategory)
592  << "Interaction does not qualify because it is not tagged as neutrino.";
593  return false;
594  }
595 
596  simb::MCNeutrino const& nuInfo = truth.GetNeutrino();
597  simb::MCParticle const& nu = nuInfo.Nu();
598 
599  //
600  // interaction type
601  //
602  if (!fInteractions.empty() && !qualifyingInteractionType(nuInfo.InteractionType()))
603  return false;
604 
605  //
606  // current type
607  //
609  return false;
610 
611  //
612  // location
613  //
614  if (!fVolumes.empty() && !qualifyingLocation({ nu.Vx(), nu.Vy(), nu.Vz() }))
615  return false;
616 
617  // success, after all
618  return true;
619 
620 } // icarus::simfilter::FilterNeutrinosActiveVolume::qualifying()
icarus::WeakCurrentType const fWeakCurrentType
Selected weak current.
std::string const fLogCategory
Category name for the output stream.
bool qualifyingInteractionType(int const interactionType) const
Returns whether the interaction type is qualifying.
std::vector< geo::BoxBoundedGeo > fVolumes
Volumes for qualifying interactions.
bool qualifyingLocation(geo::Point_t const &location) const
Returns whether the location is among the accepted ones.
std::vector< int > const fInteractions
List of qualifying interaction types.
bool qualifyingWeakCurrent(int const CCNC) const
Returns whether the weak current type is qualifying.
constexpr WeakCurrentType AnyWeakCurrentType
Constant value for any weak current type.
BEGIN_PROLOG SN nu
bool icarus::simfilter::FilterNeutrinosActiveVolume::qualifyingInteractionType ( int const  interactionType) const
private

Returns whether the interaction type is qualifying.

Definition at line 625 of file FilterNeutrinosActiveVolume_module.cc.

626 {
627  mf::LogTrace log(fLogCategory);
628  log
629  << "Interaction type: " << sim::TruthInteractionTypeName(interactionType)
630  << " (" << interactionType << ")";
631 
632  bool const pass = std::binary_search
633  (begin(fInteractions), end(fInteractions), interactionType);
634  log << " => :-" << (pass? ')': '(');
635  return pass;
636 
637 } // icarus::simfilter::FilterNeutrinosActiveVolume::qualifyingInteractionType()
std::string const fLogCategory
Category name for the output stream.
std::string TruthInteractionTypeName(int type)
auto end(FixedBins< T, C > const &) noexcept
Definition: FixedBins.h:585
std::vector< int > const fInteractions
List of qualifying interaction types.
auto begin(FixedBins< T, C > const &) noexcept
Definition: FixedBins.h:573
bool icarus::simfilter::FilterNeutrinosActiveVolume::qualifyingLocation ( geo::Point_t const &  location) const
private

Returns whether the location is among the accepted ones.

Definition at line 666 of file FilterNeutrinosActiveVolume_module.cc.

667 {
668 
669  mf::LogTrace log(fLogCategory);
670  log << "Interaction location: " << location << " cm";
671 
672  for (auto const& [ iBox, box ]: util::enumerate(fVolumes)) {
673  if (!box.ContainsPosition(location)) continue;
674 
675  log << " => in volume #" << iBox
676  << " [ " << box.Min() << " -- " << box.Max() << " ] => :-)";
677 
678  return true;
679  } // for
680 
681  log << " => :-(";
682  return false;
683 
684 } // icarus::simfilter::FilterNeutrinosActiveVolume::qualifyingLocation()
std::string const fLogCategory
Category name for the output stream.
std::vector< geo::BoxBoundedGeo > fVolumes
Volumes for qualifying interactions.
auto enumerate(Iterables &&...iterables)
Range-for loop helper tracking the number of iteration.
Definition: enumerate.h:69
bool icarus::simfilter::FilterNeutrinosActiveVolume::qualifyingWeakCurrent ( int const  CCNC) const
private

Returns whether the weak current type is qualifying.

Definition at line 643 of file FilterNeutrinosActiveVolume_module.cc.

644 {
646 
647  mf::LogTrace log(fLogCategory);
648  log << "Interaction current: " << sim::TruthCCNCname(CCNC)
649  << " (" << CCNC << ")";
650 
651  bool pass = false;
652  switch (fWeakCurrentType) {
653  case WeakCurrentType::CC: pass = (CCNC == simb::kCC); break;
654  case WeakCurrentType::NC: pass = (CCNC == simb::kNC); break;
655  case WeakCurrentType::any: pass = true; break;
656  } // switch
657 
658  log << " => :-" << (pass? ')': '(');
659  return pass;
660 
661 } // icarus::simfilter::FilterNeutrinosActiveVolume::qualifyingWeakCurrent()
icarus::WeakCurrentType const fWeakCurrentType
Selected weak current.
std::string const fLogCategory
Category name for the output stream.
Represents a type of weak current.
std::string TruthCCNCname(int ccnc)
Charged-current interactions.
Definition: IPrediction.h:38
Neutral-current interactions.
Definition: IPrediction.h:39
template<typename Coll >
Coll icarus::simfilter::FilterNeutrinosActiveVolume::sorted ( Coll const &  coll)
staticprivate

Returns a sorted copy of the specified collection.

Definition at line 689 of file FilterNeutrinosActiveVolume_module.cc.

689  {
690 
691  // copy, sort, return
692  auto sortedColl { coll };
693  std::sort(util::begin(sortedColl), util::end(sortedColl));
694  return sortedColl;
695 
696 } // icarus::simfilter::FilterNeutrinosActiveVolume::sorted()
decltype(auto) constexpr end(T &&obj)
ADL-aware version of std::end.
Definition: StdUtils.h:77
decltype(auto) constexpr begin(T &&obj)
ADL-aware version of std::begin.
Definition: StdUtils.h:72

Member Data Documentation

std::vector<int> const icarus::simfilter::FilterNeutrinosActiveVolume::fInteractions
private

List of qualifying interaction types.

Definition at line 264 of file FilterNeutrinosActiveVolume_module.cc.

std::string const icarus::simfilter::FilterNeutrinosActiveVolume::fLogCategory
private

Category name for the output stream.

Definition at line 268 of file FilterNeutrinosActiveVolume_module.cc.

std::atomic<unsigned int> icarus::simfilter::FilterNeutrinosActiveVolume::fNObserved { 0U }
private

Number of observed events.

Definition at line 275 of file FilterNeutrinosActiveVolume_module.cc.

std::atomic<unsigned int> icarus::simfilter::FilterNeutrinosActiveVolume::fNPassed { 0U }
private

Number of passed events.

Definition at line 276 of file FilterNeutrinosActiveVolume_module.cc.

std::vector<geo::BoxBoundedGeo> icarus::simfilter::FilterNeutrinosActiveVolume::fVolumes
private

Volumes for qualifying interactions.

Definition at line 261 of file FilterNeutrinosActiveVolume_module.cc.

icarus::WeakCurrentType const icarus::simfilter::FilterNeutrinosActiveVolume::fWeakCurrentType
private

Selected weak current.

Definition at line 266 of file FilterNeutrinosActiveVolume_module.cc.


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