29 #ifndef SIGNALSHAPINGSERVICEDUNE_H 30 #define SIGNALSHAPINGSERVICEDUNE_H 42 class DetectorClocksData;
43 class DetectorPropertiesData;
62 std::vector<DoubleVec> GetNoiseFactVec()
const override;
64 double GetShapingTime(
Channel channel)
const override;
65 double GetRawNoise(
Channel channel)
const override;
66 double GetDeconNoise(
Channel channel)
const override;
67 double GetDeconNorm()
const override;
68 unsigned int GetSignalSize()
const override;
72 Channel const channel)
const override;
80 Channel channel, std::vector<T>& func)
const;
93 Channel channel, std::vector<T>& func)
const;
110 void SetElectResponse(
double shapingtime,
double gain);
111 void SetRCResponse();
147 TH1F *fFieldResponseHist[3];
148 TH1D *fFilterHist[3];
182 unsigned int channel, std::vector<T>&
func)
const {
186 int time_offset = FieldResponseTOffset(clockData, channel);
189 if (time_offset <=0){
190 temp.assign(func.begin(),func.begin()-time_offset);
191 func.erase(func.begin(),func.begin()-time_offset);
192 func.insert(func.end(),temp.begin(),temp.end());
194 temp.assign(func.end()-time_offset,func.end());
195 func.erase(func.end()-time_offset,func.end());
196 func.insert(func.begin(),temp.begin(),temp.end());
202 unsigned int channel, std::vector<T>&
func)
const {
203 ElectronicShaping(channel).Convolute(func);
206 int time_offset = FieldResponseTOffset(clockData, channel);
209 if (time_offset <=0){
210 temp.assign(func.begin(),func.begin()-time_offset);
211 func.erase(func.begin(),func.begin()-time_offset);
212 func.insert(func.end(),temp.begin(),temp.end());
214 temp.assign(func.end()-time_offset,func.end());
215 func.erase(func.end()-time_offset,func.end());
216 func.insert(func.begin(),temp.begin(),temp.end());
226 unsigned int channel, std::vector<T>&
func)
const {
229 int time_offset = FieldResponseTOffset(clockData, channel);
232 if (time_offset <=0){
233 temp.assign(func.end()+time_offset,func.end());
234 func.erase(func.end()+time_offset,func.end());
235 func.insert(func.begin(),temp.begin(),temp.end());
237 temp.assign(func.begin(),func.begin()+time_offset);
238 func.erase(func.begin(),func.begin()+time_offset);
239 func.insert(func.end(),temp.begin(),temp.end());
double fColFieldRespAmp
amplitude of response to field
TF1 * fColFilterFunc
Parameterized collection filter function.
void Deconvolute(detinfo::DetectorClocksData const &clockData, Channel channel, std::vector< T > &func) const
std::vector< TComplex > fColFilter
util::SignalShaping fIndUSignalShaping
bool fUseFunctionFieldShape
Flag that allows to use a parameterized field response instead of the hardcoded version.
void Deconvolute(std::vector< T > &func) const
std::vector< TComplex > fIndUFilter
std::vector< TComplex > fIndVFilter
Namespace for general, non-LArSoft-specific utilities.
util::SignalShaping fColElectResponseSignalShaping
util::SignalShaping fIndVSignalShaping
bool fGetFilterFromHisto
Flag that allows to use a filter function from a histogram instead of the functional dependency...
std::vector< double > fShapeTimeConst
time constants for exponential shaping
std::vector< float > FloatVector
double fCol3DCorrection
correction factor to account for 3D path of
int fNFieldBins
number of bins for field response
std::vector< double > fASICGainInMVPerFC
TF1 * fIndUFieldFunc
Parameterized induction field shape function.
std::vector< double > fFieldResponseTOffset
Time offset for field response in ns.
std::vector< DoubleVec > fNoiseFactVec
double fIndVFieldRespAmp
amplitude of response to field
void Convolute(std::vector< T > &func) const
std::vector< double > fIndUFieldResponse
double fADCPerPCAtLowestASICGain
Pulse amplitude gain for a 1 pc charge impulse after convoluting it the with field and electronics re...
Generic class for shaping signals on wires.
std::vector< double > fElectResponse
virtual void reconfigure(fhicl::ParameterSet const &pset)
double fInd3DCorrection
correction factor to account for 3D path of
util::SignalShaping fIndUElectResponseSignalShaping
#define DECLARE_ART_SERVICE(svc, scope)
std::vector< double > fCalibResponseTOffset
double fIndUFieldRespAmp
amplitude of response to field
TF1 * fIndUFilterFunc
Parameterized induction filter function.
bool fUseHistogramFieldShape
Flag that turns on field response shapes from histograms.
General LArSoft Utilities.
util::SignalShaping fIndVElectResponseSignalShaping
void ConvoluteElectronicResponse(detinfo::DetectorClocksData const &clockData, Channel channel, std::vector< T > &func) const
std::vector< double > fIndVFieldResponse
TF1 * fIndVFieldFunc
Parameterized induction field shape function.
void Convolute(detinfo::DetectorClocksData const &clockData, Channel channel, std::vector< T > &func) const
std::vector< double > DoubleVector
Contains all timing reference information for the detector.
TF1 * fColFieldFunc
Parameterized collection field shape function.
TF1 * fIndVFilterFunc
Parameterized induction filter function.
bool fInit
Initialization flag.
double fInputFieldRespSamplingPeriod
Sampling period in the input field response.
util::SignalShaping fColSignalShaping
std::vector< double > DoubleVec
std::vector< double > fColFieldResponse