00001 00002 00003 /***************************************************************************** 00004 * Project: RooFit * 00005 * Package: RooFitModels * 00006 * File: $Id: RooStepFunction.h 31258 2009-11-17 22:41:06Z wouter $ 00007 * Authors: * 00008 * Tristan du Pree, Nikhef, Amsterdam, tdupree@nikhef.nl * 00009 * * 00010 * Copyright (c) 2000-2005, Stanford University. All rights reserved. * 00011 * 00012 * * 00013 * Redistribution and use in source and binary forms, * 00014 * with or without modification, are permitted according to the terms * 00015 * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * 00016 *****************************************************************************/ 00017 #ifndef ROO_STEP_FUNCTION 00018 #define ROO_STEP_FUNCTION 00019 00020 #include "TArrayD.h" 00021 #include "RooAbsReal.h" 00022 #include "RooRealProxy.h" 00023 #include "RooListProxy.h" 00024 00025 class RooRealVar; 00026 class RooArgList ; 00027 00028 class RooStepFunction : public RooAbsReal { 00029 public: 00030 00031 RooStepFunction() ; 00032 RooStepFunction(const char *name, const char *title, 00033 RooAbsReal& x, const RooArgList& coefList, const RooArgList& limits, Bool_t interpolate=kFALSE) ; 00034 00035 RooStepFunction(const RooStepFunction& other, const char* name = 0); 00036 virtual TObject* clone(const char* newname) const { return new RooStepFunction(*this, newname); } 00037 virtual ~RooStepFunction() ; 00038 00039 const RooArgList& coefficients() { return _coefList; } 00040 const RooArgList& boundaries() { return _boundaryList; } 00041 00042 protected: 00043 00044 Double_t evaluate() const; 00045 00046 private: 00047 00048 RooRealProxy _x; 00049 RooListProxy _coefList ; 00050 RooListProxy _boundaryList ; 00051 Bool_t _interpolate ; 00052 TIterator* _coefIter ; //! do not persist 00053 TIterator* _boundIter ; //! do not persist 00054 00055 ClassDef(RooStepFunction,1) // Step Function 00056 }; 00057 00058 #endif