/***************************************************************************** * Project: RooFit * * * * This code was autogenerated by RooClassFactory * *****************************************************************************/ // Your description goes here... #include "Riostream.h" #include "RooAmpLandau.h" #include "RooAbsReal.h" #include "RooAbsPdf.h" #include "RooAbsCategory.h" #include #include "TMath.h" ClassImp(RooAmpLandau); RooAmpLandau::RooAmpLandau(const char *name, const char *title, RooAbsReal& _amp, RooAbsReal& _x, RooAbsReal& _y, RooAbsReal& _mx, RooAbsReal& _my, RooAbsReal& _sig_mpv, RooAbsReal& _amp_mpv, RooAbsReal& _noise_mpv, RooAbsReal& _sig_sig, RooAbsReal& _amp_sig, RooAbsReal& _noise_sig): RooAbsPdf(name,title), amp("amp","amplitude",this,_amp), x("x","x",this,_x), y("y","y",this,_y), mx("mx","mx",this,_mx), my("my","my",this,_my), sig_mpv("sig_mpv","sigma of mpv distribution",this,_sig_mpv), amp_mpv("amp_mpv","height of mpv distribution",this,_amp_mpv), noise_mpv("noise_mpv","noise(offset) of mpv distribution",this,_noise_mpv), sig_sig("sig_sig","sigma of sigma distribution",this,_sig_sig), amp_sig("amp_sig","height of sigma distribution",this,_amp_sig), noise_sig("noise_sig","noise(offset) of sigma distribution",this,_noise_sig) { ; } RooAmpLandau::RooAmpLandau(const RooAmpLandau& other, const char* name) : RooAbsPdf(other,name), amp("amp",this,other.amp), x("x",this,other.x), y("y",this,other.y), mx("mx",this,other.mx), my("my",this,other.my), sig_sig("sig_sig",this,other.sig_sig), amp_sig("amp_sig",this,other.amp_sig), noise_sig("noise_sig",this,other.noise_sig), sig_mpv("sig_mpv",this,other.sig_mpv), amp_mpv("amp_mpv",this,other.amp_mpv), noise_mpv("noise_mpv",this,other.noise_mpv) { } Double_t RooAmpLandau::evaluate() const { double dist=(x-mx)*(x-mx)+(y-my)*(y-my); double expo_sig=-0.5*dist/(sig_sig*sig_sig); double sig=amp_sig*exp(expo_sig)+noise_sig; double expo_mpv=-0.5*dist/(sig_mpv*sig_mpv); double mpv=amp_mpv*exp(expo_mpv)+noise_mpv; //double sig=500-3*TMath::Sqrt(dist); //double mpv=200-2*TMath::Sqrt(dist); //double sig=200; //double mpv=50; double retval=TMath::Landau(amp,mpv,sig); //std::cout<<"returning: "<