Public Member Functions | Private Member Functions | Private Attributes | List of all members
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)
 

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 138 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 581 of file LightSource_module.cc.

583  : fManager(geom.ROOTGeoManager())
584  , fNavigator(fManager->AddNavigator())
585  , fMaterials(materialNames)
586  {
587  assert(fManager);
588  assert(fNavigator);
589  }
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 592 of file LightSource_module.cc.

593  {
594  fManager->RemoveNavigator(fNavigator); // this deletes the navigator
595  fNavigator = nullptr;
596  } // 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 608 of file LightSource_module.cc.

609  {
610  if (fMaterials.empty()) return true;
611  TGeoMaterial const* material = materialAt(point);
612  MF_LOG_TRACE("LightSource") << "Material at " << point << ": "
613  << (material ? material->GetName() : "not found");
614  return material ? (fMaterials.count(material->GetName()) > 0) : false;
615  } // 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 600 of file LightSource_module.cc.

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

Definition at line 150 of file LightSource_module.cc.

151  {
152  return accept(point);
153  }
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 157 of file LightSource_module.cc.

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

Names of materials to select.

Definition at line 161 of file LightSource_module.cc.

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

Our own ROOT geometry navigator.

Definition at line 158 of file LightSource_module.cc.


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