#include <PhysicsTools/IsolationUtils/src/IntegrandThetaFunction.cc>
Public Member Functions | |
virtual ROOT::Math::IGenFunction * | Clone () const |
IntegrandThetaFunction () | |
IntegrandThetaFunction (const IntegrandThetaFunction &bluePrint) | |
IntegrandThetaFunction & | operator= (const IntegrandThetaFunction &bluePrint) |
void | SetParameterAlpha (double alpha) |
void | SetParameterPhi0 (double phi0) |
void | SetParameterTheta0 (double theta0) |
~IntegrandThetaFunction () | |
Private Member Functions | |
double | DoDerivative (double x) const |
double | DoEval (double x) const |
virtual double | DoEvalPar (double, const double *) const |
virtual double | DoParameterDerivative (double, const double *, unsigned int) const |
void | DoParameterGradient (double x, double *paramGradient) const |
void | SetParameters (double *param) |
Private Attributes | |
double | alpha_ |
IntegralOverPhiFunction * | fPhi_ |
double | phi0_ |
double | theta0_ |
Static Private Attributes | |
static const unsigned int | debugLevel_ = 0 |
Description: auxialiary class for fixed area isolation cone computation (this class performs the integration over the polar angle)
Implementation: imported into CMSSW on 05/18/2007
Definition at line 34 of file IntegrandThetaFunction.h.
IntegrandThetaFunction::IntegrandThetaFunction | ( | ) |
IntegrandThetaFunction::IntegrandThetaFunction | ( | const IntegrandThetaFunction & | bluePrint | ) |
IntegrandThetaFunction::~IntegrandThetaFunction | ( | ) |
virtual ROOT::Math::IGenFunction* IntegrandThetaFunction::Clone | ( | ) | const [inline, virtual] |
Definition at line 47 of file IntegrandThetaFunction.h.
References IntegrandThetaFunction().
{ return new IntegrandThetaFunction(*this); }
double IntegrandThetaFunction::DoDerivative | ( | double | x | ) | const [private] |
Definition at line 161 of file IntegrandThetaFunction.cc.
{ //--- virtual function inherited from ROOT::Math::ParamFunction base class; // not implemented, because not neccessary, but needs to be defined to make code compile... edm::LogWarning("") << "Function not implemented yet !" << std::endl; return 0.; }
double IntegrandThetaFunction::DoEval | ( | double | x | ) | const [private] |
Definition at line 115 of file IntegrandThetaFunction.cc.
References alpha_, debugLevel_, epsilon, fPhi_, phi0_, Pi, IntegralOverPhiFunction::SetParameterAlpha(), IntegralOverPhiFunction::SetParameterPhi0(), IntegralOverPhiFunction::SetParameterTheta0(), theta0_, and x.
{ //--- return zero if theta either close to zero or close to Pi // (numerical expressions might become "NaN"s) const double epsilon = 1.e-3; if ( x < epsilon || x > (TMath::Pi() - epsilon) ) return 0.; //--- calculate trigonometric expressions // (dependend on angle theta; // polar angle of point within cone) double sinTheta = TMath::Sin(x); double cscTheta = 1./sinTheta; double detJacobi = -cscTheta; // partial derrivative dEta/dTheta (for constant particle density in tau id. isolation cone) //double detJacobi = 1.; // ordinary solid angle (FOR TESTING ONLY) //--- evaluate integral over angle phi // (azimuth angle of point within cone) fPhi_->SetParameterTheta0(theta0_); fPhi_->SetParameterPhi0(phi0_); fPhi_->SetParameterAlpha(alpha_); double integralOverPhi = (*fPhi_)(x); if ( debugLevel_ > 0 ) { edm::LogVerbatim("") << "integralOverPhi = " << integralOverPhi << std::endl << " theta0 = " << theta0_ << std::endl << " phi0 = " << phi0_ << std::endl << " alpha = " << alpha_ << std::endl << " theta = " << x << std::endl << std::endl; } //--- integrand for integration over theta // equals // |dEta/dTheta| * integral over phi * sin(theta) // // (o the factor dEta/dTheta represents the particle density as function of theta, // assuming that the particle density is flat in eta; // o the factor sin(theta) originates from the solid angle surface element // expressed in spherical polar coordinates) // //return TMath::Abs(detJacobi)*integralOverPhi*sinTheta; return TMath::Abs(detJacobi)*integralOverPhi; }
double IntegrandThetaFunction::DoEvalPar | ( | double | x, |
const double * | param | ||
) | const [private, virtual] |
double IntegrandThetaFunction::DoParameterDerivative | ( | double | , |
const double * | , | ||
unsigned | int | ||
) | const [private, virtual] |
Definition at line 170 of file IntegrandThetaFunction.cc.
{ //--- virtual function inherited from ROOT::Math::ParamFunction base class; // not implemented, because not neccessary, but needs to be defined to make code compile... edm::LogWarning("") << "Function not implemented yet !" << std::endl; return 0.; }
void IntegrandThetaFunction::DoParameterGradient | ( | double | x, |
double * | paramGradient | ||
) | const [private] |
Definition at line 181 of file IntegrandThetaFunction.cc.
{ //--- virtual function inherited from ROOT::Math::ParamFunction base class; // not implemented, because not neccessary, but needs to be defined to make code compile... edm::LogWarning("") << "Function not implemented yet !" << std::endl; }
IntegrandThetaFunction & IntegrandThetaFunction::operator= | ( | const IntegrandThetaFunction & | bluePrint | ) |
void IntegrandThetaFunction::SetParameterAlpha | ( | double | alpha | ) |
Definition at line 94 of file IntegrandThetaFunction.cc.
Referenced by ConeAreaFunction::DoEval().
void IntegrandThetaFunction::SetParameterPhi0 | ( | double | phi0 | ) |
Definition at line 89 of file IntegrandThetaFunction.cc.
References normalizedPhi(), and phi0_.
Referenced by ConeAreaFunction::DoEval().
{ phi0_ = normalizedPhi(phi0); // map azimuth angle into interval [-pi,+pi] }
void IntegrandThetaFunction::SetParameters | ( | double * | param | ) | [private] |
void IntegrandThetaFunction::SetParameterTheta0 | ( | double | theta0 | ) |
Definition at line 84 of file IntegrandThetaFunction.cc.
References theta0_.
Referenced by ConeAreaFunction::DoEval().
{ theta0_ = theta0; }
double IntegrandThetaFunction::alpha_ [mutable, private] |
Definition at line 60 of file IntegrandThetaFunction.h.
Referenced by DoEval(), IntegrandThetaFunction(), operator=(), SetParameterAlpha(), and SetParameters().
const unsigned int IntegrandThetaFunction::debugLevel_ = 0 [static, private] |
Definition at line 64 of file IntegrandThetaFunction.h.
Referenced by DoEval().
IntegralOverPhiFunction* IntegrandThetaFunction::fPhi_ [mutable, private] |
Definition at line 62 of file IntegrandThetaFunction.h.
Referenced by DoEval(), IntegrandThetaFunction(), operator=(), and ~IntegrandThetaFunction().
double IntegrandThetaFunction::phi0_ [mutable, private] |
Definition at line 59 of file IntegrandThetaFunction.h.
Referenced by DoEval(), IntegrandThetaFunction(), operator=(), SetParameterPhi0(), and SetParameters().
double IntegrandThetaFunction::theta0_ [mutable, private] |
Definition at line 58 of file IntegrandThetaFunction.h.
Referenced by DoEval(), IntegrandThetaFunction(), operator=(), SetParameters(), and SetParameterTheta0().