JHUGen MELA  v2.4.1
Matrix element calculations as used in JHUGen. MELA is an important tool that was used for the Higgs boson discovery and for precise measurements of its structure and interactions. Please see the website https://spin.pha.jhu.edu/ and papers cited there for more details, and kindly cite those papers when using this code.
MELAFuncPdf.h
Go to the documentation of this file.
1 #ifndef MELAFUNCPDF
2 #define MELAFUNCPDF
3 
4 #include "RooRealProxy.h"
5 #include "RooAbsPdf.h"
6 
7 class MELAFuncPdf : public RooAbsPdf{
8 protected:
9  RooRealProxy theFunc;
10 
11 public:
12  MELAFuncPdf() : RooAbsPdf(){}
14  const char* name,
15  const char* title
16  ) : RooAbsPdf(name, title), theFunc("theFunc","theFunc",this){}
18  const char* name,
19  const char* title,
20  RooAbsReal& inFunc
21  ) : RooAbsPdf(name, title), theFunc("theFunc", "theFunc", this, inFunc){}
22  MELAFuncPdf(const MELAFuncPdf& other, const char* name=0) : RooAbsPdf(other, name), theFunc("theFunc", this, other.theFunc){}
23  TObject* clone(const char* newname)const{ return new MELAFuncPdf(*this, newname); }
24  inline virtual ~MELAFuncPdf(){}
25 
26  Int_t getAnalyticalIntegral(RooArgSet& allVars, RooArgSet& analVars, const char* rangeName=0)const{ return dynamic_cast<RooAbsReal*>(theFunc.absArg())->getAnalyticalIntegral(allVars, analVars, rangeName); }
27  Double_t analyticalIntegral(Int_t code, const char* rangeName=0)const{ return dynamic_cast<RooAbsReal*>(theFunc.absArg())->analyticalIntegral(code, rangeName); }
28 
29  Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& analVars, const RooArgSet *normSet, const char* rangeName=0)const{ return dynamic_cast<RooAbsReal*>(theFunc.absArg())->getAnalyticalIntegralWN(allVars, analVars, normSet, rangeName); }
30  Double_t analyticalIntegralWN(Int_t code, const RooArgSet* normSet, const char* rangeName=0)const{
31  RooAbsPdf* pdfcast = dynamic_cast<RooAbsPdf*>(theFunc.absArg());
32  if (pdfcast!=0) return pdfcast->analyticalIntegralWN(code, normSet, rangeName);
33  else return RooAbsPdf::analyticalIntegralWN(code, normSet, rangeName);
34  }
35 
36 protected:
37  Double_t evaluate()const{ return theFunc; }
38 
39 
40  ClassDef(MELAFuncPdf, 0)
41 
42 };
43 
45 
46 #endif
MELAFuncPdf::MELAFuncPdf
MELAFuncPdf(const char *name, const char *title, RooAbsReal &inFunc)
Definition: MELAFuncPdf.h:17
MELAFuncPdf::MELAFuncPdf
MELAFuncPdf(const MELAFuncPdf &other, const char *name=0)
Definition: MELAFuncPdf.h:22
MELAFuncPdf::getAnalyticalIntegral
Int_t getAnalyticalIntegral(RooArgSet &allVars, RooArgSet &analVars, const char *rangeName=0) const
Definition: MELAFuncPdf.h:26
ClassImp
ClassImp(MELALinearInterpFunc) MELALinearInterpFunc
Definition: MELALinearInterpFunc.cc:12
MELAFuncPdf::~MELAFuncPdf
virtual ~MELAFuncPdf()
Definition: MELAFuncPdf.h:24
MELAFuncPdf::MELAFuncPdf
MELAFuncPdf()
Definition: MELAFuncPdf.h:12
MELAFuncPdf::evaluate
Double_t evaluate() const
Definition: MELAFuncPdf.h:37
MELAFuncPdf::clone
TObject * clone(const char *newname) const
Definition: MELAFuncPdf.h:23
MELAFuncPdf::theFunc
RooRealProxy theFunc
Definition: MELAFuncPdf.h:9
MELAFuncPdf::getAnalyticalIntegralWN
Int_t getAnalyticalIntegralWN(RooArgSet &allVars, RooArgSet &analVars, const RooArgSet *normSet, const char *rangeName=0) const
Definition: MELAFuncPdf.h:29
MELAFuncPdf::analyticalIntegral
Double_t analyticalIntegral(Int_t code, const char *rangeName=0) const
Definition: MELAFuncPdf.h:27
MELAFuncPdf
Definition: MELAFuncPdf.h:7
MELAFuncPdf::analyticalIntegralWN
Double_t analyticalIntegralWN(Int_t code, const RooArgSet *normSet, const char *rangeName=0) const
Definition: MELAFuncPdf.h:30
MELAFuncPdf::MELAFuncPdf
MELAFuncPdf(const char *name, const char *title)
Definition: MELAFuncPdf.h:13