EWP-BplusToKstMuMu-AngAna/Code/FCNCFitter/sources/Core/pdf.hh

53 lines
2.5 KiB
C++
Raw Normal View History

/**
* @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