All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Private Attributes | List of all members
sim::DumpMCTracks Class Reference
Inheritance diagram for sim::DumpMCTracks:

Public Types

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

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...
 

Private Attributes

art::InputTag fInputTracks
 name of MCTrack's data product More...
 
std::string fOutputCategory
 name of the stream for output More...
 

Detailed Description

Definition at line 83 of file DumpMCTracks_module.cc.

Member Typedef Documentation

using sim::DumpMCTracks::Parameters = art::EDAnalyzer::Table<Config>

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
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

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 
217  mf::LogVerbatim(fOutputCategory)
218  << "Event " << event.id() << ": data product '"
219  << fInputTracks.encode() << "' contains "
220  << Tracks.size() << " MCTrack objects";
221 
222  unsigned int iTrack = 0;
223  mf::LogVerbatim log(fOutputCategory);
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()
Definition: Data.h:32
art::InputTag fInputTracks
name of MCTrack&#39;s data product
process_name use argoneut_mc_hitfinder track
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()
process_name use argoneut_mc_hitfinder track
float dEdx(detinfo::DetectorClocksData const &clockData, detinfo::DetectorPropertiesData const &detProp, const TCSlice &slc, TP3D &tp3d)
Definition: PFPUtils.cxx:2687
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: