Public Types | Public Member Functions | Private Attributes | List of all members
sim::DumpMCTracks Class Reference
Inheritance diagram for sim::DumpMCTracks:
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

 DumpMCTracks (Parameters const &config)
 Configuration-checking constructor. More...
 
 DumpMCTracks (DumpMCTracks const &)=delete
 
 DumpMCTracks (DumpMCTracks &&)=delete
 
DumpMCTracksoperator= (DumpMCTracks const &)=delete
 
DumpMCTracksoperator= (DumpMCTracks &&)=delete
 
virtual void analyze (art::Event const &event) override
 
template<typename Stream >
void DumpMCTrack (Stream &&out, sim::MCTrack const &track, 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 fInputTracks
 name of MCTrack's data product More...
 
std::string fOutputCategory
 name of the stream for output 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 83 of file DumpMCTracks_module.cc.

Member Typedef Documentation

Definition at line 86 of file DumpMCTracks_module.cc.

Constructor & Destructor Documentation

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

Configuration-checking constructor.

Definition at line 134 of file DumpMCTracks_module.cc.

135  : EDAnalyzer(config)
136  , fInputTracks(config().InputTracks())
137  , fOutputCategory(config().OutputCategory())
138 {}
art::InputTag fInputTracks
name of MCTrack&#39;s data product
EDAnalyzer(fhicl::ParameterSet const &pset)
Definition: EDAnalyzer.h:25
static Config * config
Definition: config.cpp:1054
std::string fOutputCategory
name of the stream for output
sim::DumpMCTracks::DumpMCTracks ( DumpMCTracks const &  )
delete
sim::DumpMCTracks::DumpMCTracks ( DumpMCTracks &&  )
delete

Member Function Documentation

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

Implements art::EDAnalyzer.

Definition at line 211 of file DumpMCTracks_module.cc.

211  {
212 
213  // get the particles from the event
214  auto const& Tracks
215  = *(event.getValidHandle<std::vector<sim::MCTrack>>(fInputTracks));
216 
218  << "Event " << event.id() << ": data product '"
219  << fInputTracks.encode() << "' contains "
220  << Tracks.size() << " MCTrack objects";
221 
222  unsigned int iTrack = 0;
224  for (sim::MCTrack const& track: Tracks) {
225 
226  // a bit of a header
227  log << "\n[#" << (iTrack++) << "] ";
228  DumpMCTrack(log, track, " ", false);
229 
230  } // for
231  log << "\n";
232 
233 } // sim::DumpMCTracks::analyze()
MaybeLogger_< ELseverityLevel::ELsev_info, true > LogVerbatim
art::InputTag fInputTracks
name of MCTrack&#39;s data product
std::string encode() const
Definition: InputTag.cc:97
void DumpMCTrack(Stream &&out, sim::MCTrack const &track, std::string indent="", bool bIndentFirst=true) const
Dumps the content of the specified particle in the output stream.
std::string fOutputCategory
name of the stream for output
template<typename Stream >
void sim::DumpMCTracks::DumpMCTrack ( Stream &&  out,
sim::MCTrack const &  track,
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 142 of file DumpMCTracks_module.cc.

145  {
146  if (bIndentFirst) out << indent;
147  out
148  << "from GEANT track ID=" << track.TrackID()
149  << " PDG ID=" << track.PdgCode()
150  << " from " << OriginDescription(track.Origin())
151  << " via '" << track.Process() << "'";
152  out << "\n" << indent
153  << " starting at ";
154  ::PrintMCStep(out, track.Start());
155  out << "\n" << indent
156  << " ending at ";
157  ::PrintMCStep(out, track.End());
158 
159  std::vector<std::vector<double>> const& dQdx = track.dQdx(); // dQdx[MCStep][plane]
160  std::vector<double> const& dEdx = track.dEdx(); // dEdx[MCStep]
161  size_t const nQSteps = dQdx.size(), nESteps = dEdx.size();
162  size_t const nSteps = std::max(nQSteps, nESteps);
163  out << "\n" << indent;
164  if (nSteps > 0) {
165  out
166  << "energy information for " << nSteps
167  << " steps (dE/dX in MeV/cm, then dQ/dx per plane):";
168  for (size_t iStep = 0; iStep < nSteps; ++iStep) {
169  out << "\n" << indent
170  << " [#" << iStep << "] dE/dx=";
171  if (iStep < nESteps) out << dEdx[iStep];
172  else out << "<N/A>";
173  out << "; dQ/dx:";
174  if (iStep < nQSteps) {
175  std::vector<double> const& step_dQdx = dQdx[iStep]; // dQdx[plane]
176  for (size_t iPlane = 0; iPlane < step_dQdx.size(); ++iPlane) {
177  out << " [#" << iPlane << "] " << step_dQdx[iPlane];
178  } // for plane
179  }
180  else out << "<N/A>";
181  } // for iStep
182  }
183  else out << "no energy or charge information available";
184 
185  out << "\n" << indent
186  << "mother ID=" << track.MotherTrackID()
187  << " PDG ID=" << track.MotherPdgCode()
188  << " via '" << track.MotherProcess() << "'";
189  out << "\n" << indent
190  << " starting at ";
191  ::PrintMCStep(out, track.MotherStart());
192  out << "\n" << indent
193  << " ending at ";
194  ::PrintMCStep(out, track.MotherEnd());
195 
196  out << "\n" << indent
197  << "ancestor ID=" << track.AncestorTrackID()
198  << " PDG ID=" << track.AncestorPdgCode()
199  << " via '" << track.AncestorProcess() << "'";
200  out << "\n" << indent
201  << " starting at ";
202  ::PrintMCStep(out, track.AncestorStart());
203  out << "\n" << indent
204  << " ending at ";
205  ::PrintMCStep(out, track.AncestorEnd());
206 
207 } // sim::DumpMCTracks::DumpMCTrack()
double dEdx(float dqdx, float Efield)
Definition: doAna.cpp:21
static int max(int a, int b)
DumpMCTracks& sim::DumpMCTracks::operator= ( DumpMCTracks const &  )
delete
DumpMCTracks& sim::DumpMCTracks::operator= ( DumpMCTracks &&  )
delete

Member Data Documentation

art::InputTag sim::DumpMCTracks::fInputTracks
private

name of MCTrack's data product

Definition at line 124 of file DumpMCTracks_module.cc.

std::string sim::DumpMCTracks::fOutputCategory
private

name of the stream for output

Definition at line 125 of file DumpMCTracks_module.cc.


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