M12range = cfg.get2tuple('prioroptions','M12range') TanBrange = cfg.get2tuple('prioroptions','TanBrange') A0range = cfg.get2tuple('prioroptions','A0range') #nuis par tuple values interpreted as mean and std of gaussian prior Mtopmeanstd = cfg.get2tuple('prioroptions','Mtopmeanstd') priorslist = [ ('M0', massprior(*M0range)), ('M12', massprior(*M12range)), ('TanB', priors.linear(*TanBrange)), ('A0', priors.linear(*A0range)), # NOTE: Was using MZ too, but currently ISAJET will ignore everything except Mtop. #('ialphaem', priors.gaussian(127.918,0.018)), #Jun 2009 hep-ph/0906.0957v2, they reference PDG 2008, but I can't find the value myself. #('alphas', priors.gaussian(0.1184,0.0007)), #PDG 2011 - Physical Constants #('MZ', priors.gaussian(91.1876,0.0021)), #PDG 2011 - Physical Constants #('Mbot', priors.gaussian(4.19,0.18)), #PDG 2011 quark summary - http://pdg.lbl.gov/2010/tables/rpp2010-sum-quarks.pdf (NOTE - lower uncertainty is 0.06 not 0.18, altered distribution to make it symmetric for simplicity) ('Mtop', priors.gaussian(*Mtopmeanstd)), #PDG 2011 quark summary - http://pdg.lbl.gov/2010/tables/rpp2010-sum-quarks.pdf ] #=================SET PRIOR================================= #----------(to be used by PyScanner)--------------------------- self.scanargs['prior'] = priors.genindepprior(priorslist) self.scanargs['parorder'] = ['M0','M12','TanB','A0','Mtop'] #==========LIKELIHOOD FUNCTION SETUP============================ #----------Initialise likelihood calculator--------------------- LFCalc = LFmod.LikeFuncCalculator(configfile) #Initialise likelihood calculator object, according to options set in configfile #----------Define function to perform likelihood calculation---- def pyscannerlikefunc(paramvector): """Main likelihood function calculator Passed AS IS to PyScanner via PySUSY
def setupCNMSSMAk(): """Same as CNMSSM, but with Akappa GUT unification broken, i.e. Akappa is scanned independently""" # 'whichcode' is used to initialise the nmspec wrapper. # Determines whether nmspec or nmhdecay is used to generate # spectrum. self.whichcode = 'mSUGRA' #->nmspec print "Setting up prior for CNMSSMAk..." #parameter/prior scan settings set here: uselog = cfg.getboolean('prioroptions','uselog') massprior = priors.logprior if uselog else priors.linear #get ranges for scan (must be tuples of length 2, i.e. (min,max)) M0range = cfg.get2tuple('prioroptions','M0range') M12range = cfg.get2tuple('prioroptions','M12range') TanBrange = cfg.get2tuple('prioroptions','TanBrange') A0range = cfg.get2tuple('prioroptions','A0range') Akapparange = cfg.get2tuple('prioroptions','Akapparange') lambdarange = cfg.get2tuple('prioroptions','lambdarange') #nuis par tuple values interpreted as mean and std of gaussian prior Mtopmeanstd = cfg.get2tuple('prioroptions','Mtopmeanstd') priorslist = [ ('M0', massprior(*M0range)), ('M12', massprior(*M12range)), ('TanB', priors.linear(*TanBrange)), ('A0', priors.linear(*A0range)), ('Akappa', priors.linear(*Akapparange)), ('lambda', priors.linear(*lambdarange)), ('Mtop', priors.gaussian(*Mtopmeanstd)), ] def CNMSSMAkparlinks(paramvector): # No extra parameter links to add, just copies paramvector # into inputvector. See NMSSM10 for example of what this # feature can be used for. # paramvector - dictionary of scan parameter values, # transformed by self.prior (from pyscanner, sent via # likelihood function defined below) p = paramvector try: i = self.inputvector except AttributeError: # if we haven't yet, need to create the inputvector dict self.inputvector = p.copy() i = self.inputvector # copy all the new values from p to i, except for 's' # because it doesn't exist in i. for key, val in p.items(): i[key] = val return i self.addlinks = CNMSSMAkparlinks # called by likelihood function #=================SET PRIOR================================= #----------(to be used by PyScanner)--------------------------- self.scanargs['prior'] = priors.genindepprior(priorslist) # Parse parameters to cluster from config file allpars = ['M0','M12','TanB','A0','Akappa','lambda','Mtop'] self.scanargs['parorder'] = orderpars(clusterpars,allpars)
def setupNMSSM11(): """Same as NMSSM9, but also varying Alambda and Akappa""" # 'whichcode' is used to initialise the nmspec wrapper. # Determines whether nmspec or nmhdecay is used to generate # spectrum. self.whichcode = 'generalNMSSM' #->nmhdecay print "Setting up prior for NMSSM11..." #parameter/prior scan settings set here: uselog = cfg.getboolean('prioroptions','uselog') massprior = priors.logprior if uselog else priors.linear #mass2prior = priors.logprior if uselog else None #parameters: MTOP TANB M2 ML3=ME3=MD3 MQ3 MU3 #LAMBDA KAPPA MHD^2 MHD^2 #get ranges for scan (must be tuples of length 2, i.e. (min,max)) M2range = cfg.get2tuple('prioroptions','M2range') MD3range = cfg.get2tuple('prioroptions','MD3range') MQ3range = cfg.get2tuple('prioroptions','MQ3range') MU3range = cfg.get2tuple('prioroptions','MU3range') TanBrange = cfg.get2tuple('prioroptions','TanBrange') AU3range = cfg.get2tuple('prioroptions','AU3range') Alambdarange = cfg.get2tuple('prioroptions','Alambdarange') Akapparange = cfg.get2tuple('prioroptions','Akapparange') lambdarange = cfg.get2tuple('prioroptions','lambdarange') kapparange = cfg.get2tuple('prioroptions','kapparange') srange = cfg.get2tuple('prioroptions','srange') #nuis par tuple values interpreted as mean and std of gaussian prior Mtopmeanstd = cfg.get2tuple('prioroptions','Mtopmeanstd') priorslist = [ ('M2', massprior(*M2range)), ('MD3', massprior(*MD3range)), ('MQ3', massprior(*MQ3range)), ('MU3', massprior(*MU3range)), ('TanB', priors.linear(*TanBrange)), ('AU3', priors.linear(*AU3range)), ('lambda', priors.linear(*lambdarange)), ('kappa', priors.linear(*kapparange)), ('Alambda', priors.linear(*Alambdarange)), ('Akappa', priors.linear(*Akapparange)), ('s', priors.linear(*srange)), ('Mtop', priors.gaussian(*Mtopmeanstd)), ] # First and second generation sfermions all set to high masses # in template file. # Trilinears (except AU3=AU2=AU1, Alambda, Akappa) all set to zero # We set ML3=ME3=MD3 manually below # nmhdecay then sets # MD3=MD2=MD1, # ME3=ME2=ME1 and # ML3=ML2=ML1. # also # MQ3=MQ2=MQ1 # MU3=MU2=MU1 # AU3=AU2=AU1 # Extra links between SLHA input parameters def NMSSM11parlinks(paramvector): # Need to link the scanned parameters to the ones actually # written to the nmspec input template file. In this case we # actually only need to add a couple of extra ones and set # them equal to MD3. # paramvector - dictionary of scan parameter values, # transformed by self.prior (from pyscanner, sent via # likelihood function defined below) p = paramvector try: i = self.inputvector except AttributeError: # if we haven't yet, need to create the inputvector dict self.inputvector = p.copy() i = self.inputvector del i['s'] #this parameter is scanned only, doesn't #exist in nmspec SLHA input file. Is #transformed to mueff. # copy all the new values from p to i, except for 's' # because it doesn't exist in i. for key, val in p.items(): if key!='s': i[key] = val # MD3 links i['ML3'] = p['MD3'] # nmspec then sets ML3=ML2=ML1 by default i['ME3'] = p['MD3'] # nmspec then sets ME3=ME2=ME1 by default # scanning s (singlet vev) but nmhdecay wants mu_eff as input i['mueff'] = p['lambda']*p['s'] return i self.addlinks = NMSSM11parlinks # called by likelihood function # New feature: specify a valid set of parameters to use which # will generate the full set of observables to be recorded. Will # speed up the 'testing' loop of pyscanner. #self.testvals = {'M2':,'MD3':,'MQ3':,'MU3':,'MHU^2':, # 'MHD^2':,'TanB':,'AU3':,'lambda':,'Mtop':] #=================SET PRIOR================================= #----------(to be used by PyScanner)--------------------------- self.scanargs['prior'] = priors.genindepprior(priorslist) # Parse parameters to cluster from config file allpars = ['M2','s','MD3','MQ3','MU3','TanB',\ 'AU3','lambda','kappa','Alambda','Akappa','Mtop'] self.scanargs['parorder'] = orderpars(clusterpars,allpars)
M0range = cfg.get2tuple('prioroptions','M0range') M12range = cfg.get2tuple('prioroptions','M12range') TanBrange = cfg.get2tuple('prioroptions','TanBrange') A0range = cfg.get2tuple('prioroptions','A0range') lambdarange = cfg.get2tuple('prioroptions','lambdarange') Akapparange = cfg.get2tuple('prioroptions','Akapparange') #nuis par tuple values interpreted as mean and std of gaussian prior Mtopmeanstd = cfg.get2tuple('prioroptions','Mtopmeanstd') priorslist = [ ('M0', massprior(*M0range)), ('M12', massprior(*M12range)), ('TanB', priors.linear(*TanBrange)), ('A0', priors.linear(*A0range)), ('lambda', priors.linear(*lambdarange)), ('Akappa', priors.linear(*Akapparange)), ('Mtop', priors.gaussian(*Mtopmeanstd)), ] #=================SET PRIOR================================= #----------(to be used by PyScanner)--------------------------- self.scanargs['prior'] = priors.genindepprior(priorslist) self.scanargs['parorder'] = ['M0','M12','TanB','A0', 'lambda','Akappa','Mtop'] #==========LIKELIHOOD FUNCTION SETUP============================ #----------Initialise likelihood calculator--------------------- LFCalc = LFmod.LikeFuncCalculator(configfile) #Initialise likelihood calculator object, according to options set in configfile #----------Define function to perform likelihood calculation---- def pyscannerlikefunc(paramvector): """Main likelihood function calculator