How To: Draw graphs from the decomposition output and the database¶
In [1]:
# Set up the path to SModelS installation folder
import sys; sys.path.append("."); import smodels_paths
In [2]:
# Import those parts of smodels that are needed for this exercise
from smodels.base.physicsUnits import TeV, GeV, fb
from smodels.installation import installDirectory
from smodels.share.models.mssm import BSMList
from smodels.share.models.SMparticles import SMList
from smodels.base.model import Model
from smodels.decomposition import decomposer
from smodels.matching.theoryPrediction import theoryPredictionsFor
from smodels.experiment.databaseObj import Database
from smodels.tools import coverage
Draw graphs from the decomposition output (Theory SMS)¶
In [3]:
# Define the SLHA input file name
filename="inputFiles/slha/gluino_squarks.slha"
model = Model(BSMparticles = BSMList, SMparticles = SMList)
model.updateParticles(inputFile=filename)
In [4]:
# Decompose the model
topDict = decomposer.decompose(model, sigmacut = 10* fb, massCompress=True, invisibleCompress=True,minmassgap = 5* GeV)
# Check the canonical names of all topologies:
print(topDict.keys())
odict_keys([11101001101000, 111010011011010000, 11101001101011010000, 11101010011011010000, 1110110100011011010000, 111011010001101011010000])
In [5]:
# Select a SMS to draw
sms = topDict[11101001101000][0]
# Draw the SMS
sms.draw()
In [6]:
# Draw some properties of the SMS
print('Mass:')
sms.draw(labelAttr='mass',attrUnit=GeV)
print('Total width:')
sms.draw(labelAttr='totalwidth',attrUnit=GeV)
print('Electric Charge:')
sms.draw(labelAttr='eCharge')
print('Spin:')
sms.draw(labelAttr='spin')
Mass:
Total width:
Electric Charge:
Spin:
Draw SMS from the database¶
In [7]:
# Load the database, do the decomposition and compute theory predictions:
database = Database("official")
In [8]:
# Check the number of unique SMS in the database
print(len(database.getExpSMS()))
215
In [9]:
# Select an experimental result
database.selectExpResults(analysisIDs=['CMS-EXO-20-004'])
# Get the SMS in the result
smsList = database.getExpSMS()
In [10]:
# Draw SMS:
for sms in smsList:
sms.draw()
In [11]:
# Select an experimental result
database.selectExpResults(analysisIDs=['ATLAS-EXOT-2018-48'])
# Get the SMS in the result
smsList = database.getExpSMS()
# Draw SMS:
for sms in smsList:
sms.draw()
In [12]:
# Select an experimental result
database.selectExpResults(analysisIDs=['ATLAS-SUSY-2018-13'])
# Get the SMS in the result
smsList = database.getExpSMS()
# Draw SMS:
for sms in smsList:
sms.draw()
In [ ]:
In [ ]: