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::DumpMCShowers Class Reference
Inheritance diagram for sim::DumpMCShowers:

Public Types

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

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

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

Detailed Description

Definition at line 90 of file DumpMCShowers_module.cc.

Member Typedef Documentation

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

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

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 
234  mf::LogVerbatim(fOutputCategory)
235  << "Event " << event.id() << ": data product '"
236  << fInputShowers.encode() << "' contains "
237  << Showers.size() << " MCShower objects";
238 
239  unsigned int iShower = 0;
240  mf::LogVerbatim log(fOutputCategory);
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()
art::InputTag fInputShowers
name of MCShower&#39;s data product
std::string fOutputCategory
name of the stream for output
process_name shower
Definition: cheaterreco.fcl:51
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()
process_name shower
Definition: cheaterreco.fcl:51
unsigned int fDaughtersPerLine
number of daughter IDs printed per line
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: