All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
opdet::DigiArapucaSBNDAlg Class Reference

#include <DigiArapucaSBNDAlg.hh>

Classes

struct  ConfigurationParameters_t
 

Public Member Functions

 DigiArapucaSBNDAlg (ConfigurationParameters_t const &config)
 
 ~DigiArapucaSBNDAlg ()
 
double Baseline ()
 
void ConstructWaveform (int ch, sim::SimPhotons const &simphotons, std::vector< short unsigned int > &waveform, std::string pdtype, bool is_daphne, double start_time, unsigned n_samples)
 
void ConstructWaveformLite (int ch, sim::SimPhotonsLite const &litesimphotons, std::vector< short unsigned int > &waveform, std::string pdtype, bool is_daphne, double start_time, unsigned n_samples)
 

Private Member Functions

void CreatePDWaveform (sim::SimPhotons const &SimPhotons, double t_min, std::vector< double > &wave, std::string pdtype, bool is_daphne)
 
void CreatePDWaveformLite (std::map< int, int > const &photonMap, double t_min, std::vector< double > &wave, std::string pdtype, bool is_daphne)
 
void SinglePDWaveformCreatorLite (double effT, std::unique_ptr< CLHEP::RandGeneral > &timeHisto, std::vector< double > &wave, std::map< int, int > const &photonMap, double const &t_min, bool is_daphne)
 
void SinglePDWaveformCreatorLite (double effT, std::vector< double > &wave, std::map< int, int > const &photonMap, double const &t_min, bool is_daphne)
 
void AddSPE (size_t time_bin, std::vector< double > &wave, const std::vector< double > &fWaveformSP, int nphotons)
 
void Pulse1PE (std::vector< double > &wave, const double sampling)
 
void AddLineNoise (std::vector< double > &wave)
 
void AddDarkNoise (std::vector< double > &wave, std::vector< double > &WaveformSP)
 
double FindMinimumTime (sim::SimPhotons const &simphotons)
 
double FindMinimumTimeLite (std::map< int, int > const &photonMap)
 
void CreateSaturation (std::vector< double > &wave)
 

Private Attributes

const ConfigurationParameters_t fParams
 
const double fSampling
 
const double fSampling_Daphne
 
const double fXArapucaVUVEff
 
const double fXArapucaVISEff
 
const double fADCSaturation
 
CLHEP::HepRandomEngine * fEngine
 Reference to art-managed random-number engine. More...
 
CLHEP::RandFlat fFlatGen
 
CLHEP::RandPoissonQ fPoissonQGen
 
CLHEP::RandGaussQ fGaussQGen
 
CLHEP::RandExponential fExponentialGen
 
std::unique_ptr
< CLHEP::RandGeneral > 
fTimeXArapucaVUV
 
std::unique_ptr
< CLHEP::RandGeneral > 
fTimeTPB
 
std::vector< double > fWaveformSP
 
std::vector< double > fWaveformSP_Daphne
 
std::unordered_map
< raw::Channel_t, std::vector
< double > > 
fFullWaveforms
 

Detailed Description

Definition at line 41 of file DigiArapucaSBNDAlg.hh.

Constructor & Destructor Documentation

opdet::DigiArapucaSBNDAlg::DigiArapucaSBNDAlg ( ConfigurationParameters_t const &  config)

Definition at line 9 of file DigiArapucaSBNDAlg.cc.

10  : fParams{config}
11  , fSampling(fParams.frequency/ 1000.) //in GHz to cancel with ns
12  , fSampling_Daphne(fParams.frequency_Daphne/ 1000.) //in GHz to cancel with ns
17  , fFlatGen(*fEngine)
21  {
22 
23  if(fXArapucaVUVEff > 1.0001 || fXArapucaVISEff > 1.0001)
24  mf::LogWarning("DigiArapucaSBNDAlg")
25  << "Quantum efficiency set in fhicl file "
27  << " seems to be too large!\n"
28  << "Final QE must be equal to or smaller than the scintillation "
29  << "pre scale applied at simulation time.\n"
30  << "Please check this number (ScintPreScale): "
32 
33  std::string fname;
34  cet::search_path sp("FW_SEARCH_PATH");
35  sp.find_file(fParams.ArapucaDataFile, fname);
36  TFile* file = TFile::Open(fname.c_str(), "READ");
37  //Note: TPB time now implemented at digitization module for both coated pmts and (x)arapucas
38  //OpDetSim/digi_arapuca_sbnd.root updated in sbnd_data (now including the TPB times vector)
39 
40  // TPB emission time histogram for visible (x)arapucas
41  std::vector<double>* timeTPB_p;
42  file->GetObject("timeTPB", timeTPB_p);
43  fTimeTPB = std::make_unique<CLHEP::RandGeneral>
44  (*fEngine, timeTPB_p->data(), timeTPB_p->size());
45 
46  std::vector<double>* TimeXArapucaVUV_p;
47  file->GetObject("TimeXArapucaVUV", TimeXArapucaVUV_p);
48  fTimeXArapucaVUV = std::make_unique<CLHEP::RandGeneral>
49  (*fEngine, TimeXArapucaVUV_p->data(), TimeXArapucaVUV_p->size());
50 
51  size_t pulseSize = fParams.PulseLength * fSampling;
52  fWaveformSP.resize(pulseSize);
53 
54  size_t pulseSize_Daphne = fParams.PulseLength * fSampling_Daphne;
55  fWaveformSP_Daphne.resize(pulseSize_Daphne);
56 
58  mf::LogDebug("DigiArapucaSBNDAlg") << " using testbench pe response";
59  TFile* file = TFile::Open(fname.c_str(), "READ");
60  std::vector<double>* SinglePEVec_40ftCable_Daphne;
61  std::vector<double>* SinglePEVec_40ftCable_Apsaia;
62  file->GetObject("SinglePEVec_40ftCable_Apsaia", SinglePEVec_40ftCable_Apsaia);
63  file->GetObject("SinglePEVec_40ftCable_Daphne", SinglePEVec_40ftCable_Daphne);
64  fWaveformSP = *SinglePEVec_40ftCable_Apsaia;
65  fWaveformSP_Daphne = *SinglePEVec_40ftCable_Daphne;
66  }
67  else{
68  mf::LogDebug("DigiArapucaSBNDAlg") << " using ideal pe response";
71  }
72  file->Close();
73  } // end constructor
std::vector< double > fWaveformSP_Daphne
string fname
Definition: demo.py:5
* file
Definition: file_to_url.sh:69
CLHEP::HepRandomEngine * fEngine
Reference to art-managed random-number engine.
std::unique_ptr< CLHEP::RandGeneral > fTimeXArapucaVUV
CLHEP::RandExponential fExponentialGen
std::vector< double > fWaveformSP
std::unique_ptr< CLHEP::RandGeneral > fTimeTPB
detinfo::LArProperties const * larProp
LarProperties service provider.
virtual double ScintPreScale(bool prescale=true) const =0
CLHEP::RandPoissonQ fPoissonQGen
void Pulse1PE(std::vector< double > &wave, const double sampling)
const ConfigurationParameters_t fParams
double frequency_Daphne
Optical-clock frequency for daphne readouts.
opdet::DigiArapucaSBNDAlg::~DigiArapucaSBNDAlg ( )

Definition at line 75 of file DigiArapucaSBNDAlg.cc.

75 {}

Member Function Documentation

void opdet::DigiArapucaSBNDAlg::AddDarkNoise ( std::vector< double > &  wave,
std::vector< double > &  WaveformSP 
)
private

Definition at line 327 of file DigiArapucaSBNDAlg.cc.

328  {
329  int nCT;
330  // Multiply by 10^9 since fDarkNoiseRate is in Hz (conversion from s to ns)
331  double mean = 1000000000.0 / fParams.DarkNoiseRate;
332  double darkNoiseTime = fExponentialGen.fire(mean);
333  while(darkNoiseTime < wave.size()) {
334  size_t timeBin = std::round(darkNoiseTime);
335  if(fParams.CrossTalk > 0.0 && fFlatGen.fire(1.0) < fParams.CrossTalk) nCT = 2;
336  else nCT = 1;
337  if(timeBin < wave.size()) AddSPE(timeBin, wave, WaveformSP, nCT);
338  // Find next time to add dark noise
339  darkNoiseTime += fExponentialGen.fire(mean);
340  }//while
341  }
CLHEP::RandExponential fExponentialGen
void AddSPE(size_t time_bin, std::vector< double > &wave, const std::vector< double > &fWaveformSP, int nphotons)
double mean(const std::vector< short > &wf, size_t start, size_t nsample)
Definition: UtilFunc.cxx:13
const ConfigurationParameters_t fParams
void opdet::DigiArapucaSBNDAlg::AddLineNoise ( std::vector< double > &  wave)
private

Definition at line 306 of file DigiArapucaSBNDAlg.cc.

307  {
308  // TODO: after running the profiler I can see that this is where
309  // most cycles are being used. Potentially some improvement could
310  // be achieved with the below code but the array dynamic allocation
311  // is not helping. The function would need to have it passed.
312  // ~icaza
313  //
314  // double *array = new double[wave.size()]();
315  // CLHEP::RandGaussQ::shootArray(fEngine, wave.size(), array, 0, fParams.BaselineRMS);
316  // for(size_t i = 0; i<wave.size(); i++) {
317  // wave[i] += array[i];
318  // }
319  // delete array;
320  //
321  std::transform(wave.begin(), wave.end(), wave.begin(),
322  [this](double w) -> double {
323  return w + fGaussQGen.fire(0., fParams.BaselineRMS) ; });
324  }
static constexpr Sample_t transform(Sample_t sample)
const ConfigurationParameters_t fParams
void opdet::DigiArapucaSBNDAlg::AddSPE ( size_t  time_bin,
std::vector< double > &  wave,
const std::vector< double > &  fWaveformSP,
int  nphotons 
)
private

Definition at line 279 of file DigiArapucaSBNDAlg.cc.

284  {
285  // if(time_bin > wave.size()) return;
286  size_t max = time_bin + fWaveformSP.size() < wave.size() ? time_bin + fWaveformSP.size() : wave.size();
287  auto min_it = std::next(wave.begin(), time_bin);
288  auto max_it = std::next(wave.begin(), max);
289 
290  double nphotons_aux= nphotons;
291  if(fParams.MakeAmpFluctuations) nphotons_aux = fGaussQGen.fire(nphotons, std::sqrt(nphotons) * fParams.AmpFluctuation);
292 
293  std::transform(min_it, max_it,
294  fWaveformSP.begin(), min_it,
295  [nphotons_aux](double w, double ws) -> double {
296  return w + ws*nphotons_aux ; });
297  }
static constexpr Sample_t transform(Sample_t sample)
const ConfigurationParameters_t fParams
double opdet::DigiArapucaSBNDAlg::Baseline ( )
inline

Definition at line 77 of file DigiArapucaSBNDAlg.hh.

78  {
79  return fParams.Baseline;
80  }
const ConfigurationParameters_t fParams
void opdet::DigiArapucaSBNDAlg::ConstructWaveform ( int  ch,
sim::SimPhotons const &  simphotons,
std::vector< short unsigned int > &  waveform,
std::string  pdtype,
bool  is_daphne,
double  start_time,
unsigned  n_samples 
)

Definition at line 78 of file DigiArapucaSBNDAlg.cc.

86  {
87  std::vector<double> waves(n_samples, fParams.Baseline);
88  CreatePDWaveform(simphotons, start_time, waves, pdtype,is_daphne);
89  waveform = std::vector<short unsigned int> (waves.begin(), waves.end());
90  }
then echo fcl sbnd_project sbnd_project sbnd_project sbnd_project production production start_time
void CreatePDWaveform(sim::SimPhotons const &SimPhotons, double t_min, std::vector< double > &wave, std::string pdtype, bool is_daphne)
const ConfigurationParameters_t fParams
void opdet::DigiArapucaSBNDAlg::ConstructWaveformLite ( int  ch,
sim::SimPhotonsLite const &  litesimphotons,
std::vector< short unsigned int > &  waveform,
std::string  pdtype,
bool  is_daphne,
double  start_time,
unsigned  n_samples 
)

Definition at line 93 of file DigiArapucaSBNDAlg.cc.

101  {
102  std::vector<double> waves(n_samples, fParams.Baseline);
103  std::map<int, int> const& photonMap = litesimphotons.DetectedPhotons;
104  CreatePDWaveformLite(photonMap, start_time, waves, pdtype,is_daphne);
105  // std::ofstream ofs("True_PE.log",std::ofstream::out | std::ofstream::app);
106  // ofs<<ch<<"\t"<<P_truth<<std::endl;
107  // ofs.close();
108  // P_truth=0;
109  waveform = std::vector<short unsigned int> (waves.begin(), waves.end());
110  }
then echo fcl sbnd_project sbnd_project sbnd_project sbnd_project production production start_time
void CreatePDWaveformLite(std::map< int, int > const &photonMap, double t_min, std::vector< double > &wave, std::string pdtype, bool is_daphne)
const ConfigurationParameters_t fParams
void opdet::DigiArapucaSBNDAlg::CreatePDWaveform ( sim::SimPhotons const &  SimPhotons,
double  t_min,
std::vector< double > &  wave,
std::string  pdtype,
bool  is_daphne 
)
private

Definition at line 113 of file DigiArapucaSBNDAlg.cc.

119  {
120  int nCT = 1;
121  if(pdtype == "xarapuca_vuv") {
122  for(size_t i = 0; i < simphotons.size(); i++) {
123  if(fFlatGen.fire(1.0) < fXArapucaVUVEff) {
124  double tphoton = (fTimeXArapucaVUV->fire()) + simphotons[i].Time - t_min;
125  if(tphoton < 0.) continue; // discard if it didn't made it to the acquisition
126  if(fParams.CrossTalk > 0.0 && fFlatGen.fire(1.0) < fParams.CrossTalk) nCT = 2;
127  else nCT = 1;
128  size_t timeBin = (is_daphne) ? std::floor(tphoton * fSampling_Daphne) : std::floor(tphoton * fSampling);
129  if(timeBin < wave.size()) {
130  if (!is_daphne) {AddSPE(timeBin, wave, fWaveformSP, nCT);
131  }
132  else{ AddSPE(timeBin, wave, fWaveformSP_Daphne, nCT);}
133  }
134  }
135  }
136  }
137  else if(pdtype == "xarapuca_vis") {
138  for(size_t i = 0; i < simphotons.size(); i++) {
139  if(fFlatGen.fire(1.0) < fXArapucaVISEff) {
140  double tphoton = fExponentialGen.fire(fParams.DecayTXArapucaVIS) + simphotons[i].Time - t_min + fTimeTPB->fire();
141  if(tphoton < 0.) continue; // discard if it didn't made it to the acquisition
142  if(fParams.CrossTalk > 0.0 && fFlatGen.fire(1.0) < fParams.CrossTalk) nCT = 2;
143  else nCT = 1;
144  size_t timeBin = (is_daphne) ? std::floor(tphoton * fSampling_Daphne) : std::floor(tphoton * fSampling);
145  if(timeBin < wave.size()) {
146  if (!is_daphne) {AddSPE(timeBin, wave, fWaveformSP, nCT);
147  }
148  else{ AddSPE(timeBin, wave, fWaveformSP_Daphne, nCT);
149  }
150  }
151  }
152  }
153  }
154  else{
155  throw cet::exception("DigiARAPUCASBNDAlg") << "Wrong pdtype: " << pdtype << std::endl;
156  }
157  if(fParams.BaselineRMS > 0.0) AddLineNoise(wave);
158  if(fParams.DarkNoiseRate > 0.0)
159  {
160  if (!is_daphne) AddDarkNoise(wave,fWaveformSP);
161  else AddDarkNoise(wave,fWaveformSP_Daphne);
162  }
163  CreateSaturation(wave);
164  }
std::vector< double > fWaveformSP_Daphne
void AddDarkNoise(std::vector< double > &wave, std::vector< double > &WaveformSP)
void AddLineNoise(std::vector< double > &wave)
std::unique_ptr< CLHEP::RandGeneral > fTimeXArapucaVUV
CLHEP::RandExponential fExponentialGen
std::vector< double > fWaveformSP
void AddSPE(size_t time_bin, std::vector< double > &wave, const std::vector< double > &fWaveformSP, int nphotons)
std::unique_ptr< CLHEP::RandGeneral > fTimeTPB
void CreateSaturation(std::vector< double > &wave)
const ConfigurationParameters_t fParams
void opdet::DigiArapucaSBNDAlg::CreatePDWaveformLite ( std::map< int, int > const &  photonMap,
double  t_min,
std::vector< double > &  wave,
std::string  pdtype,
bool  is_daphne 
)
private

Definition at line 167 of file DigiArapucaSBNDAlg.cc.

173  {
174  if(pdtype == "xarapuca_vuv"){
175  SinglePDWaveformCreatorLite(fXArapucaVUVEff, fTimeXArapucaVUV, wave, photonMap, t_min,is_daphne);
176  }
177  else if(pdtype == "xarapuca_vis"){
178  // creating the waveforms for xarapuca_vis is different than the rest
179  // so there's an overload for that which lacks the timeHisto
180  SinglePDWaveformCreatorLite(fXArapucaVISEff, wave, photonMap, t_min,is_daphne);
181  }
182  else{
183  throw cet::exception("DigiARAPUCASBNDAlg") << "Wrong pdtype: " << pdtype << std::endl;
184  }
185  if(fParams.BaselineRMS > 0.0) AddLineNoise(wave);
186  if(fParams.DarkNoiseRate > 0.0)
187  {
188  if (!is_daphne) AddDarkNoise(wave,fWaveformSP);
189  else AddDarkNoise(wave,fWaveformSP_Daphne);
190  }
191 
192  CreateSaturation(wave);
193  }
std::vector< double > fWaveformSP_Daphne
void AddDarkNoise(std::vector< double > &wave, std::vector< double > &WaveformSP)
void AddLineNoise(std::vector< double > &wave)
std::unique_ptr< CLHEP::RandGeneral > fTimeXArapucaVUV
std::vector< double > fWaveformSP
void CreateSaturation(std::vector< double > &wave)
const ConfigurationParameters_t fParams
void SinglePDWaveformCreatorLite(double effT, std::unique_ptr< CLHEP::RandGeneral > &timeHisto, std::vector< double > &wave, std::map< int, int > const &photonMap, double const &t_min, bool is_daphne)
void opdet::DigiArapucaSBNDAlg::CreateSaturation ( std::vector< double > &  wave)
private

Definition at line 299 of file DigiArapucaSBNDAlg.cc.

300  {
301  std::replace_if(wave.begin(), wave.end(),
302  [&](auto w){return w > fADCSaturation;}, fADCSaturation);
303  }
double opdet::DigiArapucaSBNDAlg::FindMinimumTime ( sim::SimPhotons const &  simphotons)
private

Definition at line 344 of file DigiArapucaSBNDAlg.cc.

345  {
346  double t_min = 1e15;
347  for(size_t i = 0; i < simphotons.size(); i++) {
348  if(simphotons[i].Time < t_min) t_min = simphotons[i].Time;
349  }
350  return t_min;
351  }
double opdet::DigiArapucaSBNDAlg::FindMinimumTimeLite ( std::map< int, int > const &  photonMap)
private

Definition at line 354 of file DigiArapucaSBNDAlg.cc.

355  {
356  for (auto const& mapMember : photonMap) {
357  if(mapMember.second != 0) return (double)mapMember.first;
358  }
359  return 1e5;
360  }
void opdet::DigiArapucaSBNDAlg::Pulse1PE ( std::vector< double > &  wave,
const double  sampling 
)
private

Definition at line 269 of file DigiArapucaSBNDAlg.cc.

270  {
271  double constT1 = fParams.ADC * fParams.MeanAmplitude;
272  for(size_t i = 0; i<fWaveformSP.size(); i++) {
273  double time = static_cast<double>(i) / sampling;
274  if (time < fParams.PeakTime) fWaveformSP[i] = constT1 * std::exp((time - fParams.PeakTime) / fParams.RiseTime);
275  else fWaveformSP[i] = constT1 * std::exp(-(time - fParams.PeakTime) / fParams.FallTime);
276  }
277  }
std::vector< double > fWaveformSP
const ConfigurationParameters_t fParams
void opdet::DigiArapucaSBNDAlg::SinglePDWaveformCreatorLite ( double  effT,
std::unique_ptr< CLHEP::RandGeneral > &  timeHisto,
std::vector< double > &  wave,
std::map< int, int > const &  photonMap,
double const &  t_min,
bool  is_daphne 
)
private

Definition at line 196 of file DigiArapucaSBNDAlg.cc.

204  {
205  // TODO: check that this new approach of not using the last
206  // (1-accepted_photons) doesn't introduce some bias
207  double meanPhotons;
208  size_t acceptedPhotons;
209  double tphoton;
210  for (auto const& photonMember : photonMap) {
211  // TODO: check that this new approach of not using the last
212  // (1-accepted_photons) doesn't introduce some bias
213  meanPhotons = photonMember.second*effT;
214  acceptedPhotons = fPoissonQGen.fire(meanPhotons);
215  for(size_t i = 0; i < acceptedPhotons; i++) {
216  tphoton = timeHisto->fire();
217  tphoton += photonMember.first - t_min;
218  if(tphoton < 0.) continue; // discard if it didn't made it to the acquisition
219  int nCT=1;
220  if(fParams.CrossTalk > 0.0 &&
221  fFlatGen.fire(1.0) < fParams.CrossTalk) nCT = 2;
222  size_t timeBin = (is_daphne) ? std::floor(tphoton * fSampling_Daphne) : std::floor(tphoton * fSampling);
223  if(timeBin < wave.size()) {
224  // P_truth=P_truth+nCT;
225  if (!is_daphne) {AddSPE(timeBin, wave, fWaveformSP, nCT);
226  }
227  else{ AddSPE(timeBin, wave, fWaveformSP_Daphne, nCT);}
228  }
229  }
230  }
231  }
std::vector< double > fWaveformSP_Daphne
std::vector< double > fWaveformSP
void AddSPE(size_t time_bin, std::vector< double > &wave, const std::vector< double > &fWaveformSP, int nphotons)
CLHEP::RandPoissonQ fPoissonQGen
const ConfigurationParameters_t fParams
void opdet::DigiArapucaSBNDAlg::SinglePDWaveformCreatorLite ( double  effT,
std::vector< double > &  wave,
std::map< int, int > const &  photonMap,
double const &  t_min,
bool  is_daphne 
)
private

Definition at line 234 of file DigiArapucaSBNDAlg.cc.

241  {
242  double meanPhotons;
243  size_t acceptedPhotons;
244  double tphoton;
245  int nCT;
246  for (auto const& photonMember : photonMap) {
247  // TODO: check that this new approach of not using the last
248  // (1-accepted_photons) doesn't introduce some bias
249  meanPhotons = photonMember.second*effT;
250  acceptedPhotons = fPoissonQGen.fire(meanPhotons);
251  for(size_t i = 0; i < acceptedPhotons; i++) {
252  tphoton = fExponentialGen.fire(fParams.DecayTXArapucaVIS);
253  tphoton += photonMember.first - t_min + fTimeTPB->fire();
254  if(tphoton < 0.) continue; // discard if it didn't made it to the acquisition
255  if(fParams.CrossTalk > 0.0 && fFlatGen.fire(1.0) < fParams.CrossTalk) nCT = 2;
256  else nCT = 1;
257  size_t timeBin = (is_daphne) ? std::floor(tphoton * fSampling_Daphne) : std::floor(tphoton * fSampling);
258  if(timeBin < wave.size()) {
259  // P_truth=P_truth+nCT;
260  if (!is_daphne) {AddSPE(timeBin, wave, fWaveformSP, nCT);
261  }
262  else{ AddSPE(timeBin, wave, fWaveformSP_Daphne, nCT);}
263  }
264  }
265  }
266  }
std::vector< double > fWaveformSP_Daphne
CLHEP::RandExponential fExponentialGen
std::vector< double > fWaveformSP
void AddSPE(size_t time_bin, std::vector< double > &wave, const std::vector< double > &fWaveformSP, int nphotons)
std::unique_ptr< CLHEP::RandGeneral > fTimeTPB
CLHEP::RandPoissonQ fPoissonQGen
const ConfigurationParameters_t fParams

Member Data Documentation

const double opdet::DigiArapucaSBNDAlg::fADCSaturation
private

Definition at line 107 of file DigiArapucaSBNDAlg.hh.

CLHEP::HepRandomEngine* opdet::DigiArapucaSBNDAlg::fEngine
private

Reference to art-managed random-number engine.

Definition at line 109 of file DigiArapucaSBNDAlg.hh.

CLHEP::RandExponential opdet::DigiArapucaSBNDAlg::fExponentialGen
private

Definition at line 113 of file DigiArapucaSBNDAlg.hh.

CLHEP::RandFlat opdet::DigiArapucaSBNDAlg::fFlatGen
private

Definition at line 110 of file DigiArapucaSBNDAlg.hh.

std::unordered_map< raw::Channel_t, std::vector<double> > opdet::DigiArapucaSBNDAlg::fFullWaveforms
private

Definition at line 119 of file DigiArapucaSBNDAlg.hh.

CLHEP::RandGaussQ opdet::DigiArapucaSBNDAlg::fGaussQGen
private

Definition at line 112 of file DigiArapucaSBNDAlg.hh.

const ConfigurationParameters_t opdet::DigiArapucaSBNDAlg::fParams
private

Definition at line 101 of file DigiArapucaSBNDAlg.hh.

CLHEP::RandPoissonQ opdet::DigiArapucaSBNDAlg::fPoissonQGen
private

Definition at line 111 of file DigiArapucaSBNDAlg.hh.

const double opdet::DigiArapucaSBNDAlg::fSampling
private

Definition at line 103 of file DigiArapucaSBNDAlg.hh.

const double opdet::DigiArapucaSBNDAlg::fSampling_Daphne
private

Definition at line 104 of file DigiArapucaSBNDAlg.hh.

std::unique_ptr<CLHEP::RandGeneral> opdet::DigiArapucaSBNDAlg::fTimeTPB
private

Definition at line 115 of file DigiArapucaSBNDAlg.hh.

std::unique_ptr<CLHEP::RandGeneral> opdet::DigiArapucaSBNDAlg::fTimeXArapucaVUV
private

Definition at line 114 of file DigiArapucaSBNDAlg.hh.

std::vector<double> opdet::DigiArapucaSBNDAlg::fWaveformSP
private

Definition at line 117 of file DigiArapucaSBNDAlg.hh.

std::vector<double> opdet::DigiArapucaSBNDAlg::fWaveformSP_Daphne
private

Definition at line 118 of file DigiArapucaSBNDAlg.hh.

const double opdet::DigiArapucaSBNDAlg::fXArapucaVISEff
private

Definition at line 106 of file DigiArapucaSBNDAlg.hh.

const double opdet::DigiArapucaSBNDAlg::fXArapucaVUVEff
private

Definition at line 105 of file DigiArapucaSBNDAlg.hh.


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