File indexing completed on 2026-05-23 08:10:32
0001 #ifndef PARTICLEMODEL_H
0002 #define PARTICLEMODEL_H
0003
0004 struct ParticleModel
0005 {
0006 std::string name;
0007
0008 std::shared_ptr<RooRealVar> mass;
0009
0010
0011
0012
0013
0014 std::shared_ptr<RooAbsPdf> signal_function;
0015 std::vector<RooRealVar> signal_parameters;
0016 RooArgList signal_parameter_arglist;
0017
0018 std::shared_ptr<RooAbsPdf> background_function;
0019 std::vector<RooRealVar> background_parameters;
0020 RooArgList background_parameter_arglist;
0021
0022 void add_signal_parameter(const std::string& name, const std::string& title, float init_val, float min_val, float max_val)
0023 {
0024 signal_parameters.emplace_back(name.c_str(),title.c_str(),init_val,min_val,max_val);
0025 signal_parameter_arglist.addClone(signal_parameters.back());
0026 }
0027 void add_background_parameter(const std::string& name, const std::string& title, float init_val, float min_val, float max_val)
0028 {
0029 background_parameters.emplace_back(name.c_str(),title.c_str(),init_val,min_val,max_val);
0030 background_parameter_arglist.addClone(background_parameters.back());
0031 }
0032
0033 std::shared_ptr<RooRealVar> n_signal;
0034 std::shared_ptr<RooRealVar> n_background;
0035
0036
0037 void setup_default_mass_nsignal_nbackground(const std::string& particle_name, const std::string& particle_title, float min_mass, float max_mass)
0038 {
0039 mass = std::make_shared<RooRealVar>((particle_name+"_mass").c_str(),(particle_title+" mass").c_str(),min_mass,max_mass);
0040 n_signal = std::make_shared<RooRealVar>((particle_name+"_nsignal").c_str(),(particle_title+" nSignal").c_str(),0.,1e9);
0041 n_background = std::make_shared<RooRealVar>((particle_name+"_nbackground").c_str(),(particle_title+" nBackground").c_str(),0.,1e9);
0042 }
0043
0044 std::shared_ptr<RooAbsPdf> fit_function;
0045
0046 void fitTo(RooAbsData& ds)
0047 {
0048 fit_function->fitTo(ds);
0049 }
0050 };
0051
0052 #endif