qupid 0.2
Quasi-Signal Generation Model for Pixelized Detector
Loading...
Searching...
No Matches
QPDigitizerBase.cpp
1#include "QPDigitizerBase.hpp"
2#include "QPSignalBase.hpp"
3#include "QPPixelBase.hpp"
4#include <iostream>
5
6QPDigitizerBase::QPDigitizerBase(int npix): fNpix0(npix){;}
7
9
11
13 fSignals.emplace_back(signal);
14}
15
17 std::cout<<"QPPixelBase::GetPixel(index) - Calling pure function"<<std::endl;
18 return nullptr;
19}
20QPPixelBase* QPDigitizerBase::GetPixel(const int i, const int j){
21 std::cout<<"QPPixelBase::GetPixel(i,j) - Calling pure function"<<std::endl;
22 return nullptr;
23}
24
26 if(i < 0 || i >= GetNSignal()) return nullptr;
27 return fSignals.at(i);
28}
29
31 return fSignals.size();
32}
33
34void QPDigitizerBase::ClearSignal(bool removeall){
35 if(removeall){
36 for(QPSignalBase* signal: fSignals){
37 delete signal;
38 }
39 }
40 fSignals.clear();
41}
42
43std::deque<QPPixelBase*> QPDigitizerBase::GetFiredPixel(double threshold){
44 // std::cout<<"GET IN FIRED"<<std::endl;
45 int npix = GetNPixel();
46 std::deque<QPPixelBase*> ans;
47 for(int i=0; i<npix; i++){
48 // std::cout<<"PIXN = "<<i<<std::endl;
49 QPPixelBase* pix = GetPixel(i);
50 if(pix->GetDigitalSignal() > threshold){
51 ans.emplace_back(pix);
52 }else{
53 delete pix;
54 }
55 }
56 return ans;
57}
58
59double QPDigitizerBase::GetAnalogSignal(const double& x, const double& y){
60 int n = GetNSignal();
61 double value=0;
62
63 for(int i=0; i<n; i++){
64 QPSignalBase * signal = GetSignal(i);
65 value += signal->GetSignal(x,y);
66 }
67 return value;
68}
void InjectSignal(QPSignalBase *signal)
Hands a signal to the digitizer, which takes ownership: the default ClearSignal() deletes it.
virtual void Delete()
Cleanup hook; currently a no-op.
QPSignalBase * GetSignal(int i) const
Borrowed pointer to injected signal i; the digitizer keeps ownership.
virtual double GetAnalogSignal(const double &x, const double &y)
Summed signal density of all injected signals at (x, y), .
int GetNSignal() const
virtual ~QPDigitizerBase()
Does not delete the injected signals; see the class warning.
void ClearSignal(bool removeall=true)
Empties the signal store.
std::deque< QPPixelBase * > GetFiredPixel(double threshold)
Builds every pixel and keeps those whose digital signal exceeds threshold; the rest are deleted inter...
virtual QPPixelBase * GetPixel(const int index)
Pixel by linear index.
int GetNPixel() const
QPDigitizerBase(int npix)
Abstract pixel bound to a digitizer: pulls the digitizer's injected signals and integrates them over ...
double GetDigitalSignal()
Total collected charge of the pixel: GetDigitalSignalOne summed over every signal injected into the d...
Abstract charge signal: a normalized 2D PDF scaled by an amplitude.
double GetSignal(const double &x, const double &y)
Signal density : amplitude times GetPDF.