Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:11:21

0001 // Author: Jonas Rembser, CERN  02/2021
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    // Optimized accept/reject generator support
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    // optional parameters
0047    std::unique_ptr<RooRealProxy> alphaR_ = nullptr;
0048    std::unique_ptr<RooRealProxy> nR_ = nullptr;
0049 
0050    ClassDefOverride(RooCrystalBall, 1)
0051 };
0052 
0053 #endif