#include <ParameterResolutions.h>
Public Member Functions | |
ParameterResolutions () | |
ParameterResolutions (std::vector< BinID > &bins, double low, double high) | |
double | resolution (const TrackTrajectory &) const |
Private Member Functions | |
double | interpolate (double, double, double) const |
double | calculateResolution (double, const std::vector< double > &) const |
Private Attributes | |
std::vector< BinID > | m_coefficientBins |
std::vector< double > | m_powerSeries |
double | m_etaLow |
double | m_etaHigh |
Definition at line 9 of file ParameterResolutions.h.
Atlfast::ParameterResolutions::ParameterResolutions | ( | ) | [inline] |
Atlfast::ParameterResolutions::ParameterResolutions | ( | std::vector< BinID > & | bins, | |
double | low, | |||
double | high | |||
) | [inline] |
Definition at line 14 of file ParameterResolutions.h.
00015 : m_coefficientBins(bins), m_etaLow(low), m_etaHigh(high) 00016 { 00017 m_powerSeries.push_back(0); 00018 m_powerSeries.push_back(0.5); 00019 m_powerSeries.push_back(1); 00020 m_powerSeries.push_back(1.5); 00021 m_powerSeries.push_back(2); 00022 }
double Atlfast::ParameterResolutions::resolution | ( | const TrackTrajectory & | ) | const |
Definition at line 7 of file ParameterResolutions.cxx.
00008 { 00009 // resolutions are given by c0(eta) + c1(eta)/sqrt(pT) + c2(eta)/pT + c3(eta)/pT/sqrt(pT) + c4(eta)/pT^2 00010 // have to interpolate eta between bin edges for coefficients 00011 TrackParameters track = traj.parameters(); 00012 double eta = std::abs( track.eta() ); 00013 double pT = track.pT(); 00014 00015 std::vector<BinID>::const_iterator iter = m_coefficientBins.begin(); 00016 std::vector<BinID>::const_iterator end = m_coefficientBins.end(); 00017 std::vector<double> coefficients; 00018 for ( ; iter != end; ++iter ) 00019 { 00020 double value = this->interpolate( eta, iter->low(), iter->high() ); 00021 coefficients.push_back(value); 00022 } 00023 return calculateResolution( pT, coefficients ); 00024 }
double Atlfast::ParameterResolutions::interpolate | ( | double | , | |
double | , | |||
double | ||||
) | const [private] |
Definition at line 27 of file ParameterResolutions.cxx.
00028 { 00029 double slope = ( coeffHigh - coeffLow ) / ( m_etaHigh - m_etaLow ); 00030 double value = coeffLow + slope * ( eta - m_etaLow ); 00031 return value; 00032 }
double Atlfast::ParameterResolutions::calculateResolution | ( | double | , | |
const std::vector< double > & | ||||
) | const [private] |
Definition at line 34 of file ParameterResolutions.cxx.
00035 { 00036 if ( pT == 0 ) return 0; 00037 double resolution = 0; 00038 std::vector<double>::const_iterator powerSeries = m_powerSeries.begin(); 00039 std::vector<double>::const_iterator iter = coefficients.begin(); 00040 std::vector<double>::const_iterator end = coefficients.end(); 00041 00042 for ( ; iter != end; ++iter ) 00043 { 00044 resolution += (*iter) / std::pow( pT, (*powerSeries) ); 00045 ++powerSeries; 00046 } 00047 return resolution; 00048 }
std::vector<BinID> Atlfast::ParameterResolutions::m_coefficientBins [private] |
Definition at line 31 of file ParameterResolutions.h.
std::vector<double> Atlfast::ParameterResolutions::m_powerSeries [private] |
Definition at line 32 of file ParameterResolutions.h.
double Atlfast::ParameterResolutions::m_etaLow [private] |
Definition at line 33 of file ParameterResolutions.h.
double Atlfast::ParameterResolutions::m_etaHigh [private] |
Definition at line 34 of file ParameterResolutions.h.