Diana Software
QMultiChannelDecorrelator.hh
Go to the documentation of this file.
1 #ifndef _Q_MULTI_CHANNEL_DECORRELATOR_
2 #define _Q_MULTI_CHANNEL_DECORRELATOR_
3 
11 #include "QChannelCovariance.hh"
12 #include "QVectorI.hh"
13 #include "QRealComplexFFT.hh"
14 
16 
17  public:
23  QMultiChannelDecorrelator(const int chan, const QChannelCovariance* cov);
26 
28  void SetSideChannels(const std::vector<int>& channels);
29 
31  const std::vector<int>& GetSideChannels() const { return fSideChannels; }
33  const Diana::QVector& GetOriginalPowerSpectrum() const {return fOriginalPowerSpectrum;} ;
34 
36  const Diana::QVector& GetFilteredPowerSpectrum() const {return fDecorrelatedPowerSpectrum;} ;
37 
39  virtual void Filter(const Diana::QVector& input, const std::vector<const Diana::QVector*>& sideInputs, Diana::QVector& output) const;
41  virtual void Filter(const std::vector<const Diana::QVector*>& inputs, const std::vector<const Diana::QVector*>& sideInputs, Diana::QVector& output) const;
42 
44  const std::vector<int>& GetChannels() const { return fChannels; }
45 
47  void SetScale(double scale) { fScale = scale; }
48 
50  double GetOriginalResolution() const { return fOriginalResolution; }
51 
53  double GetFilteredResolution() const { return fFilteredResolution; }
54 
55  protected:
57  QMultiChannelDecorrelator(const int chan, const QChannelCovariance* cov, bool init);
59  QMultiChannelDecorrelator(const std::vector<int>& channels, const QChannelCovariance* cov, bool init);
61  virtual void Init(const std::vector<int>& allChannels);
63  std::vector<int>::iterator FindChannel(std::vector<int>& channels,const int chan);
65  double ComputeResolution(const Diana::QVector& powerSpectrum) const;
66 
68  std::vector<int> fChannels;
72  std::vector<int> fAvailableSideChannels;
74  Diana::QRealComplexFFT* fTransformer;
75 
77  std::vector<int> fSideChannels;
79  std::vector<Diana::QVectorC> fWeights;
81  Diana::QVector fOriginalPowerSpectrum;
85  double fScale;
90  private:
92  void Constructor(const std::vector<int>& channels, const QChannelCovariance* cov, bool init);
93 
94  // QRootCintTrigger(QMultiChannelDecorrelator)
95 };
96 
97 
98 #endif
99 
Complex covariance matrix of an array of bolometers.
double fFilteredResolution
expected filtered resolution
double ComputeResolution(const Diana::QVector &powerSpectrum) const
compute resolution
virtual void Init(const std::vector< int > &allChannels)
init weights
Diana::QVector fOriginalPowerSpectrum
original power spectrum of this channel
void SetScale(double scale)
scale power spectra and filtered samples
std::vector< Diana::QVectorC > fWeights
coefficients used in decorrelation
std::vector< int >::iterator FindChannel(std::vector< int > &channels, const int chan)
find if chan is contained in channels otherwise throw exception
double GetFilteredResolution() const
get filtered resolution
const Diana::QVector & GetOriginalPowerSpectrum() const
get original average power spectrum of this channel
void Constructor(const std::vector< int > &channels, const QChannelCovariance *cov, bool init)
perform constructor operations
Diana::QVector fDecorrelatedPowerSpectrum
decorrelated power spectrum of this channel
double fOriginalResolution
original resolution
const std::vector< int > & GetChannels() const
get main channels
std::vector< int > fChannels
number of this channel
void SetSideChannels(const std::vector< int > &channels)
chose subset of channels to use for decorrelation
double GetOriginalResolution() const
get original resolution
const QChannelCovariance * fCovarianceMatrix
pointer to global covariance matrix
virtual void Filter(const Diana::QVector &input, const std::vector< const Diana::QVector * > &sideInputs, Diana::QVector &output) const
decorrelate input QVector from this channel using sideInputs QVectors from sideChannels,...
QMultiChannelDecorrelator(const int chan, const QChannelCovariance *cov)
ctor, by default all channels are used to decorrelate
const Diana::QVector & GetFilteredPowerSpectrum() const
get average filtered spectrum of this channel
const std::vector< int > & GetSideChannels() const
get subset of channels to use for decorrelation
std::vector< int > fAvailableSideChannels
all side channels available in fCovarianceMatrix (not only the selected ones)
Diana::QRealComplexFFT * fTransformer
FFT engine.
std::vector< int > fSideChannels
selected side channels