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.1 2007/05/23 20:23:08 veelken 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 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 ROOT::Math::IGenFunction* Clone () const { return new ConeAreaFunction(*this); } 00049 00050 protected: 00051 void SetParameters(double* param); 00052 00053 double DoEval(double x) const; 00054 double DoDerivative(double x) const; 00055 void DoParameterGradient(double x, double* paramGradient) const; 00056 00057 // !!! ONLY FOR TESTING 00058 double theta0_; // polar angle of cone axis 00059 double phi0_; // azimuth angle of cone axis 00060 00061 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) 00062 // !!! ONLY FOR TESTING 00063 00064 private: 00065 /* 00066 double theta0_; // polar angle of cone axis 00067 double phi0_; // azimuth angle of cone axis 00068 00069 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) 00070 */ 00071 mutable IntegrandThetaFunction* fTheta_; 00072 mutable ROOT::Math::Integrator* integrator_; 00073 00074 static const unsigned int debugLevel_ = 0; 00075 }; 00076 00077 #endif