Public Types | Public Member Functions | Private Attributes | List of all members
sim::DumpMCShowers Class Reference
Inheritance diagram for sim::DumpMCShowers:
art::EDAnalyzer art::detail::Analyzer art::detail::LegacyModule art::Observer art::ModuleBase

Public Types

using Parameters = art::EDAnalyzer::Table< Config >
 
- Public Types inherited from art::EDAnalyzer
using WorkerType = WorkerT< EDAnalyzer >
 
using ModuleType = EDAnalyzer
 

Public Member Functions

 DumpMCShowers (Parameters const &config)
 Configuration-checking constructor. More...
 
 DumpMCShowers (DumpMCShowers const &)=delete
 
 DumpMCShowers (DumpMCShowers &&)=delete
 
DumpMCShowersoperator= (DumpMCShowers const &)=delete
 
DumpMCShowersoperator= (DumpMCShowers &&)=delete
 
virtual void analyze (art::Event const &event) override
 
template<typename Stream >
void DumpMCShower (Stream &&out, sim::MCShower const &shower, std::string indent="", bool bIndentFirst=true) const
 Dumps the content of the specified particle in the output stream. More...
 
- Public Member Functions inherited from art::EDAnalyzer
 EDAnalyzer (fhicl::ParameterSet const &pset)
 
template<typename Config >
 EDAnalyzer (Table< Config > const &config)
 
std::string workerType () const
 
- Public Member Functions inherited from art::detail::Analyzer
virtual ~Analyzer () noexcept
 
 Analyzer (fhicl::ParameterSet const &pset)
 
template<typename Config >
 Analyzer (Table< Config > const &config)
 
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)
 
- Public Member Functions inherited from art::Observer
 ~Observer () noexcept
 
 Observer (Observer const &)=delete
 
 Observer (Observer &&)=delete
 
Observeroperator= (Observer const &)=delete
 
Observeroperator= (Observer &&)=delete
 
void registerProducts (ProductDescriptions &, ModuleDescription const &)
 
void fillDescriptions (ModuleDescription const &)
 
fhicl::ParameterSetID selectorConfig () const
 
- Public Member Functions inherited from art::ModuleBase
virtual ~ModuleBase () noexcept
 
 ModuleBase ()
 
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)
 
template<typename T , BranchType BT>
ViewToken< T > consumesView (InputTag const &tag)
 
template<typename T , BranchType BT>
ViewToken< T > mayConsumeView (InputTag const &tag)
 

Private Attributes

art::InputTag fInputShowers
 name of MCShower's data product More...
 
std::string fOutputCategory
 name of the stream for output More...
 
unsigned int fDaughtersPerLine
 number of daughter IDs printed per line More...
 

Additional Inherited Members

- Protected Member Functions inherited from art::Observer
std::string const & processName () const
 
bool wantAllEvents () const noexcept
 
bool wantEvent (ScheduleID id, Event const &e) const
 
Handle< TriggerResultsgetTriggerResults (Event const &e) const
 
 Observer (fhicl::ParameterSet const &config)
 
 Observer (std::vector< std::string > const &select_paths, std::vector< std::string > const &reject_paths, fhicl::ParameterSet const &config)
 
- Protected Member Functions inherited from art::ModuleBase
ConsumesCollectorconsumesCollector ()
 
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 ()
 

Detailed Description

Definition at line 90 of file DumpMCShowers_module.cc.

Member Typedef Documentation

Definition at line 93 of file DumpMCShowers_module.cc.

Constructor & Destructor Documentation

sim::DumpMCShowers::DumpMCShowers ( Parameters const &  config)
explicit

Configuration-checking constructor.

Definition at line 142 of file DumpMCShowers_module.cc.

143  : EDAnalyzer(config)
144  , fInputShowers(config().InputShowers())
145  , fOutputCategory(config().OutputCategory())
146  , fDaughtersPerLine(config().DaughtersPerLine())
147 {}
art::InputTag fInputShowers
name of MCShower&#39;s data product
std::string fOutputCategory
name of the stream for output
EDAnalyzer(fhicl::ParameterSet const &pset)
Definition: EDAnalyzer.h:25
static Config * config
Definition: config.cpp:1054
unsigned int fDaughtersPerLine
number of daughter IDs printed per line
sim::DumpMCShowers::DumpMCShowers ( DumpMCShowers const &  )
delete
sim::DumpMCShowers::DumpMCShowers ( DumpMCShowers &&  )
delete

Member Function Documentation

void sim::DumpMCShowers::analyze ( art::Event const &  event)
overridevirtual

Implements art::EDAnalyzer.

Definition at line 228 of file DumpMCShowers_module.cc.

228  {
229 
230  // get the particles from the event
231  auto const& Showers
232  = *(event.getValidHandle<std::vector<sim::MCShower>>(fInputShowers));
233 
235  << "Event " << event.id() << ": data product '"
236  << fInputShowers.encode() << "' contains "
237  << Showers.size() << " MCShower objects";
238 
239  unsigned int iShower = 0;
241  for (sim::MCShower const& shower: Showers) {
242 
243  // a bit of a header
244  log << "\n[#" << (iShower++) << "] ";
245  DumpMCShower(log, shower, " ", false);
246 
247  } // for
248  log << "\n";
249 
250 } // sim::DumpMCShowers::analyze()
MaybeLogger_< ELseverityLevel::ELsev_info, true > LogVerbatim
art::InputTag fInputShowers
name of MCShower&#39;s data product
std::string fOutputCategory
name of the stream for output
std::string encode() const
Definition: InputTag.cc:97
void DumpMCShower(Stream &&out, sim::MCShower const &shower, std::string indent="", bool bIndentFirst=true) const
Dumps the content of the specified particle in the output stream.
template<typename Stream >
void sim::DumpMCShowers::DumpMCShower ( Stream &&  out,
sim::MCShower const &  shower,
std::string  indent = "",
bool  bIndentFirst = true 
) const

Dumps the content of the specified particle in the output stream.

Template Parameters
Streamthe type of output stream
Parameters
outthe output stream
particlethe particle to be dumped
indentbase indentation string (default: none)
bIndentFirstif first output line should be indented (default: yes)

The indent string is prepended to every line of output, with the possible exception of the first one, in case bIndentFirst is true.

The output starts on the current line, and the last line is NOT broken.

Definition at line 151 of file DumpMCShowers_module.cc.

154  {
155  if (bIndentFirst) out << indent;
156  out
157  << "from GEANT track ID=" << shower.TrackID()
158  << " PDG ID=" << shower.PdgCode()
159  << " from " << OriginDescription(shower.Origin())
160  << " via '" << shower.Process() << "'";
161  out << "\n" << indent
162  << " starting at ";
163  ::PrintMCStep(out, shower.Start());
164  out << "\n" << indent
165  << " ending at ";
166  ::PrintMCStep(out, shower.End());
167 
168  TVector3 const& startDir = shower.StartDir();
169  out << "\n" << indent
170  << "pointing toward ("
171  << startDir.X() << ", " << startDir.Y() << ", " << startDir.Z() << ") cm";
172  std::vector<double> const& charges = shower.Charge();
173  std::vector<double> const& dQdx = shower.dQdx();
174  size_t const nQPlanes = dQdx.size(), nChPlanes = charges.size();
175  size_t const nPlanes = std::max(nQPlanes, nChPlanes);
176  out << "\n" << indent;
177  if (nPlanes > 0) {
178  out
179  << "dE/dx=" << shower.dEdx() << " MeV/cm and dQ/dx (charge) on "
180  << nPlanes << " planes:";
181  for (size_t iPlane = 0; iPlane < nPlanes; ++iPlane) {
182  out << " [#" << iPlane << "] ";
183  if (iPlane < dQdx.size()) out << dQdx[iPlane];
184  else out << "<N/A>";
185  if (iPlane < charges.size()) out << " (" << charges[iPlane] << ")";
186  else out << "<N/A>";
187  } // for plane
188  }
189  else out << "no energy or charge information available";
190 
191  std::vector<unsigned int> const& daughters = shower.DaughterTrackID();
192  out << "\n" << indent
193  << "combined energy deposition information: ";
194  ::PrintMCStep(out, shower.DetProfile());
195  out << "\n" << indent
196  << daughters.size() << " daughters, ID:";
197  for (size_t i = 0; i < daughters.size(); ++i) {
198  if ((i % fDaughtersPerLine) == 0) out << "\n" << indent << " ";
199  out << " " << std::setw(8) << daughters[i];
200  } // for
201 
202  out << "\n" << indent
203  << "mother ID=" << shower.MotherTrackID()
204  << " PDG ID=" << shower.MotherPdgCode()
205  << " via '" << shower.MotherProcess() << "'";
206  out << "\n" << indent
207  << " starting at ";
208  ::PrintMCStep(out, shower.MotherStart());
209  out << "\n" << indent
210  << " ending at ";
211  ::PrintMCStep(out, shower.MotherEnd());
212 
213  out << "\n" << indent
214  << "ancestor ID=" << shower.AncestorTrackID()
215  << " PDG ID=" << shower.AncestorPdgCode()
216  << " via '" << shower.AncestorProcess() << "'";
217  out << "\n" << indent
218  << " starting at ";
219  ::PrintMCStep(out, shower.AncestorStart());
220  out << "\n" << indent
221  << " ending at ";
222  ::PrintMCStep(out, shower.AncestorEnd());
223 
224 } // sim::DumpMCShowers::DumpMCShower()
unsigned int fDaughtersPerLine
number of daughter IDs printed per line
static int max(int a, int b)
Q_EXPORT QTSManip setw(int w)
Definition: qtextstream.h:331
DumpMCShowers& sim::DumpMCShowers::operator= ( DumpMCShowers const &  )
delete
DumpMCShowers& sim::DumpMCShowers::operator= ( DumpMCShowers &&  )
delete

Member Data Documentation

unsigned int sim::DumpMCShowers::fDaughtersPerLine
private

number of daughter IDs printed per line

Definition at line 133 of file DumpMCShowers_module.cc.

art::InputTag sim::DumpMCShowers::fInputShowers
private

name of MCShower's data product

Definition at line 131 of file DumpMCShowers_module.cc.

std::string sim::DumpMCShowers::fOutputCategory
private

name of the stream for output

Definition at line 132 of file DumpMCShowers_module.cc.


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