LArSoft  v10_06_00
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
 
void SimpleAddOpDetBTR (std::map< int, sim::OBTRHelper > &opbtr, std::vector< int > &ChannelMap, size_t channel, int trackID, int time, double pos[3], double edeposit, int num_photons=1)
 
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 194 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().

195  : art::EDProducer{config}
196  , fPhotonEngine(art::ServiceHandle<rndm::NuRandomService>()->registerAndSeedEngine(
197  createEngine(0, "HepJamesRandom", "photon"),
198  "HepJamesRandom",
199  "photon",
200  config.get_PSet(),
201  "SeedPhoton"))
202  , fRandPoissPhot(std::make_unique<CLHEP::RandPoissonQ>(fPhotonEngine))
204  createEngine(0, "HepJamesRandom", "scinttime"),
205  "HepJamesRandom",
206  "scinttime",
207  config.get_PSet(),
208  "SeedScintTime"))
209  , fScintTime{art::make_tool<phot::ScintTime>(config().ScintTimeTool.get<fhicl::ParameterSet>())}
210  , fGeom(*(lar::providerFrom<geo::Geometry>()))
211  , fISTPC{fGeom}
214  , fNTPC(fGeom.NTPC())
216  , fSimTag(config().SimulationLabel())
217  , fDoFastComponent(config().DoFastComponent())
218  , fDoSlowComponent(config().DoSlowComponent())
219  , fDoReflectedLight(config().DoReflectedLight())
220  , fIncludeAnodeReflections(config().IncludeAnodeReflections())
221  , fIncludePropTime(config().IncludePropTime())
222  , fGeoPropTimeOnly(config().GeoPropTimeOnly())
223  , fUseLitePhotons(config().UseLitePhotons())
224  , fOpaqueCathode(config().OpaqueCathode())
225  , fOnlyActiveVolume(config().OnlyActiveVolume())
226  , fOnlyOneCryostat(config().OnlyOneCryostat())
227  , fUseXeAbsorption(config().UseXeAbsorption())
228  {
229  mf::LogInfo("PDFastSimPAR") << "Initializing PDFastSimPAR." << std::endl;
230 
231  // Parameterized Simulation
232  fhicl::ParameterSet VUVHitsParams = config().VUVHits.get<fhicl::ParameterSet>();
233  fhicl::ParameterSet VUVTimingParams;
234  fhicl::ParameterSet VISHitsParams;
235  fhicl::ParameterSet VISTimingParams;
236 
237  // Validate configuration options
238  if (fIncludePropTime &&
239  !config().VUVTiming.get_if_present<fhicl::ParameterSet>(VUVTimingParams)) {
241  << "Propagation time simulation requested, but VUVTiming not specified."
242  << "\n";
243  }
245  !config().VISHits.get_if_present<fhicl::ParameterSet>(VISHitsParams)) {
247  << "Reflected light or anode reflections simulation requested, but VisHits not specified."
248  << "\n";
249  }
251  !config().VISTiming.get_if_present<fhicl::ParameterSet>(VISTimingParams)) {
253  << "Reflected light propagation time simulation requested, but VISTiming not specified."
254  << "\n";
255  }
256  if (fGeom.Ncryostats() > 1U) {
257  if (fOnlyOneCryostat) {
258  mf::LogWarning("PDFastSimPAR")
259  << std::string(80, '=') << "\nA detector with " << fGeom.Ncryostats()
260  << " cryostats is configured"
261  << " , and semi-analytic model is requested for scintillation photon propagation."
262  << " THIS CONFIGURATION IS NOT SUPPORTED and it is open to bugs"
263  << " (e.g. scintillation may be detected only in cryostat #0)."
264  << "\nThis would be normally a fatal error, but it has been forcibly overridden."
265  << "\n"
266  << std::string(80, '=');
267  }
268  else {
270  << "Photon propagation via semi-analytic model is not supported yet"
271  << " on detectors with more than one cryostat.";
272  }
273  }
274 
275  // Initialise the Scintillation Time
276  fScintTime->initRand(fScintTimeEngine);
277 
278  // photo-detector visibility model (semi-analytical model)
279  fVisibilityModel = std::make_unique<SemiAnalyticalModel>(
280  VUVHitsParams, VISHitsParams, fDoReflectedLight, fIncludeAnodeReflections, fUseXeAbsorption);
281 
282  // propagation time model
283  if (fIncludePropTime)
284  fPropTimeModel = std::make_unique<PropagationTimeModel>(
285  VUVTimingParams, VISTimingParams, fScintTimeEngine, fDoReflectedLight, fGeoPropTimeOnly);
286 
287  {
288  auto log = mf::LogTrace("PDFastSimPAR") << "PDFastSimPAR: active volume boundaries from "
289  << fActiveVolumes.size() << " volumes:";
290  for (auto const& [iCryo, box] : ::ranges::views::enumerate(fActiveVolumes)) {
291  log << "\n - C:" << iCryo << ": " << box.Min() << " -- " << box.Max() << " cm";
292  }
293  }
294 
295  if (fUseLitePhotons) {
296  mf::LogInfo("PDFastSimPAR") << "Using Lite Photons";
297  produces<std::vector<sim::SimPhotonsLite>>();
298  produces<std::vector<sim::OpDetBacktrackerRecord>>();
299  if (fDoReflectedLight) {
300  mf::LogInfo("PDFastSimPAR") << "Storing Reflected Photons";
301  produces<std::vector<sim::SimPhotonsLite>>("Reflected");
302  produces<std::vector<sim::OpDetBacktrackerRecord>>("Reflected");
303  }
304  }
305  else {
306  mf::LogInfo("PDFastSimPAR") << "Using Sim Photons";
307  produces<std::vector<sim::SimPhotons>>();
308  if (fDoReflectedLight) {
309  mf::LogInfo("PDFastSimPAR") << "Storing Reflected Photons";
310  produces<std::vector<sim::SimPhotons>>("Reflected");
311  }
312  }
313 
314  // determine drift distance
316  // for multiple TPCs, use second TPC to skip small volume at edges of detector (DUNE)
317  if (fNTPC > 1 && fDriftDistance < 50)
318  fDriftDistance = fGeom.TPC(geo::TPCID{0, 1}).DriftDistance();
319 
320  mf::LogInfo("PDFastSimPAR") << "PDFastSimPAR Initialization finish.\n"
321  << "Simulate using semi-analytic model for number of hits."
322  << std::endl;
323  }
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 635 of file PDFastSimPAR_module.cc.

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

638  {
639  int iChan = btr.OpDetNum();
640  if (ChannelMap[iChan] < 0) {
641  ChannelMap[iChan] = opbtr.size();
642  opbtr.emplace_back(std::move(btr));
643  }
644  else {
645  size_t idtest = ChannelMap[iChan];
646  auto const& timePDclockSDPsMap = btr.timePDclockSDPsMap();
647  for (auto const& timePDclockSDP : timePDclockSDPsMap) {
648  for (auto const& sdp : timePDclockSDP.second) {
649  double xyz[3] = {sdp.x, sdp.y, sdp.z};
650  opbtr.at(idtest).AddScintillationPhotons(
651  sdp.trackID, timePDclockSDP.first, sdp.numPhotons, xyz, sdp.energy);
652  }
653  }
654  }
655  }
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 679 of file PDFastSimPAR_module.cc.

References fRandPoissPhot.

Referenced by produce().

682  {
683  for (size_t i = 0; i < OpDetVisibilities.size(); ++i) {
684  DetectedNumPhotons[i] = fRandPoissPhot->fire(OpDetVisibilities[i] * NumPhotons);
685  }
686  }
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 690 of file PDFastSimPAR_module.cc.

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

Referenced by produce().

692  {
693  // check optical channel is in same TPC as scintillation light, if not doesn't see light
694  // temporary method, needs to be replaced with geometry service
695  // working for SBND, uBooNE, DUNE HD 1x2x6, DUNE HD 10kt and DUNE VD subset
696 
697  // special case for SBND = 2 TPCs
698  // check x coordinate has same sign or is close to zero
699  if (fNTPC == 2 && ((ScintPoint.X() < 0.) != (OpDetPoint.X() < 0.)) &&
700  std::abs(OpDetPoint.X()) > 10.) {
701  return false;
702  }
703 
704  // special case for DUNE-HD 10kt = 300 TPCs
705  // check whether distance in drift direction > 1 drift distance
706  if (fNTPC == 300 && std::abs(ScintPoint.X() - OpDetPoint.X()) > fDriftDistance) {
707  return false;
708  }
709  // not needed for DUNE HD 1x2x6, DUNE VD subset, uBooNE
710 
711  return true;
712  }
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 714 of file PDFastSimPAR_module.cc.

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

Referenced by PDFastSimPAR().

715  {
716  std::vector<geo::Point_t> opDetCenter;
717  for (size_t const i : ::ranges::views::ints(size_t(0), fNOpChannels)) {
718  geo::OpDetGeo const& opDet = fGeom.OpDetGeoFromOpDet(i);
719  opDetCenter.push_back(opDet.GetCenter());
720  }
721  return opDetCenter;
722  }
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 326 of file PDFastSimPAR_module.cc.

References 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, SimpleAddOpDetBTR(), and sim::OnePhoton::Time.

327  {
328  mf::LogTrace("PDFastSimPAR") << "PDFastSimPAR Module Producer"
329  << "EventID: " << event.event();
330 
331  std::vector<int> PDChannelToSOCMapDirect(fNOpChannels, -1); // Where each OpChan is.
332  std::vector<int> PDChannelToSOCMapReflect(fNOpChannels, -1); // Where each OpChan is.
333 
334  // SimPhotonsLite
335  auto phlit = std::make_unique<std::vector<sim::SimPhotonsLite>>();
336  auto opbtr = std::make_unique<std::vector<sim::OpDetBacktrackerRecord>>();
337  auto phlit_ref = std::make_unique<std::vector<sim::SimPhotonsLite>>();
338  auto opbtr_ref = std::make_unique<std::vector<sim::OpDetBacktrackerRecord>>();
339 
340  //Helpers holding maps
341  std::map<int, sim::OBTRHelper> opbtr_helper, opbtr_helper_ref;
342 
343  auto& dir_phlitcol(*phlit);
344  auto& ref_phlitcol(*phlit_ref);
345  // SimPhotons
346  auto phot = std::make_unique<std::vector<sim::SimPhotons>>();
347  auto phot_ref = std::make_unique<std::vector<sim::SimPhotons>>();
348  auto& dir_photcol(*phot);
349  auto& ref_photcol(*phot_ref);
350  if (fUseLitePhotons) {
351  dir_phlitcol.resize(fNOpChannels);
352  ref_phlitcol.resize(fNOpChannels);
353  for (unsigned int i = 0; i < fNOpChannels; i++) {
354  dir_phlitcol[i].OpChannel = i;
355  ref_phlitcol[i].OpChannel = i;
356  }
357  }
358  else { // SimPhotons
359  dir_photcol.resize(fNOpChannels);
360  ref_photcol.resize(fNOpChannels);
361  for (unsigned int i = 0; i < fNOpChannels; i++) {
362  dir_photcol[i].fOpChannel = i;
363  ref_photcol[i].fOpChannel = i;
364  }
365  }
366 
368  if (!event.getByLabel(fSimTag, edepHandle)) {
369  mf::LogError("PDFastSimPAR") << "PDFastSimPAR Module Cannot getByLabel: " << fSimTag;
370  return;
371  }
372 
373  auto const& edeps = edepHandle;
374 
375  int num_points = 0;
376  int num_fastph = 0;
377  int num_slowph = 0;
378  int num_fastdp = 0;
379  int num_slowdp = 0;
380 
381  mf::LogTrace("PDFastSimPAR") << "Creating SimPhotonsLite/SimPhotons from " << (*edeps).size()
382  << " energy deposits\n";
383 
384  for (auto const& edepi : *edeps) {
385 
386  if (!(num_points % 1000)) {
387  mf::LogTrace("PDFastSimPAR")
388  << "SimEnergyDeposit: " << num_points << " " << edepi.TrackID() << " " << edepi.Energy()
389  << "\nStart: " << edepi.Start() << "\nEnd: " << edepi.End()
390  << "\nNF: " << edepi.NumFPhotons() << "\nNS: " << edepi.NumSPhotons()
391  << "\nSYR: " << edepi.ScintYieldRatio() << "\n";
392  }
393  num_points++;
394 
395  int nphot_fast = edepi.NumFPhotons();
396  int nphot_slow = edepi.NumSPhotons();
397 
398  num_fastph += nphot_fast;
399  num_slowph += nphot_slow;
400 
401  if (!((nphot_fast > 0 && fDoFastComponent) || (nphot_slow > 0 && fDoSlowComponent))) continue;
402 
403  int trackID = edepi.TrackID();
404  int nphot = edepi.NumPhotons();
405  double edeposit = edepi.Energy() / nphot;
406  double pos[3] = {edepi.MidPointX(), edepi.MidPointY(), edepi.MidPointZ()};
407  geo::Point_t const ScintPoint = {pos[0], pos[1], pos[2]};
408 
409  if (fOnlyActiveVolume && !fISTPC.isScintInActiveVolume(ScintPoint)) continue;
410 
411  // direct light
412  std::vector<int> DetectedNumFast(fNOpChannels);
413  std::vector<int> DetectedNumSlow(fNOpChannels);
414 
415  std::vector<double> OpDetVisibilities;
416  fVisibilityModel->detectedDirectVisibilities(OpDetVisibilities, ScintPoint);
417  detectedNumPhotons(DetectedNumFast, OpDetVisibilities, nphot_fast);
418  detectedNumPhotons(DetectedNumSlow, OpDetVisibilities, nphot_slow);
419 
421  std::vector<int> AnodeDetectedNumFast(fNOpChannels);
422  std::vector<int> AnodeDetectedNumSlow(fNOpChannels);
423 
424  std::vector<double> OpDetVisibilitiesAnode;
425  fVisibilityModel->detectedReflectedVisibilities(OpDetVisibilitiesAnode, ScintPoint, true);
426  detectedNumPhotons(AnodeDetectedNumFast, OpDetVisibilitiesAnode, nphot_fast);
427  detectedNumPhotons(AnodeDetectedNumSlow, OpDetVisibilitiesAnode, nphot_slow);
428 
429  // add to existing count
430  for (size_t i = 0; i < AnodeDetectedNumFast.size(); ++i) {
431  DetectedNumFast[i] += AnodeDetectedNumFast[i];
432  }
433  for (size_t i = 0; i < AnodeDetectedNumSlow.size(); ++i) {
434  DetectedNumSlow[i] += AnodeDetectedNumSlow[i];
435  }
436  }
437 
438  // reflected light, if enabled
439  std::vector<int> ReflDetectedNumFast(fNOpChannels);
440  std::vector<int> ReflDetectedNumSlow(fNOpChannels);
441  if (fDoReflectedLight) {
442  std::vector<double> OpDetVisibilitiesRefl;
443  fVisibilityModel->detectedReflectedVisibilities(OpDetVisibilitiesRefl, ScintPoint, false);
444  detectedNumPhotons(ReflDetectedNumFast, OpDetVisibilitiesRefl, nphot_fast);
445  detectedNumPhotons(ReflDetectedNumSlow, OpDetVisibilitiesRefl, nphot_slow);
446  }
447 
448  // loop through direct photons then reflected photons cases
449  size_t DoReflected = (fDoReflectedLight) ? 1 : 0;
450  for (size_t Reflected = 0; Reflected <= DoReflected; ++Reflected) {
451  for (size_t channel = 0; channel < fNOpChannels; channel++) {
452 
453  if (fOpaqueCathode && !isOpDetInSameTPC(ScintPoint, fOpDetCenter[channel])) continue;
454 
455  int ndetected_fast = DetectedNumFast[channel];
456  int ndetected_slow = DetectedNumSlow[channel];
457  if (Reflected) {
458  ndetected_fast = ReflDetectedNumFast[channel];
459  ndetected_slow = ReflDetectedNumSlow[channel];
460  }
461  if (!((ndetected_fast > 0 && fDoFastComponent) ||
462  (ndetected_slow > 0 && fDoSlowComponent)))
463  continue;
464 
465  // calculate propagation time, does not matter whether fast or slow photon
466  std::vector<double> transport_time;
467  if (fIncludePropTime) {
468  transport_time.resize(ndetected_fast + ndetected_slow);
469  fPropTimeModel->propagationTime(transport_time, ScintPoint, channel, Reflected);
470  }
471 
472  // SimPhotonsLite case
473  if (fUseLitePhotons) {
474  if (ndetected_fast > 0 && fDoFastComponent) {
475  int n = ndetected_fast;
476  num_fastdp += n;
477  for (int i = 0; i < n; ++i) {
478  // calculates the time at which the photon was produced
479  double dtime = edepi.StartT() + fScintTime->fastScintTime();
480  if (fIncludePropTime) dtime += transport_time[i];
481 
482  int time = static_cast<int>(std::round(dtime));
483  if (Reflected) {
484  ++ref_phlitcol[channel].DetectedPhotons[time];
486  // *opbtr_ref, PDChannelToSOCMapReflect, channel, trackID, time, pos, edeposit, 1);
487  opbtr_helper_ref,
488  PDChannelToSOCMapReflect,
489  channel,
490  trackID,
491  time,
492  pos,
493  edeposit,
494  1);
495  }
496  else {
497  ++dir_phlitcol[channel].DetectedPhotons[time];
499  // *opbtr, PDChannelToSOCMapDirect, channel, trackID, time, pos, edeposit, 1);
500  opbtr_helper,
501  PDChannelToSOCMapDirect,
502  channel,
503  trackID,
504  time,
505  pos,
506  edeposit,
507  1);
508  }
509  }
510  }
511  if (ndetected_slow > 0 && fDoSlowComponent) {
512  int n = ndetected_slow;
513  num_slowdp += n;
514  for (int i = 0; i < n; ++i) {
515  // calculates the time at which the photon was produced
516  double dtime = edepi.StartT() + fScintTime->slowScintTime();
517  if (fIncludePropTime) dtime += transport_time[ndetected_fast + i];
518  int time = static_cast<int>(std::round(dtime));
519  if (Reflected) {
520  ++ref_phlitcol[channel].DetectedPhotons[time];
522  // *opbtr_ref, PDChannelToSOCMapReflect, channel, trackID, time, pos, edeposit, 1);
523  opbtr_helper_ref,
524  PDChannelToSOCMapReflect,
525  channel,
526  trackID,
527  time,
528  pos,
529  edeposit,
530  1);
531  }
532  else {
533  ++dir_phlitcol[channel].DetectedPhotons[time];
535  // *opbtr, PDChannelToSOCMapDirect, channel, trackID, time, pos, edeposit, 1);
536  opbtr_helper,
537  PDChannelToSOCMapDirect,
538  channel,
539  trackID,
540  time,
541  pos,
542  edeposit,
543  1);
544  }
545  }
546  }
547  }
548  // SimPhotons case
549  else {
550  sim::OnePhoton photon;
551  photon.SetInSD = false;
552  photon.InitialPosition = edepi.End();
553  photon.MotherTrackID = edepi.TrackID();
554  if (Reflected)
555  photon.Energy = 2.9 * CLHEP::eV; // 430 nm
556  else
557  photon.Energy = 9.7 * CLHEP::eV; // 128 nm
558  // TODO: un-hardcode and add another energy for Xe scintillation
559  if (ndetected_fast > 0 && fDoFastComponent) {
560  int n = ndetected_fast;
561  num_fastdp += n;
562  for (int i = 0; i < n; ++i) {
563  // calculates the time at which the photon was produced
564  double dtime = edepi.StartT() + fScintTime->fastScintTime();
565  if (fIncludePropTime) dtime += transport_time[i];
566  int time = static_cast<int>(std::round(dtime));
567  photon.Time = time;
568  if (Reflected)
569  ref_photcol[channel].insert(ref_photcol[channel].end(), 1, photon);
570  else
571  dir_photcol[channel].insert(dir_photcol[channel].end(), 1, photon);
572  }
573  }
574  if (ndetected_slow > 0 && fDoSlowComponent) {
575  int n = ndetected_slow;
576  num_slowdp += n;
577  for (int i = 0; i < n; ++i) {
578  double dtime = edepi.StartT() + fScintTime->slowScintTime();
579  if (fIncludePropTime) dtime += transport_time[ndetected_fast + i];
580  int time = static_cast<int>(std::round(dtime));
581  photon.Time = time;
582  if (Reflected)
583  ref_photcol[channel].insert(ref_photcol[channel].end(), 1, photon);
584  else
585  dir_photcol[channel].insert(dir_photcol[channel].end(), 1, photon);
586  }
587  }
588  }
589  }
590  }
591  }
592 
593  mf::LogTrace("PDFastSimPAR") << "Total points: " << num_points
594  << ", total fast photons: " << num_fastph
595  << ", total slow photons: " << num_slowph
596  << "\ndetected fast photons: " << num_fastdp
597  << ", detected slow photons: " << num_slowdp;
598 
599  mf::LogDebug("PDFastSimPAR") << "Number of entries in opbtrs";
600  for (auto& iopbtr : *opbtr) {
601  mf::LogDebug("PDFastSimPAR")
602  << "OpDet: " << iopbtr.OpDetNum() << " " << iopbtr.timePDclockSDPsMap().size();
603  }
604  mf::LogDebug("PDFastSimPAR") << "Number of entries in opbtrs refelected";
605  for (auto& iopbtr : *opbtr_ref) {
606  mf::LogDebug("PDFastSimPAR")
607  << "OpDet: " << iopbtr.OpDetNum() << " " << iopbtr.timePDclockSDPsMap().size();
608  }
609 
610  if (fUseLitePhotons) {
611 
612  for (auto& iopbtr : opbtr_helper) {
613  opbtr->emplace_back(iopbtr.second);
614  }
615 
616  event.put(move(phlit));
617  event.put(move(opbtr));
618  if (fDoReflectedLight) {
619  for (auto& iopbtr : opbtr_helper_ref) {
620  opbtr_ref->emplace_back(iopbtr.second);
621  }
622  event.put(move(phlit_ref), "Reflected");
623  event.put(move(opbtr_ref), "Reflected");
624  }
625  }
626  else {
627  event.put(move(phot));
628  if (fDoReflectedLight) { event.put(move(phot_ref), "Reflected"); }
629  }
630 
631  return;
632  }
bool isOpDetInSameTPC(geo::Point_t const &ScintPoint, geo::Point_t const &OpDetPoint) 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
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
void SimpleAddOpDetBTR(std::map< int, sim::OBTRHelper > &opbtr, std::vector< int > &ChannelMap, size_t channel, int trackID, int time, double pos[3], double edeposit, int num_photons=1)
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
MaybeLogger_< ELseverityLevel::ELsev_success, false > LogDebug
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 phot::PDFastSimPAR::SimpleAddOpDetBTR ( std::map< int, sim::OBTRHelper > &  opbtr,
std::vector< int > &  ChannelMap,
size_t  channel,
int  trackID,
int  time,
double  pos[3],
double  edeposit,
int  num_photons = 1 
)
private

Definition at line 657 of file PDFastSimPAR_module.cc.

Referenced by produce().

666  {
667  if (ChannelMap[channel] < 0) {
668  ChannelMap[channel] = opbtr.size();
669  // opbtr.push_back(sim::OpDetBacktrackerRecord(channel));
670  opbtr.emplace(channel, channel);
671  }
672  // size_t idtest = ChannelMap[channel];
673  // opbtr.at(idtest).AddScintillationPhotonsToMap(trackID, time, num_photons, pos, edeposit);
674  opbtr.at(channel).AddScintillationPhotonsToMap(trackID, time, num_photons, pos, edeposit);
675  }
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 173 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR().

const bool phot::PDFastSimPAR::fDoFastComponent
private

Definition at line 180 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

const bool phot::PDFastSimPAR::fDoReflectedLight
private

Definition at line 182 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

const bool phot::PDFastSimPAR::fDoSlowComponent
private

Definition at line 181 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

double phot::PDFastSimPAR::fDriftDistance
private

Definition at line 175 of file PDFastSimPAR_module.cc.

Referenced by isOpDetInSameTPC(), and PDFastSimPAR().

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

Definition at line 170 of file PDFastSimPAR_module.cc.

Referenced by opDetCenters(), and PDFastSimPAR().

const bool phot::PDFastSimPAR::fGeoPropTimeOnly
private

Definition at line 185 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR().

const bool phot::PDFastSimPAR::fIncludeAnodeReflections
private

Definition at line 183 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

const bool phot::PDFastSimPAR::fIncludePropTime
private

Definition at line 184 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

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

Definition at line 171 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

const size_t phot::PDFastSimPAR::fNOpChannels
private

Definition at line 172 of file PDFastSimPAR_module.cc.

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

const int phot::PDFastSimPAR::fNTPC
private

Definition at line 174 of file PDFastSimPAR_module.cc.

Referenced by isOpDetInSameTPC(), and PDFastSimPAR().

const bool phot::PDFastSimPAR::fOnlyActiveVolume
private

Definition at line 188 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

const bool phot::PDFastSimPAR::fOnlyOneCryostat
private

Definition at line 189 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR().

const bool phot::PDFastSimPAR::fOpaqueCathode
private

Definition at line 187 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

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

Definition at line 176 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

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

Definition at line 164 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR().

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

Definition at line 161 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

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

Definition at line 165 of file PDFastSimPAR_module.cc.

Referenced by detectedNumPhotons(), and PDFastSimPAR().

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

Definition at line 167 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

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

Definition at line 166 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR().

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

Definition at line 179 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

const bool phot::PDFastSimPAR::fUseLitePhotons
private

Definition at line 186 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().

const bool phot::PDFastSimPAR::fUseXeAbsorption
private

Definition at line 190 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR().

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

Definition at line 158 of file PDFastSimPAR_module.cc.

Referenced by PDFastSimPAR(), and produce().


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