Belle II Software  release-05-02-19
TOPTemplateFitter.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Tobias Weber *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 
13 #include <top/dataobjects/TOPRawWaveform.h>
14 #include <top/dbobjects/TOPSampleTimes.h>
15 
16 #include <vector>
17 
18 namespace Belle2 {
24  namespace TOP {
25 
26  using Point = std::pair<double, double>;
27 
33  class TOPTemplateFitter {
34 
35  public:
36 
42  double amplitude = 100.;
43  double risingEdge = 32.;
44  };
45 
49  struct FitResult {
50  double amplitude = 0;
51  double amplitudeError = 0;
52  double backgroundOffset = 0;
53  double backgroundOffsetError = 0;
54  double risingEdge = 0;
59  void clear()
60  {
61  amplitude = 0;
63  backgroundOffset = 0;
65  risingEdge = 0;
66  }
67  };
68 
72  struct MinimizationSums {
73  double S1 = 0;
74  double Sx = 0;
75  double Sxx = 0;
76  double Sy = 0;
77  double Sxy = 0;
78  double Syy = 0;
83  void clear()
84  {
85  S1 = 0;
86  Sx = 0;
87  Sxx = 0;
88  Sy = 0;
89  Sxy = 0;
90  Syy = 0;
91  }
92  };
93 
101  const TOPSampleTimes& sampleTimes,
102  const double averageRMS);
106  ~TOPTemplateFitter() {};
107 
112  double getChisq() const {return m_chisq;}
113 
118  const std::vector<double>& getChisqVector() const {return m_chisq_vec;}
119 
124  const FitResult& getFitResult() const {return m_result;}
125 
130  static TemplateParameters& getTemplateParameters() {return s_templateParameters;}
131 
136  static int getTemplateSamples() {return s_totalTemplateSamples;}
137 
142  static int getTemplateResolution() {return s_templateResolution;}
143 
148  static bool getUseParabola() {return s_useParabola;}
149 
154  static void setTemplateParameters(const TemplateParameters& params);
155 
160  static void setTemplateSamples(int nSamples);
161 
166  static void setTemplateResolution(int resolution);
167 
172  static void setUseParabola(bool use) {s_useParabola = use;}
173 
177  static void InitializeTemplateFit();
178 
184  void performTemplateFit(const double risingEdgeStart,
185  const double fitRange);
186 
187  private:
188 
197  void PerformTemplateFitMinimize(const std::vector<short>& samples, const std::vector<short>& pedestals,
198  const std::vector<float>& timingCorrection, const double risingEdgeCFD,
199  const double fitRange);
200 
207  double ComputeMinimizedParametersAndChisq(const MinimizationSums& sums, FitResult& result);
208 
216  void CalculateParabolaVertex(const Point& p1, const Point& p2, const Point& p3,
217  Point& vertex);
218 
219  const TOPRawWaveform m_wf;
220  const TOPSampleTimes m_sampleTimes;
221  const double m_averageRMS;
223  static int s_totalTemplateSamples;
224  static int s_templateResolution;
225  static TemplateParameters s_templateParameters;
226  static std::vector<double> s_templateSamples;
227  static int s_fineOffsetRange;
229  static bool s_useParabola;
231  //fit results
233  double m_chisq = 0;
234  std::vector<double> m_chisq_vec;
236  };
237 
238  }
240 }
Belle2::TOP::TOPTemplateFitter::MinimizationSums::clear
void clear()
set sums used during template fit to initial values
Definition: TOPTemplateFitter.h:91
Belle2::TOP::TOPTemplateFitter::getTemplateSamples
static int getTemplateSamples()
Returns the total number of template samples.
Definition: TOPTemplateFitter.h:144
Belle2::TOP::TOPTemplateFitter::m_sampleTimes
const TOPSampleTimes m_sampleTimes
provides timing correction
Definition: TOPTemplateFitter.h:228
Belle2::TOP::TOPTemplateFitter::MinimizationSums::Sx
double Sx
sum of template*weight
Definition: TOPTemplateFitter.h:82
Belle2::TOP::TOPTemplateFitter::FitResult::risingEdge
double risingEdge
fitted rising edge
Definition: TOPTemplateFitter.h:62
Belle2::TOP::TOPTemplateFitter::TOPTemplateFitter
TOPTemplateFitter(const TOPRawWaveform &wf, const TOPSampleTimes &sampleTimes, const double averageRMS)
full constructor
Definition: TOPTemplateFitter.cc:30
Belle2::TOP::TOPTemplateFitter::getChisqVector
const std::vector< double > & getChisqVector() const
Returns calculated chisq values.
Definition: TOPTemplateFitter.h:126
Belle2::TOP::TOPTemplateFitter::s_templateSamples
static std::vector< double > s_templateSamples
precomputed template samples
Definition: TOPTemplateFitter.h:234
Belle2::TOP::TOPTemplateFitter::performTemplateFit
void performTemplateFit(const double risingEdgeStart, const double fitRange)
Prepares data and performs the template fit in sample space.
Definition: TOPTemplateFitter.cc:80
Belle2::TOP::TOPTemplateFitter::ComputeMinimizedParametersAndChisq
double ComputeMinimizedParametersAndChisq(const MinimizationSums &sums, FitResult &result)
Compute the minimized parameters and chi square value.
Definition: TOPTemplateFitter.cc:167
Belle2::TOP::TOPTemplateFitter::s_totalTemplateSamples
static int s_totalTemplateSamples
number of samples used for template
Definition: TOPTemplateFitter.h:231
Belle2::TOP::TOPTemplateFitter::setTemplateSamples
static void setTemplateSamples(int nSamples)
Set the total number of template samples.
Definition: TOPTemplateFitter.cc:47
Belle2::TOP::TOPTemplateFitter::TemplateParameters::risingEdge
double risingEdge
rising edge position of template in samples
Definition: TOPTemplateFitter.h:51
Belle2::TOP::TOPTemplateFitter::MinimizationSums
Variables used during template fit minimization.
Definition: TOPTemplateFitter.h:80
Belle2::TOP::TOPTemplateFitter::FitResult::amplitudeError
double amplitudeError
fitted amplitude error
Definition: TOPTemplateFitter.h:59
Belle2::TOP::TOPTemplateFitter::TemplateParameters::amplitude
double amplitude
amplitude of template function
Definition: TOPTemplateFitter.h:50
Belle2::TOP::TOPTemplateFitter::MinimizationSums::Syy
double Syy
sum of signal sample * signal sample * weight
Definition: TOPTemplateFitter.h:86
Belle2::TOP::TOPTemplateFitter::getFitResult
const FitResult & getFitResult() const
Returns fitted values with errors.
Definition: TOPTemplateFitter.h:132
Belle2::TOP::TOPTemplateFitter::CalculateParabolaVertex
void CalculateParabolaVertex(const Point &p1, const Point &p2, const Point &p3, Point &vertex)
Calculate vertex coordinates of parabola given three data points.
Definition: TOPTemplateFitter.cc:110
Belle2::TOP::TOPTemplateFitter::MinimizationSums::Sxy
double Sxy
sum of signal sample *template*weight
Definition: TOPTemplateFitter.h:85
Belle2::TOP::TOPTemplateFitter::getChisq
double getChisq() const
Returns fit chi square.
Definition: TOPTemplateFitter.h:120
Belle2::TOP::TOPTemplateFitter::FitResult::clear
void clear()
set the fit result variables to zero
Definition: TOPTemplateFitter.h:67
Belle2::TOP::TOPTemplateFitter::MinimizationSums::Sxx
double Sxx
sum of template*template*weight
Definition: TOPTemplateFitter.h:83
Belle2::TOP::TOPTemplateFitter::MinimizationSums::S1
double S1
sum of sample weights
Definition: TOPTemplateFitter.h:81
Belle2::TOPRawWaveform
Class to store raw data waveforms.
Definition: TOPRawWaveform.h:34
Belle2::TOP::TOPTemplateFitter::m_wf
const TOPRawWaveform m_wf
raw sampled waveforms
Definition: TOPTemplateFitter.h:227
Belle2::TOP::TOPTemplateFitter::FitResult
structure holding values from template fit
Definition: TOPTemplateFitter.h:57
Belle2::TOP::TOPTemplateFitter::s_templateResolution
static int s_templateResolution
resolution of template with respect to normal sample spacing
Definition: TOPTemplateFitter.h:232
Belle2::TOP::TOPTemplateFitter::FitResult::backgroundOffsetError
double backgroundOffsetError
fitted background offset error
Definition: TOPTemplateFitter.h:61
Belle2::TOP::TOPTemplateFitter::PerformTemplateFitMinimize
void PerformTemplateFitMinimize(const std::vector< short > &samples, const std::vector< short > &pedestals, const std::vector< float > &timingCorrection, const double risingEdgeCFD, const double fitRange)
performs the template fit
Definition: TOPTemplateFitter.cc:124
Belle2::TOP::TOPTemplateFitter::InitializeTemplateFit
static void InitializeTemplateFit()
Intializes the template fit using default values.
Definition: TOPTemplateFitter.cc:61
Belle2::TOPSampleTimes
Calibration constants of a singe ASIC channel: time axis (sample times)
Definition: TOPSampleTimes.h:34
Belle2::TOP::TOPTemplateFitter::setUseParabola
static void setUseParabola(bool use)
Enable Usage of parabola improvement.
Definition: TOPTemplateFitter.h:180
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TOP::TOPTemplateFitter::m_averageRMS
const double m_averageRMS
average RMS of waveform samples, no database for this
Definition: TOPTemplateFitter.h:229
Belle2::TOP::TOPTemplateFitter::getTemplateParameters
static TemplateParameters & getTemplateParameters()
Returns the template parameters.
Definition: TOPTemplateFitter.h:138
Belle2::TOP::TOPTemplateFitter::FitResult::amplitude
double amplitude
fitted amplitude
Definition: TOPTemplateFitter.h:58
Belle2::TOP::TOPTemplateFitter::setTemplateParameters
static void setTemplateParameters(const TemplateParameters &params)
Sets the template parameters.
Definition: TOPTemplateFitter.cc:41
Belle2::TOP::TOPTemplateFitter::s_useParabola
static bool s_useParabola
try improving fit by making use of parabolic shape of chisq values
Definition: TOPTemplateFitter.h:237
Belle2::TOP::TOPTemplateFitter::s_templateParameters
static TemplateParameters s_templateParameters
parameters used for the template calculation
Definition: TOPTemplateFitter.h:233
Belle2::TOP::TOPTemplateFitter::s_fineOffsetRange
static int s_fineOffsetRange
range for offset between template and signal
Definition: TOPTemplateFitter.h:235
Belle2::TOP::TOPTemplateFitter::m_result
FitResult m_result
fit result from template fit
Definition: TOPTemplateFitter.h:240
Belle2::TOP::TOPTemplateFitter::getUseParabola
static bool getUseParabola()
Returns useParabola.
Definition: TOPTemplateFitter.h:156
Belle2::TOP::TOPTemplateFitter::TemplateParameters
Parameters of the template function.
Definition: TOPTemplateFitter.h:49
Belle2::TOP::TOPTemplateFitter::setTemplateResolution
static void setTemplateResolution(int resolution)
Set the template resolution.
Definition: TOPTemplateFitter.cc:54
Belle2::TOP::TOPTemplateFitter::getTemplateResolution
static int getTemplateResolution()
Returns the template resolution.
Definition: TOPTemplateFitter.h:150
Belle2::TOP::TOPTemplateFitter::s_templateReInitialize
static bool s_templateReInitialize
flag showing that the template samples have to be recomputed
Definition: TOPTemplateFitter.h:236
Belle2::TOP::TOPTemplateFitter::MinimizationSums::Sy
double Sy
sum of signal sample * weight
Definition: TOPTemplateFitter.h:84
Belle2::TOP::TOPTemplateFitter::~TOPTemplateFitter
~TOPTemplateFitter()
default destructor
Definition: TOPTemplateFitter.h:114
Belle2::TOP::TOPTemplateFitter::m_chisq_vec
std::vector< double > m_chisq_vec
all computed chi square values from template fit
Definition: TOPTemplateFitter.h:242
Belle2::TOP::TOPTemplateFitter::m_chisq
double m_chisq
chi square value from template fit
Definition: TOPTemplateFitter.h:241
Belle2::TOP::TOPTemplateFitter::FitResult::backgroundOffset
double backgroundOffset
fitted background offset
Definition: TOPTemplateFitter.h:60