ATLAS Offline Software
Loading...
Searching...
No Matches
VMM_Shaper.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef MM_DIGITIZATION_VMM_SHAPER_H
6#define MM_DIGITIZATION_VMM_SHAPER_H
7
8#include <vector>
9
11public:
12 VMM_Shaper(const float peakTime, const float lowerTimeWindow, const float upperTimeWindow);
13 virtual ~VMM_Shaper() = default;
14
15 void initialize();
16
17 bool vmmPeakResponse(const std::vector<float> &effectiveCharge, const std::vector<float> &electronsTime,
18 const double electronicsThreshold, double &amplitudeFirstPeak, double &timeFirstPeak) const;
19 bool vmmThresholdResponse(const std::vector<float> &effectiveCharge, const std::vector<float> &electronsTime,
20 const double electronicsThreshold, double &amplitudeAtFirstPeak, double &timeAtThreshold) const;
21
22 bool hasChargeAboveThreshold(const std::vector<float> &effectiveCharge, const std::vector<float> &electronsTime,
23 const double electronicsThreshold) const;
24
25private:
26 double m_peakTime{0.};
29
30 double m_timeStep{0.};
32
34 // shaper parameters
35 double m_a{0.};
36 double m_pole0{0.};
37 double m_re_pole1{0.};
38 double m_im_pole1{0.};
39 double m_pole1_square{0.};
40 double m_k1_abs{0.};
41 double m_argK1{0.};
43
44 double vmmResponse(const std::vector<float> &effectiveCharge, const std::vector<float> &electronsTime, double time) const;
45 double findPeak(const std::vector<float> &effectiveCharge, const std::vector<float> &electronsTime,
46 const double electronicsThreshold) const;
47 bool aboveThresholdSimple(const std::vector<float> &effectiveCharge, const std::vector<float> &electronsTime,
48 const double electronicsThreshold) const;
49 double m_pole0_ns{0.};
50 double m_re_pole1_ns{0.};
51 double m_im_pole1_ns{0.};
52};
53
54#endif // MM_DIGITIZATION_VMM_SHAPER_H
double m_pole1_square
Definition VMM_Shaper.h:39
bool vmmPeakResponse(const std::vector< float > &effectiveCharge, const std::vector< float > &electronsTime, const double electronicsThreshold, double &amplitudeFirstPeak, double &timeFirstPeak) const
virtual ~VMM_Shaper()=default
double m_inverseTimeStep
Definition VMM_Shaper.h:31
double m_im_pole1
Definition VMM_Shaper.h:38
bool aboveThresholdSimple(const std::vector< float > &effectiveCharge, const std::vector< float > &electronsTime, const double electronicsThreshold) const
VMM_Shaper(const float peakTime, const float lowerTimeWindow, const float upperTimeWindow)
double findPeak(const std::vector< float > &effectiveCharge, const std::vector< float > &electronsTime, const double electronicsThreshold) const
double m_k1_abs
Definition VMM_Shaper.h:40
double m_pole0
Definition VMM_Shaper.h:36
double m_preCalculationVMMShaper
Definition VMM_Shaper.h:33
double m_argK1
Definition VMM_Shaper.h:41
double m_a
Definition VMM_Shaper.h:35
double m_peakTimeChargeScaling
Definition VMM_Shaper.h:42
double m_re_pole1
Definition VMM_Shaper.h:37
void initialize()
double m_lowerTimeWindow
Definition VMM_Shaper.h:27
double m_upperTimeWindow
Definition VMM_Shaper.h:28
bool hasChargeAboveThreshold(const std::vector< float > &effectiveCharge, const std::vector< float > &electronsTime, const double electronicsThreshold) const
double m_peakTime
Definition VMM_Shaper.h:26
double m_re_pole1_ns
Definition VMM_Shaper.h:50
bool vmmThresholdResponse(const std::vector< float > &effectiveCharge, const std::vector< float > &electronsTime, const double electronicsThreshold, double &amplitudeAtFirstPeak, double &timeAtThreshold) const
double m_pole0_ns
Definition VMM_Shaper.h:49
double m_im_pole1_ns
Definition VMM_Shaper.h:51
double m_timeStep
Definition VMM_Shaper.h:30
double vmmResponse(const std::vector< float > &effectiveCharge, const std::vector< float > &electronsTime, double time) const