LDMX Software
EcalDigiProducer.h
Go to the documentation of this file.
1
10#ifndef EVENTPROC_ECALDIGIPRODUCER_H_
11#define EVENTPROC_ECALDIGIPRODUCER_H_
12
13//----------------//
14// C++ StdLib //
15//----------------//
16#include <memory> //for smart pointers
17#include <set> //for tracking used detector IDs
18
19//----------//
20// LDMX //
21//----------//
22#include "DetDescr/EcalID.h"
27#include "Tools/HgcrocEmulator.h"
29
30namespace ecal {
31
37 public:
42 EcalDigiProducer(const std::string& name, framework::Process& process);
43
48 virtual ~EcalDigiProducer();
49
56
60 virtual void produce(framework::Event& event);
61
62 private:
64 // Python Configuration Parameters
65
67 std::string inputCollName_;
68
70 std::string inputPassName_;
71
73 std::string digiCollName_;
74
77
79 int nADCs_;
80
82 int iSOI_;
83
85 double MeV_;
86
100
102 // Other member variables
103
106 bool noise_{true};
107
109 std::unique_ptr<ldmx::HgcrocEmulator> hgcroc_;
110
112 // In a real data, zero-compression scenario the number of channels per event
113 // will change. Unused now, but keeping if for future dev int nTotalChannels_;
114
116 double ns_;
117
119 std::unique_ptr<ldmx::NoiseGenerator> noiseGenerator_;
120
122 std::unique_ptr<TRandom3> noiseInjector_;
123};
124} // namespace ecal
125
126#endif
Class that defines an ECal detector ID with a cell number.
Class providing string constants for the event model.
Base classes for all user event processing components to extend.
Class that represents a digitized hit in a calorimeter cell readout by an HGCROC.
Utility used to generate noise hits.
Class which stores simulated calorimeter hit information.
Performs basic ECal digitization.
int iSOI_
Index for the Sample Of Interest in the list of digi samples.
bool noise_
Put noise into empty channels, not configurable, only helpful in development.
virtual void configure(framework::config::Parameters &)
Configure this producer from the python configuration.
std::string inputCollName_
input hit collection name
double clockCycle_
Time interval for chip clock in ns.
int nADCs_
Depth of ADC buffer.
std::unique_ptr< ldmx::NoiseGenerator > noiseGenerator_
Generates noise hits based off of number of cells that are not hit.
std::unique_ptr< TRandom3 > noiseInjector_
Generates Gaussian noise on top of real hits.
virtual void produce(framework::Event &event)
Simulates measurement of pulse and creates digi collection for input event.
virtual ~EcalDigiProducer()
Destructor Deletes digi collection if it has been created.
double ns_
Total number of channels in the ECal.
std::string digiCollName_
output hit collection name
double MeV_
Conversion from energy in MeV to voltage in mV.
std::string inputPassName_
input pass name
std::unique_ptr< ldmx::HgcrocEmulator > hgcroc_
Hgcroc Emulator to digitize analog voltage signals.
bool zero_suppression_
When emulating noise in empty channels, do we zero suppress?
Implements an event buffer system for storing event data.
Definition Event.h:41
Class which represents the process under execution.
Definition Process.h:36
Base class for a module which produces a data product.
Class encapsulating parameters for configuring a processor.
Definition Parameters.h:27