LArSoft  v06_85_00
Liquid Argon Software toolkit - http://larsoft.org/
opdet::OpMCDigi Class Reference
Inheritance diagram for opdet::OpMCDigi:
art::EDProducer art::ProducerBase art::Consumer art::EngineCreator art::ProductRegistryHelper

Public Types

using ModuleType = EDProducer
 
using WorkerType = WorkerT< EDProducer >
 
template<typename UserConfig , typename KeysToIgnore = void>
using Table = ProducerBase::Table< UserConfig, KeysToIgnore >
 

Public Member Functions

 OpMCDigi (const fhicl::ParameterSet &)
 
virtual ~OpMCDigi ()
 
void produce (art::Event &)
 
void beginJob ()
 
template<typename PROD , BranchType B = InEvent>
ProductID getProductID (std::string const &instanceName={}) const
 
template<typename PROD , BranchType B>
ProductID getProductID (ModuleDescription const &moduleDescription, std::string const &instanceName) const
 
bool modifiesEvent () const
 
template<typename T , BranchType = InEvent>
ProductToken< T > consumes (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ProductToken< T > consumes (InputTag const &it)
 
template<typename T , BranchType = InEvent>
void consumesMany ()
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > consumesView (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ViewToken< T > consumesView (InputTag const &it)
 
template<typename T , BranchType = InEvent>
ProductToken< T > mayConsume (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ProductToken< T > mayConsume (InputTag const &it)
 
template<typename T , BranchType = InEvent>
void mayConsumeMany ()
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > mayConsumeView (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ViewToken< T > mayConsumeView (InputTag const &it)
 
base_engine_tcreateEngine (seed_t seed)
 
base_engine_tcreateEngine (seed_t seed, std::string const &kind_of_engine_to_make)
 
base_engine_tcreateEngine (seed_t seed, std::string const &kind_of_engine_to_make, label_t const &engine_label)
 
seed_t get_seed_value (fhicl::ParameterSet const &pset, char const key[]="seed", seed_t const implicit_seed=-1)
 

Static Public Member Functions

static cet::exempt_ptr< Consumernon_module_context ()
 

Protected Member Functions

CurrentProcessingContext const * currentContext () const
 
void validateConsumedProduct (BranchType const bt, ProductInfo const &pi)
 
void prepareForJob (fhicl::ParameterSet const &pset)
 
void showMissingConsumes () const
 

Private Member Functions

void AddTimedWaveform (int time, std::vector< double > &OldPulse, std::vector< double > &NewPulse)
 

Private Attributes

std::string fInputModule
 
float fSampleFreq
 
float fTimeBegin
 
float fTimeEnd
 
float fSaturationScale
 
float fDarkRate
 
std::vector< double > fSinglePEWaveform
 
CLHEP::RandFlat * fFlatRandom
 
CLHEP::RandPoisson * fPoissonRandom
 

Detailed Description

Definition at line 38 of file OpMCDigi_module.cc.

Member Typedef Documentation

using art::EDProducer::ModuleType = EDProducer
inherited

Definition at line 34 of file EDProducer.h.

template<typename UserConfig , typename KeysToIgnore = void>
using art::EDProducer::Table = ProducerBase::Table<UserConfig, KeysToIgnore>
inherited

Definition at line 43 of file EDProducer.h.

using art::EDProducer::WorkerType = WorkerT<EDProducer>
inherited

Definition at line 35 of file EDProducer.h.

Constructor & Destructor Documentation

opdet::OpMCDigi::OpMCDigi ( const fhicl::ParameterSet )

Definition at line 136 of file OpMCDigi_module.cc.

References art::EngineCreator::createEngine(), fDarkRate, fFlatRandom, fInputModule, fPoissonRandom, fSampleFreq, fSaturationScale, fSinglePEWaveform, fTimeBegin, fTimeEnd, fhicl::ParameterSet::get(), art::RandomNumberGenerator::getEngine(), and art::EngineCreator::rng().

137  {
138  // Infrastructure piece
139  produces<std::vector< raw::OpDetPulse> >();
140 
141 
142  // Input Module and histogram parameters come from .fcl
143  fInputModule = pset.get<std::string>("InputModule");
144 
146  fTimeBegin = odp->TimeBegin();
147  fTimeEnd = odp->TimeEnd();
148  fSampleFreq = odp->SampleFreq();
149 
150  //fQE = pset.get<double>("QE");
151  fDarkRate = pset.get<double>("DarkRate");
152  fSaturationScale = pset.get<double>("SaturationScale");
153 
154  // Initialize toy waveform vector fSinglePEWaveform
155  fSinglePEWaveform = odp->SinglePEWaveform();
156 
157 
158 
159  // create a default random engine; obtain the random seed from NuRandomService,
160  // unless overridden in configuration with key "Seed"
162  ->createEngine(*this, pset, "Seed");
163 
164  // Sample a random fraction of detected photons
166  CLHEP::HepRandomEngine &engine = rng->getEngine();
167  fFlatRandom = new CLHEP::RandFlat(engine);
168  fPoissonRandom = new CLHEP::RandPoisson(rng->getEngine());
169 
170 
171 
172 
173  }
CLHEP::RandFlat * fFlatRandom
base_engine_t & getEngine() const
base_engine_t & createEngine(seed_t seed)
std::string fInputModule
CLHEP::RandPoisson * fPoissonRandom
static art::ServiceHandle< art::RandomNumberGenerator > & rng()
std::vector< double > fSinglePEWaveform
opdet::OpMCDigi::~OpMCDigi ( )
virtual

Definition at line 185 of file OpMCDigi_module.cc.

186  {
187  }

Member Function Documentation

void opdet::OpMCDigi::AddTimedWaveform ( int  time,
std::vector< double > &  OldPulse,
std::vector< double > &  NewPulse 
)
private

Definition at line 193 of file OpMCDigi_module.cc.

Referenced by produce().

194  {
195 
196  if( (binTime + NewPulse.size() ) > OldPulse.size())
197  OldPulse.resize(binTime + NewPulse.size());
198 
199  // Add shifted NewWaveform to Waveform at pointer
200  for(size_t i = 0; i!=NewPulse.size(); ++i)
201  {
202  OldPulse.at(binTime+i) += NewPulse.at(i);
203  }
204  }
void opdet::OpMCDigi::beginJob ( )
virtual

Reimplemented from art::EDProducer.

Definition at line 178 of file OpMCDigi_module.cc.

179  {
180  }
template<typename T , BranchType = InEvent>
ProductToken<T> art::Consumer::consumes ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ProductToken<T> art::Consumer::consumes ( InputTag const &  it)
inherited

Definition at line 147 of file Consumer.h.

References art::InputTag::instance(), art::InputTag::label(), and art::InputTag::process().

148 {
149  if (!moduleContext_)
150  return ProductToken<T>::invalid();
151 
152  consumables_[BT].emplace_back(ConsumableType::Product,
153  TypeID{typeid(T)},
154  it.label(),
155  it.instance(),
156  it.process());
157  return ProductToken<T>{it};
158 }
static ProductToken< T > invalid()
Definition: ProductToken.h:47
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
template<typename T , art::BranchType BT>
void art::Consumer::consumesMany ( )
inherited

Definition at line 162 of file Consumer.h.

163 {
164  if (!moduleContext_)
165  return;
166 
167  consumables_[BT].emplace_back(ConsumableType::Many, TypeID{typeid(T)});
168 }
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
template<typename Element , BranchType = InEvent>
ViewToken<Element> art::Consumer::consumesView ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ViewToken<T> art::Consumer::consumesView ( InputTag const &  it)
inherited

Definition at line 172 of file Consumer.h.

References art::InputTag::instance(), art::InputTag::label(), and art::InputTag::process().

173 {
174  if (!moduleContext_)
175  return ViewToken<T>::invalid();
176 
177  consumables_[BT].emplace_back(ConsumableType::ViewElement,
178  TypeID{typeid(T)},
179  it.label(),
180  it.instance(),
181  it.process());
182  return ViewToken<T>{it};
183 }
static ViewToken< Element > invalid()
Definition: ProductToken.h:75
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
EngineCreator::base_engine_t & EngineCreator::createEngine ( seed_t  seed,
std::string const &  kind_of_engine_to_make 
)
inherited

Definition at line 32 of file EngineCreator.cc.

References art::EngineCreator::rng().

34 {
35  return rng()->createEngine(
36  placeholder_schedule_id(), seed, kind_of_engine_to_make);
37 }
long seed
Definition: chem4.cc:68
static art::ServiceHandle< art::RandomNumberGenerator > & rng()
EngineCreator::base_engine_t & EngineCreator::createEngine ( seed_t  seed,
std::string const &  kind_of_engine_to_make,
label_t const &  engine_label 
)
inherited

Definition at line 40 of file EngineCreator.cc.

References art::EngineCreator::rng().

43 {
44  return rng()->createEngine(
45  placeholder_schedule_id(), seed, kind_of_engine_to_make, engine_label);
46 }
long seed
Definition: chem4.cc:68
static art::ServiceHandle< art::RandomNumberGenerator > & rng()
CurrentProcessingContext const * art::EDProducer::currentContext ( ) const
protectedinherited

Definition at line 120 of file EDProducer.cc.

References art::EDProducer::current_context_.

121  {
122  return current_context_.get();
123  }
CPC_exempt_ptr current_context_
Definition: EDProducer.h:116
EngineCreator::seed_t EngineCreator::get_seed_value ( fhicl::ParameterSet const &  pset,
char const  key[] = "seed",
seed_t const  implicit_seed = -1 
)
inherited

Definition at line 49 of file EngineCreator.cc.

References fhicl::ParameterSet::get().

Referenced by art::MixFilter< T >::initEngine_().

52 {
53  auto const& explicit_seeds = pset.get<std::vector<int>>(key, {});
54  return explicit_seeds.empty() ? implicit_seed : explicit_seeds.front();
55 }
template<typename PROD , BranchType B>
ProductID art::EDProducer::getProductID ( std::string const &  instanceName = {}) const
inlineinherited

Definition at line 123 of file EDProducer.h.

References art::EDProducer::moduleDescription_.

124  {
125  return ProducerBase::getProductID<PROD, B>(moduleDescription_,
126  instanceName);
127  }
ModuleDescription moduleDescription_
Definition: EDProducer.h:115
template<typename PROD , BranchType B>
ProductID art::ProducerBase::getProductID ( ModuleDescription const &  moduleDescription,
std::string const &  instanceName 
) const
inherited

Definition at line 56 of file ProducerBase.h.

References B, and art::ModuleDescription::moduleLabel().

Referenced by art::ProducerBase::modifiesEvent().

58  {
59  auto const& pd =
60  get_ProductDescription<PROD>(B, md.moduleLabel(), instanceName);
61  return pd.productID();
62  }
Int_t B
Definition: plot.C:25
template<typename T , BranchType = InEvent>
ProductToken<T> art::Consumer::mayConsume ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ProductToken<T> art::Consumer::mayConsume ( InputTag const &  it)
inherited

Definition at line 190 of file Consumer.h.

References art::InputTag::instance(), art::InputTag::label(), and art::InputTag::process().

191 {
192  if (!moduleContext_)
193  return ProductToken<T>::invalid();
194 
195  consumables_[BT].emplace_back(ConsumableType::Product,
196  TypeID{typeid(T)},
197  it.label(),
198  it.instance(),
199  it.process());
200  return ProductToken<T>{it};
201 }
static ProductToken< T > invalid()
Definition: ProductToken.h:47
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
template<typename T , art::BranchType BT>
void art::Consumer::mayConsumeMany ( )
inherited

Definition at line 205 of file Consumer.h.

206 {
207  if (!moduleContext_)
208  return;
209 
210  consumables_[BT].emplace_back(ConsumableType::Many, TypeID{typeid(T)});
211 }
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
template<typename Element , BranchType = InEvent>
ViewToken<Element> art::Consumer::mayConsumeView ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ViewToken<T> art::Consumer::mayConsumeView ( InputTag const &  it)
inherited

Definition at line 215 of file Consumer.h.

References art::InputTag::instance(), art::InputTag::label(), and art::InputTag::process().

216 {
217  if (!moduleContext_)
218  return ViewToken<T>::invalid();
219 
220  consumables_[BT].emplace_back(ConsumableType::ViewElement,
221  TypeID{typeid(T)},
222  it.label(),
223  it.instance(),
224  it.process());
225  return ViewToken<T>{it};
226 }
static ViewToken< Element > invalid()
Definition: ProductToken.h:75
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
bool art::ProducerBase::modifiesEvent ( ) const
inlineinherited

Definition at line 40 of file ProducerBase.h.

References art::ProducerBase::getProductID().

41  {
42  return true;
43  }
void art::Consumer::prepareForJob ( fhicl::ParameterSet const &  pset)
protectedinherited

Definition at line 89 of file Consumer.cc.

References fhicl::ParameterSet::get_if_present().

Referenced by art::EDProducer::doBeginJob(), art::EDFilter::doBeginJob(), and art::EDAnalyzer::doBeginJob().

90 {
91  if (!moduleContext_)
92  return;
93 
94  pset.get_if_present("errorOnMissingConsumes", requireConsumes_);
95  for (auto& consumablesPerBranch : consumables_) {
96  cet::sort_all(consumablesPerBranch);
97  }
98 }
bool requireConsumes_
Definition: Consumer.h:137
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
void opdet::OpMCDigi::produce ( art::Event evt)
virtual

Implements art::EDProducer.

Definition at line 211 of file OpMCDigi_module.cc.

References AddTimedWaveform(), opdet::OpDetResponseInterface::detected(), opdet::OpDetResponseInterface::detectedLite(), fDarkRate, fFlatRandom, fInputModule, fPoissonRandom, fSampleFreq, fSaturationScale, fSinglePEWaveform, fTimeBegin, fTimeEnd, art::DataViewImpl::getByLabel(), sim::SimListUtils::GetSimPhotonsCollection(), opdet::OpDetResponseInterface::NOpChannels(), sim::SimPhotons::OpChannel(), art::Event::put(), art::EngineCreator::rng(), and sim::LArG4Parameters::UseLitePhotons().

212  {
213  // Infrastructure piece
214  std::unique_ptr<std::vector< raw::OpDetPulse > > StoragePtr (new std::vector<raw::OpDetPulse>);
215 
216 
218  bool fUseLitePhotons = lgp->UseLitePhotons();
219 
220  // Service for determining opdet responses
222 
223 
224 
225  double TimeBegin_ns = fTimeBegin * 1000;
226  double TimeEnd_ns = fTimeEnd * 1000;
227  double SampleFreq_ns = fSampleFreq / 1000;
228 
229  int nSamples = ( TimeEnd_ns-TimeBegin_ns)*SampleFreq_ns;
230 
231  int NOpChannels = odresponse->NOpChannels();
232 
233 
234  // This vector will store all the waveforms we will make
235  std::vector<std::vector<double> > PulsesFromDetPhotons(NOpChannels,std::vector<double>(nSamples,0.0));
236 
237  if(!fUseLitePhotons)
238  {
239  // Read in the Sim Photons
241  // For every OpDet:
242  for(sim::SimPhotonsCollection::const_iterator itOpDet=ThePhotCollection.begin(); itOpDet!=ThePhotCollection.end(); itOpDet++)
243  {
244  const sim::SimPhotons& ThePhot=itOpDet->second;
245 
246  int Ch = ThePhot.OpChannel();
247  int readoutCh;
248 
249  // For every photon in the hit:
250  for(const sim::OnePhoton& Phot: ThePhot)
251  {
252  // Sample a random subset according to QE
253  if(odresponse->detected(Ch, Phot, readoutCh))
254  {
255 
256  // Convert photon arrival time to the appropriate bin, dictated by fSampleFreq. Photon arrival time is in ns, beginning time in us, and sample frequency in MHz. Notice that we have to accommodate for the beginning time
257  if((Phot.Time > TimeBegin_ns) && (Phot.Time < TimeEnd_ns))
258  {
259  int binTime = int((Phot.Time - TimeBegin_ns) * SampleFreq_ns);
260 
261  // Call function to add waveforms to our pulse
262  AddTimedWaveform( binTime, PulsesFromDetPhotons[readoutCh], fSinglePEWaveform );
263 
264  }
265  } // random QE cut
266  } // for each Photon in SimPhotons
267 
268  }
269  }
270  else
271  {
273  evt.getByLabel("largeant", photonHandle);
274  // For every OpDet:
275  for ( auto const& photon : (*photonHandle) )
276  {
277  int Ch=photon.OpChannel;
278  int readoutCh;
279 
280  std::map<int, int> PhotonsMap = photon.DetectedPhotons;
281 
282  // For every photon in the hit:
283  for(auto it = PhotonsMap.begin(); it!= PhotonsMap.end(); it++)
284  {
285  for(int i = 0; i < it->second; i++)
286  {
287  // Sample a random subset according to QE
288  if(odresponse->detectedLite(Ch, readoutCh))
289  {
290  // Convert photon arrival time to the appropriate bin, dictated by fSampleFreq.
291  // Photon arrival time is in ns, beginning time in us, and sample frequency in MHz.
292  // Notice that we have to accommodate for the beginning time
293  if((it->first > TimeBegin_ns) && (it->first < TimeEnd_ns))
294  {
295  int binTime = int((it->first - TimeBegin_ns) * SampleFreq_ns);
296 
297  // Call function to add waveforms to our pulse
298  AddTimedWaveform( binTime, PulsesFromDetPhotons[readoutCh], fSinglePEWaveform );
299  }
300  } // random QE cut
301  }
302  } // for each Photon in SimPhotons
303  }
304  }
305 
307 
308 
309  // Create vector of output objects, add dark noise and apply
310  // saturation
311 
312  std::vector<raw::OpDetPulse*> ThePulses(NOpChannels);
313  for(int iCh=0; iCh!=NOpChannels; ++iCh)
314  {
315  PulsesFromDetPhotons[iCh].resize((TimeEnd_ns - TimeBegin_ns) * SampleFreq_ns);
316 
317  // Add dark noise
318  double MeanDarkPulses = fDarkRate * (fTimeEnd-fTimeBegin) / 1000000;
319 
320  unsigned int NumberOfPulses = fPoissonRandom->fire(MeanDarkPulses);
321 
322  for(size_t i=0; i!=NumberOfPulses; ++i)
323  {
324  double PulseTime = (fTimeEnd-fTimeBegin)*fFlatRandom->fire(1.0);
325  int binTime = int(PulseTime * fSampleFreq);
326 
327  AddTimedWaveform( binTime, PulsesFromDetPhotons[iCh], fSinglePEWaveform );
328  }
329 
330  // Apply saturation for large signals
331  for(size_t i=0; i!=PulsesFromDetPhotons[iCh].size(); ++i)
332  {
333  if(PulsesFromDetPhotons[iCh].at(i)>fSaturationScale) PulsesFromDetPhotons[iCh].at(i) = fSaturationScale;
334  }
335 
336  // Produce ADC pulse of integers rather than doubles
337 
338  std::vector<short> shortvec;
339 
340  for(size_t i=0; i!=PulsesFromDetPhotons[iCh].size(); ++i)
341  {
342  // Throw randoms to fairly sample +ve and -ve side of doubles
343  int ThisSample = PulsesFromDetPhotons[iCh].at(i);
344  if(ThisSample>0)
345  {
346  if(fFlatRandom->fire(1.0) > (ThisSample - int(ThisSample)))
347  shortvec.push_back(int(ThisSample));
348  else
349  shortvec.push_back(int(ThisSample)+1);
350  }
351  else
352  {
353  if(fFlatRandom->fire(1.0) > (int(ThisSample)-ThisSample))
354  shortvec.push_back(int(ThisSample));
355  else
356  shortvec.push_back(int(ThisSample)-1);
357  }
358  }
359 
360 
361  StoragePtr->push_back( raw::OpDetPulse( iCh, shortvec ,0, fTimeBegin) );
362 
363  } // for each OpDet in SimPhotonsCollection
364 
365 
366  evt.put(std::move(StoragePtr));
367  }
CLHEP::RandFlat * fFlatRandom
int OpChannel() const
Definition: SimPhotons.h:161
void AddTimedWaveform(int time, std::vector< double > &OldPulse, std::vector< double > &NewPulse)
virtual bool detected(int OpChannel, const sim::OnePhoton &Phot, int &newOpChannel) const
ProductID put(std::unique_ptr< PROD > &&product)
Definition: Event.h:102
virtual bool detectedLite(int OpChannel, int &newOpChannel) const
std::string fInputModule
CLHEP::RandPoisson * fPoissonRandom
static art::ServiceHandle< art::RandomNumberGenerator > & rng()
bool getByLabel(std::string const &label, std::string const &productInstanceName, Handle< PROD > &result) const
Definition: DataViewImpl.h:344
std::vector< double > fSinglePEWaveform
list_type::const_iterator const_iterator
Definition: SimPhotons.h:134
static sim::SimPhotonsCollection GetSimPhotonsCollection(const art::Event &evt, std::string moduleLabel)
bool UseLitePhotons() const
void art::Consumer::showMissingConsumes ( ) const
protectedinherited

Definition at line 125 of file Consumer.cc.

Referenced by art::EDProducer::doEndJob(), art::EDFilter::doEndJob(), art::EDAnalyzer::doEndJob(), and art::RootOutput::endJob().

126 {
127  if (!moduleContext_)
128  return;
129 
130  // If none of the branches have missing consumes statements, exit early.
131  if (std::all_of(cbegin(missingConsumes_),
132  cend(missingConsumes_),
133  [](auto const& perBranch) { return perBranch.empty(); }))
134  return;
135 
136  constexpr cet::HorizontalRule rule{60};
137  mf::LogPrint log{"MTdiagnostics"};
138  log << '\n'
139  << rule('=') << '\n'
140  << "The following consumes (or mayConsume) statements are missing from\n"
141  << module_context(moduleDescription_) << '\n'
142  << rule('-') << '\n';
143 
144  cet::for_all_with_index(
145  missingConsumes_, [&log](std::size_t const i, auto const& perBranch) {
146  for (auto const& pi : perBranch) {
147  log << " "
148  << assemble_consumes_statement(static_cast<BranchType>(i), pi)
149  << '\n';
150  }
151  });
152  log << rule('=');
153 }
cet::exempt_ptr< ModuleDescription const > moduleDescription_
Definition: Consumer.h:140
constexpr T pi()
Returns the constant pi (up to 35 decimal digits of precision)
bool moduleContext_
Definition: Consumer.h:136
ConsumableProductSets missingConsumes_
Definition: Consumer.h:139
void art::Consumer::validateConsumedProduct ( BranchType const  bt,
ProductInfo const &  pi 
)
protectedinherited

Definition at line 101 of file Consumer.cc.

References art::errors::ProductRegistrationFailure.

103 {
104  // Early exits if consumes tracking has been disabled or if the
105  // consumed product is an allowed consumable.
106  if (!moduleContext_)
107  return;
108 
109  if (cet::binary_search_all(consumables_[bt], pi))
110  return;
111 
112  if (requireConsumes_) {
114  "Consumer: an error occurred during validation of a "
115  "retrieved product\n\n")
116  << "The following consumes (or mayConsume) statement is missing from\n"
117  << module_context(moduleDescription_) << ":\n\n"
118  << " " << assemble_consumes_statement(bt, pi) << "\n\n";
119  }
120 
121  missingConsumes_[bt].insert(pi);
122 }
cet::exempt_ptr< ModuleDescription const > moduleDescription_
Definition: Consumer.h:140
bool requireConsumes_
Definition: Consumer.h:137
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
Definition: Exception.h:66
constexpr T pi()
Returns the constant pi (up to 35 decimal digits of precision)
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
ConsumableProductSets missingConsumes_
Definition: Consumer.h:139

Member Data Documentation

float opdet::OpMCDigi::fDarkRate
private

Definition at line 59 of file OpMCDigi_module.cc.

Referenced by OpMCDigi(), and produce().

CLHEP::RandFlat* opdet::OpMCDigi::fFlatRandom
private

Definition at line 63 of file OpMCDigi_module.cc.

Referenced by OpMCDigi(), and produce().

std::string opdet::OpMCDigi::fInputModule
private

Definition at line 52 of file OpMCDigi_module.cc.

Referenced by OpMCDigi(), and produce().

CLHEP::RandPoisson* opdet::OpMCDigi::fPoissonRandom
private

Definition at line 64 of file OpMCDigi_module.cc.

Referenced by OpMCDigi(), and produce().

float opdet::OpMCDigi::fSampleFreq
private

Definition at line 53 of file OpMCDigi_module.cc.

Referenced by OpMCDigi(), and produce().

float opdet::OpMCDigi::fSaturationScale
private

Definition at line 57 of file OpMCDigi_module.cc.

Referenced by OpMCDigi(), and produce().

std::vector<double> opdet::OpMCDigi::fSinglePEWaveform
private

Definition at line 61 of file OpMCDigi_module.cc.

Referenced by OpMCDigi(), and produce().

float opdet::OpMCDigi::fTimeBegin
private

Definition at line 54 of file OpMCDigi_module.cc.

Referenced by OpMCDigi(), and produce().

float opdet::OpMCDigi::fTimeEnd
private

Definition at line 55 of file OpMCDigi_module.cc.

Referenced by OpMCDigi(), and produce().


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