/*! A toy model for a flat (atm nu) background */ struct FlatBackground : public Component { FlatBackground(string name = "flatbackground") : Component(name) {} double dP_dsindec_dlogE( double sindec, double logE) { // some toy energy distribution double dP_dlogE = TMath::Gaus(logE, 2, 1, true); if (dP_dlogE == 0 ) fatal ("dp_dloge = 0 for", logE ); double dP_dsindec = 0.5; // uniform betwen -1 and 1 // dbg ( logE, dP_dlogE, dP_dsindec, norm.value ); return dP_dlogE * dP_dsindec; } double dP_dOmega_dlogE( double sindec, double logE) { return dP_dsindec_dlogE( sindec, logE ) / (2 * pi); } virtual double dN_dOmega_dlogE(SearchEvent &sev) { return norm.value * dP_dOmega_dlogE( sin( sev.coordinates.dec()), log10(sev.Eproxy) ) ; } virtual SearchEvent generate_event() { double logE = gRandom->Gaus(2, 1); double sindec = gRandom->Uniform(-1, 1); return SearchEvent( gRandom->Uniform(-pi, pi), asin( sindec ), pow(10, logE) ); } // -----boilerplate----- virtual FlatBackground *clone() const { return new FlatBackground(*this); } virtual ~FlatBackground() {} ClassDef( FlatBackground, 1) };