ATLAS Offline Software
TileRawChannelBuilderFitFilter.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TILERECUTILS_TILERAWCHANNELBUILDERFITFILTER_H
6 #define TILERECUTILS_TILERAWCHANNELBUILDERFITFILTER_H
7 
8 /********************************************************************
9  *
10  * NAME: TileRawChannelBuilderFitFilter.h
11  * PACKAGE: offline/TileCalorimeter/TileRecUtils
12  *
13  * AUTHOR : K. Gellerstedt, Algorithm by Richard John Teuscher
14  * CREATED: Dec 03 2003
15  *
16  * PURPOSE: Build TileRawChannels from digits using fitting
17  *
18  * Input: TileDigitsContainer
19  * Output: TileRawChannelContainer
20  * Parameters: TileRawChannelCont - Name of output container in SG
21  * FrameLength
22  * MaxIterate
23  * RMSChannelNoise
24  ********************************************************************/
25 
26 // Tile includes
30 
31 
33  public:
34 
35  // constructor
36  TileRawChannelBuilderFitFilter(const std::string& type, const std::string& name,
37  const IInterface *parent);
38  // destructor
40 
41  // virtual methods
42  virtual StatusCode initialize() override;
43  virtual StatusCode finalize() override;
44 
45  // Inherited from TileRawChannelBuilder
46  virtual TileRawChannel * rawChannel(const TileDigits* digits, const EventContext& ctx) override;
47 
51  static const InterfaceID& interfaceID();
52 
53  private:
54 
55  Gaudi::Property<bool> m_bestPhase{this, "BestPhase", false, "Use best phase from DB"};
56 
57  void pulseFit(const TileDigits *digit, double &amplitude, double &time, double &pedestal, double &chi2, const EventContext &ctx);
58 
59  // generic functions for pulse interpolation
60  double pulse(double x, const std::vector<double> * xvec, const std::vector<double>* yvec, bool zeroOutside = false) const;
61 
62  double scaledPulse(double x, const std::vector<double> * xvec, const std::vector<double> * yvec) const {
63  return m_fnParameters[1] + m_fnParameters[2] * pulse(x, xvec, yvec, false);
64  }
65 
66  double derivative(double x, const std::vector<double> * xvec, const std::vector<double> * yvec) const {
67  return pulse(x, xvec, yvec, true);
68  }
69 
70  std::vector<double> m_dummy; // dummy vector which can be passed to the functions above
71 
72  // Pulse shape function variables
73  double m_t0Fit;
74  // Parameters for pulse shape functions
75  // [0] - phase, [1] - pedestal, [2] - amplitude
76  double m_fnParameters[3];
77  int m_iPeak0;
78  //double m_phasefrac;
79  double m_minTime;
80  double m_maxTime;
81  double m_minTau;
82  double m_maxTau;
83 
84  // Precalculated values for 1 iteration
85  std::vector<double> m_gPhysLo;
86  std::vector<double> m_dgPhysLo;
87  std::vector<double> m_gPhysHi;
88  std::vector<double> m_dgPhysHi;
89 
90  // Parameters
91  int m_frameLength;
96  double m_saturatedSample; // defines the saturated sample
97  double m_saturatedSampleError; // which error in terms of RMS is assigned to the saturated sample
98  double m_zeroSampleError; // which error in terms of RMS is assigned to the zero sample (== 0)
99  double m_noiseThresholdRMS; // for pedestal-like events only 2-parametric fit is applied
100  double m_maxTimeFromPeak; // max.time for fitting the pulse shapes. Samples with t>t0+m_MaxTimeFromPeak are not fitted.
101 
102  double m_noiseLow; // default low gain noise from TileInfo used in simulation
103  double m_noiseHigh; // default high gain noise from TileInfo used in simulation
104 
105  // Pulse shapes
107 
110 
111  ToolHandle<TileCondToolNoiseSample> m_tileToolNoiseSample{this,
112  "TileCondToolNoiseSample", "TileCondToolNoiseSample", "Tile sample noise tool"};
113 
114 };
115 
116 #define DTIME 25.0 // 25 ns distance between subsequent samples
117 #endif
TileRawChannelBuilderFitFilter::m_gPhysHi
std::vector< double > m_gPhysHi
Definition: TileRawChannelBuilderFitFilter.h:103
TileRawChannelBuilderFitFilter::m_dgPhysLo
std::vector< double > m_dgPhysLo
Definition: TileRawChannelBuilderFitFilter.h:102
TileRawChannelBuilderFitFilter::m_minTime
double m_minTime
Definition: TileRawChannelBuilderFitFilter.h:95
TileRawChannelBuilderFitFilter::m_noiseThresholdRMS
double m_noiseThresholdRMS
Definition: TileRawChannelBuilderFitFilter.h:115
TileRawChannelBuilderFitFilter::m_maxTimeFromPeak
double m_maxTimeFromPeak
Definition: TileRawChannelBuilderFitFilter.h:116
TileRawChannelBuilderFitFilter::m_channelNoiseRMS
int m_channelNoiseRMS
Definition: TileRawChannelBuilderFitFilter.h:108
TileRawChannelBuilderFitFilter::m_bestPhase
Gaudi::Property< bool > m_bestPhase
Definition: TileRawChannelBuilderFitFilter.h:71
TileRawChannelBuilderFitFilter::pulseFit
void pulseFit(const TileDigits *digit, double &amplitude, double &time, double &pedestal, double &chi2, const EventContext &ctx)
Calculate energy, time and chi2 for one channel using fitted pulse shape.
Definition: TileRawChannelBuilderFitFilter.cxx:285
checkRpcDigits.digit
digit
Definition: checkRpcDigits.py:186
TileRawChannelBuilderFitFilter::m_noiseHigh
double m_noiseHigh
Definition: TileRawChannelBuilderFitFilter.h:119
TileRawChannelBuilderFitFilter::m_dummy
std::vector< double > m_dummy
Definition: TileRawChannelBuilderFitFilter.h:86
x
#define x
TileRawChannelBuilderFitFilter::interfaceID
static const InterfaceID & interfaceID()
AlgTool InterfaceID.
Definition: TileRawChannelBuilderFitFilter.cxx:33
TileRawChannelBuilderFitFilter::m_extraSamplesLeft
int m_extraSamplesLeft
Definition: TileRawChannelBuilderFitFilter.h:110
TileRawChannelBuilderFitFilter::m_pulseShapes
const TilePulseShapesStruct * m_pulseShapes
Definition: TileRawChannelBuilderFitFilter.h:122
TilePulseShapes.h
TileRawChannelBuilderFitFilter::m_t0Fit
double m_t0Fit
Definition: TileRawChannelBuilderFitFilter.h:89
TileRawChannelBuilderFitFilter::rawChannel
virtual TileRawChannel * rawChannel(const TileDigits *digits, const EventContext &ctx) override
Builder virtual method to be implemented by subclasses.
Definition: TileRawChannelBuilderFitFilter.cxx:211
TileRawChannelBuilderFitFilter::m_fnParameters
double m_fnParameters[3]
Definition: TileRawChannelBuilderFitFilter.h:92
TileCondToolNoiseSample.h
TileRawChannelBuilderFitFilter::m_iPeak0
int m_iPeak0
Definition: TileRawChannelBuilderFitFilter.h:93
TileRawChannelBuilderFitFilter::m_tileToolNoiseSample
ToolHandle< TileCondToolNoiseSample > m_tileToolNoiseSample
Definition: TileRawChannelBuilderFitFilter.h:127
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
TileRawChannelBuilderFitFilter::m_maxTau
double m_maxTau
Definition: TileRawChannelBuilderFitFilter.h:98
TileRawChannelBuilderFitFilter::m_saturatedSample
double m_saturatedSample
Definition: TileRawChannelBuilderFitFilter.h:112
TileRawChannelBuilderFitFilter
Definition: TileRawChannelBuilderFitFilter.h:32
chi2
double chi2(TH1 *h0, TH1 *h1)
Definition: comparitor.cxx:522
TileRawChannel
Definition: TileRawChannel.h:35
test_pyathena.parent
parent
Definition: test_pyathena.py:15
TileRawChannelBuilderFitFilter::m_noiseLow
double m_noiseLow
Definition: TileRawChannelBuilderFitFilter.h:118
TilePulseShapesStruct
Definition: TilePulseShapes.h:31
TileRawChannelBuilderFitFilter::m_saturatedSampleError
double m_saturatedSampleError
Definition: TileRawChannelBuilderFitFilter.h:113
TileRawChannelBuilderFitFilter::m_gPhysLo
std::vector< double > m_gPhysLo
Definition: TileRawChannelBuilderFitFilter.h:101
TileRawChannelBuilder
Definition: TileRawChannelBuilder.h:59
TileRawChannelBuilderFitFilter::pulse
double pulse(double x, const std::vector< double > *xvec, const std::vector< double > *yvec, bool zeroOutside=false) const
pulse interpolation
Definition: TileRawChannelBuilderFitFilter.cxx:1572
TileRawChannelBuilderFitFilter::m_specialDemoShape
int m_specialDemoShape
Definition: TileRawChannelBuilderFitFilter.h:125
TileRawChannelBuilderFitFilter::m_extraSamplesRight
int m_extraSamplesRight
Definition: TileRawChannelBuilderFitFilter.h:111
TileRawChannelBuilderFitFilter::initialize
virtual StatusCode initialize() override
Initializer.
Definition: TileRawChannelBuilderFitFilter.cxx:86
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TileDigits
Definition: TileDigits.h:30
TileRawChannelBuilderFitFilter::m_dgPhysHi
std::vector< double > m_dgPhysHi
Definition: TileRawChannelBuilderFitFilter.h:104
TileRawChannelBuilder.h
TileRawChannelBuilderFitFilter::m_maxIterate
int m_maxIterate
Definition: TileRawChannelBuilderFitFilter.h:109
TileRawChannelBuilderFitFilter::m_zeroSampleError
double m_zeroSampleError
Definition: TileRawChannelBuilderFitFilter.h:114
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
TileRawChannelBuilderFitFilter::m_minTau
double m_minTau
Definition: TileRawChannelBuilderFitFilter.h:97
TileRawChannelBuilderFitFilter::derivative
double derivative(double x, const std::vector< double > *xvec, const std::vector< double > *yvec) const
Definition: TileRawChannelBuilderFitFilter.h:82
python.output.AtlRunQueryRoot.yvec
yvec
Definition: AtlRunQueryRoot.py:989
TileRawChannelBuilderFitFilter::~TileRawChannelBuilderFitFilter
~TileRawChannelBuilderFitFilter()
Destructor.
Definition: TileRawChannelBuilderFitFilter.cxx:80
TileRawChannelBuilderFitFilter::m_disableNegativeAmp
bool m_disableNegativeAmp
Definition: TileRawChannelBuilderFitFilter.h:124
TileRawChannelBuilderFitFilter::scaledPulse
double scaledPulse(double x, const std::vector< double > *xvec, const std::vector< double > *yvec) const
Definition: TileRawChannelBuilderFitFilter.h:78
TileRawChannelBuilderFitFilter::finalize
virtual StatusCode finalize() override
Definition: TileRawChannelBuilderFitFilter.cxx:205
TileRawChannelBuilderFitFilter::TileRawChannelBuilderFitFilter
TileRawChannelBuilderFitFilter(const std::string &type, const std::string &name, const IInterface *parent)
Constructor.
Definition: TileRawChannelBuilderFitFilter.cxx:41
TileRawChannelBuilderFitFilter::m_maxTime
double m_maxTime
Definition: TileRawChannelBuilderFitFilter.h:96
TileRawChannelBuilderFitFilter::m_frameLength
int m_frameLength
Definition: TileRawChannelBuilderFitFilter.h:107