LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
recob::DumpPFParticles Class Reference

Prints the content of all the ParticleFlow particles on screen. More...

Inheritance diagram for recob::DumpPFParticles:
art::EDAnalyzer art::detail::Analyzer art::detail::LegacyModule art::Observer art::ModuleBase

Classes

struct  Config
 

Public Types

using Parameters = art::EDAnalyzer::Table< Config >
 
using ModuleType = EDAnalyzer
 

Public Member Functions

 DumpPFParticles (Parameters const &config)
 Default constructor. More...
 
virtual void analyze (const art::Event &evt) override
 Does the printing. More...
 
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)
 
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

std::string const & processName () const
 
bool wantAllEvents () const noexcept
 
bool wantEvent (ScheduleID id, Event const &e) const
 
Handle< TriggerResults > getTriggerResults (Event const &e) const
 
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 MakePFParticleGraph (art::Event const &event, art::ValidHandle< std::vector< recob::PFParticle >> const &handle) const
 

Static Private Member Functions

static std::string DotFileName (art::EventID const &evtID, art::Provenance const &prodInfo)
 

Private Attributes

art::InputTag fInputTag
 input tag of the PFParticle product More...
 
std::string fOutputCategory
 category for LogInfo output More...
 
bool fPrintHexFloats
 whether to print floats in base 16 More...
 
unsigned int fMaxDepth
 maximum generation to print (0: only primaries) More...
 
bool fMakeEventGraphs
 whether to create one DOT file per event More...
 

Detailed Description

Prints the content of all the ParticleFlow particles on screen.

This analyser prints the content of all the ParticleFlow particles into the LogInfo/LogVerbatim stream.

Configuration parameters

  • PFModuleLabel (art::InputTag, required): label of the producer used to create the recob::PFParticle collection to be dumped
  • OutputCategory (string, default: "DumpPFParticles"): the category used for the output (useful for filtering)
  • PrintHexFloats (boolean, default: false): print all the floating point numbers in base 16
  • MaxDepth (unsigned int, optional): if specified, at most this number of particle generations will be printed; 1 means printing only primaries and their daughters, 0 only primaries. If not specified, no limit will be applied. This is useful for buggy PFParticles with circular references.
  • MakeParticleGraphs (boolean, default: false): creates a DOT file for each event, with a graph of PFParticle relations; each file is named as: ProcessName_ModuleLabel_InstanceName_Run::_Subrun::_Event::_particles.dot, where the the input label elements refer to the data product being plotted.

Particle connection graphs

When MakeParticleGraphs configuration option is activated, a file is created for each event, that contains the particle flow tree in GraphViz format. The GraphViz dot command can be used to render it into a PDF, SVG, EPS or one of the many supported bitmap formats. The typical command to use is:

dot -Tpdf -oPMTrk.pdf PMTrk.dot

A bash command to convert all files into a OutputFormat format:

OutputFormat='pdf'
for DotFile in *.dot ; do
  OutputFile="${DotFile%.dot}.${OutputFormat}"
  [[ "$OutputFile" -ot "$DotFile" ]] || continue # up to date already
  echo "${DotFile} => ${OutputFile} ..."
  dot -T"$OutputFormat" -o"$OutputFile" "$DotFile" || break
done

which will also skip files already converted.

The output shows one cell ("node") per particle. The format of the node follows these prescriptions:

  • the label has the particle ID number prepended by a hash character (#)
  • if the particle has a PDG ID, that also appears in the label (either the name of the corresponding particle, or, if unknown, just the PDG ID number)
  • if the particle is primary, it is rendered in bold font
  • if the particle is referred by other particles, but it is not present ("ghost particle"), its border is red and dashed

The relations between particles in the flow are represented by connecting lines ("edges"). Connection information is redundant: the parent particle should have the daughter in the daughter list, and the daughter should have the parent particle referenced as such. Since the connection is usually from two sources, there are usually two arrow heads, each one close to the particle that provides information on that connection; all arrow heads point from parent to daughter.

  • when the information of daughter and parent is consistent, a black line with two arrow heads both pointing to the daughter is shown
  • when the parent is ghost, the arrow head close to the daughter is hollow; ghost particles have no arrow heads close to them
  • when the daughter is ghost, the arrow head close to the parent is hollow; ghost particles have no arrow heads close to them

If you are trying to interpret an existing diagram, the following list is more direct to the point. Nodes: represent particles (see above for the label content)

  • bold label: primary particle
  • red, dashed border: "ghost particle" (missing but referenced by others)
  • other: just a particle

Connecting lines ("edges"):

  • all arrow heads point from parent to daughter
  • black with two full arrow heads: regular parent to daughter
  • black with a single inward empty arrow head: the particle close to the arrow claims the particle pointed by the arrow as a daughter, but there is no information on that daughter (ghost daughter)
  • black with a single outward empty arrow head: the particle at the tip of the arrow claims to be daughter of the other particle, but there is no information on that parent (ghost parent)
  • red, outward arrow: the daughter (at the tip of the only arrow) claims the other particle as parent, but that parent does not recognise it as daughter
  • orange, inward arrow: the parent (close to the only arrow head) claims the other particle as daughter, but that daighter does not recognise it as parent

Definition at line 131 of file DumpPFParticles_module.cc.

Member Typedef Documentation

Definition at line 22 of file EDAnalyzer.h.

Constructor & Destructor Documentation

recob::DumpPFParticles::DumpPFParticles ( Parameters const &  config)
explicit

Default constructor.

Definition at line 993 of file DumpPFParticles_module.cc.

References fMaxDepth.

994  : EDAnalyzer(config)
995  , fInputTag(config().PFModuleLabel())
996  , fOutputCategory(config().OutputCategory())
997  , fPrintHexFloats(config().PrintHexFloats())
998  , fMaxDepth(std::numeric_limits<unsigned int>::max())
999  , fMakeEventGraphs(config().MakeParticleGraphs())
1000  {
1001  // here we are handling the optional configuration key as it had just a
1002  // default value
1003  if (!config().MaxDepth(fMaxDepth)) fMaxDepth = std::numeric_limits<unsigned int>::max();
1004  }
EDAnalyzer(fhicl::ParameterSet const &pset)
Definition: EDAnalyzer.cc:6
std::string fOutputCategory
category for LogInfo output
unsigned int fMaxDepth
maximum generation to print (0: only primaries)
bool fMakeEventGraphs
whether to create one DOT file per event
art::InputTag fInputTag
input tag of the PFParticle product
bool fPrintHexFloats
whether to print floats in base 16

Member Function Documentation

void recob::DumpPFParticles::analyze ( const art::Event evt)
overridevirtual

Does the printing.

Definition at line 1037 of file DumpPFParticles_module.cc.

References DEFINE_ART_MODULE, art::InputTag::encode(), fInputTag, fMakeEventGraphs, fMaxDepth, fOutputCategory, fPrintHexFloats, art::ProductRetriever::getValidHandle(), art::Event::id(), and MakePFParticleGraph().

1038  {
1039 
1040  //
1041  // collect all the available information
1042  //
1043  // fetch the data to be dumped on screen
1045  evt.getValidHandle<std::vector<recob::PFParticle>>(fInputTag);
1046 
1047  if (fMakeEventGraphs) MakePFParticleGraph(evt, PFParticles);
1048 
1049  art::FindOne<recob::Vertex> const ParticleVertices(PFParticles, evt, fInputTag);
1050  art::FindMany<recob::Track> const ParticleTracks(PFParticles, evt, fInputTag);
1051  art::FindMany<recob::Cluster> const ParticleClusters(PFParticles, evt, fInputTag);
1052  art::FindMany<recob::Seed> const ParticleSeeds(PFParticles, evt, fInputTag);
1053  art::FindMany<recob::SpacePoint> const ParticleSpacePoints(PFParticles, evt, fInputTag);
1054  art::FindMany<recob::PCAxis> const ParticlePCAxes(PFParticles, evt, fInputTag);
1055 
1056  size_t const nParticles = PFParticles->size();
1057  mf::LogVerbatim(fOutputCategory) << "Event " << evt.id() << " contains " << nParticles
1058  << " particles from '" << fInputTag.encode() << "'";
1059 
1060  // prepare the dumper
1061  ParticleDumper::PrintOptions_t options;
1062  options.hexFloats = fPrintHexFloats;
1063  options.maxDepth = fMaxDepth;
1064  options.streamName = fOutputCategory;
1065  ParticleDumper dumper(*PFParticles, options);
1066  if (ParticleVertices.isValid())
1067  dumper.SetVertices(&ParticleVertices);
1068  else
1069  mf::LogPrint("DumpPFParticles") << "WARNING: vertex information not available";
1070  if (ParticleTracks.isValid())
1071  dumper.SetTracks(&ParticleTracks);
1072  else
1073  mf::LogPrint("DumpPFParticles") << "WARNING: track information not available";
1074  if (ParticleClusters.isValid())
1075  dumper.SetClusters(&ParticleClusters);
1076  else
1077  mf::LogPrint("DumpPFParticles") << "WARNING: cluster information not available";
1078  if (ParticleSeeds.isValid())
1079  dumper.SetSeeds(&ParticleSeeds);
1080  else
1081  mf::LogPrint("DumpPFParticles") << "WARNING: seed information not avaialble";
1082  if (ParticleSpacePoints.isValid())
1083  dumper.SetSpacePoints(&ParticleSpacePoints);
1084  else {
1085  mf::LogPrint("DumpPFParticles") << "WARNING: space point information not available";
1086  }
1087  if (ParticlePCAxes.isValid())
1088  dumper.SetPCAxes(&ParticlePCAxes);
1089  else {
1090  mf::LogPrint("DumpPFParticles") << "WARNING: principal component axis not available";
1091  }
1092  dumper.DumpAllParticles(" ");
1093 
1094  mf::LogVerbatim(fOutputCategory) << "\n"; // two empty lines
1095 
1096  } // DumpPFParticles::analyze()
MaybeLogger_< ELseverityLevel::ELsev_info, true > LogVerbatim
std::string encode() const
Definition: InputTag.cc:97
std::string fOutputCategory
category for LogInfo output
unsigned int fMaxDepth
maximum generation to print (0: only primaries)
ValidHandle< PROD > getValidHandle(InputTag const &tag) const
bool fMakeEventGraphs
whether to create one DOT file per event
void MakePFParticleGraph(art::Event const &event, art::ValidHandle< std::vector< recob::PFParticle >> const &handle) const
art::InputTag fInputTag
input tag of the PFParticle product
bool fPrintHexFloats
whether to print floats in base 16
EventID id() const
Definition: Event.cc:23
MaybeLogger_< ELseverityLevel::ELsev_warning, true > LogPrint
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 art::detail::Analyzer::doBeginJob ( SharedResources const &  resources)
inherited

Definition at line 25 of file Analyzer.cc.

Referenced by art::detail::Analyzer::Analyzer().

26  {
27  setupQueues(resources);
28  ProcessingFrame const frame{ScheduleID{}};
29  beginJobWithFrame(frame);
30  }
virtual void beginJobWithFrame(ProcessingFrame const &)=0
virtual void setupQueues(SharedResources const &)=0
bool art::detail::Analyzer::doBeginRun ( RunPrincipal rp,
ModuleContext const &  mc 
)
inherited

Definition at line 68 of file Analyzer.cc.

References art::ModuleContext::scheduleID().

Referenced by art::detail::Analyzer::Analyzer().

69  {
70  ProcessingFrame const frame{mc.scheduleID()};
71  beginRunWithFrame(std::as_const(rp).makeRun(mc), frame);
72  return true;
73  }
virtual void beginRunWithFrame(Run const &, ProcessingFrame const &)=0
bool art::detail::Analyzer::doBeginSubRun ( SubRunPrincipal srp,
ModuleContext const &  mc 
)
inherited

Definition at line 84 of file Analyzer.cc.

References art::ModuleContext::scheduleID().

Referenced by art::detail::Analyzer::Analyzer().

85  {
86  ProcessingFrame const frame{mc.scheduleID()};
87  beginSubRunWithFrame(std::as_const(srp).makeSubRun(mc), frame);
88  return true;
89  }
virtual void beginSubRunWithFrame(SubRun const &, ProcessingFrame const &)=0
void art::detail::Analyzer::doEndJob ( )
inherited

Definition at line 33 of file Analyzer.cc.

Referenced by art::detail::Analyzer::Analyzer().

34  {
35  ProcessingFrame const frame{ScheduleID{}};
36  endJobWithFrame(frame);
37  }
virtual void endJobWithFrame(ProcessingFrame const &)=0
bool art::detail::Analyzer::doEndRun ( RunPrincipal rp,
ModuleContext const &  mc 
)
inherited

Definition at line 76 of file Analyzer.cc.

References art::ModuleContext::scheduleID().

Referenced by art::detail::Analyzer::Analyzer().

77  {
78  ProcessingFrame const frame{mc.scheduleID()};
79  endRunWithFrame(std::as_const(rp).makeRun(mc), frame);
80  return true;
81  }
virtual void endRunWithFrame(Run const &, ProcessingFrame const &)=0
bool art::detail::Analyzer::doEndSubRun ( SubRunPrincipal srp,
ModuleContext const &  mc 
)
inherited

Definition at line 92 of file Analyzer.cc.

References art::ModuleContext::scheduleID().

Referenced by art::detail::Analyzer::Analyzer().

93  {
94  ProcessingFrame const frame{mc.scheduleID()};
95  endSubRunWithFrame(std::as_const(srp).makeSubRun(mc), frame);
96  return true;
97  }
virtual void endSubRunWithFrame(SubRun const &, ProcessingFrame const &)=0
bool art::detail::Analyzer::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 100 of file Analyzer.cc.

References e, and art::ModuleContext::scheduleID().

Referenced by art::detail::Analyzer::Analyzer().

105  {
106  auto const e = std::as_const(ep).makeEvent(mc);
107  if (wantEvent(mc.scheduleID(), e)) {
108  ++counts_run;
109  ProcessingFrame const frame{mc.scheduleID()};
110  analyzeWithFrame(e, frame);
111  ++counts_passed;
112  }
113  return true;
114  }
bool wantEvent(ScheduleID id, Event const &e) const
Definition: Observer.cc:63
Float_t e
Definition: plot.C:35
virtual void analyzeWithFrame(Event const &, ProcessingFrame const &)=0
void art::detail::Analyzer::doRespondToCloseInputFile ( FileBlock const &  fb)
inherited

Definition at line 47 of file Analyzer.cc.

Referenced by art::detail::Analyzer::Analyzer().

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

Definition at line 61 of file Analyzer.cc.

Referenced by art::detail::Analyzer::Analyzer().

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

Definition at line 40 of file Analyzer.cc.

Referenced by art::detail::Analyzer::Analyzer().

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

Definition at line 54 of file Analyzer.cc.

Referenced by art::detail::Analyzer::Analyzer().

55  {
56  ProcessingFrame const frame{ScheduleID{}};
58  }
virtual void respondToOpenOutputFilesWithFrame(FileBlock const &, ProcessingFrame const &)=0
TFile fb("Li6.root")
std::string recob::DumpPFParticles::DotFileName ( art::EventID const &  evtID,
art::Provenance const &  prodInfo 
)
staticprivate

Definition at line 1007 of file DumpPFParticles_module.cc.

References art::EventID::event(), art::Provenance::moduleLabel(), art::Provenance::processName(), art::Provenance::productInstanceName(), art::EventID::run(), art::EventID::subRun(), and util::to_string().

Referenced by MakePFParticleGraph().

1009  {
1010  return prodInfo.processName() + '_' + prodInfo.moduleLabel() + '_' +
1011  prodInfo.productInstanceName() + "_Run" + std::to_string(evtID.run()) + "_Subrun" +
1012  std::to_string(evtID.subRun()) + "_Event" + std::to_string(evtID.event()) +
1013  "_particles.dot";
1014  } // DumpPFParticles::DotFileName()
decltype(auto) constexpr to_string(T &&obj)
ADL-aware version of std::to_string.
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
Handle< TriggerResults > art::Observer::getTriggerResults ( Event const &  e) const
protectedinherited

Definition at line 75 of file Observer.cc.

References art::ProductRetriever::get(), and art::Observer::selectors_.

Referenced by art::OutputModule::doWriteEvent(), and art::Observer::wantAllEvents().

76  {
77  if (selectors_) {
78  return selectors_->getOneTriggerResults(e);
79  }
80 
81  // The following applies for cases where no SelectEvents entries
82  // exist.
83  Handle<TriggerResults> h;
84  if (e.get(empty_process_name, h)) {
85  return h;
86  }
87  return Handle<TriggerResults>{};
88  }
Float_t e
Definition: plot.C:35
std::optional< detail::ProcessAndEventSelectors > selectors_
Definition: Observer.h:79
void recob::DumpPFParticles::MakePFParticleGraph ( art::Event const &  event,
art::ValidHandle< std::vector< recob::PFParticle >> const &  handle 
) const
private

Definition at line 1017 of file DumpPFParticles_module.cc.

References DotFileName(), art::EventID::event(), art::EventID::run(), and art::EventID::subRun().

Referenced by analyze().

1020  {
1021  art::EventID const eventID = event.id();
1022  std::string fileName = DotFileName(eventID, *(handle.provenance()));
1023  std::ofstream outFile(fileName); // overwrite by default
1024 
1025  outFile << "// " << fileName << "\n// "
1026  << "\n// Created for run " << eventID.run() << " subrun " << eventID.subRun()
1027  << " event " << eventID.event() << "\n// "
1028  << "\n// dump of " << handle->size() << " particles"
1029  << "\n// " << std::endl;
1030 
1031  PFParticleGraphMaker graphMaker;
1032  graphMaker.MakeGraph(outFile, *handle);
1033 
1034  } // DumpPFParticles::MakePFParticleGraph()
RunNumber_t run() const
Definition: EventID.h:98
Provenance const * provenance() const
Definition: Handle.h:384
static std::string DotFileName(art::EventID const &evtID, art::Provenance const &prodInfo)
EventNumber_t event() const
Definition: EventID.h:116
SubRunNumber_t subRun() const
Definition: EventID.h:110
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
string const & art::Observer::processName ( ) const
protectedinherited

Definition at line 57 of file Observer.cc.

References art::Observer::process_name_.

Referenced by art::FileDumperOutput::printPrincipal().

58  {
59  return process_name_;
60  }
std::string process_name_
Definition: Observer.h:76
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)
bool art::Observer::wantAllEvents ( ) const
inlineprotectednoexceptinherited

Definition at line 31 of file Observer.h.

References e, art::Observer::getTriggerResults(), art::Observer::wantAllEvents_, and art::Observer::wantEvent().

32  {
33  return wantAllEvents_;
34  }
bool wantAllEvents_
Definition: Observer.h:75
bool art::Observer::wantEvent ( ScheduleID  id,
Event const &  e 
) const
protectedinherited

Definition at line 63 of file Observer.cc.

References art::Observer::rejectors_, art::Observer::selectors_, and art::Observer::wantAllEvents_.

Referenced by art::OutputModule::doEvent(), art::OutputModule::doWriteEvent(), and art::Observer::wantAllEvents().

64  {
65  if (wantAllEvents_) {
66  return true;
67  }
68  bool const select_event = selectors_ ? selectors_->matchEvent(id, e) : true;
69  bool const reject_event =
70  rejectors_ ? rejectors_->matchEvent(id, e) : false;
71  return select_event and not reject_event;
72  }
bool wantAllEvents_
Definition: Observer.h:75
std::optional< detail::ProcessAndEventSelectors > rejectors_
Definition: Observer.h:80
Float_t e
Definition: plot.C:35
std::optional< detail::ProcessAndEventSelectors > selectors_
Definition: Observer.h:79

Member Data Documentation

art::InputTag recob::DumpPFParticles::fInputTag
private

input tag of the PFParticle product

Definition at line 170 of file DumpPFParticles_module.cc.

Referenced by analyze().

bool recob::DumpPFParticles::fMakeEventGraphs
private

whether to create one DOT file per event

Definition at line 174 of file DumpPFParticles_module.cc.

Referenced by analyze().

unsigned int recob::DumpPFParticles::fMaxDepth
private

maximum generation to print (0: only primaries)

Definition at line 173 of file DumpPFParticles_module.cc.

Referenced by analyze(), and DumpPFParticles().

std::string recob::DumpPFParticles::fOutputCategory
private

category for LogInfo output

Definition at line 171 of file DumpPFParticles_module.cc.

Referenced by analyze().

bool recob::DumpPFParticles::fPrintHexFloats
private

whether to print floats in base 16

Definition at line 172 of file DumpPFParticles_module.cc.

Referenced by analyze().


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