3 #include <utl/TraceAlgorithm.h>
12 double& noiseRMS,
double& noiseMean,
13 double noiseWindowStart,
double noiseWindowStop)
15 const unsigned int start = noiseWindowStart / channeltrace.
GetBinning();
16 const unsigned int stop = noiseWindowStop / channeltrace.
GetBinning();
24 double& peakAmplitude,
double& peakTime,
double& peakTimeError,
25 const double signalSearchWindowStart,
const double signalSearchWindowStop,
29 const unsigned int start = signalSearchWindowStart / stationtrace.
GetBinning();
30 const unsigned int stop = signalSearchWindowStop / stationtrace.
GetBinning();
32 for (
unsigned int i = start; i < stop; ++i) {
33 if (stationtrace[i].GetMag() > peakAmplitude) {
34 peakAmplitude = stationtrace[i].GetMag();
47 double& peakAmplitude,
double& peakTime,
double& peakTimeError,
48 const double signalSearchWindowStart,
const double signalSearchWindowStop,
52 const unsigned int start = signalSearchWindowStart / channeltrace.
GetBinning();
53 const unsigned int stop = signalSearchWindowStop / channeltrace.
GetBinning();
56 for (
unsigned int i = start; i < stop; ++i) {
57 if (
std::abs(channeltrace[i]) > peakAmplitude) {
58 peakAmplitude =
std::abs(channeltrace[i]);
71 unsigned int sample,
const double peakAmplitude,
72 double& signalTimeFWHM,
double& integratedSignal,
73 double& signalWindowStart,
double& signalWindowStop)
77 unsigned int tmp = sample;
79 while (sample < channeltrace.
GetSize() && channeltrace[sample] > 0.5 * peakAmplitude) {
81 integratedSignal += channeltrace[sample];
84 signalWindowStop = sample * channeltrace.
GetBinning();
87 while (sample > 0 && channeltrace[sample] > 0.5 * peakAmplitude) {
89 integratedSignal += channeltrace[sample];
92 signalWindowStart = sample * channeltrace.
GetBinning();
93 signalTimeFWHM = signalTimeFWHM * channeltrace.
GetBinning();
99 const unsigned int sample,
const double integrationTime,
100 double& integratedSignal,
double& signalWindowStart,
101 double& signalWindowStop,
const bool usePower)
103 integratedSignal = 0;
104 signalWindowStart = sample * channeltrace.
GetBinning() - integrationTime / 2;
105 signalWindowStop = sample * channeltrace.
GetBinning() + integrationTime / 2;
106 const unsigned int start =
std::max(0.0, sample - integrationTime / 2 / channeltrace.
GetBinning());
107 const unsigned int stop =
108 std::min(channeltrace.
GetSize() * 1., sample + integrationTime / 2 / channeltrace.
GetBinning());
110 for (
unsigned int i = start; i <= stop; ++i) {
112 integratedSignal +=
Sqr(channeltrace[i]);
114 integratedSignal +=
std::abs(channeltrace[i]);
117 integratedSignal *= channeltrace.
GetBinning();
123 double integrationTime,
double& integratedSignal,
124 double& signalWindowStart,
double& signalWindowStop,
125 double signalSearchWindowStart,
126 double signalSearchWindowStop,
127 int& startSample,
int& stopSample)
129 const double binning = channeltrace.
GetBinning();
130 integratedSignal = 0;
133 for (
int windowStartPos = signalSearchWindowStart / binning;
134 windowStartPos <= (signalSearchWindowStop - integrationTime) / binning; ++windowStartPos) {
135 double newIntegratedSignal = 0;
137 for (
int integratePos = 0; integratePos < integrationTime / binning; ++integratePos) {
138 newIntegratedSignal +=
Sqr(channeltrace[windowStartPos + integratePos]);
141 newIntegratedSignal /= count;
142 if (newIntegratedSignal > integratedSignal) {
143 integratedSignal = newIntegratedSignal;
144 signalWindowStart = windowStartPos * binning;
145 startSample = windowStartPos;
146 stopSample = windowStartPos + integrationTime / binning;
150 signalWindowStop = signalWindowStart + integrationTime;
constexpr T Sqr(const T &x)
static void PulseFixedWindowIntegrator(const utl::Trace< double > &channeltrace, unsigned int sample, double integrationTime, double &integratedSignal, double &signalWindowStart, double &signalWindowStop, const bool usePower)
static double Mean(const Trace< T > &trace, const unsigned int bin1, const unsigned int bin2)
Evaluate the mean of trace between bin1 and bin2.
static void Noisefinder(const utl::Trace< double > &channeltrace, double &noiseRMS, double &noiseMean, double NoiseWindowStart, double NoiseWindowStop)
double GetBinning() const
size of one slot
static void PulseSlidingWindowIntegrator(const utl::Trace< double > &channeltrace, double integrationTime, double &integratedSignal, double &signalWindowStart, double &signalWindowStop, double signalSearchWindowStart, double signalSearchWindowStop, int &startSample, int &stopSample)
double abs(const SVector< n, T > &v)
static void Pulsefinder(const utl::Trace< double > &channeltrace, double &peakAmplitude, double &peakTime, double &peakTimeError, double signalSearchWindowStart, double signalSearchWindowStop, unsigned int &sample)
static double RootMeanSquare(const Trace< T > &trace, const unsigned int bin1, const unsigned int bin2)
Evaluate the RootMeanSquare of trace between bin1 and bin2.
static void PulseFWHMIntegrator(const utl::Trace< double > &channeltrace, unsigned int sample, const double peakAmplitude, double &signalFWHM, double &integratedSignal, double &signalWindowStart, double &signalWindowStop)