#ifndef ROO1DMOMENTMORPHFUNC
#define ROO1DMOMENTMORPHFUNC
#include "RooAbsReal.h"
#include "RooRealProxy.h"
#include "RooCategoryProxy.h"
#include "RooAbsReal.h"
#include "RooAbsCategory.h"
#include "RooSetProxy.h"
#include "RooArgList.h"
#include "TMatrixD.h"
#include "TVectorD.h"
#include <vector>
#include <string>
class RooChangeTracker ;
class Roo1DMomentMorphFunction : public RooAbsReal {
public:
enum Setting { Linear, NonLinear, NonLinearPosFractions, NonLinearLinFractions } ;
Roo1DMomentMorphFunction() ;
Roo1DMomentMorphFunction(const char *name, const char *title, RooAbsReal& _m, const RooArgList& varList,
const TVectorD& mrefpoints, const Setting& setting = Linear );
Roo1DMomentMorphFunction(const Roo1DMomentMorphFunction& other, const char* name=0) ;
virtual TObject* clone(const char* newname) const { return new Roo1DMomentMorphFunction(*this,newname); }
virtual ~Roo1DMomentMorphFunction();
void setMode(const Setting& setting) { _setting = setting; }
protected:
Double_t evaluate() const ;
void calculateFractions() const;
void initialize();
inline Int_t ij(const Int_t& i, const Int_t& j) const { return (i*_varList.getSize()+j); }
int idxmin(const double& m) const;
int idxmax(const double& m) const;
RooRealProxy m ;
RooSetProxy _varList ;
mutable TVectorD* _mref;
mutable TVectorD* _frac;
TIterator* _varItr ;
mutable TMatrixD* _M;
Setting _setting;
ClassDef(Roo1DMomentMorphFunction,1)
};
#endif
Roo1DMomentMorphFunction.h:1 Roo1DMomentMorphFunction.h:2 Roo1DMomentMorphFunction.h:3 Roo1DMomentMorphFunction.h:4 Roo1DMomentMorphFunction.h:5 Roo1DMomentMorphFunction.h:6 Roo1DMomentMorphFunction.h:7 Roo1DMomentMorphFunction.h:8 Roo1DMomentMorphFunction.h:9 Roo1DMomentMorphFunction.h:10 Roo1DMomentMorphFunction.h:11 Roo1DMomentMorphFunction.h:12 Roo1DMomentMorphFunction.h:13 Roo1DMomentMorphFunction.h:14 Roo1DMomentMorphFunction.h:15 Roo1DMomentMorphFunction.h:16 Roo1DMomentMorphFunction.h:17 Roo1DMomentMorphFunction.h:18 Roo1DMomentMorphFunction.h:19 Roo1DMomentMorphFunction.h:20 Roo1DMomentMorphFunction.h:21 Roo1DMomentMorphFunction.h:22 Roo1DMomentMorphFunction.h:23 Roo1DMomentMorphFunction.h:24 Roo1DMomentMorphFunction.h:25 Roo1DMomentMorphFunction.h:26 Roo1DMomentMorphFunction.h:27 Roo1DMomentMorphFunction.h:28 Roo1DMomentMorphFunction.h:29 Roo1DMomentMorphFunction.h:30 Roo1DMomentMorphFunction.h:31 Roo1DMomentMorphFunction.h:32 Roo1DMomentMorphFunction.h:33 Roo1DMomentMorphFunction.h:34 Roo1DMomentMorphFunction.h:35 Roo1DMomentMorphFunction.h:36 Roo1DMomentMorphFunction.h:37 Roo1DMomentMorphFunction.h:38 Roo1DMomentMorphFunction.h:39 Roo1DMomentMorphFunction.h:40 Roo1DMomentMorphFunction.h:41 Roo1DMomentMorphFunction.h:42 Roo1DMomentMorphFunction.h:43 Roo1DMomentMorphFunction.h:44 Roo1DMomentMorphFunction.h:45 Roo1DMomentMorphFunction.h:46 Roo1DMomentMorphFunction.h:47 Roo1DMomentMorphFunction.h:48 Roo1DMomentMorphFunction.h:49 Roo1DMomentMorphFunction.h:50 Roo1DMomentMorphFunction.h:51 Roo1DMomentMorphFunction.h:52 Roo1DMomentMorphFunction.h:53 Roo1DMomentMorphFunction.h:54 Roo1DMomentMorphFunction.h:55 Roo1DMomentMorphFunction.h:56 Roo1DMomentMorphFunction.h:57 Roo1DMomentMorphFunction.h:58 Roo1DMomentMorphFunction.h:59 Roo1DMomentMorphFunction.h:60 Roo1DMomentMorphFunction.h:61 Roo1DMomentMorphFunction.h:62 Roo1DMomentMorphFunction.h:63 Roo1DMomentMorphFunction.h:64 Roo1DMomentMorphFunction.h:65 Roo1DMomentMorphFunction.h:66