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

Public Member Functions

 RawWaveformDump (fhicl::ParameterSet const &p)
 
 RawWaveformDump (RawWaveformDump const &)=delete
 
 RawWaveformDump (RawWaveformDump &&)=delete
 
RawWaveformDumpoperator= (RawWaveformDump const &)=delete
 
RawWaveformDumpoperator= (RawWaveformDump &&)=delete
 
void analyze (art::Event const &e) override
 
void reconfigure (fhicl::ParameterSet const &p)
 
void beginJob () override
 
void endJob () override
 
- 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

std::string fDumpWaveformsFileName
 
std::string fSimulationProducerLabel
 The name of the producer that tracked simulated particles through the detector. More...
 
std::string fDigitModuleLabel
 module that made digits More...
 
std::string fSelectGenLabel
 
std::string fSelectProcID
 
int fSelectPDGCode
 
std::string fPlaneToDump
 
double fMinParticleEnergyGeV
 
double fMinEnergyDepositedMeV
 
int fMinNumberOfElectrons
 
int fMaxNumberOfElectrons
 
art::ServiceHandle< geo::Geometryfgeom
 
art::ServiceHandle< cheat::ParticleInventoryServicePIS
 
std::default_random_engine rndm_engine
 
c2numpy_writer npywriter
 

Additional Inherited Members

- Public Types inherited from art::EDAnalyzer
using WorkerType = WorkerT< EDAnalyzer >
 
using ModuleType = EDAnalyzer
 
- 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 56 of file RawWaveformDump_module.cc.

Constructor & Destructor Documentation

pdune::RawWaveformDump::RawWaveformDump ( fhicl::ParameterSet const &  p)
explicit

Definition at line 132 of file RawWaveformDump_module.cc.

133  : EDAnalyzer{p}
134 {
135  this->reconfigure(p);
136 }
EDAnalyzer(fhicl::ParameterSet const &pset)
Definition: EDAnalyzer.h:25
p
Definition: test.py:223
void reconfigure(fhicl::ParameterSet const &p)
pdune::RawWaveformDump::RawWaveformDump ( RawWaveformDump const &  )
delete
pdune::RawWaveformDump::RawWaveformDump ( RawWaveformDump &&  )
delete

Member Function Documentation

void pdune::RawWaveformDump::analyze ( art::Event const &  e)
overridevirtual

Implements art::EDAnalyzer.

Definition at line 221 of file RawWaveformDump_module.cc.

222 {
223  cout << "Event "
224  << " " << evt.id().run()
225  << " " << evt.id().subRun()
226  << " " << evt.id().event() << endl;
227 
228  // ... Read in the digit List object(s).
229  auto digitVecHandle = evt.getHandle< std::vector<raw::RawDigit> >(fDigitModuleLabel);
230 
231  if (!digitVecHandle || !digitVecHandle->size()) return;
232 
233  // ... Use the handle to get a particular (0th) element of collection.
234  art::Ptr<raw::RawDigit> digitVec0(digitVecHandle, 0);
235  unsigned int dataSize = digitVec0->Samples(); //size of raw data vectors
236  if (dataSize!=6000){
237  std::cout << "!!!!! Bad dataSize: " << dataSize << std::endl;
238  return;
239  }
240 
241  std::vector<short> rawadc(dataSize); // vector to hold uncompressed adc values later
242 
243  // ... Build a map from channel number -> rawdigitVec
244  std::map< raw::ChannelID_t, art::Ptr<raw::RawDigit> > rawdigitMap;
245  raw::ChannelID_t chnum = raw::InvalidChannelID; // channel number
246  for ( size_t rdIter = 0; rdIter < digitVecHandle->size(); ++rdIter ) {
247  art::Ptr<raw::RawDigit> digitVec(digitVecHandle, rdIter);
248  chnum = digitVec->Channel();
249  if(chnum==raw::InvalidChannelID)continue;
250  rawdigitMap[chnum]=digitVec;
251  }
252 
253  // ... Read in MC particle list
254  auto particleHandle = evt.getHandle< std::vector<simb::MCParticle> >(fSimulationProducerLabel);
255  if (!particleHandle){
256  throw cet::exception("AnalysisExample")
257  << " No simb::MCParticle objects in this event - "
258  << " Line " << __LINE__ << " in file " << __FILE__ << std::endl;
259  }
260 
261  // ... Read in sim channel list
262  auto simChannelHandle = evt.getValidHandle<std::vector<sim::SimChannel>>(fSimulationProducerLabel);
263 
264  if (!simChannelHandle->size()) return;
265 
266  // ... Create a map of track IDs to generator labels
267  //Get a list of generator names.
268  auto mcHandles = evt.getMany<std::vector<simb::MCTruth>>();
269  std::vector< std::pair<int, std::string>> track_id_to_label;
270 
271  for( auto const& mcHandle : mcHandles ){
272  const std::string& sModuleLabel = mcHandle.provenance()->moduleLabel();
273  art::FindManyP<simb::MCParticle> findMCParts(mcHandle, evt, "largeant");
274  std::vector<art::Ptr<simb::MCParticle> > mcParts = findMCParts.at(0);
275  for( const art::Ptr<simb::MCParticle> ptr : mcParts){
276  int track_id = ptr->TrackId();
277  gf->add(track_id, sModuleLabel);
278  }
279  }
280 
281  std::string dummystr6="none ";
282  std::string dummystr7="none ";
283 
284  // .. create a channel number to trackid-wire signal info map
285  std::map<raw::ChannelID_t,std::map<int,WireSigInfo>>Ch2TrkWSInfoMap;
286 
287  // .. create a track ID to vector of channel numbers (in w/c this track deposited energy) map
288  std::map<int,std::vector<raw::ChannelID_t>>Trk2ChVecMap;
289 
290  auto const clockData = art::ServiceHandle<detinfo::DetectorClocksService>()->DataFor(evt);
291  // ... Loop over simChannels
292  for ( auto const& channel : (*simChannelHandle) ){
293 
294  // .. get simChannel channel number
295  const raw::ChannelID_t ch1 = channel.Channel();
296  if(ch1==raw::InvalidChannelID)continue;
297  if(geo::PlaneGeo::ViewName(fgeom->View(ch1))!=fPlaneToDump[0])continue;
298 
299  bool selectThisChannel=false;
300 
301  // .. create a track ID to wire signal info map
302  std::map<int,WireSigInfo>Trk2WSInfoMap;
303 
304  // ... Loop over all ticks with ionization energy deposited
305  auto const& timeSlices = channel.TDCIDEMap();
306  for ( auto const& timeSlice : timeSlices ){
307 
308  auto const& energyDeposits = timeSlice.second;
309  auto const tpctime = timeSlice.first;
310  unsigned int tdctick = static_cast<unsigned int>(clockData.TPCTDC2Tick(double(tpctime)));
311  if(tdctick!=tpctime)std::cout << "tpctime: " << tpctime << ", tdctick: " << tdctick << std::endl;
312  if(tdctick<0||tdctick>(dataSize-1))continue;
313 
314  // ... Loop over all energy depositions in this tick
315  for ( auto const& energyDeposit : energyDeposits ){
316 
317  if (!energyDeposit.trackID) continue;
318  int trkid = energyDeposit.trackID;
319  simb::MCParticle particle = PIS->TrackIdToMotherParticle(trkid);
320  std::cout << energyDeposit.trackID << " " << trkid << " " << particle.TrackId() << std::endl;
321 
322  // .. ignore this energy deposition if incident particle energy below some threshold
323  if ( particle.E() < fMinParticleEnergyGeV ) continue;
324 
325  int eve_id = PIS->TrackIdToEveTrackId(trkid);
326  if (!eve_id) continue;
327  std::string genlab = gf->get_gen(eve_id);
328 
329  if (Trk2WSInfoMap.find(trkid) == Trk2WSInfoMap.end()){
330  WireSigInfo wsinf;
331  wsinf.pdgcode = particle.PdgCode();
332  wsinf.genlab = genlab;
333  wsinf.procid = particle.Process();
334  wsinf.tdcmin=dataSize-1;
335  wsinf.tdcmax=0;
336  wsinf.edep=0.;
337  wsinf.numel=0;
338  Trk2WSInfoMap.insert(std::pair<int,WireSigInfo>(trkid,wsinf));
339  }
340  if (tdctick<Trk2WSInfoMap.at(trkid).tdcmin)Trk2WSInfoMap.at(trkid).tdcmin=tdctick;
341  if (tdctick>Trk2WSInfoMap.at(trkid).tdcmax)Trk2WSInfoMap.at(trkid).tdcmax=tdctick;
342  Trk2WSInfoMap.at(trkid).edep +=energyDeposit.energy;
343  Trk2WSInfoMap.at(trkid).numel+=energyDeposit.numElectrons;
344  }
345  }
346 
347  if(!Trk2WSInfoMap.empty()){
348  for(std::pair<int,WireSigInfo> itmap : Trk2WSInfoMap){
349  if (fSelectGenLabel!="ANY"){
350  if(itmap.second.genlab!=fSelectGenLabel)continue;
351  }
352  if (fSelectProcID!="ANY"){
353  if(itmap.second.procid!=fSelectProcID)continue;
354  }
355  if (fSelectPDGCode!=0){
356  if(itmap.second.pdgcode!=fSelectPDGCode)continue;
357  }
358  itmap.second.genlab.resize(6,' ');
359  itmap.second.procid.resize(7,' ');
360  if(itmap.second.numel>=fMinNumberOfElectrons && itmap.second.edep>=fMinEnergyDepositedMeV){
361  if(fMaxNumberOfElectrons>=0 && itmap.second.numel>=fMaxNumberOfElectrons){
362  continue;
363  } else {
364  int trkid = itmap.first;
365  if (Trk2ChVecMap.find(trkid) == Trk2ChVecMap.end()){
366  std::vector<raw::ChannelID_t>chvec;
367  Trk2ChVecMap.insert(std::pair<int,std::vector<raw::ChannelID_t>>(trkid,chvec));
368  }
369  Trk2ChVecMap.at(trkid).push_back(ch1);
370  selectThisChannel=true;
371  }
372  }
373  } // loop over Trk2WSinfoMap
374  if(selectThisChannel){
375  Ch2TrkWSInfoMap.insert(std::pair<raw::ChannelID_t,std::map<int,WireSigInfo>>(ch1,Trk2WSInfoMap));
376  }
377  } // if Trk2WSInfoMap not empty
378 
379  } // loop over SimChannels
380 
381  // ... Now write out the signal waveforms for each track
382  if(!Trk2ChVecMap.empty()){
383  for(auto const& ittrk : Trk2ChVecMap){
384  std::uniform_int_distribution<int> rndm_dist(0,ittrk.second.size()-1);
385  int i = rndm_dist(rndm_engine); // randomly select one channel with a signal from this particle
386  chnum=ittrk.second[i];
387 
388  std::map<raw::ChannelID_t,std::map<int,WireSigInfo>>::iterator itchn;
389  itchn = Ch2TrkWSInfoMap.find(chnum);
390  if( itchn != Ch2TrkWSInfoMap.end() ){
391  auto search = rawdigitMap.find(chnum);
392  if ( search == rawdigitMap.end() ) continue;
393  art::Ptr<raw::RawDigit> rawdig = (*search).second;
394  raw::Uncompress(rawdig->ADCs(), rawadc, rawdig->GetPedestal(), rawdig->Compression());
395 
396  c2numpy_uint32(&npywriter, evt.id().event());
397  c2numpy_uint32(&npywriter, chnum);
399  c2numpy_uint16(&npywriter, itchn->second.size()); // size of Trk2WSInfoMap, or number of peaks
400 
401  // .. write out info for each peak
402  unsigned int icnt=0;
403  for ( auto const& it : itchn->second ){
404  c2numpy_int32(&npywriter, it.first); // trackid
405  c2numpy_int32(&npywriter, it.second.pdgcode); // pdgcode
406  c2numpy_string(&npywriter, it.second.genlab.c_str()); // genlab
407  c2numpy_string(&npywriter, it.second.procid.c_str()); // procid
408  c2numpy_float32(&npywriter, it.second.edep); // edepo
409  c2numpy_uint32(&npywriter, it.second.numel); // numelec
410  c2numpy_uint16(&npywriter, it.second.tdcmin); // stck1
411  c2numpy_uint16(&npywriter, it.second.tdcmax); // stc2
412  icnt++;
413  if(icnt==5)break;
414  }
415 
416  // .. pad with 0's if number of peaks less than 5
417  for ( unsigned int i=icnt; i<5; ++i){
420  c2numpy_string(&npywriter, dummystr6.c_str());
421  c2numpy_string(&npywriter, dummystr7.c_str());
426  }
427 
428  // .. now write out the ADC values
429  for ( unsigned int itck=0; itck<dataSize; ++itck ){
430  rawadc[itck] -= rawdig->GetPedestal();
431  c2numpy_int16(&npywriter, rawadc[itck]);
432  }
433  }
434  }
435  }
436 
437 }
double E(const int i=0) const
Definition: MCParticle.h:233
float GetPedestal() const
Definition: RawDigit.h:214
art::ServiceHandle< geo::Geometry > fgeom
int c2numpy_int32(c2numpy_writer *writer, int32_t data)
Definition: c2numpy.h:290
const ADCvector_t & ADCs() const
Reference to the compressed ADC count vector.
Definition: RawDigit.h:210
int PdgCode() const
Definition: MCParticle.h:212
static std::string ViewName(geo::View_t view)
Returns the name of the specified view.
Definition: PlaneGeo.cxx:763
unsigned int event
Definition: DataStructs.h:636
std::string fDigitModuleLabel
module that made digits
unsigned int run
Definition: DataStructs.h:637
int c2numpy_int16(c2numpy_writer *writer, int16_t data)
Definition: c2numpy.h:282
void add(const int &track_id, const std::string &gname)
std::string string
Definition: nybbler.cc:12
uint8_t channel
Definition: CRTFragment.hh:201
std::string Process() const
Definition: MCParticle.h:215
int c2numpy_uint16(c2numpy_writer *writer, uint16_t data)
Definition: c2numpy.h:314
int TrackId() const
Definition: MCParticle.h:210
constexpr ChannelID_t InvalidChannelID
ID of an invalid channel.
Definition: RawTypes.h:32
int c2numpy_uint32(c2numpy_writer *writer, uint32_t data)
Definition: c2numpy.h:322
Definition: search.py:1
View_t View(geo::PlaneID const &pid) const
Returns the view (wire orientation) on the channels of specified TPC plane.
int c2numpy_string(c2numpy_writer *writer, const char *data)
Definition: c2numpy.h:394
raw::Compress_t Compression() const
Compression algorithm used to store the ADC counts.
Definition: RawDigit.h:216
simb::MCParticle TrackIdToMotherParticle(int const id) const
int c2numpy_float32(c2numpy_writer *writer, float data)
Definition: c2numpy.h:354
genFinder * gf
std::string fSimulationProducerLabel
The name of the producer that tracked simulated particles through the detector.
unsigned int subRun
Definition: DataStructs.h:638
TCEvent evt
Definition: DataStructs.cxx:7
unsigned int ChannelID_t
Type representing the ID of a readout channel.
Definition: RawTypes.h:28
void Uncompress(const std::vector< short > &adc, std::vector< short > &uncompressed, raw::Compress_t compress)
Uncompresses a raw data buffer.
Definition: raw.cxx:776
art::ServiceHandle< cheat::ParticleInventoryService > PIS
std::default_random_engine rndm_engine
std::string get_gen(int tid)
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
QTextStream & endl(QTextStream &s)
void pdune::RawWaveformDump::beginJob ( )
overridevirtual

Reimplemented from art::EDAnalyzer.

Definition at line 160 of file RawWaveformDump_module.cc.

161 {
162  std::random_device rndm_device; // this will give us our seed
163  rndm_engine.seed(rndm_device());
164 
168  c2numpy_addcolumn(&npywriter, "view", (c2numpy_type)((int)C2NUMPY_STRING + 1) );
170 
171  for(unsigned int i=0; i<5; i++){
172  std::ostringstream name;
173 
174  name.str("");
175  name << "tid" << i;
176  c2numpy_addcolumn(&npywriter, name.str().c_str(), C2NUMPY_INT32);
177 
178  name.str("");
179  name << "pdg" << i;
180  c2numpy_addcolumn(&npywriter, name.str().c_str(), C2NUMPY_INT32);
181 
182  name.str("");
183  name << "gen" << i;
184  c2numpy_addcolumn(&npywriter, name.str().c_str(), (c2numpy_type)((int)C2NUMPY_STRING + 6));
185 
186  name.str("");
187  name << "pid" << i;
188  c2numpy_addcolumn(&npywriter, name.str().c_str(), (c2numpy_type)((int)C2NUMPY_STRING + 7));
189 
190  name.str("");
191  name << "edp" << i;
192  c2numpy_addcolumn(&npywriter, name.str().c_str(), C2NUMPY_FLOAT32);
193 
194  name.str("");
195  name << "nel" << i;
196  c2numpy_addcolumn(&npywriter, name.str().c_str(), C2NUMPY_UINT32);
197 
198  name.str("");
199  name << "sti" << i;
200  c2numpy_addcolumn(&npywriter, name.str().c_str(), C2NUMPY_UINT16);
201 
202  name.str("");
203  name << "stf" << i;
204  c2numpy_addcolumn(&npywriter, name.str().c_str(), C2NUMPY_UINT16);
205  }
206 
207  for(unsigned int i=0; i<6000; i++){
208  std::ostringstream name;
209  name << "tck_" << i;
210  c2numpy_addcolumn(&npywriter, name.str().c_str(), C2NUMPY_INT16);
211  }
212 }
static QCString name
Definition: declinfo.cpp:673
int c2numpy_init(c2numpy_writer *writer, const std::string outputFilePrefix, int32_t numRowsPerFile)
Definition: c2numpy.h:142
int c2numpy_addcolumn(c2numpy_writer *writer, const std::string name, c2numpy_type type)
Definition: c2numpy.h:158
c2numpy_type
Definition: c2numpy.h:29
std::default_random_engine rndm_engine
void pdune::RawWaveformDump::endJob ( )
overridevirtual

Reimplemented from art::EDAnalyzer.

Definition at line 215 of file RawWaveformDump_module.cc.

216 {
218 }
int c2numpy_close(c2numpy_writer *writer)
Definition: c2numpy.h:407
RawWaveformDump& pdune::RawWaveformDump::operator= ( RawWaveformDump const &  )
delete
RawWaveformDump& pdune::RawWaveformDump::operator= ( RawWaveformDump &&  )
delete
void pdune::RawWaveformDump::reconfigure ( fhicl::ParameterSet const &  p)

Definition at line 139 of file RawWaveformDump_module.cc.

140 {
141  fDumpWaveformsFileName = p.get<std::string>("DumpWaveformsFileName","dumpwaveforms");
142 
143  fSimulationProducerLabel = p.get<std::string>("SimulationProducerLabel", "largeant");
144  fDigitModuleLabel = p.get<std::string>("DigitModuleLabel", "daq");
145 
146  fSelectGenLabel = p.get<std::string>("SelectGenLabel","ANY");
147  fSelectProcID = p.get<std::string>("SelectProcID", "ANY");
148  fSelectPDGCode = p.get<int>("SelectPDGCode", 0);
149 
150  fPlaneToDump = p.get<std::string>("PlaneToDump", "U");
151  fMinParticleEnergyGeV = p.get<double>("MinParticleEnergyGeV",0.);
152  fMinEnergyDepositedMeV = p.get<double>("MinEnergyDepositedMeV",0.);
153  fMinNumberOfElectrons = p.get<int>("MinNumberOfElectrons",1000);
154  fMaxNumberOfElectrons = p.get<int>("MaxNumberOfElectrons",100000);
155 
156  return;
157 }
std::string fDigitModuleLabel
module that made digits
std::string string
Definition: nybbler.cc:12
p
Definition: test.py:223
std::string fSimulationProducerLabel
The name of the producer that tracked simulated particles through the detector.

Member Data Documentation

std::string pdune::RawWaveformDump::fDigitModuleLabel
private

module that made digits

Definition at line 81 of file RawWaveformDump_module.cc.

std::string pdune::RawWaveformDump::fDumpWaveformsFileName
private

Definition at line 78 of file RawWaveformDump_module.cc.

art::ServiceHandle<geo::Geometry> pdune::RawWaveformDump::fgeom
private

Definition at line 91 of file RawWaveformDump_module.cc.

int pdune::RawWaveformDump::fMaxNumberOfElectrons
private

Definition at line 90 of file RawWaveformDump_module.cc.

double pdune::RawWaveformDump::fMinEnergyDepositedMeV
private

Definition at line 88 of file RawWaveformDump_module.cc.

int pdune::RawWaveformDump::fMinNumberOfElectrons
private

Definition at line 89 of file RawWaveformDump_module.cc.

double pdune::RawWaveformDump::fMinParticleEnergyGeV
private

Definition at line 87 of file RawWaveformDump_module.cc.

std::string pdune::RawWaveformDump::fPlaneToDump
private

Definition at line 86 of file RawWaveformDump_module.cc.

std::string pdune::RawWaveformDump::fSelectGenLabel
private

Definition at line 83 of file RawWaveformDump_module.cc.

int pdune::RawWaveformDump::fSelectPDGCode
private

Definition at line 85 of file RawWaveformDump_module.cc.

std::string pdune::RawWaveformDump::fSelectProcID
private

Definition at line 84 of file RawWaveformDump_module.cc.

std::string pdune::RawWaveformDump::fSimulationProducerLabel
private

The name of the producer that tracked simulated particles through the detector.

Definition at line 80 of file RawWaveformDump_module.cc.

c2numpy_writer pdune::RawWaveformDump::npywriter
private

Definition at line 97 of file RawWaveformDump_module.cc.

art::ServiceHandle<cheat::ParticleInventoryService> pdune::RawWaveformDump::PIS
private

Definition at line 92 of file RawWaveformDump_module.cc.

std::default_random_engine pdune::RawWaveformDump::rndm_engine
private

Definition at line 95 of file RawWaveformDump_module.cc.


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