Skip to content

Instantly share code, notes, and snippets.

@alexpearce
Created September 2, 2015 14:21
Show Gist options
  • Save alexpearce/a94c0cdce1ffa9444e8c to your computer and use it in GitHub Desktop.
Save alexpearce/a94c0cdce1ffa9444e8c to your computer and use it in GitHub Desktop.
Define a triple Gaussian PDF in RooFit
# Name of the delta mass variable in the workspace
dmass_var = 'Dst_delta_M'
# Species of the PDF we're about to build
species = 'sig'
workspace.factory('mu_dm_{0}[141, 146]'.format(species))
workspace.factory('sigma_one_dm_{0}[1, 0, 5]'.format(species))
workspace.factory('nsigma_two_dm_{0}[1.5, 1, 3]'.format(species))
workspace.factory('nsigma_three_dm_{0}[1.5, 1, 3]'.format(species))
workspace.factory((
'expr::sigma_two_dm_{0}('
"'@0*@1',"
'{{sigma_one_dm_{0}, nsigma_two_dm_{0}}}'
')'
).format(species))
workspace.factory((
'expr::sigma_three_dm_{0}('
"'@0*@1',"
'{{sigma_two_dm_{0}, nsigma_three_dm_{0}}}'
')'
).format(species))
workspace.factory('num_gauss_one_dm_{0}[0.5, 0, 1]'.format(species))
workspace.factory('num_gauss_two_dm_{0}[0.5, 0, 1]'.format(species))
workspace.factory((
'RooGaussian::pdf_dm_gauss_one_{0}('
'{1}, mu_dm_{0}, sigma_one_dm_{0}'
')'
).format(species, dmass_var))
workspace.factory((
'RooGaussian::pdf_dm_gauss_two_{0}('
'{1}, mu_dm_{0}, sigma_two_dm_{0}'
')'
).format(species, dmass_var))
workspace.factory((
'RooGaussian::pdf_dm_gauss_three_{0}('
'{1}, mu_dm_{0}, sigma_three_dm_{0}'
')'
).format(species, dmass_var))
workspace.factory((
'RSUM::pdf_dm_{0}('
'num_gauss_one_dm_{0}*pdf_dm_gauss_three_{0},'
'num_gauss_two_dm_{0}*pdf_dm_gauss_two_{0},'
'pdf_dm_gauss_one_{0}'
')'
).format(species))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment