wavecatcher-analysis
Loading...
Searching...
No Matches
Filters.h
Go to the documentation of this file.
1
2#ifndef _Filters
3#define _Filters
4
5#include <TVirtualFFT.h>
6#include <TComplex.h>
7#include <TCanvas.h>
8#include <TGraph.h>
9#include <TMath.h>
10#include <TH1.h>
11
12#include <string>
13#include <iostream>
14#include <cmath>
15#include <algorithm>
16
17#include "Helpers.h"
18
19using namespace std;
20
21class Filters {
22public:
23 // convolution for filtering waveforms
24 static void Convolute(double*&, double*, double*, int);
25 static void Convolute(double*&, double*, int);
26 static void Deconvolute(double*&, double*, double*, int, double, double = 0., double = 0.);
27
28 // smoothing
29 static void SmoothArray(double*&, int, double = .625, string = "Gaus", double = .3125, double = 1.5);
30 static void SmoothArray(double*&, int, double, int, double = .3125, double = 1.5);
31
32 static void BoxFilter(double*&, int, int);
33 static void GausFilter(double*&, int, double, double);
34 static void GausFFTFilter(double*&, int, double, double);
35
36 static void BilateralFilter(double*&, int, double, double, double);
37 static void Bilateral2Filter(double*&, int, int, double, double, double);
38 static void MedianFilter(double*& ar, int, int);
39
40 // custom filter emulating primitive response function
41 static void ResponseFilter(double*&, int, double = .4, double= 1.2, double= .25, double = .3125);
42 static void SecondOrderUnderdampedFilter(double*&, int, double, double, double, double = .3125, bool = false);
43 static void SecondOrderUnderdampedFilter(TH1F*&, int, double, double, double, double = .3125, bool = false);
44};
45#endif
static void Deconvolute(double *&, double *, double *, int, double, double=0., double=0.)
Helper to perform partial deconvolution of two 1D arrays.
Definition Filters.cc:80
static void BilateralFilter(double *&, int, double, double, double)
Bilateral filter (non-linear) with 3 sigma kernel.
Definition Filters.cc:299
static void MedianFilter(double *&ar, int, int)
Median filter.
Definition Filters.cc:378
static void ResponseFilter(double *&, int, double=.4, double=1.2, double=.25, double=.3125)
Custom filter emulating primitive response function.
Definition Filters.cc:421
static void BoxFilter(double *&, int, int)
Simple running average (box) filter.
Definition Filters.cc:207
static void GausFFTFilter(double *&, int, double, double)
Gaussian smoothing with FFT convolution.
Definition Filters.cc:266
static void SecondOrderUnderdampedFilter(double *&, int, double, double, double, double=.3125, bool=false)
Shifted second order underdamped filter.
Definition Filters.cc:466
static void Convolute(double *&, double *, double *, int)
Helper to perform convolution of two 1D arrays.
Definition Filters.cc:12
static void GausFilter(double *&, int, double, double)
Gaussian smoothing with simple 3 sigma kernel.
Definition Filters.cc:230
static void Bilateral2Filter(double *&, int, int, double, double, double)
Nonlinear filter based on bilateral filter.
Definition Filters.cc:338
static void SmoothArray(double *&, int, double=.625, string="Gaus", double=.3125, double=1.5)
Apply smoothing array of double with length nbins.
Definition Filters.cc:160