14 #include <FairLogger.h>
16 namespace SensorGrid {
27 : per_pixel_traits(per_pixel_traits_), use_inhomogenity_factor(false),sensor_grid(sensor_grid_)
29 Init(sensor_grid_, per_pixel_traits_, efficiency_init, noise_rate_init, time_res_init);
58 std::ofstream ofs_detect_debug(
"detect_debug.txt");
64 ofs_detect_debug <<
"X: " << hit_pos_x <<
" Y: " << hit_pos_y ;
68 ofs_detect_debug <<
" not detected\n";
76 double global_pde =
GetPDE(wavelength_nm);
94 std::pair<int, double>
hit;
97 for(hit.first = 0; hit.first < n_pixels; ++hit.first) {
104 n_hits = gRandom->Poisson(avg_n_hits);
106 for(i=0; i<n_hits; ++
i) {
107 hit.second = time_start_ns + gRandom->Uniform(time_window_ns);
138 double avg_n_hits = 0.0;
172 double smeared_time_ns;
178 return smeared_time_ns;
188 for(
int i=0;
i<n_pixels; ++
i) {
void SetDCR(double const &dcr_Hz)
Set the dark count rate for all pixels to dcr_Hz.
Common base class for sensor grids.
PixelTraits * pixel_traits
bool GetNoiseHit(int &pixel_number, double &hit_time_ns, double &smeared_time_ns)
Noise hit generator function which has to be called after GenerateNoise() to retrieve the noise hits...
SensorGridBase * sensor_grid
int noisegen_pixel_number
void GenerateNoise(double const &time_start_ns, double const &time_window_ns, std::vector< std::pair< int, double > > &hits) const
Generate noise hits.
bool use_inhomogenity_factor
virtual bool PositionToPixel(const double &x, const double &y, PixelInfo &pixel_info) const =0
void LockGrid(bool lock)
Lock the grid:
void Init(SensorGridBase *sensor_grid_, bool per_pixel_traits_, double const &efficiency_init, double const &noise_rate_init, double const &time_res_init)
Initialization - can also be used in derived class ctors (avoid code duplication).
virtual double GetPDE(const double &) const
Derived classes should override this function and return the average pde of the sensor.
double noisegen_time_start_ns
SensorGridPhotodetector()
double noisegen_current_time_sigma
int Detect(double const &hit_pos_x, double const &hit_pos_y, double const &hit_time_ns, double const &wavelength_nm, PixelInfo &pixel_info, double &smeared_time_ns) const
Handle photon detection:
double GetSmearedTime(double const &time_value, PixelInfo const &pixel_info) const
Apply time smearing.
double noisegen_time_window_ns
virtual double GetInhomegenityFactor(double const &, double const &) const
Derived classes should override this function to account for spatial PDE deviations (e...