00001 #ifndef PhysicsTools_IsolationUtils_IntegralOverPhiFunction_h 00002 #define PhysicsTools_IsolationUtils_IntegralOverPhiFunction_h 00003 00004 // -*- C++ -*- 00005 // 00006 // Package: IntegralOverPhiFunction 00007 // Class: IntegralOverPhiFunction 00008 // 00017 // 00018 // Original Author: Christian Veelken, UC Davis 00019 // Created: Thu Nov 2 13:47:40 CST 2006 00020 // $Id: IntegralOverPhiFunction.h,v 1.2 2009/01/14 10:53:14 hegner Exp $ 00021 // 00022 // 00023 00024 // ROOT include files 00025 #include <Math/ParamFunction.h> 00026 00027 // 00028 // class declaration 00029 // 00030 00031 class IntegralOverPhiFunction : public ROOT::Math::ParamFunction<ROOT::Math::IParametricGradFunctionOneDim> 00032 { 00033 public: 00034 IntegralOverPhiFunction(); 00035 ~IntegralOverPhiFunction(); 00036 00037 void SetParameterTheta0(double theta0); 00038 void SetParameterPhi0(double phi0); 00039 void SetParameterAlpha(double alpha); 00040 00041 virtual ROOT::Math::IGenFunction* Clone () const { return new IntegralOverPhiFunction(*this); } 00042 00043 private: 00044 void SetParameters(double* param); 00045 00046 double DoEval(double x) const; 00047 virtual double DoEvalPar(double x, const double* param) const; 00048 double DoDerivative(double x) const; 00049 virtual double DoParameterDerivative(double, const double*, unsigned int) const; 00050 void DoParameterGradient(double x, double* paramGradient) const; 00051 00052 mutable double theta0_; // polar angle of cone axis 00053 mutable double phi0_; // azimuth angle of cone axis 00054 mutable double alpha_; // opening angle of cone (measured from cone axis) 00055 00056 // !!! ONLY FOR TESTING 00057 mutable unsigned int numSolutionMin1_; 00058 mutable unsigned int numSolutionMax1_; 00059 mutable unsigned int numSolutionMin2_; 00060 mutable unsigned int numSolutionMax2_; 00061 mutable unsigned int numSolutionMin3_; 00062 mutable unsigned int numSolutionMax3_; 00063 mutable unsigned int numSolutionMin4_; 00064 mutable unsigned int numSolutionMax4_; 00065 // FOR TESTING ONLY !!! 00066 00067 static const unsigned int debugLevel_ = 0; 00068 }; 00069 00070 #endif