LArSoft  v10_04_05
Liquid Argon Software toolkit - https://larsoft.org/
phot::PDFastSimPAR Class Reference
Inheritance diagram for phot::PDFastSimPAR:
art::EDProducer art::detail::Producer art::detail::LegacyModule art::Modifier art::ModuleBase art::ProductRegistryHelper

Classes

struct  Config
 

Public Types

using Parameters = art::EDProducer::Table< Config >
 
using ModuleType = EDProducer
 
template<typename UserConfig , typename KeysToIgnore = void>
using Table = Modifier::Table< UserConfig, KeysToIgnore >
 

Public Member Functions

 PDFastSimPAR (Parameters const &config)
 
void produce (art::Event &) override
 
void doBeginJob (SharedResources const &resources)
 
void doEndJob ()
 
void doRespondToOpenInputFile (FileBlock const &fb)
 
void doRespondToCloseInputFile (FileBlock const &fb)
 
void doRespondToOpenOutputFiles (FileBlock const &fb)
 
void doRespondToCloseOutputFiles (FileBlock const &fb)
 
bool doBeginRun (RunPrincipal &rp, ModuleContext const &mc)
 
bool doEndRun (RunPrincipal &rp, ModuleContext const &mc)
 
bool doBeginSubRun (SubRunPrincipal &srp, ModuleContext const &mc)
 
bool doEndSubRun (SubRunPrincipal &srp, ModuleContext const &mc)
 
bool doEvent (EventPrincipal &ep, ModuleContext const &mc, std::atomic< std::size_t > &counts_run, std::atomic< std::size_t > &counts_passed, std::atomic< std::size_t > &counts_failed)
 
void fillProductDescriptions ()
 
void registerProducts (ProductDescriptions &productsToRegister)
 
ModuleDescription const & moduleDescription () const
 
void setModuleDescription (ModuleDescription const &)
 
std::array< std::vector< ProductInfo >, NumBranchTypes > const & getConsumables () const
 
void sortConsumables (std::string const &current_process_name)
 
std::unique_ptr< Worker > makeWorker (WorkerParams const &wp)
 
template<typename T , BranchType BT>
ViewToken< T > consumesView (InputTag const &tag)
 
template<typename T , BranchType BT>
ViewToken< T > mayConsumeView (InputTag const &tag)
 

Protected Member Functions

ConsumesCollector & consumesCollector ()
 
template<typename T , BranchType = InEvent>
ProductToken< T > consumes (InputTag const &)
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > consumesView (InputTag const &)
 
template<typename T , BranchType = InEvent>
void consumesMany ()
 
template<typename T , BranchType = InEvent>
ProductToken< T > mayConsume (InputTag const &)
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > mayConsumeView (InputTag const &)
 
template<typename T , BranchType = InEvent>
void mayConsumeMany ()
 

Private Member Functions

void detectedNumPhotons (std::vector< int > &DetectedNumPhotons, const std::vector< double > &OpDetVisibilities, const int NumPhotons) const
 
void AddOpDetBTR (std::vector< sim::OpDetBacktrackerRecord > &opbtr, std::vector< int > &ChannelMap, const sim::OpDetBacktrackerRecord &btr) const
 
bool isOpDetInSameTPC (geo::Point_t const &ScintPoint, geo::Point_t const &OpDetPoint) const
 
std::vector< geo::Point_topDetCenters () const
 

Private Attributes

std::unique_ptr< SemiAnalyticalModelfVisibilityModel
 
std::unique_ptr< PropagationTimeModelfPropTimeModel
 
CLHEP::HepRandomEngine & fPhotonEngine
 
std::unique_ptr< CLHEP::RandPoissonQ > fRandPoissPhot
 
CLHEP::HepRandomEngine & fScintTimeEngine
 
std::unique_ptr< ScintTimefScintTime
 
geo::GeometryCore const & fGeom
 
larg4::ISTPC fISTPC
 
const size_t fNOpChannels
 
const std::vector< geo::BoxBoundedGeofActiveVolumes
 
const int fNTPC
 
double fDriftDistance
 
const std::vector< geo::Point_tfOpDetCenter
 
const art::InputTag fSimTag
 
const bool fDoFastComponent
 
const bool fDoSlowComponent
 
const bool fDoReflectedLight
 
const bool fIncludeAnodeReflections
 
const bool fIncludePropTime
 
const bool fGeoPropTimeOnly
 
const bool fUseLitePhotons
 
const bool fOpaqueCathode
 
const bool fOnlyActiveVolume
 
const bool fOnlyOneCryostat
 
const bool fUseXeAbsorption
 

Detailed Description

Definition at line 77 of file PDFastSimPAR_module.cc.

Member Typedef Documentation

Definition at line 17 of file EDProducer.h.

template<typename UserConfig , typename KeysToIgnore = void>
using art::detail::Producer::Table = Modifier::Table<UserConfig, KeysToIgnore>
inherited

Definition at line 26 of file Producer.h.

Constructor & Destructor Documentation

phot::PDFastSimPAR::PDFastSimPAR ( Parameters const &  config)
explicit

Definition at line 183 of file PDFastSimPAR_module.cc.

References art::errors::Configuration, art::detail::EngineCreator::createEngine(), geo::TPCGeo::DriftDistance(), util::enumerate(), larg4::ISTPC::extractActiveLArVolume(), fActiveVolumes, fDoFastComponent, fDoReflectedLight, fDoSlowComponent, fDriftDistance, fGeom, fGeoPropTimeOnly, fIncludeAnodeReflections, fIncludePropTime, fISTPC, fNOpChannels, fNTPC, fOnlyActiveVolume, fOnlyOneCryostat, fOpaqueCathode, fOpDetCenter, fPhotonEngine, fPropTimeModel, fRandPoissPhot, fScintTime, fScintTimeEngine, fSimTag, fUseLitePhotons, fUseXeAbsorption, fVisibilityModel, fhicl::ParameterSet::get(), geo::GeometryCore::Ncryostats(), geo::GeometryCore::NOpDets(), geo::GeometryCore::NTPC(), opDetCenters(), and geo::GeometryCore::TPC().

184  : art::EDProducer{config}
185  , fPhotonEngine(art::ServiceHandle<rndm::NuRandomService>()->registerAndSeedEngine(
186  createEngine(0, "HepJamesRandom", "photon"),
187  "HepJamesRandom",
188  "photon",
189  config.get_PSet(),
190  "SeedPhoton"))
191  , fRandPoissPhot(std::make_unique<CLHEP::RandPoissonQ>(fPhotonEngine))
193  createEngine(0, "HepJamesRandom", "scinttime"),
194  "HepJamesRandom",
195  "scinttime",
196  config.get_PSet(),
197  "SeedScintTime"))
198  , fScintTime{art::make_tool<phot::ScintTime>(config().ScintTimeTool.get<fhicl::ParameterSet>())}
199  , fGeom(*(lar::providerFrom<geo::Geometry>()))
200  , fISTPC{fGeom}
203  , fNTPC(fGeom.NTPC())
205  , fSimTag(config().SimulationLabel())
206  , fDoFastComponent(config().DoFastComponent())
207  , fDoSlowComponent(config().DoSlowComponent())
208  , fDoReflectedLight(config().DoReflectedLight())
209  , fIncludeAnodeReflections(config().IncludeAnodeReflections())
210  , fIncludePropTime(config().IncludePropTime())
211  , fGeoPropTimeOnly(config().GeoPropTimeOnly())
212  , fUseLitePhotons(config().UseLitePhotons())
213  , fOpaqueCathode(config().OpaqueCathode())
214  , fOnlyActiveVolume(config().OnlyActiveVolume())
215  , fOnlyOneCryostat(config().OnlyOneCryostat())
216  , fUseXeAbsorption(config().UseXeAbsorption())
217  {
218  mf::LogInfo("PDFastSimPAR") << "Initializing PDFastSimPAR." << std::endl;
219 
220  // Parameterized Simulation
221  fhicl::ParameterSet VUVHitsParams = config().VUVHits.get<fhicl::ParameterSet>();
222  fhicl::ParameterSet VUVTimingParams;
223  fhicl::ParameterSet VISHitsParams;
224  fhicl::ParameterSet VISTimingParams;
225 
226  // Validate configuration options
227  if (fIncludePropTime &&
228  !config().VUVTiming.get_if_present<fhicl::ParameterSet>(VUVTimingParams)) {
230  << "Propagation time simulation requested, but VUVTiming not specified."
231  << "\n";
232  }
234  !config().VISHits.get_if_present<fhicl::ParameterSet>(VISHitsParams)) {
236  << "Reflected light or anode reflections simulation requested, but VisHits not specified."
237  << "\n";
238  }
240  !config().VISTiming.get_if_present<fhicl::ParameterSet>(VISTimingParams)) {
242  << "Reflected light propagation time simulation requested, but VISTiming not specified."
243  << "\n";
244  }
245  if (fGeom.Ncryostats() > 1U) {
246  if (fOnlyOneCryostat) {
247  mf::LogWarning("PDFastSimPAR")
248  << std::string(80, '=') << "\nA detector with " << fGeom.Ncryostats()
249  << " cryostats is configured"
250  << " , and semi-analytic model is requested for scintillation photon propagation."
251  << " THIS CONFIGURATION IS NOT SUPPORTED and it is open to bugs"
252  << " (e.g. scintillation may be detected only in cryostat #0)."
253  << "\nThis would be normally a fatal error, but it has been forcibly overridden."
254  << "\n"
255  << std::string(80, '=');
256  }
257  else {
259  << "Photon propagation via semi-analytic model is not supported yet"
260  << " on detectors with more than one cryostat.";
261  }
262  }
263 
264  // Initialise the Scintillation Time
265  fScintTime->initRand(fScintTimeEngine);
266 
267  // photo-detector visibility model (semi-analytical model)
268  fVisibilityModel = std::make_unique<SemiAnalyticalModel>(
269  VUVHitsParams, VISHitsParams, fDoReflectedLight, fIncludeAnodeReflections, fUseXeAbsorption);
270 
271  // propagation time model
272  if (fIncludePropTime)
273  fPropTimeModel = std::make_unique<PropagationTimeModel>(
274  VUVTimingParams, VISTimingParams, fScintTimeEngine, fDoReflectedLight, fGeoPropTimeOnly);
275 
276  {
277  auto log = mf::LogTrace("PDFastSimPAR") << "PDFastSimPAR: active volume boundaries from "
278  << fActiveVolumes.size() << " volumes:";
279  for (auto const& [iCryo, box] : ::ranges::views::enumerate(fActiveVolumes)) {
280  log << "\n - C:" << iCryo << ": " << box.Min() << " -- " << box.Max() << " cm";
281  }
282  }
283 
284  if (fUseLitePhotons) {
285  mf::LogInfo("PDFastSimPAR") << "Using Lite Photons";
286  produces<std::vector<sim::SimPhotonsLite>>();
287  produces<std::vector<sim::OpDetBacktrackerRecord>>();
288  if (fDoReflectedLight) {
289  mf::LogInfo("PDFastSimPAR") << "Storing Reflected Photons";
290  produces<std::vector<sim::SimPhotonsLite>>("Reflected");
291  produces<std::vector<sim::OpDetBacktrackerRecord>>("Reflected");
292  }
293  }
294  else {
295  mf::LogInfo("PDFastSimPAR") << "Using Sim Photons";
296  produces<std::vector<sim::SimPhotons>>();
297  if (fDoReflectedLight) {
298  mf::LogInfo("PDFastSimPAR") << "Storing Reflected Photons";
299  produces<std::vector<sim::SimPhotons>>("Reflected");
300  }
301  }
302 
303  // determine drift distance
305  // for multiple TPCs, use second TPC to skip small volume at edges of detector (DUNE)
306  if (fNTPC > 1 && fDriftDistance < 50)
307  fDriftDistance = fGeom.TPC(geo::TPCID{0, 1}).DriftDistance();
308 
309  mf::LogInfo("PDFastSimPAR") << "PDFastSimPAR Initialization finish.\n"
310  << "Simulate using semi-analytic model for number of hits."
311  << std::endl;
312  }
const std::vector< geo::BoxBoundedGeo > fActiveVolumes
base_engine_t & createEngine(seed_t seed)
static std::vector< geo::BoxBoundedGeo > extractActiveLArVolume(geo::GeometryCore const &geom)
Definition: ISTPC.cxx:46
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
std::unique_ptr< PropagationTimeModel > fPropTimeModel
unsigned int NTPC(CryostatID const &cryoid=details::cryostat_zero) const
Returns the total number of TPCs in the specified cryostat.
Definition: GeometryCore.h:416
std::unique_ptr< ScintTime > fScintTime
unsigned int Ncryostats() const
Returns the number of cryostats in the detector.
Definition: GeometryCore.h:303
auto enumerate(Iterables &&...iterables)
Range-for loop helper tracking the number of iteration.
Definition: enumerate.h:49
std::unique_ptr< CLHEP::RandPoissonQ > fRandPoissPhot
CLHEP::HepRandomEngine & fScintTimeEngine
const std::vector< geo::Point_t > fOpDetCenter
std::unique_ptr< SemiAnalyticalModel > fVisibilityModel
T get(std::string const &key) const
Definition: ParameterSet.h:314
The data type to uniquely identify a TPC.
Definition: geo_types.h:306
const art::InputTag fSimTag
unsigned int NOpDets() const
Number of OpDets in the whole detector.
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
Definition: Exception.h:66
CLHEP::HepRandomEngine & fPhotonEngine
double DriftDistance() const
Drift distance is defined as the distance between the anode and the cathode, in centimeters.
Definition: TPCGeo.cxx:165
std::vector< geo::Point_t > opDetCenters() const
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
MaybeLogger_< ELseverityLevel::ELsev_success, true > LogTrace
TPCGeo const & TPC(TPCID const &tpcid=details::tpc_zero) const
Returns the specified TPC.
Definition: GeometryCore.h:448
const bool fIncludeAnodeReflections
geo::GeometryCore const & fGeom

Member Function Documentation

void phot::PDFastSimPAR::AddOpDetBTR ( std::vector< sim::OpDetBacktrackerRecord > &  opbtr,
std::vector< int > &  ChannelMap,
const sim::OpDetBacktrackerRecord btr 
) const
private

Definition at line 551 of file PDFastSimPAR_module.cc.

References sim::OpDetBacktrackerRecord::OpDetNum(), and sim::OpDetBacktrackerRecord::timePDclockSDPsMap().

Referenced by produce().

554  {
555  int iChan = btr.OpDetNum();
556  if (ChannelMap[iChan] < 0) {
557  ChannelMap[iChan] = opbtr.size();
558  opbtr.emplace_back(std::move(btr));
559  }
560  else {
561  size_t idtest = ChannelMap[iChan];
562  auto const& timePDclockSDPsMap = btr.timePDclockSDPsMap();
563  for (auto const& timePDclockSDP : timePDclockSDPsMap) {
564  for (auto const& sdp : timePDclockSDP.second) {
565  double xyz[3] = {sdp.x, sdp.y, sdp.z};
566  opbtr.at(idtest).AddScintillationPhotons(
567  sdp.trackID, timePDclockSDP.first, sdp.numPhotons, xyz, sdp.energy);
568  }
569  }
570  }
571  }
int OpDetNum() const
Returns the readout Optical Detector this object describes.
timePDclockSDPs_t const & timePDclockSDPsMap() const
Returns all the deposited energy information as stored.
template<typename T , BranchType BT>
ProductToken< T > art::ModuleBase::consumes ( InputTag const &  tag)
protectedinherited

Definition at line 61 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::consumes().

62  {
63  return collector_.consumes<T, BT>(tag);
64  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
ProductToken< T > consumes(InputTag const &)
ConsumesCollector & art::ModuleBase::consumesCollector ( )
protectedinherited

Definition at line 57 of file ModuleBase.cc.

References art::ModuleBase::collector_.

58  {
59  return collector_;
60  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
template<typename T , BranchType BT>
void art::ModuleBase::consumesMany ( )
protectedinherited

Definition at line 75 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::consumesMany().

76  {
77  collector_.consumesMany<T, BT>();
78  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
template<typename Element , BranchType = InEvent>
ViewToken<Element> art::ModuleBase::consumesView ( InputTag const &  )
protectedinherited
template<typename T , BranchType BT>
ViewToken<T> art::ModuleBase::consumesView ( InputTag const &  tag)
inherited

Definition at line 68 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::consumesView().

69  {
70  return collector_.consumesView<T, BT>(tag);
71  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
ViewToken< Element > consumesView(InputTag const &)
void phot::PDFastSimPAR::detectedNumPhotons ( std::vector< int > &  DetectedNumPhotons,
const std::vector< double > &  OpDetVisibilities,
const int  NumPhotons 
) const
private

Definition at line 575 of file PDFastSimPAR_module.cc.

References fRandPoissPhot.

Referenced by produce().

578  {
579  for (size_t i = 0; i < OpDetVisibilities.size(); ++i) {
580  DetectedNumPhotons[i] = fRandPoissPhot->fire(OpDetVisibilities[i] * NumPhotons);
581  }
582  }
std::unique_ptr< CLHEP::RandPoissonQ > fRandPoissPhot
void art::detail::Producer::doBeginJob ( SharedResources const &  resources)
inherited

Definition at line 22 of file Producer.cc.

References art::detail::Producer::beginJobWithFrame(), and art::detail::Producer::setupQueues().

23  {
24  setupQueues(resources);
25  ProcessingFrame const frame{ScheduleID{}};
26  beginJobWithFrame(frame);
27  }
virtual void setupQueues(SharedResources const &)=0
virtual void beginJobWithFrame(ProcessingFrame const &)=0
bool art::detail::Producer::doBeginRun ( RunPrincipal rp,
ModuleContext const &  mc 
)
inherited

Definition at line 65 of file Producer.cc.

References art::detail::Producer::beginRunWithFrame(), art::RangeSet::forRun(), art::RunPrincipal::makeRun(), r, art::RunPrincipal::runID(), and art::ModuleContext::scheduleID().

66  {
67  auto r = rp.makeRun(mc, RangeSet::forRun(rp.runID()));
68  ProcessingFrame const frame{mc.scheduleID()};
69  beginRunWithFrame(r, frame);
70  r.commitProducts();
71  return true;
72  }
TRandom r
Definition: spectrum.C:23
virtual void beginRunWithFrame(Run &, ProcessingFrame const &)=0
static RangeSet forRun(RunID)
Definition: RangeSet.cc:51
bool art::detail::Producer::doBeginSubRun ( SubRunPrincipal srp,
ModuleContext const &  mc 
)
inherited

Definition at line 85 of file Producer.cc.

References art::detail::Producer::beginSubRunWithFrame(), art::RangeSet::forSubRun(), art::SubRunPrincipal::makeSubRun(), art::ModuleContext::scheduleID(), and art::SubRunPrincipal::subRunID().

86  {
87  auto sr = srp.makeSubRun(mc, RangeSet::forSubRun(srp.subRunID()));
88  ProcessingFrame const frame{mc.scheduleID()};
89  beginSubRunWithFrame(sr, frame);
90  sr.commitProducts();
91  return true;
92  }
virtual void beginSubRunWithFrame(SubRun &, ProcessingFrame const &)=0
static RangeSet forSubRun(SubRunID)
Definition: RangeSet.cc:57
void art::detail::Producer::doEndJob ( )
inherited

Definition at line 30 of file Producer.cc.

References art::detail::Producer::endJobWithFrame().

31  {
32  ProcessingFrame const frame{ScheduleID{}};
33  endJobWithFrame(frame);
34  }
virtual void endJobWithFrame(ProcessingFrame const &)=0
bool art::detail::Producer::doEndRun ( RunPrincipal rp,
ModuleContext const &  mc 
)
inherited

Definition at line 75 of file Producer.cc.

References art::detail::Producer::endRunWithFrame(), art::RunPrincipal::makeRun(), r, art::ModuleContext::scheduleID(), and art::Principal::seenRanges().

76  {
77  auto r = rp.makeRun(mc, rp.seenRanges());
78  ProcessingFrame const frame{mc.scheduleID()};
79  endRunWithFrame(r, frame);
80  r.commitProducts();
81  return true;
82  }
TRandom r
Definition: spectrum.C:23
virtual void endRunWithFrame(Run &, ProcessingFrame const &)=0
bool art::detail::Producer::doEndSubRun ( SubRunPrincipal srp,
ModuleContext const &  mc 
)
inherited

Definition at line 95 of file Producer.cc.

References art::detail::Producer::endSubRunWithFrame(), art::SubRunPrincipal::makeSubRun(), art::ModuleContext::scheduleID(), and art::Principal::seenRanges().

96  {
97  auto sr = srp.makeSubRun(mc, srp.seenRanges());
98  ProcessingFrame const frame{mc.scheduleID()};
99  endSubRunWithFrame(sr, frame);
100  sr.commitProducts();
101  return true;
102  }
virtual void endSubRunWithFrame(SubRun &, ProcessingFrame const &)=0
bool art::detail::Producer::doEvent ( EventPrincipal ep,
ModuleContext const &  mc,
std::atomic< std::size_t > &  counts_run,
std::atomic< std::size_t > &  counts_passed,
std::atomic< std::size_t > &  counts_failed 
)
inherited

Definition at line 105 of file Producer.cc.

References art::detail::Producer::checkPutProducts_, e, art::EventPrincipal::makeEvent(), art::detail::Producer::produceWithFrame(), and art::ModuleContext::scheduleID().

110  {
111  auto e = ep.makeEvent(mc);
112  ++counts_run;
113  ProcessingFrame const frame{mc.scheduleID()};
114  produceWithFrame(e, frame);
115  e.commitProducts(checkPutProducts_, &expectedProducts<InEvent>());
116  ++counts_passed;
117  return true;
118  }
bool const checkPutProducts_
Definition: Producer.h:70
Float_t e
Definition: plot.C:35
virtual void produceWithFrame(Event &, ProcessingFrame const &)=0
void art::detail::Producer::doRespondToCloseInputFile ( FileBlock const &  fb)
inherited

Definition at line 44 of file Producer.cc.

References art::detail::Producer::respondToCloseInputFileWithFrame().

45  {
46  ProcessingFrame const frame{ScheduleID{}};
48  }
virtual void respondToCloseInputFileWithFrame(FileBlock const &, ProcessingFrame const &)=0
TFile fb("Li6.root")
void art::detail::Producer::doRespondToCloseOutputFiles ( FileBlock const &  fb)
inherited

Definition at line 58 of file Producer.cc.

References art::detail::Producer::respondToCloseOutputFilesWithFrame().

59  {
60  ProcessingFrame const frame{ScheduleID{}};
62  }
virtual void respondToCloseOutputFilesWithFrame(FileBlock const &, ProcessingFrame const &)=0
TFile fb("Li6.root")
void art::detail::Producer::doRespondToOpenInputFile ( FileBlock const &  fb)
inherited

Definition at line 37 of file Producer.cc.

References art::detail::Producer::respondToOpenInputFileWithFrame().

38  {
39  ProcessingFrame const frame{ScheduleID{}};
41  }
virtual void respondToOpenInputFileWithFrame(FileBlock const &, ProcessingFrame const &)=0
TFile fb("Li6.root")
void art::detail::Producer::doRespondToOpenOutputFiles ( FileBlock const &  fb)
inherited

Definition at line 51 of file Producer.cc.

References art::detail::Producer::respondToOpenOutputFilesWithFrame().

52  {
53  ProcessingFrame const frame{ScheduleID{}};
55  }
virtual void respondToOpenOutputFilesWithFrame(FileBlock const &, ProcessingFrame const &)=0
TFile fb("Li6.root")
void art::Modifier::fillProductDescriptions ( )
inherited

Definition at line 10 of file Modifier.cc.

References art::ProductRegistryHelper::fillDescriptions(), and art::ModuleBase::moduleDescription().

11  {
13  }
void fillDescriptions(ModuleDescription const &md)
ModuleDescription const & moduleDescription() const
Definition: ModuleBase.cc:13
std::array< std::vector< ProductInfo >, NumBranchTypes > const & art::ModuleBase::getConsumables ( ) const
inherited

Definition at line 43 of file ModuleBase.cc.

References art::ModuleBase::collector_, and art::ConsumesCollector::getConsumables().

44  {
45  return collector_.getConsumables();
46  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
std::array< std::vector< ProductInfo >, NumBranchTypes > const & getConsumables() const
bool phot::PDFastSimPAR::isOpDetInSameTPC ( geo::Point_t const &  ScintPoint,
geo::Point_t const &  OpDetPoint 
) const
private

Definition at line 586 of file PDFastSimPAR_module.cc.

References util::abs(), fDriftDistance, and fNTPC.

Referenced by produce().

588  {
589  // check optical channel is in same TPC as scintillation light, if not doesn't see light
590  // temporary method, needs to be replaced with geometry service
591  // working for SBND, uBooNE, DUNE HD 1x2x6, DUNE HD 10kt and DUNE VD subset
592 
593  // special case for SBND = 2 TPCs
594  // check x coordinate has same sign or is close to zero
595  if (fNTPC == 2 && ((ScintPoint.X() < 0.) != (OpDetPoint.X() < 0.)) &&
596  std::abs(OpDetPoint.X()) > 10.) {
597  return false;
598  }
599 
600  // special case for DUNE-HD 10kt = 300 TPCs
601  // check whether distance in drift direction > 1 drift distance
602  if (fNTPC == 300 && std::abs(ScintPoint.X() - OpDetPoint.X()) > fDriftDistance) {
603  return false;
604  }
605  // not needed for DUNE HD 1x2x6, DUNE VD subset, uBooNE
606 
607  return true;
608  }
constexpr auto abs(T v)
Returns the absolute value of the argument.
std::unique_ptr< Worker > art::ModuleBase::makeWorker ( WorkerParams const &  wp)
inherited

Definition at line 37 of file ModuleBase.cc.

References art::ModuleBase::doMakeWorker(), and art::NumBranchTypes.

38  {
39  return doMakeWorker(wp);
40  }
virtual std::unique_ptr< Worker > doMakeWorker(WorkerParams const &wp)=0
template<typename T , BranchType BT>
ProductToken< T > art::ModuleBase::mayConsume ( InputTag const &  tag)
protectedinherited

Definition at line 82 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::mayConsume().

83  {
84  return collector_.mayConsume<T, BT>(tag);
85  }
ProductToken< T > mayConsume(InputTag const &)
ConsumesCollector collector_
Definition: ModuleBase.h:56
template<typename T , BranchType BT>
void art::ModuleBase::mayConsumeMany ( )
protectedinherited

Definition at line 96 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::mayConsumeMany().

97  {
98  collector_.mayConsumeMany<T, BT>();
99  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
template<typename Element , BranchType = InEvent>
ViewToken<Element> art::ModuleBase::mayConsumeView ( InputTag const &  )
protectedinherited
template<typename T , BranchType BT>
ViewToken<T> art::ModuleBase::mayConsumeView ( InputTag const &  tag)
inherited

Definition at line 89 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::mayConsumeView().

90  {
91  return collector_.mayConsumeView<T, BT>(tag);
92  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
ViewToken< Element > mayConsumeView(InputTag const &)
ModuleDescription const & art::ModuleBase::moduleDescription ( ) const
inherited

Definition at line 13 of file ModuleBase.cc.

References art::errors::LogicError.

Referenced by art::OutputModule::doRespondToOpenInputFile(), art::OutputModule::doWriteEvent(), art::Modifier::fillProductDescriptions(), art::OutputModule::makePlugins_(), art::OutputWorker::OutputWorker(), reco::shower::LArPandoraModularShowerCreation::produce(), art::Modifier::registerProducts(), and art::OutputModule::registerProducts().

14  {
15  if (md_.has_value()) {
16  return *md_;
17  }
18 
20  "There was an error while calling moduleDescription().\n"}
21  << "The moduleDescription() base-class member function cannot be called\n"
22  "during module construction. To determine which module is "
23  "responsible\n"
24  "for calling it, find the '<module type>:<module "
25  "label>@Construction'\n"
26  "tag in the message prefix above. Please contact artists@fnal.gov\n"
27  "for guidance.\n";
28  }
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
Definition: Exception.h:66
std::optional< ModuleDescription > md_
Definition: ModuleBase.h:55
std::vector< geo::Point_t > phot::PDFastSimPAR::opDetCenters ( ) const
private

Definition at line 610 of file PDFastSimPAR_module.cc.

References DEFINE_ART_MODULE, fGeom, fNOpChannels, geo::OpDetGeo::GetCenter(), and geo::GeometryCore::OpDetGeoFromOpDet().

Referenced by PDFastSimPAR().

611  {
612  std::vector<geo::Point_t> opDetCenter;
613  for (size_t const i : ::ranges::views::ints(size_t(0), fNOpChannels)) {
614  geo::OpDetGeo const& opDet = fGeom.OpDetGeoFromOpDet(i);
615  opDetCenter.push_back(opDet.GetCenter());
616  }
617  return opDetCenter;
618  }
Point_t const & GetCenter() const
Definition: OpDetGeo.h:71
geo::GeometryCore const & fGeom
OpDetGeo const & OpDetGeoFromOpDet(unsigned int OpDet) const
Returns the geo::OpDetGeo object for the given detector number.
void phot::PDFastSimPAR::produce ( art::Event event)
overridevirtual

Implements art::EDProducer.

Definition at line 315 of file PDFastSimPAR_module.cc.

References AddOpDetBTR(), sim::OpDetBacktrackerRecord::AddScintillationPhotons(), detectedNumPhotons(), util::end(), sim::OnePhoton::Energy, fDoFastComponent, fDoReflectedLight, fDoSlowComponent, fIncludeAnodeReflections, fIncludePropTime, fISTPC, fNOpChannels, fOnlyActiveVolume, fOpaqueCathode, fOpDetCenter, fPropTimeModel, fScintTime, fSimTag, fUseLitePhotons, fVisibilityModel, art::ProductRetriever::getByLabel(), sim::OnePhoton::InitialPosition, isOpDetInSameTPC(), larg4::ISTPC::isScintInActiveVolume(), sim::OnePhoton::MotherTrackID, n, sim::OnePhoton::SetInSD, and sim::OnePhoton::Time.

316  {
317  mf::LogTrace("PDFastSimPAR") << "PDFastSimPAR Module Producer"
318  << "EventID: " << event.event();
319 
320  std::vector<int> PDChannelToSOCMapDirect(fNOpChannels, -1); // Where each OpChan is.
321  std::vector<int> PDChannelToSOCMapReflect(fNOpChannels, -1); // Where each OpChan is.
322 
323  // SimPhotonsLite
324  auto phlit = std::make_unique<std::vector<sim::SimPhotonsLite>>();
325  auto opbtr = std::make_unique<std::vector<sim::OpDetBacktrackerRecord>>();
326  auto phlit_ref = std::make_unique<std::vector<sim::SimPhotonsLite>>();
327  auto opbtr_ref = std::make_unique<std::vector<sim::OpDetBacktrackerRecord>>();
328  auto& dir_phlitcol(*phlit);
329  auto& ref_phlitcol(*phlit_ref);
330  // SimPhotons
331  auto phot = std::make_unique<std::vector<sim::SimPhotons>>();
332  auto phot_ref = std::make_unique<std::vector<sim::SimPhotons>>();
333  auto& dir_photcol(*phot);
334  auto& ref_photcol(*phot_ref);
335  if (fUseLitePhotons) {
336  dir_phlitcol.resize(fNOpChannels);
337  ref_phlitcol.resize(fNOpChannels);
338  for (unsigned int i = 0; i < fNOpChannels; i++) {
339  dir_phlitcol[i].OpChannel = i;
340  ref_phlitcol[i].OpChannel = i;
341  }
342  }
343  else { // SimPhotons
344  dir_photcol.resize(fNOpChannels);
345  ref_photcol.resize(fNOpChannels);
346  for (unsigned int i = 0; i < fNOpChannels; i++) {
347  dir_photcol[i].fOpChannel = i;
348  ref_photcol[i].fOpChannel = i;
349  }
350  }
351 
353  if (!event.getByLabel(fSimTag, edepHandle)) {
354  mf::LogError("PDFastSimPAR") << "PDFastSimPAR Module Cannot getByLabel: " << fSimTag;
355  return;
356  }
357 
358  auto const& edeps = edepHandle;
359 
360  int num_points = 0;
361  int num_fastph = 0;
362  int num_slowph = 0;
363  int num_fastdp = 0;
364  int num_slowdp = 0;
365 
366  for (auto const& edepi : *edeps) {
367  num_points++;
368 
369  int nphot_fast = edepi.NumFPhotons();
370  int nphot_slow = edepi.NumSPhotons();
371 
372  num_fastph += nphot_fast;
373  num_slowph += nphot_slow;
374 
375  if (!((nphot_fast > 0 && fDoFastComponent) || (nphot_slow > 0 && fDoSlowComponent))) continue;
376 
377  int trackID = edepi.TrackID();
378  int nphot = edepi.NumPhotons();
379  double edeposit = edepi.Energy() / nphot;
380  double pos[3] = {edepi.MidPointX(), edepi.MidPointY(), edepi.MidPointZ()};
381  geo::Point_t const ScintPoint = {pos[0], pos[1], pos[2]};
382 
383  if (fOnlyActiveVolume && !fISTPC.isScintInActiveVolume(ScintPoint)) continue;
384 
385  // direct light
386  std::vector<int> DetectedNumFast(fNOpChannels);
387  std::vector<int> DetectedNumSlow(fNOpChannels);
388 
389  std::vector<double> OpDetVisibilities;
390  fVisibilityModel->detectedDirectVisibilities(OpDetVisibilities, ScintPoint);
391  detectedNumPhotons(DetectedNumFast, OpDetVisibilities, nphot_fast);
392  detectedNumPhotons(DetectedNumSlow, OpDetVisibilities, nphot_slow);
393 
395  std::vector<int> AnodeDetectedNumFast(fNOpChannels);
396  std::vector<int> AnodeDetectedNumSlow(fNOpChannels);
397 
398  std::vector<double> OpDetVisibilitiesAnode;
399  fVisibilityModel->detectedReflectedVisibilities(OpDetVisibilitiesAnode, ScintPoint, true);
400  detectedNumPhotons(AnodeDetectedNumFast, OpDetVisibilitiesAnode, nphot_fast);
401  detectedNumPhotons(AnodeDetectedNumSlow, OpDetVisibilitiesAnode, nphot_slow);
402 
403  // add to existing count
404  for (size_t i = 0; i < AnodeDetectedNumFast.size(); ++i) {
405  DetectedNumFast[i] += AnodeDetectedNumFast[i];
406  }
407  for (size_t i = 0; i < AnodeDetectedNumSlow.size(); ++i) {
408  DetectedNumSlow[i] += AnodeDetectedNumSlow[i];
409  }
410  }
411 
412  // reflected light, if enabled
413  std::vector<int> ReflDetectedNumFast(fNOpChannels);
414  std::vector<int> ReflDetectedNumSlow(fNOpChannels);
415  if (fDoReflectedLight) {
416  std::vector<double> OpDetVisibilitiesRefl;
417  fVisibilityModel->detectedReflectedVisibilities(OpDetVisibilitiesRefl, ScintPoint, false);
418  detectedNumPhotons(ReflDetectedNumFast, OpDetVisibilitiesRefl, nphot_fast);
419  detectedNumPhotons(ReflDetectedNumSlow, OpDetVisibilitiesRefl, nphot_slow);
420  }
421 
422  // loop through direct photons then reflected photons cases
423  size_t DoReflected = (fDoReflectedLight) ? 1 : 0;
424  for (size_t Reflected = 0; Reflected <= DoReflected; ++Reflected) {
425  for (size_t channel = 0; channel < fNOpChannels; channel++) {
426 
427  if (fOpaqueCathode && !isOpDetInSameTPC(ScintPoint, fOpDetCenter[channel])) continue;
428 
429  int ndetected_fast = DetectedNumFast[channel];
430  int ndetected_slow = DetectedNumSlow[channel];
431  if (Reflected) {
432  ndetected_fast = ReflDetectedNumFast[channel];
433  ndetected_slow = ReflDetectedNumSlow[channel];
434  }
435  if (!((ndetected_fast > 0 && fDoFastComponent) ||
436  (ndetected_slow > 0 && fDoSlowComponent)))
437  continue;
438 
439  // calculate propagation time, does not matter whether fast or slow photon
440  std::vector<double> transport_time;
441  if (fIncludePropTime) {
442  transport_time.resize(ndetected_fast + ndetected_slow);
443  fPropTimeModel->propagationTime(transport_time, ScintPoint, channel, Reflected);
444  }
445 
446  // SimPhotonsLite case
447  if (fUseLitePhotons) {
448  sim::OpDetBacktrackerRecord tmpbtr(channel);
449  if (ndetected_fast > 0 && fDoFastComponent) {
450  int n = ndetected_fast;
451  num_fastdp += n;
452  for (int i = 0; i < n; ++i) {
453  // calculates the time at which the photon was produced
454  double dtime = edepi.StartT() + fScintTime->fastScintTime();
455  if (fIncludePropTime) dtime += transport_time[i];
456  int time = static_cast<int>(std::round(dtime));
457  if (Reflected)
458  ++ref_phlitcol[channel].DetectedPhotons[time];
459  else
460  ++dir_phlitcol[channel].DetectedPhotons[time];
461  tmpbtr.AddScintillationPhotons(trackID, time, 1, pos, edeposit);
462  }
463  }
464  if (ndetected_slow > 0 && fDoSlowComponent) {
465  int n = ndetected_slow;
466  num_slowdp += n;
467  for (int i = 0; i < n; ++i) {
468  double dtime = edepi.StartT() + fScintTime->slowScintTime();
469  if (fIncludePropTime) dtime += transport_time[ndetected_fast + i];
470  int time = static_cast<int>(std::round(dtime));
471  if (Reflected)
472  ++ref_phlitcol[channel].DetectedPhotons[time];
473  else
474  ++dir_phlitcol[channel].DetectedPhotons[time];
475  tmpbtr.AddScintillationPhotons(trackID, time, 1, pos, edeposit);
476  }
477  }
478  if (Reflected)
479  AddOpDetBTR(*opbtr_ref, PDChannelToSOCMapReflect, tmpbtr);
480  else
481  AddOpDetBTR(*opbtr, PDChannelToSOCMapDirect, tmpbtr);
482  }
483  // SimPhotons case
484  else {
485  sim::OnePhoton photon;
486  photon.SetInSD = false;
487  photon.InitialPosition = edepi.End();
488  photon.MotherTrackID = edepi.TrackID();
489  if (Reflected)
490  photon.Energy = 2.9 * CLHEP::eV; // 430 nm
491  else
492  photon.Energy = 9.7 * CLHEP::eV; // 128 nm
493  // TODO: un-hardcode and add another energy for Xe scintillation
494  if (ndetected_fast > 0 && fDoFastComponent) {
495  int n = ndetected_fast;
496  num_fastdp += n;
497  for (int i = 0; i < n; ++i) {
498  // calculates the time at which the photon was produced
499  double dtime = edepi.StartT() + fScintTime->fastScintTime();
500  if (fIncludePropTime) dtime += transport_time[i];
501  int time = static_cast<int>(std::round(dtime));
502  photon.Time = time;
503  if (Reflected)
504  ref_photcol[channel].insert(ref_photcol[channel].end(), 1, photon);
505  else
506  dir_photcol[channel].insert(dir_photcol[channel].end(), 1, photon);
507  }
508  }
509  if (ndetected_slow > 0 && fDoSlowComponent) {
510  int n = ndetected_slow;
511  num_slowdp += n;
512  for (int i = 0; i < n; ++i) {
513  double dtime = edepi.StartT() + fScintTime->slowScintTime();
514  if (fIncludePropTime) dtime += transport_time[ndetected_fast + i];
515  int time = static_cast<int>(std::round(dtime));
516  photon.Time = time;
517  if (Reflected)
518  ref_photcol[channel].insert(ref_photcol[channel].end(), 1, photon);
519  else
520  dir_photcol[channel].insert(dir_photcol[channel].end(), 1, photon);
521  }
522  }
523  }
524  }
525  }
526  }
527 
528  mf::LogTrace("PDFastSimPAR") << "Total points: " << num_points
529  << ", total fast photons: " << num_fastph
530  << ", total slow photons: " << num_slowph
531  << "\ndetected fast photons: " << num_fastdp
532  << ", detected slow photons: " << num_slowdp;
533 
534  if (fUseLitePhotons) {
535  event.put(move(phlit));
536  event.put(move(opbtr));
537  if (fDoReflectedLight) {
538  event.put(move(phlit_ref), "Reflected");
539  event.put(move(opbtr_ref), "Reflected");
540  }
541  }
542  else {
543  event.put(move(phot));
544  if (fDoReflectedLight) { event.put(move(phot_ref), "Reflected"); }
545  }
546 
547  return;
548  }
bool isOpDetInSameTPC(geo::Point_t const &ScintPoint, geo::Point_t const &OpDetPoint) const
void AddOpDetBTR(std::vector< sim::OpDetBacktrackerRecord > &opbtr, std::vector< int > &ChannelMap, const sim::OpDetBacktrackerRecord &btr) const
std::unique_ptr< PropagationTimeModel > fPropTimeModel
All information of a photon entering the sensitive optical detector volume.
Definition: SimPhotons.h:60
std::unique_ptr< ScintTime > fScintTime
MaybeLogger_< ELseverityLevel::ELsev_error, false > LogError
Energy deposited on a readout Optical Detector by simulated tracks.
geo::Point_t InitialPosition
Scintillation position in world coordinates [cm].
Definition: SimPhotons.h:63
decltype(auto) constexpr end(T &&obj)
ADL-aware version of std::end.
Definition: StdUtils.h:77
const std::vector< geo::Point_t > fOpDetCenter
std::unique_ptr< SemiAnalyticalModel > fVisibilityModel
const art::InputTag fSimTag
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:180
General LArSoft Utilities.
bool getByLabel(std::string const &label, std::string const &instance, Handle< PROD > &result) const
bool SetInSD
Whether the photon reaches the sensitive detector.
Definition: SimPhotons.h:84
void detectedNumPhotons(std::vector< int > &DetectedNumPhotons, const std::vector< double > &OpDetVisibilities, const int NumPhotons) const
Char_t n[5]
MaybeLogger_< ELseverityLevel::ELsev_success, true > LogTrace
float Energy
Scintillation photon energy [GeV].
Definition: SimPhotons.h:78
bool isScintInActiveVolume(geo::Point_t const &ScintPoint)
Definition: ISTPC.cxx:37
const bool fIncludeAnodeReflections
int MotherTrackID
ID of the GEANT4 track causing the scintillation.
Definition: SimPhotons.h:81
void art::Modifier::registerProducts ( ProductDescriptions productsToRegister)
inherited

Definition at line 16 of file Modifier.cc.

References art::ModuleBase::moduleDescription(), and art::ProductRegistryHelper::registerProducts().

17  {
18  ProductRegistryHelper::registerProducts(productsToRegister,
20  }
void registerProducts(ProductDescriptions &productsToRegister, ModuleDescription const &md)
ModuleDescription const & moduleDescription() const
Definition: ModuleBase.cc:13
void art::ModuleBase::setModuleDescription ( ModuleDescription const &  md)
inherited

Definition at line 31 of file ModuleBase.cc.

References art::ModuleBase::md_.

32  {
33  md_ = md;
34  }
std::optional< ModuleDescription > md_
Definition: ModuleBase.h:55
void art::ModuleBase::sortConsumables ( std::string const &  current_process_name)
inherited

Definition at line 49 of file ModuleBase.cc.

References art::ModuleBase::collector_, and art::ConsumesCollector::sortConsumables().

50  {
51  // Now that we know we have seen all the consumes declarations,
52  // sort the results for fast lookup later.
53  collector_.sortConsumables(current_process_name);
54  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
void sortConsumables(std::string const &current_process_name)

Member Data Documentation

const std::vector<geo::BoxBoundedGeo> phot::PDFastSimPAR::fActiveVolumes
private

Definition at line 162 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR().

const bool phot::PDFastSimPAR::fDoFastComponent
private

Definition at line 169 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

const bool phot::PDFastSimPAR::fDoReflectedLight
private

Definition at line 171 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

const bool phot::PDFastSimPAR::fDoSlowComponent
private

Definition at line 170 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

double phot::PDFastSimPAR::fDriftDistance
private

Definition at line 164 of file PDFastSimPAR_module.cc.

Referenced by isOpDetInSameTPC(), and PDFastSimPAR().

geo::GeometryCore const& phot::PDFastSimPAR::fGeom
private

Definition at line 159 of file PDFastSimPAR_module.cc.

Referenced by opDetCenters(), and PDFastSimPAR().

const bool phot::PDFastSimPAR::fGeoPropTimeOnly
private

Definition at line 174 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR().

const bool phot::PDFastSimPAR::fIncludeAnodeReflections
private

Definition at line 172 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

const bool phot::PDFastSimPAR::fIncludePropTime
private

Definition at line 173 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

larg4::ISTPC phot::PDFastSimPAR::fISTPC
private

Definition at line 160 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

const size_t phot::PDFastSimPAR::fNOpChannels
private

Definition at line 161 of file PDFastSimPAR_module.cc.

Referenced by opDetCenters(), PDFastSimPAR(), and produce().

const int phot::PDFastSimPAR::fNTPC
private

Definition at line 163 of file PDFastSimPAR_module.cc.

Referenced by isOpDetInSameTPC(), and PDFastSimPAR().

const bool phot::PDFastSimPAR::fOnlyActiveVolume
private

Definition at line 177 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

const bool phot::PDFastSimPAR::fOnlyOneCryostat
private

Definition at line 178 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR().

const bool phot::PDFastSimPAR::fOpaqueCathode
private

Definition at line 176 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

const std::vector<geo::Point_t> phot::PDFastSimPAR::fOpDetCenter
private

Definition at line 165 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

CLHEP::HepRandomEngine& phot::PDFastSimPAR::fPhotonEngine
private

Definition at line 153 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR().

std::unique_ptr<PropagationTimeModel> phot::PDFastSimPAR::fPropTimeModel
private

Definition at line 150 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

std::unique_ptr<CLHEP::RandPoissonQ> phot::PDFastSimPAR::fRandPoissPhot
private

Definition at line 154 of file PDFastSimPAR_module.cc.

Referenced by detectedNumPhotons(), and PDFastSimPAR().

std::unique_ptr<ScintTime> phot::PDFastSimPAR::fScintTime
private

Definition at line 156 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

CLHEP::HepRandomEngine& phot::PDFastSimPAR::fScintTimeEngine
private

Definition at line 155 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR().

const art::InputTag phot::PDFastSimPAR::fSimTag
private

Definition at line 168 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

const bool phot::PDFastSimPAR::fUseLitePhotons
private

Definition at line 175 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

const bool phot::PDFastSimPAR::fUseXeAbsorption
private

Definition at line 179 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR().

std::unique_ptr<SemiAnalyticalModel> phot::PDFastSimPAR::fVisibilityModel
private

Definition at line 147 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().


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