63 inline double N(
int l,
int m=0) {
82 , _phi(
"phi",
"phi", this, phi)
83 , _n( 2*sqrt(
TMath::Pi()))
84 , _sgn1(
m==0 ? 0 :
m<0 ? -1 : +1 )
93 , _phi(
"phi",
"phi", this, phi)
95 , _sgn1( m1==0 ? 0 : m1<0 ? -1 : +1 )
96 , _sgn2( m2==0 ? 0 : m2<0 ? -1 : +1 )
104 , _phi(
"phi", this,other._phi)
106 , _sgn1( other._sgn1 )
107 , _sgn2( other._sgn2 )
124 bool fullRange(
const RooRealProxy&
x,
const char* range,
bool phi)
127 return range ==
nullptr || strlen(range) == 0
132 return range ==
nullptr || strlen(range) == 0
133 ? std::abs(
x.min() + 1.) < 1.e-8 && std::abs(
x.max() - 1.) < 1.e-8
134 : std::abs(
x.min(range) + 1.) < 1.e-8 && std::abs(
x.max(range) - 1.) < 1.e-8;
145 bool cthetaOK = fullRange(
_ctheta, rangeName,
false);
146 bool phiOK = fullRange(
_phi, rangeName,
true );
158 }
else if (code == 2) {
Abstract base class for objects that represent a real value and implements functionality common to al...
bool matchArgs(const RooArgSet &allDeps, RooArgSet &numDeps, const RooArgProxy &a) const
Utility function for use in getAnalyticalIntegral().
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Compute the associated Legendre polynomials using ROOT::Math::assoc_legendre().
double evaluate() const override
Note: P_0^0 = 1, so P_l^m = P_l^m P_0^0.
Int_t getMaxVal(const RooArgSet &vars) const override
Advertise capability to determine maximum value of function for given set of observables.
double analyticalIntegral(Int_t code, const char *rangeName=nullptr) const override
this was verified to match mathematica for l1 in [0,2], m1 in [0,l1], l2 in [l1,4],...
Int_t getAnalyticalIntegral(RooArgSet &allVars, RooArgSet &analVars, const char *rangeName=nullptr) const override
Interface function getAnalyticalIntergral advertises the analytical integrals that are supported.
double maxVal(Int_t code) const override
Return maximum value for set of observables identified by code assigned in getMaxVal.
Implementation of the so-called real spherical harmonics, using the orthonormal normalization,...
Int_t getAnalyticalIntegral(RooArgSet &allVars, RooArgSet &analVars, const char *rangeName=nullptr) const override
TODO: check that phi.max - phi.min = 2 pi... ctheta.max = +1, and ctheta.min = -1 we don't support in...
Int_t getMaxVal(const RooArgSet &vars) const override
Advertise capability to determine maximum value of function for given set of observables.
double maxVal(Int_t code) const override
Return maximum value for set of observables identified by code assigned in getMaxVal.
double evaluate() const override
Note: P_0^0 = 1, so P_l^m = P_l^m P_0^0.
double analyticalIntegral(Int_t code, const char *rangeName=nullptr) const override
this was verified to match mathematica for l1 in [0,2], m1 in [0,l1], l2 in [l1,4],...
Double_t Factorial(Int_t i)
Computes factorial(n).
constexpr Double_t Sqrt2()
constexpr Double_t TwoPi()