53 lines
2.5 KiB
C++
53 lines
2.5 KiB
C++
|
/**
|
||
|
* @file pdf.hh
|
||
|
* @author Christoph Langenbruch, Renata Kopecna
|
||
|
|
||
|
* @date 2009-03-18
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef PDF_H
|
||
|
#define PDF_H
|
||
|
|
||
|
namespace fcnc {
|
||
|
class parameters;
|
||
|
class event;
|
||
|
class options;
|
||
|
|
||
|
|
||
|
///abstract base class that defines the interface for a pdf
|
||
|
///your pdf needs to inherit form this and implement all the abstract methods
|
||
|
class pdf {
|
||
|
public:
|
||
|
virtual ~pdf() {};
|
||
|
///returns the probability of one event
|
||
|
virtual double prob(const parameters* params, const event& meas) const = 0;
|
||
|
virtual double chi2(const parameters* params) {return 0.0;};
|
||
|
///updates the cached normalization after a parameter change
|
||
|
virtual void update_cached_normalization(const parameters* params) = 0;
|
||
|
virtual void update_cached_normalization(const parameters* params, std::vector<event>* events) {return;};
|
||
|
virtual void update_cached_integrated_fis(const parameters* params) {return;};
|
||
|
///updates the cached efficiencies, useable in case of fixed q2 eff or for a weighted fit
|
||
|
virtual void update_cached_efficiencies(const parameters* params, std::vector<event>* events) {return;};
|
||
|
///updates the cached xis paramters for every event, this allows to use a different q2 dependent norm for every event
|
||
|
virtual void update_cached_xis(const parameters* params, std::vector<event>* events) {return;};
|
||
|
///performs the necessary initialisations for the pdf
|
||
|
virtual void init(parameters* params) = 0;
|
||
|
//I am exposing these for now, needed for the S-wave hack
|
||
|
virtual void get_swave_integrated_fj(double& f1, double& f2, double& f3, double& f4, double& f5, double& f6) const {return;};
|
||
|
virtual void get_integrated_fj(double& f1, double& f2, double& f3, double& f4, double& f5, double& f6,
|
||
|
double& f7, double& f8, double& f9, double& f10, double& f11, double& f12) const {return;};
|
||
|
|
||
|
virtual void swave_integrated_fj_noacc(double& f1, double& f2, double& f3, double& f4, double& f5, double& f6) const {return;};
|
||
|
//virtual void swave_integrated_fj_chebyshev(double& f1, double& f2, double& f3, double& f4, double& f5, double& f6, double q2) const {return;};
|
||
|
virtual void integrated_fj_noacc(double& f1, double& f2, double& f3, double& f4, double& f5, double& f6,
|
||
|
double& f7, double& f8, double& f9, double& f10, double& f11, double& f12) const {return;};
|
||
|
//virtual void integrated_fj_chebyshev(double& f1, double& f2, double& f3, double& f4, double& f5, double& f6,
|
||
|
// double& f7, double& f8, double& f9, double& f10, double& f11, double& f12, double q2) const {return;};
|
||
|
|
||
|
};
|
||
|
|
||
|
}
|
||
|
|
||
|
#endif
|