LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
evgen::LightSource::MaterialPointFilter Class Reference

Filters a point according to the material at that point. More...

Public Member Functions

 MaterialPointFilter (geo::GeometryCore const &geom, std::set< std::string > const &materialNames)
 Constructor: sets up the filter configuration. More...
 
 ~MaterialPointFilter ()
 
bool accept (geo::Point_t const &point)
 Returns whether the specified point can be accepted. More...
 
bool operator() (geo::Point_t const &point)
 Returns whether the specified point can be accepted. More...
 

Private Member Functions

TGeoMaterial const * materialAt (geo::Point_t const &point)
 Returns a pointer to the material of the volume at specified point. More...
 
TGeoMaterial const * findMaterial (std::string const &name) const
 Returns a pointer to the material with the specified name. More...
 

Private Attributes

TGeoManager * fManager = nullptr
 ROOT geometry manager. More...
 
TGeoNavigator * fNavigator = nullptr
 Our own ROOT geometry navigator. More...
 
std::set< std::string > const & fMaterials
 Names of materials to select. More...
 

Detailed Description

Filters a point according to the material at that point.

Definition at line 140 of file LightSource_module.cc.

Constructor & Destructor Documentation

evgen::LightSource::MaterialPointFilter::MaterialPointFilter ( geo::GeometryCore const &  geom,
std::set< std::string > const &  materialNames 
)

Constructor: sets up the filter configuration.

Definition at line 574 of file LightSource_module.cc.

References fManager, and fNavigator.

576  : fManager(geom.ROOTGeoManager())
577  , fNavigator(fManager->AddNavigator())
578  , fMaterials(materialNames)
579  {
580  assert(fManager);
581  assert(fNavigator);
582  }
TGeoNavigator * fNavigator
Our own ROOT geometry navigator.
std::set< std::string > const & fMaterials
Names of materials to select.
TGeoManager * fManager
ROOT geometry manager.
evgen::LightSource::MaterialPointFilter::~MaterialPointFilter ( )

Definition at line 585 of file LightSource_module.cc.

References fManager, and fNavigator.

586  {
587  fManager->RemoveNavigator(fNavigator); // this deletes the navigator
588  fNavigator = nullptr;
589  } // LightSource::MaterialPointFilter::~MaterialPointFilter()
TGeoNavigator * fNavigator
Our own ROOT geometry navigator.
TGeoManager * fManager
ROOT geometry manager.

Member Function Documentation

bool evgen::LightSource::MaterialPointFilter::accept ( geo::Point_t const &  point)

Returns whether the specified point can be accepted.

Definition at line 599 of file LightSource_module.cc.

References fMaterials, materialAt(), and MF_LOG_TRACE.

Referenced by operator()(), and evgen::LightSource::Sample().

600  {
601  if (fMaterials.empty()) return true;
602  TGeoMaterial const* material = materialAt(point);
603  MF_LOG_TRACE("LightSource") << "Material at " << point << ": "
604  << (material ? material->GetName() : "not found");
605  return material ? (fMaterials.count(material->GetName()) > 0) : false;
606  } // LightSource::MaterialPointFilter::accept()
std::set< std::string > const & fMaterials
Names of materials to select.
#define MF_LOG_TRACE(id)
TGeoMaterial const * materialAt(geo::Point_t const &point)
Returns a pointer to the material of the volume at specified point.
TGeoMaterial const* evgen::LightSource::MaterialPointFilter::findMaterial ( std::string const &  name) const
private

Returns a pointer to the material with the specified name.

TGeoMaterial const * evgen::LightSource::MaterialPointFilter::materialAt ( geo::Point_t const &  point)
private

Returns a pointer to the material of the volume at specified point.

Definition at line 592 of file LightSource_module.cc.

References fNavigator.

Referenced by accept().

593  {
594  TGeoNode const* node = fNavigator->FindNode(point.X(), point.Y(), point.Z());
595  return node ? node->GetVolume()->GetMaterial() : nullptr;
596  } // LightSource::MaterialPointFilter::materialAt()
TGeoNavigator * fNavigator
Our own ROOT geometry navigator.
bool evgen::LightSource::MaterialPointFilter::operator() ( geo::Point_t const &  point)
inline

Returns whether the specified point can be accepted.

Definition at line 151 of file LightSource_module.cc.

References accept().

151 { return accept(point); }
bool accept(geo::Point_t const &point)
Returns whether the specified point can be accepted.

Member Data Documentation

TGeoManager* evgen::LightSource::MaterialPointFilter::fManager = nullptr
private

ROOT geometry manager.

Definition at line 155 of file LightSource_module.cc.

Referenced by MaterialPointFilter(), and ~MaterialPointFilter().

std::set<std::string> const& evgen::LightSource::MaterialPointFilter::fMaterials
private

Names of materials to select.

Definition at line 159 of file LightSource_module.cc.

Referenced by accept().

TGeoNavigator* evgen::LightSource::MaterialPointFilter::fNavigator = nullptr
private

Our own ROOT geometry navigator.

Definition at line 156 of file LightSource_module.cc.

Referenced by materialAt(), MaterialPointFilter(), and ~MaterialPointFilter().


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