CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_1/src/PhysicsTools/IsolationUtils/interface/IntegrandThetaFunction.h

Go to the documentation of this file.
00001 #ifndef PhysicsTools_IsolationUtils_IntegrandThetaFunction_h
00002 #define PhysicsTools_IsolationUtils_IntegrandThetaFunction_h
00003 
00004 // -*- C++ -*-
00005 //
00006 // Package:    IntegrandThetaFunction
00007 // Class:      IntegrandThetaFunction
00008 // 
00017 //
00018 // Original Author:  Christian Veelken, UC Davis
00019 //         Created:  Thu Nov  2 13:47:40 CST 2006
00020 // $Id: IntegrandThetaFunction.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 #include <Math/Integrator.h>
00027 
00028 class IntegralOverPhiFunction;
00029 
00030 //
00031 // class declaration
00032 //
00033 
00034 class IntegrandThetaFunction : public ROOT::Math::ParamFunction<ROOT::Math::IParametricGradFunctionOneDim>
00035 {
00036  public:
00037   IntegrandThetaFunction();
00038   IntegrandThetaFunction(const IntegrandThetaFunction& bluePrint);
00039   ~IntegrandThetaFunction();
00040 
00041   IntegrandThetaFunction& operator=(const IntegrandThetaFunction& bluePrint);
00042   
00043   void SetParameterTheta0(double theta0);
00044   void SetParameterPhi0(double phi0);
00045   void SetParameterAlpha(double alpha);
00046 
00047   virtual ROOT::Math::IGenFunction* Clone () const { return new IntegrandThetaFunction(*this); }
00048 
00049  private:
00050   void SetParameters(double* param);
00051 
00052   double DoEval(double x) const;
00053   virtual double DoEvalPar(double, const double*) const;
00054   double DoDerivative(double x) const;
00055   virtual double DoParameterDerivative(double, const double*, unsigned int) const;
00056   void DoParameterGradient(double x, double* paramGradient) const;
00057 
00058   mutable double theta0_; // polar angle of cone axis
00059   mutable double phi0_; // azimuth angle of cone axis
00060   mutable double alpha_; // opening angle of cone (measured from cone axis)
00061 
00062   mutable IntegralOverPhiFunction* fPhi_;
00063 
00064   static const unsigned int debugLevel_ = 0;
00065 };
00066 
00067 #endif