Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/root/RooLegacyExpPoly.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002  * Project: RooFit
0003  *
0004  * Copyright (c) 2022, CERN
0005  *
0006  * Redistribution and use in source and binary forms,
0007  * with or without modification, are permitted according to the terms
0008  * listed in LICENSE (http://roofit.sourceforge.net/license.txt)
0009  */
0010 
0011 #ifndef RooFit_RooLegacyExpPoly_h
0012 #define RooFit_RooLegacyExpPoly_h
0013 
0014 #include <RooAbsPdf.h>
0015 #include <RooRealProxy.h>
0016 #include <RooListProxy.h>
0017 
0018 class RooLegacyExpPoly : public RooAbsPdf {
0019 public:
0020    RooLegacyExpPoly() {}
0021    RooLegacyExpPoly(const char *name, const char *title, RooAbsReal &x, const RooArgList &coefList, int lowestOrder = 1);
0022 
0023    RooLegacyExpPoly(const RooLegacyExpPoly &other, const char *name = nullptr);
0024    TObject *clone(const char *newname) const override { return new RooLegacyExpPoly(*this, newname); }
0025 
0026    /// Get the x variable.
0027    RooAbsReal const &x() const { return _x.arg(); }
0028 
0029    /// Get the coefficient list.
0030    RooArgList const &coefList() const { return _coefList; }
0031 
0032    /// Return the order for the first coefficient in the list.
0033    int lowestOrder() const { return _lowestOrder; }
0034 
0035    double getLogVal(const RooArgSet *nset) const override;
0036 
0037    std::string getFormulaExpression(bool expand) const;
0038 
0039    int getAnalyticalIntegral(RooArgSet &allVars, RooArgSet &analVars, const char *rangeName = nullptr) const override;
0040    double analyticalIntegral(int code, const char *rangeName = nullptr) const override;
0041 
0042    void adjustLimits();
0043 
0044 protected:
0045    RooRealProxy _x;
0046    RooListProxy _coefList;
0047    int _lowestOrder;
0048 
0049    // CUDA support
0050    void doEval(RooFit::EvalContext &) const override;
0051    inline bool canComputeBatchWithCuda() const override { return true; }
0052 
0053    /// Evaluation
0054    double evaluate() const override;
0055    double evaluateLog() const;
0056 
0057    ClassDefOverride(RooLegacyExpPoly, 1) // ExpPoly PDF
0058 };
0059 
0060 #endif