File indexing completed on 2025-01-18 10:11:21
0001
0002
0003 #ifndef RooFit_RooFit_RooCrystalBall_h
0004 #define RooFit_RooFit_RooCrystalBall_h
0005
0006 #include "RooAbsPdf.h"
0007 #include "RooRealProxy.h"
0008
0009 #include <memory>
0010
0011 class RooRealVar;
0012
0013 class RooCrystalBall final : public RooAbsPdf {
0014 public:
0015
0016 RooCrystalBall(){};
0017
0018 RooCrystalBall(const char *name, const char *title, RooAbsReal &x, RooAbsReal &x0, RooAbsReal &sigmaL,
0019 RooAbsReal &sigmaR, RooAbsReal &alphaL, RooAbsReal &nL, RooAbsReal &alphaR, RooAbsReal &nR);
0020 RooCrystalBall(const char *name, const char *title, RooAbsReal &x, RooAbsReal &x0, RooAbsReal &sigmaLR,
0021 RooAbsReal &alphaL, RooAbsReal &nL, RooAbsReal &alphaR, RooAbsReal &nR);
0022 RooCrystalBall(const char *name, const char *title, RooAbsReal &x, RooAbsReal &x0, RooAbsReal &sigmaLR,
0023 RooAbsReal &alpha, RooAbsReal &n, bool doubleSided = false);
0024
0025 RooCrystalBall(const RooCrystalBall &other, const char *name = nullptr);
0026 TObject *clone(const char *newname) const override { return new RooCrystalBall(*this, newname); }
0027
0028 Int_t getAnalyticalIntegral(RooArgSet &allVars, RooArgSet &analVars, const char *rangeName = nullptr) const override;
0029 double analyticalIntegral(Int_t code, const char *rangeName = nullptr) const override;
0030
0031
0032 Int_t getMaxVal(const RooArgSet &vars) const override;
0033 double maxVal(Int_t code) const override;
0034
0035 protected:
0036 double evaluate() const override;
0037
0038 private:
0039 RooRealProxy x_;
0040 RooRealProxy x0_;
0041 RooRealProxy sigmaL_;
0042 RooRealProxy sigmaR_;
0043 RooRealProxy alphaL_;
0044 RooRealProxy nL_;
0045
0046
0047 std::unique_ptr<RooRealProxy> alphaR_ = nullptr;
0048 std::unique_ptr<RooRealProxy> nR_ = nullptr;
0049
0050 ClassDefOverride(RooCrystalBall, 1)
0051 };
0052
0053 #endif