00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef ROO_SPHARMONIC
00015 #define ROO_SPHARMONIC
00016
00017 #include "RooLegendre.h"
00018 #include "RooRealProxy.h"
00019
00020 class RooSpHarmonic : public RooLegendre {
00021 public:
00022 RooSpHarmonic() ;
00023 RooSpHarmonic(const char *name, const char *title, RooAbsReal& ctheta, RooAbsReal& phi, int l, int m);
00024 RooSpHarmonic(const char *name, const char *title, RooAbsReal& ctheta, RooAbsReal& phi, int l1, int m1, int l2, int m2);
00025
00026 RooSpHarmonic(const RooSpHarmonic& other, const char* name = 0);
00027 virtual TObject* clone(const char* newname) const { return new RooSpHarmonic(*this, newname); }
00028 inline virtual ~RooSpHarmonic() { }
00029
00030 virtual Int_t getAnalyticalIntegral(RooArgSet& allVars, RooArgSet& analVars, const char* rangeName=0) const ;
00031 virtual Double_t analyticalIntegral(Int_t code, const char* rangeName=0) const ;
00032
00033 virtual Int_t getMaxVal( const RooArgSet& vars) const;
00034 virtual Double_t maxVal( Int_t code) const;
00035
00036 private:
00037 RooRealProxy _phi;
00038 double _n;
00039 int _sgn1,_sgn2;
00040
00041 Double_t evaluate() const;
00042
00043 ClassDef(RooSpHarmonic,1)
00044 };
00045
00046 #endif