ATLAS Offline Software
Loading...
Searching...
No Matches
ZDCFitExpFermiVariableTausInduct Class Reference

#include <ZDCFitWrapper.h>

Inheritance diagram for ZDCFitExpFermiVariableTausInduct:
Collaboration diagram for ZDCFitExpFermiVariableTausInduct:

Public Member Functions

 ZDCFitExpFermiVariableTausInduct (const std::string &tag, float tmin, float tmax, bool fixTau1, bool fixTau2, float tau1, float tau2)
virtual void DoInitialize (float initialAmp, float initialT0, float ampMin, float ampMax) override
virtual void SetT0FitLimits (float tMin, float tMax) override
void FixDelta (float value)
virtual float GetAmplitude () const override
virtual float GetAmpError () const override
virtual float GetTau1 () const override
virtual float GetTau2 () const override
virtual float GetTime () const override
virtual unsigned int GetNumShapeParameters () const override
virtual float GetShapeParameter (size_t index) const override
virtual float GetBkgdMaxFraction () const override
virtual double operator() (const double *x, const double *p) override
virtual void ConstrainFit () override
virtual void UnconstrainFit () override
void Initialize (float initialAmp, float initialT0, float ampMin, float ampMax)
void Initialize (float initialAmp, float initialT0, float ampMin, float ampMax, float fitTmin, float fitTmax, float fitTRef)
bool finalized () const
virtual void Finalize ()
void SetAmpMinMax (float minAmp, float maxAmp)
void SetT0Range (float t0Min, float t0Max)
float GetMinAmp () const
float GetMaxAmp () const
float GetTMin () const
float GetTMax () const
float GetT0Min () const
float GetT0Max () const
float GetTMinAdjust () const
virtual std::shared_ptr< TF1 > GetWrapperTF1 ()
virtual const TF1 * GetWrapperTF1 () const
virtual TF1 * GetWrapperTF1RawPtr () const

Protected Member Functions

virtual void DoFinalize () override

Protected Attributes

bool m_fixTau1 {false}
bool m_fixTau2 {false}
bool m_fixDelta {false}
float m_tau1 {0}
float m_tau2 {0}
float m_tFuncMax {-999}
float m_funcMax {-999}

Private Attributes

std::shared_ptr< TF1 > m_wrapperTF1 {}
float m_tmin {0}
float m_tmax {0}
float m_ampMin {0}
float m_ampMax {0}
float m_t0Min {0}
float m_t0Max {0}
bool m_adjTLimitsEvent {false}
float m_tminAdjust {0}
float m_tempTmin {0}
float m_tempTmax {0}
bool m_finalized {false}

Detailed Description

Definition at line 311 of file ZDCFitWrapper.h.

Constructor & Destructor Documentation

◆ ZDCFitExpFermiVariableTausInduct()

ZDCFitExpFermiVariableTausInduct::ZDCFitExpFermiVariableTausInduct ( const std::string & tag,
float tmin,
float tmax,
bool fixTau1,
bool fixTau2,
float tau1,
float tau2 )

Definition at line 219 of file ZDCFitWrapper.cxx.

219 :
220 ZDCFitWrapper(std::make_shared<TF1>(("ExpFermiVariableTausInduct" + tag).c_str(), ZDCFermiExpFitInduct, tmin, tmax, 10)),
221 m_fixTau1(fixTau1), m_fixTau2(fixTau2), m_tau1(tau1), m_tau2(tau2)
222{
223 std::shared_ptr<TF1> theTF1 = ZDCFitWrapper::GetWrapperTF1();
224
225 theTF1->SetParName(0, "Amp");
226 theTF1->SetParName(1, "T0");
227 theTF1->SetParName(2, "#tau_{1}");
228 theTF1->SetParName(3, "#tau_{2}");
229 theTF1->SetParName(4, "C");
230 theTF1->SetParName(5, "period");
231 theTF1->SetParName(6, "IndA");
232 theTF1->SetParName(7, "IndB");
233 theTF1->SetParName(8, "tauI");
234 theTF1->SetParName(9, "delta");
235
236 theTF1->SetParLimits(1, tmin, tmax);
237 theTF1->SetParLimits(4, -50, 50);
238 theTF1->SetParLimits(5, 10, 50);
239 theTF1->SetParLimits(6, 0, 2);
240 theTF1->SetParLimits(7, 0, 2);
241 // theTF1->SetParLimits(8, 1, 6);
242 theTF1->FixParameter(8, 5.5);
243 theTF1->FixParameter(5, 16);
244 // theTF1->SetParLimits(9, 0, 0.05);
245
246
247 FixDelta(0.015);
248
249 if (m_fixTau1) theTF1->FixParameter(2, m_tau1);
250 else theTF1->SetParLimits(2, 0.5, 3);
251
252 if (m_fixTau2) theTF1->FixParameter(3, m_tau2);
253 else theTF1->SetParLimits(3, 3.5, 8);
254}
double ZDCFermiExpFitInduct(const double *xvec, const double *pvec)
virtual std::shared_ptr< TF1 > GetWrapperTF1()
ZDCFitWrapper(const std::shared_ptr< TF1 > &wrapperTF1)

Member Function Documentation

◆ ConstrainFit()

void ZDCFitExpFermiVariableTausInduct::ConstrainFit ( )
overridevirtual

Implements ZDCFitWrapper.

Definition at line 299 of file ZDCFitWrapper.cxx.

300{
301 std::shared_ptr<TF1> theTF1 = ZDCFitWrapper::GetWrapperTF1();
302 theTF1->FixParameter(6, 0.25);
303 theTF1->FixParameter(4, 0);
304 // theTF1->FixParameter(7, 0.1);
305}

◆ DoFinalize()

virtual void ZDCFitExpFermiVariableTausInduct::DoFinalize ( )
inlineoverrideprotectedvirtual

Reimplemented from ZDCFitWrapper.

Definition at line 324 of file ZDCFitWrapper.h.

325 {
326 TF1* theTF1 = GetWrapperTF1RawPtr();
327 theTF1->SetNpx(20);
330 theTF1->SetNpx(1000);
331 }
double getInductFuncTimeMax(const TF1 *theTF1)
virtual TF1 * GetWrapperTF1RawPtr() const

◆ DoInitialize()

void ZDCFitExpFermiVariableTausInduct::DoInitialize ( float initialAmp,
float initialT0,
float ampMin,
float ampMax )
overridevirtual

Implements ZDCFitWrapper.

Definition at line 256 of file ZDCFitWrapper.cxx.

257{
258 std::shared_ptr<TF1> theTF1 = ZDCFitWrapper::GetWrapperTF1();
259
260 theTF1->SetParameter(0, initialAmp);
261 theTF1->SetParLimits(0, ampMin, ampMax);
262
263 float t0 = initialT0;
264 if (t0 < GetT0Min()) t0 = GetT0Min()*1.1;
265 if (t0 > GetT0Max()) t0 = GetT0Max()/1.1;
266 theTF1->SetParameter(1, t0);
267
268 theTF1->SetParameter(6, 0.25);
269 theTF1->SetParameter(7, 0.8);
270 if (!m_fixDelta) theTF1->SetParameter(9, 0.);
271
272 if (!m_fixTau1) theTF1->SetParameter(2, m_tau1);
273 if (!m_fixTau2) theTF1->SetParameter(3, m_tau2);
274
275 // Set the parameter errors which ROOT now uses <<<to set the initial step sizes>>>
276 //
277 double ampStep = std::min(0.05*initialAmp, std::abs(ampMax - initialAmp)/2.);
278
279 theTF1->SetParError(0, ampStep);
280 theTF1->SetParError(1, 1.0);
281
282 if (!m_fixTau1) theTF1->SetParError(2, 0.05);
283 if (!m_fixTau2) theTF1->SetParError(3, 0.25);
284
285 theTF1->SetParError(4, 1);
286 theTF1->SetParError(5, 5);
287 theTF1->SetParError(6, 0.1);
288 theTF1->SetParError(7, 0.1);
289}
static Double_t t0
float GetT0Max() const
float GetT0Min() const

◆ Finalize()

virtual void ZDCFitWrapper::Finalize ( )
inlinevirtualinherited

Definition at line 68 of file ZDCFitWrapper.h.

69 {
70 DoFinalize();
71 m_finalized = true;
72 }
virtual void DoFinalize()

◆ finalized()

bool ZDCFitWrapper::finalized ( ) const
inlineinherited

Definition at line 66 of file ZDCFitWrapper.h.

66{return m_finalized;}

◆ FixDelta()

void ZDCFitExpFermiVariableTausInduct::FixDelta ( float value)
inline

Definition at line 340 of file ZDCFitWrapper.h.

341 {
342 m_fixDelta = true;
343 ZDCFitWrapper::GetWrapperTF1()->FixParameter(9, value);
344 }

◆ GetAmpError()

virtual float ZDCFitExpFermiVariableTausInduct::GetAmpError ( ) const
inlineoverridevirtual

Implements ZDCFitWrapper.

Definition at line 351 of file ZDCFitWrapper.h.

351 {
352 return GetWrapperTF1()->GetParError(0);
353 }

◆ GetAmplitude()

virtual float ZDCFitExpFermiVariableTausInduct::GetAmplitude ( ) const
inlineoverridevirtual

Implements ZDCFitWrapper.

Definition at line 346 of file ZDCFitWrapper.h.

346 {
347 if (finalized()) return m_funcMax;
349 }
bool finalized() const

◆ GetBkgdMaxFraction()

virtual float ZDCFitExpFermiVariableTausInduct::GetBkgdMaxFraction ( ) const
inlineoverridevirtual

Implements ZDCFitWrapper.

Definition at line 371 of file ZDCFitWrapper.h.

372 {
373
374 const TF1* theTF1 = ZDCFitWrapper::GetWrapperTF1();
375 double amp = GetAmplitude();
376 double constant = theTF1->GetParameter(4);
377
378 if (amp > 1e-6) return constant / amp;
379 else return -1;
380 }
virtual float GetAmplitude() const override

◆ GetMaxAmp()

float ZDCFitWrapper::GetMaxAmp ( ) const
inlineinherited

Definition at line 104 of file ZDCFitWrapper.h.

104{return m_ampMax;}

◆ GetMinAmp()

float ZDCFitWrapper::GetMinAmp ( ) const
inlineinherited

Definition at line 103 of file ZDCFitWrapper.h.

103{return m_ampMin;}

◆ GetNumShapeParameters()

virtual unsigned int ZDCFitExpFermiVariableTausInduct::GetNumShapeParameters ( ) const
inlineoverridevirtual

Implements ZDCFitWrapper.

Definition at line 363 of file ZDCFitWrapper.h.

363{return 5;}

◆ GetShapeParameter()

virtual float ZDCFitExpFermiVariableTausInduct::GetShapeParameter ( size_t index) const
inlineoverridevirtual

Implements ZDCFitWrapper.

Definition at line 365 of file ZDCFitWrapper.h.

366 {
367 if (index < 5) return GetWrapperTF1()->GetParameter(4+index);
368 else throw std::runtime_error("Fit parameter does not exist.");
369 }

◆ GetT0Max()

float ZDCFitWrapper::GetT0Max ( ) const
inlineinherited

Definition at line 114 of file ZDCFitWrapper.h.

114 {
115 if (m_adjTLimitsEvent) return m_tempTmax;
116 else return m_t0Max;
117 }

◆ GetT0Min()

float ZDCFitWrapper::GetT0Min ( ) const
inlineinherited

Definition at line 109 of file ZDCFitWrapper.h.

109 {
110 if (m_adjTLimitsEvent) return m_tempTmin;
111 else return m_t0Min;
112 }

◆ GetTau1()

virtual float ZDCFitExpFermiVariableTausInduct::GetTau1 ( ) const
inlineoverridevirtual

Implements ZDCFitWrapper.

Definition at line 355 of file ZDCFitWrapper.h.

355{return GetWrapperTF1()->GetParameter(2);}

◆ GetTau2()

virtual float ZDCFitExpFermiVariableTausInduct::GetTau2 ( ) const
inlineoverridevirtual

Implements ZDCFitWrapper.

Definition at line 356 of file ZDCFitWrapper.h.

356{return GetWrapperTF1()->GetParameter(3);}

◆ GetTime()

virtual float ZDCFitExpFermiVariableTausInduct::GetTime ( ) const
inlineoverridevirtual

Implements ZDCFitWrapper.

Definition at line 358 of file ZDCFitWrapper.h.

358 {
359 if (finalized()) return m_tFuncMax;
360 else return getInductFuncTimeMax(GetWrapperTF1());
361 }

◆ GetTMax()

float ZDCFitWrapper::GetTMax ( ) const
inlineinherited

Definition at line 107 of file ZDCFitWrapper.h.

107{return m_tmax;}

◆ GetTMin()

float ZDCFitWrapper::GetTMin ( ) const
inlineinherited

Definition at line 106 of file ZDCFitWrapper.h.

106{return m_tmin;}

◆ GetTMinAdjust()

float ZDCFitWrapper::GetTMinAdjust ( ) const
inlineinherited

Definition at line 119 of file ZDCFitWrapper.h.

119{return m_tminAdjust;}

◆ GetWrapperTF1() [1/2]

virtual std::shared_ptr< TF1 > ZDCFitWrapper::GetWrapperTF1 ( )
inlinevirtualinherited

Definition at line 128 of file ZDCFitWrapper.h.

128{return m_wrapperTF1;}
std::shared_ptr< TF1 > m_wrapperTF1

◆ GetWrapperTF1() [2/2]

virtual const TF1 * ZDCFitWrapper::GetWrapperTF1 ( ) const
inlinevirtualinherited

Definition at line 129 of file ZDCFitWrapper.h.

129{return m_wrapperTF1.get();}

◆ GetWrapperTF1RawPtr()

virtual TF1 * ZDCFitWrapper::GetWrapperTF1RawPtr ( ) const
inlinevirtualinherited

Definition at line 130 of file ZDCFitWrapper.h.

130{return m_wrapperTF1.get();}

◆ Initialize() [1/2]

void ZDCFitWrapper::Initialize ( float initialAmp,
float initialT0,
float ampMin,
float ampMax )
inherited

Definition at line 9 of file ZDCFitWrapper.cxx.

10{
11 // Clear the errors on the TF1 because retaining the errors seems to affect
12 // the convergence of fits
13 //
14 unsigned int npar = GetWrapperTF1()->GetNpar();
15 std::vector<double> zeroVec(npar, 0.0);
16 GetWrapperTF1()->SetParErrors(&zeroVec[0]);
17
18 // If we adjusted the time range on the previous event, restore to default
19 //
22
23 m_adjTLimitsEvent = false;
24 m_tminAdjust = 0;
25 }
26
27 SetAmpMinMax(ampMin, ampMax);
28
29 DoInitialize(initialAmp, initialT0, ampMin, ampMax);
30}
virtual void SetT0FitLimits(float tMin, float tMax)=0
void SetAmpMinMax(float minAmp, float maxAmp)
virtual void DoInitialize(float initialAmp, float initialT0, float ampMin, float ampMax)=0

◆ Initialize() [2/2]

void ZDCFitWrapper::Initialize ( float initialAmp,
float initialT0,
float ampMin,
float ampMax,
float fitTmin,
float fitTmax,
float fitTRef )
inherited

Definition at line 32 of file ZDCFitWrapper.cxx.

33{
34 // Clear the errors on the TF1 because retaining the errors seems to affect
35 // the convergence of fits
36 //
37 unsigned int npar = GetWrapperTF1()->GetNpar();
38 std::vector<double> zeroVec(npar, 0.0);
39 GetWrapperTF1()->SetParErrors(&zeroVec[0]);
40
41 m_adjTLimitsEvent = true;
42
43 m_tminAdjust = fitTRef; // Note: this is the time corresponding to the sample used for presample subtraction
44
45 m_tempTmin = std::max(m_t0Min, fitTmin);
46 m_tempTmax = std::min(m_t0Max, fitTmax);
47
48 SetAmpMinMax(ampMin, ampMax);
50
51 DoInitialize(initialAmp, initialT0, ampMin, ampMax);
52}

◆ operator()()

virtual double ZDCFitExpFermiVariableTausInduct::operator() ( const double * x,
const double * p )
inlineoverridevirtual

Implements ZDCFitWrapper.

Definition at line 382 of file ZDCFitWrapper.h.

382 {
383 return ZDCFermiExpFitInduct(x, p);
384 }
#define x

◆ SetAmpMinMax()

void ZDCFitWrapper::SetAmpMinMax ( float minAmp,
float maxAmp )
inlineinherited

Definition at line 79 of file ZDCFitWrapper.h.

80 {
81 m_ampMin = minAmp;
82 m_ampMax = maxAmp;
83 }

◆ SetT0FitLimits()

void ZDCFitExpFermiVariableTausInduct::SetT0FitLimits ( float tMin,
float tMax )
overridevirtual

Implements ZDCFitWrapper.

Definition at line 291 of file ZDCFitWrapper.cxx.

292{
293 // Set the parameter limits accordingly on the TF1
294 //
295 std::shared_ptr<TF1> theTF1 = ZDCFitWrapper::GetWrapperTF1();
296 theTF1->SetParLimits(1, t0Min, t0Max);
297}

◆ SetT0Range()

void ZDCFitWrapper::SetT0Range ( float t0Min,
float t0Max )
inlineinherited

Definition at line 85 of file ZDCFitWrapper.h.

86 {
87 m_t0Min = t0Min;
88 m_t0Max = t0Max;
89
90 SetT0FitLimits(t0Min, t0Max);
91 }

◆ UnconstrainFit()

void ZDCFitExpFermiVariableTausInduct::UnconstrainFit ( )
overridevirtual

Implements ZDCFitWrapper.

Definition at line 307 of file ZDCFitWrapper.cxx.

308{
309 std::shared_ptr<TF1> theTF1 = ZDCFitWrapper::GetWrapperTF1();
310 theTF1->ReleaseParameter(6);
311 theTF1->ReleaseParameter(4);
312 theTF1->SetParLimits(6, 0, 2);
313 theTF1->SetParLimits(4, -50, 50);
314
315}

Member Data Documentation

◆ m_adjTLimitsEvent

bool ZDCFitWrapper::m_adjTLimitsEvent {false}
privateinherited

Definition at line 37 of file ZDCFitWrapper.h.

37{false};

◆ m_ampMax

float ZDCFitWrapper::m_ampMax {0}
privateinherited

Definition at line 32 of file ZDCFitWrapper.h.

32{0};

◆ m_ampMin

float ZDCFitWrapper::m_ampMin {0}
privateinherited

Definition at line 31 of file ZDCFitWrapper.h.

31{0};

◆ m_finalized

bool ZDCFitWrapper::m_finalized {false}
privateinherited

Definition at line 42 of file ZDCFitWrapper.h.

42{false};

◆ m_fixDelta

bool ZDCFitExpFermiVariableTausInduct::m_fixDelta {false}
protected

Definition at line 316 of file ZDCFitWrapper.h.

316{false};

◆ m_fixTau1

bool ZDCFitExpFermiVariableTausInduct::m_fixTau1 {false}
protected

Definition at line 314 of file ZDCFitWrapper.h.

314{false};

◆ m_fixTau2

bool ZDCFitExpFermiVariableTausInduct::m_fixTau2 {false}
protected

Definition at line 315 of file ZDCFitWrapper.h.

315{false};

◆ m_funcMax

float ZDCFitExpFermiVariableTausInduct::m_funcMax {-999}
protected

Definition at line 322 of file ZDCFitWrapper.h.

322{-999};

◆ m_t0Max

float ZDCFitWrapper::m_t0Max {0}
privateinherited

Definition at line 35 of file ZDCFitWrapper.h.

35{0};

◆ m_t0Min

float ZDCFitWrapper::m_t0Min {0}
privateinherited

Definition at line 34 of file ZDCFitWrapper.h.

34{0};

◆ m_tau1

float ZDCFitExpFermiVariableTausInduct::m_tau1 {0}
protected

Definition at line 318 of file ZDCFitWrapper.h.

318{0};

◆ m_tau2

float ZDCFitExpFermiVariableTausInduct::m_tau2 {0}
protected

Definition at line 319 of file ZDCFitWrapper.h.

319{0};

◆ m_tempTmax

float ZDCFitWrapper::m_tempTmax {0}
privateinherited

Definition at line 40 of file ZDCFitWrapper.h.

40{0};

◆ m_tempTmin

float ZDCFitWrapper::m_tempTmin {0}
privateinherited

Definition at line 39 of file ZDCFitWrapper.h.

39{0};

◆ m_tFuncMax

float ZDCFitExpFermiVariableTausInduct::m_tFuncMax {-999}
protected

Definition at line 321 of file ZDCFitWrapper.h.

321{-999};

◆ m_tmax

float ZDCFitWrapper::m_tmax {0}
privateinherited

Definition at line 29 of file ZDCFitWrapper.h.

29{0};

◆ m_tmin

float ZDCFitWrapper::m_tmin {0}
privateinherited

Definition at line 28 of file ZDCFitWrapper.h.

28{0};

◆ m_tminAdjust

float ZDCFitWrapper::m_tminAdjust {0}
privateinherited

Definition at line 38 of file ZDCFitWrapper.h.

38{0};

◆ m_wrapperTF1

std::shared_ptr<TF1> ZDCFitWrapper::m_wrapperTF1 {}
privateinherited

Definition at line 26 of file ZDCFitWrapper.h.

26{};

The documentation for this class was generated from the following files: