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

Classes

class  ResponseParams
 

Public Member Functions

 SimReadoutBoardICARUS (fhicl::ParameterSet const &pset)
 
virtual ~SimReadoutBoardICARUS ()
 
void produce (art::Event &evt)
 
void beginJob ()
 
void endJob ()
 
void reconfigure (fhicl::ParameterSet const &p)
 

Private Types

using TPCIDVec = std::vector< geo::TPCID >
 
using FFTPointer = std::unique_ptr< icarus_signal_processing::ICARUSFFT< double >>
 

Private Member Functions

void MakeADCVec (std::vector< short > &adc, icarusutil::TimeVec const &noise, icarusutil::TimeVec const &charge, float ped_mean) const
 

Private Attributes

art::InputTag fDriftEModuleLabel
 module making the ionization electrons More...
 
std::string fOutInstanceLabel
 The label to apply to the output data product. More...
 
bool fProcessAllTPCs
 If true we process all TPCs. More...
 
unsigned int fCryostat
 If ProcessAllTPCs is false then cryostat to use. More...
 
TPCIDVec fTPCVec
 List of TPCs to process for this instance of the module. More...
 
raw::Compress_t fCompression
 compression type to use More...
 
unsigned int fNTimeSamples
 number of ADC readout samples in all readout frames (per event) More...
 
std::map< double, int > fShapingTimeOrder
 
bool fSimDeadChannels
 if True, simulate dead channels using the ChannelStatus service. If false, do not simulate dead channels More...
 
bool fSuppressNoSignal
 If no signal on wire (simchannel) then suppress the channel. More...
 
bool fSmearPedestals
 If True then we smear the pedestals. More...
 
int fNumChanPerMB
 Number of channels per motherboard. More...
 
std::unique_ptr
< icarus_tool::IGenNoise
fNoiseTool
 Tool for generating noise. More...
 
bool fMakeHistograms
 
bool fTest
 
std::vector< sim::SimChannelfTestSimChannel_v
 
size_t fTestWire
 
std::vector< size_t > fTestIndex
 
std::vector< double > fTestCharge
 
TH1F * fSimCharge
 
TH2F * fSimChargeWire
 
CLHEP::HepRandomEngine & fPedestalEngine
 
CLHEP::HepRandomEngine & fUncNoiseEngine
 
CLHEP::HepRandomEngine & fCorNoiseEngine
 
const float adcsaturation = 4095
 
FFTPointer fFFT
 
const geo::GeometryCorefGeometry
 
icarusutil::SignalShapingICARUSServicefSignalShapingService
 
const icarusDB::IICARUSChannelMapfChannelMap
 

Detailed Description

Definition at line 71 of file SimReadoutBoardICARUS_module.cc.

Member Typedef Documentation

using detsim::SimReadoutBoardICARUS::FFTPointer = std::unique_ptr<icarus_signal_processing::ICARUSFFT<double>>
private

Definition at line 137 of file SimReadoutBoardICARUS_module.cc.

Definition at line 89 of file SimReadoutBoardICARUS_module.cc.

Constructor & Destructor Documentation

detsim::SimReadoutBoardICARUS::SimReadoutBoardICARUS ( fhicl::ParameterSet const &  pset)
explicit

Definition at line 149 of file SimReadoutBoardICARUS_module.cc.

150  : EDProducer{pset}
151  , fPedestalEngine(art::ServiceHandle<rndm::NuRandomService>()->createEngine(*this, "HepJamesRandom", "pedestal", pset, "SeedPedestal"))
152  , fUncNoiseEngine(art::ServiceHandle<rndm::NuRandomService>()->createEngine(*this, "HepJamesRandom", "noise", pset, "Seed"))
153  , fCorNoiseEngine(art::ServiceHandle<rndm::NuRandomService>()->createEngine(*this, "HepJamesRandom", "cornoise", pset, "Seed"))
154  , fGeometry(*lar::providerFrom<geo::Geometry>())
155  , fChannelMap(art::ServiceHandle<icarusDB::IICARUSChannelMap const>{}.get())
const icarusDB::IICARUSChannelMap * fChannelMap
detsim::SimReadoutBoardICARUS::~SimReadoutBoardICARUS ( )
virtual

Definition at line 167 of file SimReadoutBoardICARUS_module.cc.

167 {}

Member Function Documentation

void detsim::SimReadoutBoardICARUS::beginJob ( )

Definition at line 215 of file SimReadoutBoardICARUS_module.cc.

216 {
217  // get access to the TFile service
218  art::ServiceHandle<art::TFileService> tfs;
219 
220  // If in test mode create a test data set
221  if(fTest)
222  {
224  throw cet::exception(__FUNCTION__)<<"Invalid test wire channel: "<<fTestWire;
225  std::vector<unsigned int> channels;
226  for(auto const& plane_id : fGeometry.IteratePlaneIDs())
227  channels.push_back(fGeometry.PlaneWireToChannel(plane_id.Plane,fTestWire));
228  double xyz[3] = { std::numeric_limits<double>::max() };
229  for(auto const& ch : channels)
230  {
231  fTestSimChannel_v.push_back(sim::SimChannel(ch));
232  for(size_t i=0; i<fTestIndex.size(); ++i)
233  {
234  fTestSimChannel_v.back().AddIonizationElectrons(-1,
235  fTestIndex[i],
236  fTestCharge[i],
237  xyz,
238  std::numeric_limits<double>::max());
239  }
240  }
241  }
242 
243  fSimCharge = tfs->make<TH1F>("fSimCharge", "simulated charge", 150, 0, 1500);
244  fSimChargeWire = tfs->make<TH2F>("fSimChargeWire", "simulated charge", 5600,0.,5600.,500, 0, 1500);
245 
246  return;
247 }
Energy deposited on a readout channel by simulated tracks.
Definition: SimChannel.h:145
unsigned int Nchannels() const
Returns the number of TPC readout channels in the detector.
IteratorBox< plane_id_iterator,&GeometryCore::begin_plane_id,&GeometryCore::end_plane_id > IteratePlaneIDs() const
Enables ranged-for loops on all plane IDs of the detector.
raw::ChannelID_t PlaneWireToChannel(WireID const &wireid) const
Returns the ID of the TPC channel connected to the specified wire.
std::vector< sim::SimChannel > fTestSimChannel_v
art::ServiceHandle< art::TFileService > tfs
void detsim::SimReadoutBoardICARUS::endJob ( )

Definition at line 249 of file SimReadoutBoardICARUS_module.cc.

250 {}
void detsim::SimReadoutBoardICARUS::MakeADCVec ( std::vector< short > &  adc,
icarusutil::TimeVec const &  noise,
icarusutil::TimeVec const &  charge,
float  ped_mean 
) const
private

Definition at line 497 of file SimReadoutBoardICARUS_module.cc.

499 {
500  for(unsigned int i = 0; i < fNTimeSamples; ++i)
501  {
502  float adcval = noisevec[i] + chargevec[i] + ped_mean;
503 
504  adcval = std::max(float(0.), std::min(adcval, adcsaturation));
505 
506  adcvec[i] = std::round(adcval);
507  }// end loop over signal size
508  // compress the adc vector using the desired compression scheme,
509  // if raw::kNone is selected nothing happens to adcvec
510  // This shrinks adcvec, if fCompression is not kNone.
511  raw::Compress(adcvec, fCompression);
512 
513  return;
514 }
void Compress(std::vector< short > &adc, raw::Compress_t compress)
Compresses a raw data buffer.
Definition: raw.cxx:19
raw::Compress_t fCompression
compression type to use
unsigned int fNTimeSamples
number of ADC readout samples in all readout frames (per event)
void detsim::SimReadoutBoardICARUS::produce ( art::Event &  evt)

Definition at line 251 of file SimReadoutBoardICARUS_module.cc.

252 {
253  //--------------------------------------------------------------------
254  //
255  // Get all of the services we will be using
256  //
257  //--------------------------------------------------------------------
258 
259  //get pedestal conditions
260 // const lariov::DetPedestalProvider& pedestalRetrievalAlg = art::ServiceHandle<lariov::DetPedestalService>()->GetPedestalProvider();
261 
262  //channel status for simulating dead channels
263  const lariov::ChannelStatusProvider& ChannelStatusProvider = art::ServiceHandle<lariov::ChannelStatusService>()->GetProvider();
264 
265  auto const clockData = art::ServiceHandle<detinfo::DetectorClocksService const>()->DataFor(evt);
266 
267  // get the geometry to be able to figure out signal types and chan -> plane mappings
268  const raw::ChannelID_t maxChannel = fGeometry.Nchannels();
269 
270  //--------------------------------------------------------------------
271  //
272  // Get the SimChannels, which we will use to produce RawDigits
273  //
274  //--------------------------------------------------------------------
275  // make a vector of const sim::SimChannel* that has same number
276  // of entries as the number of channels in the detector
277  // and set the entries for the channels that have signal on them
278  // using the chanHandle
279  std::vector<const sim::SimChannel*> channels(maxChannel,nullptr);
280  if(!fTest)
281  {
282  std::vector<const sim::SimChannel*> chanHandle;
283  evt.getView(fDriftEModuleLabel,chanHandle);
284 
285  for(const auto& simChannel : chanHandle) channels.at(simChannel->Channel()) = simChannel;
286  }
287  else
288  for(const auto& testChannel : fTestSimChannel_v) channels.at(testChannel.Channel()) = &testChannel;
289 
290  // make a unique_ptr of sim::SimDigits that allows ownership of the produced
291  // digits to be transferred to the art::Event after the put statement below
292  std::unique_ptr< std::vector<raw::RawDigit>> digcol(new std::vector<raw::RawDigit>);
293  digcol->reserve(maxChannel);
294  //--------------------------------------------------------------------
295  //
296  // Loop over channels a second time and produce the RawDigits by adding together
297  // pedestal, noise, and direct & induced charges
298  //
299  //--------------------------------------------------------------------
300 
301  // vectors for working in the following for loop
302  std::vector<short> adcvec(fNTimeSamples, 0);
303  icarusutil::TimeVec chargeWork(fNTimeSamples,0.);
304  icarusutil::TimeVec zeroCharge(fNTimeSamples,0.);
305  icarusutil::TimeVec noisetmp(fNTimeSamples,0.);
306 
307  // make sure chargeWork is correct size
308  if (chargeWork.size() < fNTimeSamples) throw std::range_error("SimReadoutBoardICARUS: chargeWork vector too small");
309 
310  //detector properties information
311  auto const detProp = art::ServiceHandle<detinfo::DetectorPropertiesService const>()->DataFor(evt);
312 
313  // Let the tools know to update to the next event
314  fNoiseTool->nextEvent();
315 
316  // Plan is to loop over readout boards, rejecting any that are not in the TPC list
317  // For any good readout boards we loop through the channels.
318 
319  // Get the board ids for this fragment
321 
322  unsigned int boardCount(0);
323 
324  std::set<raw::ChannelID_t> channelIDSet;
325 
326  for(const auto& boardPair : readoutBoardToChannelMap)
327  {
328  // A little song and dance to make sure this board is in our TPC group
329  // What we need is a proper mapping but because we can have channels which are not valid for the geometry
330  // service we have a little thing we have to go through here...
331  std::vector<geo::WireID> wireIDVec;
332 
333  for(const auto& channelPair : boardPair.second.second)
334  {
335  wireIDVec = fGeometry.ChannelToWire(channelPair.first);
336 
337  if (wireIDVec.size() > 0) break;
338  }
339 
340  if (wireIDVec.empty()) continue; // Can this happen?
341 
342  bool goodBoard(false);
343  unsigned int cryostat(0);
344  unsigned int tpc(0);
345 
346  for(geo::TPCID const& tpcid : fTPCVec)
347  {
348  if (tpcid.Cryostat == wireIDVec[0].Cryostat && tpcid.TPC == wireIDVec[0].TPC)
349  {
350  goodBoard = true;
351  cryostat = tpcid.Cryostat;
352  tpc = tpcid.TPC;
353  break;
354  }
355  }
356 
357  if (!goodBoard) continue;
358 
359  // For this board loop over channels
360  for(const auto& channelPair : boardPair.second.second)
361  {
362  // Recover channel and plane info
363  raw::ChannelID_t channel = channelPair.first;
364  size_t plane = channelPair.second;
365  geo::PlaneID planeID(cryostat,tpc,plane);
366 
367  if (channelIDSet.find(channel) != channelIDSet.end())
368  {
369  std::cout << "############### Found already used channel! channelID: " << channel << std::endl;
370  }
371  channelIDSet.insert(channel);
372 
373  //clean up working vectors from previous iteration of loop
374  adcvec.resize(fNTimeSamples, 0); //compression may have changed the size of this vector
375  noisetmp.resize(fNTimeSamples, 0.); //just in case
376 
377  //use channel number to set some useful numbers
378 
379  //Get pedestal with random gaussian variation
380  float ped_mean = 2048; //pedestalRetrievalAlg.PedMean(channel);
381 
382  if (fSmearPedestals )
383  {
384  CLHEP::RandGaussQ rGaussPed(fPedestalEngine, 0.0, 3.0); //pedestalRetrievalAlg.PedRms(channel));
385  ped_mean += rGaussPed.fire();
386  }
387 
388  //Generate Noise
389  double noise_factor(0.);
390  double shapingTime = fSignalShapingService->GetShapingTime(plane);
391  auto tempNoiseVec = fSignalShapingService->GetNoiseFactVec();
392 
393  if (fShapingTimeOrder.find( shapingTime ) != fShapingTimeOrder.end() )
394  noise_factor = tempNoiseVec[plane].at( fShapingTimeOrder.find( shapingTime )->second );
395  //Throw exception...
396  else
397  {
398  throw cet::exception("SimReadoutBoardICARUS")
399  << "\033[93m"
400  << "Shaping Time received from signalservices_icarus.fcl is not one of allowed values"
401  << std::endl
402  << "Allowed values: 0.6, 1.0, 1.3, 3.0 usec"
403  << "\033[00m"
404  << std::endl;
405  }
406 
407  // Check where this wire is located
408  std::vector<geo::WireID> widVec = fGeometry.ChannelToWire(channel);
409 
410  // For now skip the channels with no info
411 // if (widVec.empty()) continue;
412 // unsigned int wire(0);
413 // if (widVec.size() > 0) wire = widVec[0].Wire;
414 
415 // if (cryostat == 0 && tpc == 0) std::cout << " -wireIdx " << wireIdx++ << ", wire: " << wire << ", plane " << plane << " channel " << channel << ", noise_factor: " << noise_factor << ", planeID: " << planeID << std::endl;
416 
417  // Use the desired noise tool to actually generate the noise on this wire
418  fNoiseTool->generateNoise(fUncNoiseEngine,
420  noisetmp,
421  detProp,
422  noise_factor,
423  planeID,
424  boardPair.first);
425 
426  // Recover the SimChannel (if one) for this channel
427  const sim::SimChannel* simChan = channels[channel];
428 
429  // If there is something on this wire, and it is not dead, then add the signal to the wire
430  if(simChan && !(fSimDeadChannels && (ChannelStatusProvider.IsBad(channel) || !ChannelStatusProvider.IsPresent(channel))))
431  {
432  double gain = fSignalShapingService->GetASICGain(channel) * sampling_rate(clockData) * 1.e-3; // Gain returned is electrons/us, this converts to electrons/tick
433  int timeOffset = fSignalShapingService->ResponseTOffset(channel);
434 
435  // Recover the response function information for this channel
436  const icarus_tool::IResponse& response = fSignalShapingService->GetResponse(channel);
437 
438  std::fill(chargeWork.begin(), chargeWork.end(), 0.);
439 
440  // loop over the tdcs and grab the number of electrons for each
441  for(size_t tick = 0; tick < fNTimeSamples; tick++)
442  {
443  // Note that we attempt to explicitly remove the time offsets between the planes and leave it to the response
444  // functions to handle this. So we reference the time to the first plane
445  int tdc = clockData.TPCTick2TDC(tick + detProp.GetXTicksOffset(planeID) - detProp.GetXTicksOffset(geo::PlaneID(cryostat,tpc,0)));
446 
447  // continue if tdc < 0
448  if( tdc < 0 ) continue;
449 
450  double charge = simChan->Charge(tdc); // Charge returned in number of electrons
451 
452  chargeWork[tick] += charge/gain; // # electrons / (# electrons/tick)
453  } // loop over tdcs
454  // now we have the tempWork for the adjacent wire of interest
455  // convolve it with the appropriate response function
456  fFFT->convolute(chargeWork, response.getConvKernel(), timeOffset);
457 
458  // "Make" the ADC vector
459  MakeADCVec(adcvec, noisetmp, chargeWork, ped_mean);
460  }
461  // "Make" an ADC vector with zero charge added
462  else MakeADCVec(adcvec, noisetmp, zeroCharge, ped_mean);
463 
464  // add this digit to the collection;
465  // adcvec is copied, not moved: in case of compression, adcvec will show
466  // less data: e.g. if the uncompressed adcvec has 9600 items, after
467  // compression it will have maybe 5000, but the memory of the other 4600
468  // is still there, although unused; a copy of adcvec will instead have
469  // only 5000 items. All 9600 items of adcvec will be recovered for free
470  // and used on the next loop.
471  raw::RawDigit rd(channel, fNTimeSamples, adcvec, fCompression);
472 
473  if(fMakeHistograms && plane==2)
474  {
475  short area = std::accumulate(adcvec.begin(),adcvec.end(),0,[](const auto& val,const auto& sum){return sum + val - 400;});
476 
477  if(area>0)
478  {
479  std::vector<geo::WireID> widVec = fGeometry.ChannelToWire(channel);
480 
481  fSimCharge->Fill(area);
482  fSimChargeWire->Fill(widVec[0].Wire,area);
483  }
484  }
485 
486  rd.SetPedestal(ped_mean);
487  digcol->push_back(std::move(rd)); // we do move the raw digit copy, though
488  }
489 
490  boardCount++;
491  }
492  evt.put(std::move(digcol), fOutInstanceLabel);
493 
494  return;
495 }
TPCIDVec fTPCVec
List of TPCs to process for this instance of the module.
double GetASICGain(unsigned int const channel) const
bool fSimDeadChannels
if True, simulate dead channels using the ChannelStatus service. If false, do not simulate dead chann...
Collection of charge vs time digitized from a single readout channel.
Definition: RawDigit.h:69
Energy deposited on a readout channel by simulated tracks.
Definition: SimChannel.h:145
virtual bool IsBad(raw::ChannelID_t channel) const =0
Returns whether the specified channel is bad in the current run.
virtual const icarusutil::FrequencyVec & getConvKernel() const =0
virtual const TPCReadoutBoardToChannelMap & getReadoutBoardToChannelMap() const =0
The data type to uniquely identify a Plane.
Definition: geo_types.h:472
std::vector< geo::WireID > ChannelToWire(raw::ChannelID_t const channel) const
Returns a list of wires connected to the specified TPC channel.
bool fSmearPedestals
If True then we smear the pedestals.
double GetShapingTime(unsigned int const planeIdx) const
std::string fOutInstanceLabel
The label to apply to the output data product.
unsigned int Nchannels() const
Returns the number of TPC readout channels in the detector.
void MakeADCVec(std::vector< short > &adc, icarusutil::TimeVec const &noise, icarusutil::TimeVec const &charge, float ped_mean) const
virtual bool IsPresent(raw::ChannelID_t channel) const =0
Returns whether the specified channel is physical and connected to wire.
double Charge(TDC_t tdc) const
Returns the total number of ionization electrons on this channel in the specified TDC...
Definition: SimChannel.cxx:138
art::InputTag fDriftEModuleLabel
module making the ionization electrons
const icarusDB::IICARUSChannelMap * fChannelMap
std::vector< SigProcPrecision > TimeVec
tick_as<> tick
Tick number, represented by std::ptrdiff_t.
Definition: electronics.h:75
icarusutil::SignalShapingICARUSService * fSignalShapingService
void fill(const art::PtrVector< recob::Hit > &hits, int only_plane)
Class providing information about the quality of channels.
The data type to uniquely identify a TPC.
Definition: geo_types.h:386
std::map< unsigned int, SlotChannelVecPair > TPCReadoutBoardToChannelMap
const icarus_tool::IResponse & GetResponse(size_t channel) const
std::vector< sim::SimChannel > fTestSimChannel_v
TCEvent evt
Definition: DataStructs.cxx:8
raw::Compress_t fCompression
compression type to use
unsigned int ChannelID_t
Type representing the ID of a readout channel.
Definition: RawTypes.h:28
double sampling_rate(DetectorClocksData const &data)
Returns the period of the TPC readout electronics clock.
int ResponseTOffset(unsigned int const channel) const
unsigned int fNTimeSamples
number of ADC readout samples in all readout frames (per event)
BEGIN_PROLOG could also be cout
auto const detProp
std::unique_ptr< icarus_tool::IGenNoise > fNoiseTool
Tool for generating noise.
void detsim::SimReadoutBoardICARUS::reconfigure ( fhicl::ParameterSet const &  p)

Definition at line 169 of file SimReadoutBoardICARUS_module.cc.

170 {
171  fDriftEModuleLabel = p.get< art::InputTag >("DriftEModuleLabel", "largeant");
172  fOutInstanceLabel = p.get< std::string >("OutputInstanceLabel", "");
173  fProcessAllTPCs = p.get< bool >("ProcessAllTPCs", false);
174  fCryostat = p.get< unsigned int >("Cryostat", 0);
175  fSimDeadChannels = p.get< bool >("SimDeadChannels", false);
176  fSuppressNoSignal = p.get< bool >("SuppressNoSignal", false);
177  fMakeHistograms = p.get< bool >("MakeHistograms", false);
178  fSmearPedestals = p.get< bool >("SmearPedestals", true);
179  fNumChanPerMB = p.get< int >("NumChanPerMB", 32);
180  fTest = p.get< bool >("Test", false);
181  fTestWire = p.get< size_t >("TestWire", 0);
182  fTestIndex = p.get< std::vector<size_t> >("TestIndex", std::vector<size_t>());
183  fTestCharge = p.get< std::vector<double> >("TestCharge", std::vector<double>());
184 
185  using TPCValsPair = std::pair<unsigned int, unsigned int>; // Assume cryostat, TPC
186  using TPCValsVec = std::vector<TPCValsPair>;
187 
188  TPCValsVec tempIDVec = p.get< TPCValsVec >("TPCVec", TPCValsVec());
189 
190  for(const auto& idPair : tempIDVec)
191  {
192  fTPCVec.push_back(geo::TPCID(idPair.first,idPair.second));
193  }
194 
195  if(fTestIndex.size() != fTestCharge.size())
196  throw cet::exception(__FUNCTION__)<<"# test pulse mismatched: check TestIndex and TestCharge fcl parameters...";
197 
198  fNoiseTool = art::make_tool<icarus_tool::IGenNoise>(p.get<fhicl::ParameterSet>("NoiseGenTool"));
199 
200  //Map the Shaping Times to the entry position for the noise ADC
201  //level in fNoiseFactInd and fNoiseFactColl
202  fShapingTimeOrder = { {0.6, 0}, {1, 1}, {1.3, 2}, {3.0, 3} };
203 
204  //detector properties information
205  auto const detProp = art::ServiceHandle<detinfo::DetectorPropertiesService const>()->DataForJob();
206  fNTimeSamples = detProp.NumberTimeSamples();
207 
208  fSignalShapingService = art::ServiceHandle<icarusutil::SignalShapingICARUSService>{}.get();
209 
210  fFFT = std::make_unique<icarus_signal_processing::ICARUSFFT<double>>(fNTimeSamples);
211 
212  return;
213 }
TPCIDVec fTPCVec
List of TPCs to process for this instance of the module.
bool fSimDeadChannels
if True, simulate dead channels using the ChannelStatus service. If false, do not simulate dead chann...
int fNumChanPerMB
Number of channels per motherboard.
pdgs p
Definition: selectors.fcl:22
bool fSmearPedestals
If True then we smear the pedestals.
bool fSuppressNoSignal
If no signal on wire (simchannel) then suppress the channel.
std::string fOutInstanceLabel
The label to apply to the output data product.
bool fProcessAllTPCs
If true we process all TPCs.
art::InputTag fDriftEModuleLabel
module making the ionization electrons
icarusutil::SignalShapingICARUSService * fSignalShapingService
unsigned int fCryostat
If ProcessAllTPCs is false then cryostat to use.
The data type to uniquely identify a TPC.
Definition: geo_types.h:386
unsigned int fNTimeSamples
number of ADC readout samples in all readout frames (per event)
auto const detProp
std::unique_ptr< icarus_tool::IGenNoise > fNoiseTool
Tool for generating noise.

Member Data Documentation

const float detsim::SimReadoutBoardICARUS::adcsaturation = 4095
private

Definition at line 124 of file SimReadoutBoardICARUS_module.cc.

const icarusDB::IICARUSChannelMap* detsim::SimReadoutBoardICARUS::fChannelMap
private

Definition at line 143 of file SimReadoutBoardICARUS_module.cc.

raw::Compress_t detsim::SimReadoutBoardICARUS::fCompression
private

compression type to use

Definition at line 96 of file SimReadoutBoardICARUS_module.cc.

CLHEP::HepRandomEngine& detsim::SimReadoutBoardICARUS::fCorNoiseEngine
private

Definition at line 120 of file SimReadoutBoardICARUS_module.cc.

unsigned int detsim::SimReadoutBoardICARUS::fCryostat
private

If ProcessAllTPCs is false then cryostat to use.

Definition at line 94 of file SimReadoutBoardICARUS_module.cc.

art::InputTag detsim::SimReadoutBoardICARUS::fDriftEModuleLabel
private

module making the ionization electrons

Definition at line 91 of file SimReadoutBoardICARUS_module.cc.

FFTPointer detsim::SimReadoutBoardICARUS::fFFT
private

Definition at line 138 of file SimReadoutBoardICARUS_module.cc.

const geo::GeometryCore& detsim::SimReadoutBoardICARUS::fGeometry
private

Definition at line 141 of file SimReadoutBoardICARUS_module.cc.

bool detsim::SimReadoutBoardICARUS::fMakeHistograms
private

Definition at line 107 of file SimReadoutBoardICARUS_module.cc.

std::unique_ptr<icarus_tool::IGenNoise> detsim::SimReadoutBoardICARUS::fNoiseTool
private

Tool for generating noise.

Definition at line 105 of file SimReadoutBoardICARUS_module.cc.

unsigned int detsim::SimReadoutBoardICARUS::fNTimeSamples
private

number of ADC readout samples in all readout frames (per event)

Definition at line 97 of file SimReadoutBoardICARUS_module.cc.

int detsim::SimReadoutBoardICARUS::fNumChanPerMB
private

Number of channels per motherboard.

Definition at line 103 of file SimReadoutBoardICARUS_module.cc.

std::string detsim::SimReadoutBoardICARUS::fOutInstanceLabel
private

The label to apply to the output data product.

Definition at line 92 of file SimReadoutBoardICARUS_module.cc.

CLHEP::HepRandomEngine& detsim::SimReadoutBoardICARUS::fPedestalEngine
private

Definition at line 118 of file SimReadoutBoardICARUS_module.cc.

bool detsim::SimReadoutBoardICARUS::fProcessAllTPCs
private

If true we process all TPCs.

Definition at line 93 of file SimReadoutBoardICARUS_module.cc.

std::map< double, int > detsim::SimReadoutBoardICARUS::fShapingTimeOrder
private

Definition at line 98 of file SimReadoutBoardICARUS_module.cc.

icarusutil::SignalShapingICARUSService* detsim::SimReadoutBoardICARUS::fSignalShapingService
private

Definition at line 142 of file SimReadoutBoardICARUS_module.cc.

TH1F* detsim::SimReadoutBoardICARUS::fSimCharge
private

Definition at line 114 of file SimReadoutBoardICARUS_module.cc.

TH2F* detsim::SimReadoutBoardICARUS::fSimChargeWire
private

Definition at line 115 of file SimReadoutBoardICARUS_module.cc.

bool detsim::SimReadoutBoardICARUS::fSimDeadChannels
private

if True, simulate dead channels using the ChannelStatus service. If false, do not simulate dead channels

Definition at line 100 of file SimReadoutBoardICARUS_module.cc.

bool detsim::SimReadoutBoardICARUS::fSmearPedestals
private

If True then we smear the pedestals.

Definition at line 102 of file SimReadoutBoardICARUS_module.cc.

bool detsim::SimReadoutBoardICARUS::fSuppressNoSignal
private

If no signal on wire (simchannel) then suppress the channel.

Definition at line 101 of file SimReadoutBoardICARUS_module.cc.

bool detsim::SimReadoutBoardICARUS::fTest
private

Definition at line 108 of file SimReadoutBoardICARUS_module.cc.

std::vector<double> detsim::SimReadoutBoardICARUS::fTestCharge
private

Definition at line 112 of file SimReadoutBoardICARUS_module.cc.

std::vector<size_t> detsim::SimReadoutBoardICARUS::fTestIndex
private

Definition at line 111 of file SimReadoutBoardICARUS_module.cc.

std::vector<sim::SimChannel> detsim::SimReadoutBoardICARUS::fTestSimChannel_v
private

Definition at line 109 of file SimReadoutBoardICARUS_module.cc.

size_t detsim::SimReadoutBoardICARUS::fTestWire
private

Definition at line 110 of file SimReadoutBoardICARUS_module.cc.

TPCIDVec detsim::SimReadoutBoardICARUS::fTPCVec
private

List of TPCs to process for this instance of the module.

Definition at line 95 of file SimReadoutBoardICARUS_module.cc.

CLHEP::HepRandomEngine& detsim::SimReadoutBoardICARUS::fUncNoiseEngine
private

Definition at line 119 of file SimReadoutBoardICARUS_module.cc.


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