CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_3/src/PhysicsTools/IsolationUtils/interface/ConeAreaFunction.h

Go to the documentation of this file.
00001 #ifndef PhysicsTools_IsolationUtils_ConeAreaFunction_h
00002 #define PhysicsTools_IsolationUtils_ConeAreaFunction_h
00003 
00004 // -*- C++ -*-
00005 //
00006 // Package:    ConeAreaFunction
00007 // Class:      ConeAreaFunction
00008 // 
00017 //
00018 // Original Author:  Christian Veelken, UC Davis
00019 //         Created:  Thu Nov  2 13:47:40 CST 2006
00020 // $Id: ConeAreaFunction.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 IntegrandThetaFunction;
00029 
00030 //
00031 // class declaration
00032 //
00033 
00034 class ConeAreaFunction : public ROOT::Math::ParamFunction<ROOT::Math::IParametricGradFunctionOneDim>
00035 {
00036  public:
00037   ConeAreaFunction();
00038   ConeAreaFunction(const ConeAreaFunction& bluePrint);
00039   ~ConeAreaFunction();
00040 
00041   ConeAreaFunction& operator=(const ConeAreaFunction& bluePrint);
00042 
00043   void SetParameterTheta0(double theta0);
00044   void SetParameterPhi0(double phi0);
00045 
00046   void SetAcceptanceLimit(double etaMax);
00047 
00048   virtual ROOT::Math::IGenFunction* Clone () const { return new ConeAreaFunction(*this); }
00049 
00050  protected:
00051   void SetParameters(double* param);
00052   virtual double DoEvalPar(double , const double *) const;
00053   double DoEval(double x) const;
00054   double DoDerivative(double x) const;
00055   void DoParameterGradient(double x, double* paramGradient) const;
00056   virtual double DoParameterDerivative(double, const double*, unsigned int) const;
00057 
00058 // !!! ONLY FOR TESTING
00059 mutable double theta0_; // polar angle of cone axis
00060 mutable double phi0_; // azimuth angle of cone axis
00061 
00062 mutable double etaMax_; // maximum pseudo-rapidity at which particles used for tau cone isolation can be detected (etaMax = 2.5 for charged particles; etaMax ~ 4.0 for neutrals)
00063 // !!! ONLY FOR TESTING
00064 
00065  private:
00066 /*
00067   double theta0_; // polar angle of cone axis
00068   double phi0_; // azimuth angle of cone axis
00069 
00070   double etaMax_; // maximum pseudo-rapidity at which particles used for tau cone isolation can be detected (etaMax = 2.5 for charged particles; etaMax ~ 4.0 for neutrals)
00071 */
00072   mutable IntegrandThetaFunction* fTheta_;
00073   mutable ROOT::Math::Integrator* integrator_;
00074 
00075   static const unsigned int debugLevel_ = 0;
00076 };
00077 
00078 #endif