ATLAS Offline Software
Loading...
Searching...
No Matches
LArWFParamTool.h
Go to the documentation of this file.
1//Dear emacs, this is -*- c++ -*-
2
3/*
4 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
5*/
6
7
8#ifndef LARWFPARAMTOOL_H
9#define LARWFPARAMTOOL_H
10
12
13#include "GaudiKernel/ToolHandle.h"
14
20#include <optional>
21
22static const InterfaceID IID_LArWFParamTool("LArWFParamTool", 1 , 0);
23
25class LArEM_ID;
27
29{
30
31public:
32
33 enum {
34 FailExtract = -999 ,
37 } ;
38
39 // Retrieve interface ID
40 static const InterfaceID& interfaceID() { return IID_LArWFParamTool; }
41
42 // constructor
43 LArWFParamTool(const std::string& type, const std::string& name, const IInterface* parent ) ;
44
45 // destructor
46 virtual ~LArWFParamTool();
47
48 virtual StatusCode initialize();
49 virtual StatusCode finalize(){return StatusCode::SUCCESS;}
50
51 // this is supposed to be a quick test on cali waves, to flags those
52 // clearly problematic. but cuts must be tuned, so for the time being
53 // don't call this method!
54 //unsigned checkStatus(const LArCaliWave &larCaliWave) const ;
55
56
57 StatusCode getLArWaveParams(const LArCaliWave& larCaliWave,
58 const HWIdentifier chid,
59 const CaloGain::CaloGain gain,
60 LArWFParams& wfParams,
61 const LArOnOffIdMapping *cabling,
62 std::optional<LArCaliWave>& omegaScan,
63 std::optional<LArCaliWave>& resOscill0,
64 std::optional<LArCaliWave>& resOscill1
65 ) const;
66
67
68 enum { OK = 0 ,
71 LowStat = 3 ,
72 Noisy = 4 ,
74 } ;
75
76private:
77
78 static const double m_DEFAULT;
79 static const double m_TINY;
80 static const double m_SQRT_EPSILON;
81 static const double m_EPSILON;
82
83
84 struct WaveTiming_t {
85 unsigned Tstart;
86 unsigned Tpeak;
87 unsigned Tcross;
88 unsigned Tmin;
89 //unsigned Ttail;
90 double Amplitude;
91 };
92
93 const LArEM_Base_ID* m_emId = nullptr;
95
97
98
99 double m_Tshaper;
100
101 std::vector<bool> m_cosRespScan ;
102 std::vector<double> m_omegamin;
103 std::vector<double> m_omegamax;
104 std::vector<unsigned> m_npoints ;
105
106 //AlgTool properties:
107 std::vector<bool> m_storeResOscill;
108 unsigned int m_NBaseline;
112 bool m_isSC;
113 std::vector<int> m_TtailMin;
114 std::vector<int> m_TtailMax;
115 std::vector<int> m_DeltaTtail;
116
117
118 //Internal data structures
119 struct waveRange_t {
120 unsigned min;
121 unsigned max;
122 };
123
132
133
134 WaveTiming_t timeExtr(LArWave& gCali) const;
135 double expTail(const LArWave& gCali, const WaveTiming_t& wt) const;
136 StatusCode GetFstep(const LArWave& gCali, LArWFParams& wfParams, const WaveTiming_t& wt) const;
137 double fstepMin (const LArWave& gCali, double fstep, const double Tc, const unsigned Ttail) const;
138 double dFstep (const LArWave& gCali, const double fstep, const double Tc, const unsigned Ttail) const ;
139 static LArWave stepResp (const LArWave& gCali, const double fstep, const double Tc) ;
140 static LArWave stepCorr(const LArWave& gCali, const double& fstep, const double& Tc) ;
141 LArWave dstepRespDfstep (const LArWave& gCali, const double& fstep, const double& Tc) const ;
142 static double dstepCorrDfstep (const double t, const double& fstep, const double& Tc ) ;
143 static LArWave dstepCorrDfstep(const LArWave& gCali, const double& fstep, const double& Tcal ) ;
144 StatusCode RTM_Omega0(const LArWave& gCali, const HWIdentifier chid, LArWFParams& wfParams, const WaveTiming_t& wt, const LArOnOffIdMapping *cabling, std::optional<LArCaliWave>& omegaScan) const;
145 StatusCode RTM_Taur(const LArWave& gCali, LArWFParams& wfParams, const WaveTiming_t& wt) const;
146 double logChi2CosRespShaper (const double omega, const LArWave& gCali, const LArWFParams& wf, const waveRange_t& range) const;
147 double logChi2InjRespRes (const double taur, const LArWave& gCali, const LArWFParams& wf, const waveRange_t& range ) const ;
148 LArWave cosRespShaper (const LArWave& gCali, const double& fstep, const double& tcal, const double& w, const double& tsh ) const ;
149 static LArWave cosResp (const LArWave& gCali, const double& fstep, const double& tcal, const double& omega) ;
150 static LArWave injRespRes (const LArWave& w, const double omega0, const double taur) ;
151 static LArWave injCorr(const unsigned N, const double dt,const double omega0, const double taur) ;
152 double omega0MinNum (double omegaMin, double omegaMax, const double tol,const LArWave& gCali, const LArWFParams& wf, const waveRange_t&) const;
153 static LArWave cosCorr(const unsigned N, const double dt, const double fstep, const double tcal, const double omega) ;
154 double taurMinNum (const double taurmin, const double taurmax, const double tol, const LArWave& gCali, const LArWFParams& wf,const waveRange_t&) const;
155
156 double fminbr(double a, double b, const double tol, double (LArWFParamTool::*f)(double, const LArWave&, const LArWFParams&, const waveRange_t&) const,
157 const LArWave& gCali, const LArWFParams& wf, const waveRange_t& range) const;
158
159 unsigned checkStatus(const LArCaliWave &larCaliWave) const ;
160
161 omegaScanParams_t OmegaScanHelper(const Identifier id, const WaveTiming_t& wt) const;
162
163
164};
165#endif
static Double_t Tc(Double_t t)
static Double_t a
static const InterfaceID IID_LArWFParamTool("LArWFParamTool", 1, 0)
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
This class factors out code common between LArEM_ID and LArEM_SuperCell_ID.
Helper class for LArEM offline identifiers.
Definition LArEM_ID.h:111
Helper for the Liquid Argon Calorimeter cell identifiers.
StatusCode getLArWaveParams(const LArCaliWave &larCaliWave, const HWIdentifier chid, const CaloGain::CaloGain gain, LArWFParams &wfParams, const LArOnOffIdMapping *cabling, std::optional< LArCaliWave > &omegaScan, std::optional< LArCaliWave > &resOscill0, std::optional< LArCaliWave > &resOscill1) const
LArWFParamTool(const std::string &type, const std::string &name, const IInterface *parent)
LArWaveHelper m_wHelper
static double dstepCorrDfstep(const double t, const double &fstep, const double &Tc)
double fstepMin(const LArWave &gCali, double fstep, const double Tc, const unsigned Ttail) const
const LArOnlineID_Base * m_onlineHelper
std::vector< bool > m_cosRespScan
double dFstep(const LArWave &gCali, const double fstep, const double Tc, const unsigned Ttail) const
double expTail(const LArWave &gCali, const WaveTiming_t &wt) const
static const double m_EPSILON
double taurMinNum(const double taurmin, const double taurmax, const double tol, const LArWave &gCali, const LArWFParams &wf, const waveRange_t &) const
StatusCode GetFstep(const LArWave &gCali, LArWFParams &wfParams, const WaveTiming_t &wt) const
static LArWave cosResp(const LArWave &gCali, const double &fstep, const double &tcal, const double &omega)
double logChi2CosRespShaper(const double omega, const LArWave &gCali, const LArWFParams &wf, const waveRange_t &range) const
static LArWave stepCorr(const LArWave &gCali, const double &fstep, const double &Tc)
omegaScanParams_t OmegaScanHelper(const Identifier id, const WaveTiming_t &wt) const
unsigned checkStatus(const LArCaliWave &larCaliWave) const
StatusCode RTM_Taur(const LArWave &gCali, LArWFParams &wfParams, const WaveTiming_t &wt) const
static LArWave stepResp(const LArWave &gCali, const double fstep, const double Tc)
double logChi2InjRespRes(const double taur, const LArWave &gCali, const LArWFParams &wf, const waveRange_t &range) const
std::vector< double > m_omegamin
std::vector< int > m_TtailMax
static LArWave cosCorr(const unsigned N, const double dt, const double fstep, const double tcal, const double omega)
unsigned int m_NBaseline
static const double m_DEFAULT
static LArWave injCorr(const unsigned N, const double dt, const double omega0, const double taur)
const LArEM_Base_ID * m_emId
virtual StatusCode finalize()
std::vector< bool > m_storeResOscill
double fminbr(double a, double b, const double tol, double(LArWFParamTool::*f)(double, const LArWave &, const LArWFParams &, const waveRange_t &) const, const LArWave &gCali, const LArWFParams &wf, const waveRange_t &range) const
static const double m_SQRT_EPSILON
LArWave cosRespShaper(const LArWave &gCali, const double &fstep, const double &tcal, const double &w, const double &tsh) const
std::vector< int > m_TtailMin
std::vector< unsigned > m_npoints
double omega0MinNum(double omegaMin, double omegaMax, const double tol, const LArWave &gCali, const LArWFParams &wf, const waveRange_t &) const
virtual StatusCode initialize()
static const InterfaceID & interfaceID()
virtual ~LArWFParamTool()
StatusCode RTM_Omega0(const LArWave &gCali, const HWIdentifier chid, LArWFParams &wfParams, const WaveTiming_t &wt, const LArOnOffIdMapping *cabling, std::optional< LArCaliWave > &omegaScan) const
std::vector< double > m_omegamax
std::vector< int > m_DeltaTtail
LArWave dstepRespDfstep(const LArWave &gCali, const double &fstep, const double &Tc) const
static const double m_TINY
static LArWave injRespRes(const LArWave &w, const double omega0, const double taur)
WaveTiming_t timeExtr(LArWave &gCali) const