Skip to content
Snippets Groups Projects
hallc_replay_gui.py 28.04 KiB
#!/usr/bin/python

import sys

if sys.version_info[0] < 3:
    import Tkinter as tk
else:	
    import tkinter as tk
import os

root = tk.Tk()

hms_def_filename = "DEF-files/HMS/PRODUCTION/hstackana_production.def"
hms_def_filename_bck = "DEF-files/HMS/PRODUCTION/hstackana_production.def.bck"
shms_def_filename = "DEF-files/SHMS/PRODUCTION/pstackana_production.def"
shms_def_filename_bck = "DEF-files/SHMS/PRODUCTION/pstackana_production.def.bck"

def hms_var_states():
    hms_def_file_text = []
#    if (hcerana_histos.get() == 1) or (hdcana_histos.get() == 1) or (hhodoana_histos.get() == 1) or (hcalana_histos.get() == 1) or (htrigana_histos.get() == 1):
#        hms_def_file_text.append('''#include "DEF-files/HMS/PRODUCTION/BLOCK/hblock_vars.def"\n''')
#        hms_def_file_text.append("\n")

    if hcerana_histos.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/TEST_STANDS/CER/hcerana_histos.def"\n''')
    if hdcana_histos.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/TEST_STANDS/DC/hdcana_histos.def"\n''')
    if hhodoana_histos.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/TEST_STANDS/HODO/hhodoana_histos.def"\n''')
    if hcalana_histos.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/TEST_STANDS/CAL/hcalana_histos.def"\n''')
    if htrigana_histos.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/TEST_STANDS/TRIG/htrigana_histos.def"\n''')
    if (hcerana_histos.get() == 1) or (hdcana_histos.get() == 1) or (hhodoana_histos.get() == 1) or (hcalana_histos.get() == 1) or (htrigana_histos.get() == 1):
        hms_def_file_text.append("\n")

    if htrig_histos.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/PRODUCTION/TRIG/htrig_histos.def"\n''')
    if hcal_histos.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/PRODUCTION/CAL/hcal_histos.def"\n''')
    if hcer_histos.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/PRODUCTION/CER/hcer_histos.def"\n''')
    if hdc_histos.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/PRODUCTION/DC/hdc_histos.def"\n''')
        #hms_def_file_text.append('''#include "DEF-files/HMS/TEST_STANDS/DC/hdc_resid.def"\n''')
        hms_def_file_text.append('''#include "DEF-files/HMS/PRODUCTION/DC/hdc_eff_histos.def"\n''')
    if hhodo_histos.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/PRODUCTION/HODO/hhodo_histos.def"\n''')
    
    hms_def_file_text.append('''\n''')
   
    if hkin_histos.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/PRODUCTION/KIN/hkin_histos.def"\n''')
    if hgtr_histos.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/PRODUCTION/GTR/hgtr_histos.def"\n''')
    if hraster_histos.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/PRODUCTION/RASTER/hraster_histos.def"\n''')
    if hreact_histos.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/PRODUCTION/REACT/hreact_histos.def"\n''')
    if hpid_histos.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/PRODUCTION/PID/hpid_histos.def"\n''')
    if hextcor_histos.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/PRODUCTION/EXTCOR/hextcor_histos.def"\n''')
    
    hms_def_file_text.append('''\n''')

    if hpid_vars.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/PRODUCTION/PID/hpid_vars.def"\n''')
    if hepics_vars.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/PRODUCTION/EPICS/hepics_vars.def"\n''')
    if hf2kin_vars.get() == 1:
        hms_def_file_text.append('''#include "DEF-files/HMS/PRODUCTION/KIN/hkin_vars.def"\n''')

    hms_def_file_text.append('''\n''')
    
    if hthms_vars.get() == 1:
        hms_def_file_text.append('''block T.hms.*\n''')
    if hcer_vars.get() == 1:
        hms_def_file_text.append('''block H.cer.*\n''')
    if hdc_vars.get() == 1:
        hms_def_file_text.append('''block H.dc.*\n''')
    if htrig_vars.get() == 1:
        hms_def_file_text.append('''block H.tr.*\n''')
    if hhodo_vars.get() == 1:
        hms_def_file_text.append('''block H.hod.*\n''')
    if hcal_vars.get() == 1:
        hms_def_file_text.append('''block H.cal.*\n''')
    if hgtr_vars.get() == 1:
        hms_def_file_text.append('''block H.gtr.*\n''')
    if hkin_vars.get() == 1:
        hms_def_file_text.append('''block H.kin.*\n''')
    if hraster_vars.get() == 1:
        hms_def_file_text.append('''block H.rb.*\n''')
    if hreact_vars.get() == 1:
        hms_def_file_text.append('''block H.react.*\n''')
   
    print ("Backing up current HMS Output DEF-file ...")
    command = "mv " + hms_def_filename + " " + hms_def_filename_bck
    os.system(command) 
    print ("Writing new HMS Output DEF-file ...")
    hms_def_file = open(hms_def_filename,"w")
    hms_def_file.writelines(hms_def_file_text)
    hms_def_file.close()

def shms_var_states():
    shms_def_file_text = []
#    if (paeroana_histos.get() == 1) or (pcalana_histos.get() == 1) or (pdcana_histos.get() == 1) or (phgcerana_histos.get() == 1) or (phodoana_histos.get() == 1) or ( pngcerana_histos.get() == 1) or (ptrigana_histos.get() == 1):
#        shms_def_file_text.append('''#include "DEF-files/SHMS/PRODUCTION/BLOCK/pblock_vars.def"\n''')
#        shms_def_file_text.append("\n")

    if paeroana_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/TEST_STANDS/AERO/paeroana_histos.def"\n''')
    if pcalana_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/TEST_STANDS/CAL/pcalana_histos.def"\n''')
    if pdcana_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/TEST_STANDS/DC/pdcana_histos.def"\n''')
    if phgcerana_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/TEST_STANDS/HGCER/pgcerana_histos.def"\n''')
    if phodoana_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/TEST_STANDS/HODO/phodoana_histos.def"\n''')
    if pngcerana_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/TEST_STANDS/NGCER/pngcerana_histos.def"\n''')
    if ptrigana_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/TEST_STANDS/TRIG/ptrigana_histos.def"\n''')
    if (paeroana_histos.get() == 1) or (pcalana_histos.get() == 1) or (pdcana_histos.get() == 1) or (phgcerana_histos.get() == 1) or (phodoana_histos.get() == 1) or ( pngcerana_histos.get() == 1) or (ptrigana_histos.get() == 1):
        shms_def_file_text.append("\n")

    if ptrig_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/PRODUCTION/TRIG/ptrig_histos.def"\n''')
    if paero_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/PRODUCTION/AERO/paero_histos.def"\n''')
    if pcal_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/PRODUCTION/CAL/pcal_histos.def"\n''')
    if pdc_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/PRODUCTION/DC/pdc_histos.def"\n''')
    if phgcer_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/PRODUCTION/HGCER/phgcer_histos.def"\n''')
    if pngcer_histos.get() == 1:
        shms_def_file_text.append('''# #include "DEF-files/SHMS/PRODUCTION/NGCER/pngcer_histos.def"\n''')
    if phodo_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/PRODUCTION/HODO/phodo_histos.def"\n''')
    
    shms_def_file_text.append('''\n''')
    
    if pkin_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/PRODUCTION/KIN/pkin_histos.def"\n''')
    if pgtr_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/PRODUCTION/GTR/pgtr_histos.def"\n''')
    if praster_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/PRODUCTION/RASTER/praster_histos.def"\n''')
    if preact_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/PRODUCTION/REACT/preact_histos.def"\n''')
    if ppid_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/PRODUCTION/PID/ppid_histos.def"\n''')
    if pextcor_histos.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/PRODUCTION/EXTCOR/pextcor_histos.def"\n''')
    
    shms_def_file_text.append('''\n''')
    
    if pf2dc_vars.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/PRODUCTION/DC/pdc_vars.def"\n''')
    if pf2gtr_vars.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/PRODUCTION/GTR/pgtr_vars.def"\n''')
    if ppid_vars.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/PRODUCTION/PID/ppid_vars.def"\n''')
    if pepics_vars.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/PRODUCTION/EPICS/pepics_vars.def"\n''')
    if pf2kin_vars.get() == 1:
        shms_def_file_text.append('''#include "DEF-files/SHMS/PRODUCTION/KIN/pkin_vars.def"\n''')
   
    shms_def_file_text.append('''\n''')
    
    if ptshms_vars.get() == 1:
        shms_def_file_text.append('''block T.shms.*\n''')
    if pngcer_vars.get() == 1:
        shms_def_file_text.append('''block P.ngcer.*\n''')
    if pdc_vars.get() == 1:
        shms_def_file_text.append('''block P.dc.*\n''')
    if phodo_vars.get() == 1:
        shms_def_file_text.append('''block P.hod.*\n''')
    if phgcer_vars.get() == 1:
        shms_def_file_text.append('''block P.hgcer.*\n''')
    if paero_vars.get() == 1:
        shms_def_file_text.append('''block P.aero.*\n''')
    if pcal_vars.get() == 1:
        shms_def_file_text.append('''block P.cal.*\n''')
    if ptrig_vars.get() == 1:
        shms_def_file_text.append('''block P.tr.*\n''')
    if pgtr_vars.get() == 1:
        shms_def_file_text.append('''block P.gtr.*\n''')
    if pkin_vars.get() == 1:
        shms_def_file_text.append('''block P.kin.*\n''')
    if praster_vars.get() == 1:
        shms_def_file_text.append('''block P.rb.*\n''')
    if preact_vars.get() == 1:
        shms_def_file_text.append('''block P.react.*\n''')
    
    print ("Backing up current SHMS Output DEF-file ...")
    command = "mv " + shms_def_filename + " " + shms_def_filename_bck
    os.system(command) 
    print ("Writing new SHMS Output DEF-file ...")
    shms_def_file = open(shms_def_filename,"w")
    shms_def_file.writelines(shms_def_file_text)
    shms_def_file.close()

def set_hms_production_defaults():
    hcal_histos.set(1)
    hcer_histos.set(1)
    hdc_histos.set(1)
    hhodo_histos.set(1)
    htrig_histos.set(1)
    hkin_histos.set(1)
    hgtr_histos.set(1)
    hraster_histos.set(1)
    hreact_histos.set(1)
    hpid_histos.set(1)
    hextcor_histos.set(1)
    hcalana_histos.set(0)
    hcerana_histos.set(0)
    hdcana_histos.set(0)
    hhodoana_histos.set(0)
    htrigana_histos.set(0)
    hepics_vars.set(1)
    hf2kin_vars.set(1)
    hpid_vars.set(1)
    hthms_vars.set(0)
    hcal_vars.set(0)
    hcer_vars.set(0)
    hdc_vars.set(0)
    hhodo_vars.set(0)
    hgtr_vars.set(0)
    htrig_vars.set(0)
    hkin_vars.set(0)
    hraster_vars.set(0)
    hreact_vars.set(0)
    
def set_shms_production_defaults():
    paero_histos.set(1)
    pcal_histos.set(1)
    pdc_histos.set(1)
    pgtr_histos.set(1)
    phgcer_histos.set(1)
    phodo_histos.set(1)
    pkin_histos.set(1)
    pngcer_histos.set(1)
    praster_histos.set(1)
    ptrig_histos.set(1)
    preact_histos.set(1)
    ppid_histos.set(1)
    pextcor_histos.set(1)
    paeroana_histos.set(0)
    pcalana_histos.set(0)
    pdcana_histos.set(0)
    phgcerana_histos.set(0)
    phodoana_histos.set(0)
    pngcerana_histos.set(0)
    ptrigana_histos.set(0)
    pepics_vars.set(1)
    pf2dc_vars.set(1)
    pf2kin_vars.set(1)
    pf2gtr_vars.set(1)
    ppid_vars.set(1)
    ptshms_vars.set(0)
    paero_vars.set(0)
    pcal_vars.set(0)
    pdc_vars.set(0)
    phgcer_vars.set(0)
    phodo_vars.set(0)
    pngcer_vars.set(0)
    ptrig_vars.set(0)
    pkin_vars.set(0)
    pgtr_vars.set(0)
    praster_vars.set(0)
    preact_vars.set(0)
    
def set_hms_teststand_on():
    hcalana_histos.set(1)
    hcerana_histos.set(1)
    hdcana_histos.set(1)
    hhodoana_histos.set(1)
    htrigana_histos.set(1)
    hthms_vars.set(1)
    hcal_vars.set(1)
    hcer_vars.set(1)
    hdc_vars.set(1)
    hhodo_vars.set(1)
    hgtr_vars.set(1)
    htrig_vars.set(1)
    hkin_vars.set(1)
    hraster_vars.set(1)
    hreact_vars.set(1)

def set_shms_teststand_on():
    paeroana_histos.set(1)
    pcalana_histos.set(1)
    pdcana_histos.set(1)
    phgcerana_histos.set(1)
    phodoana_histos.set(1)
    pngcerana_histos.set(1)
    ptrigana_histos.set(1)
    ptshms_vars.set(1)
    paero_vars.set(1)
    pcal_vars.set(1)
    pdc_vars.set(1)
    phgcer_vars.set(1)
    phodo_vars.set(1)
    pngcer_vars.set(1)
    ptrig_vars.set(1)
    pkin_vars.set(1)
    praster_vars.set(1)
    preact_vars.set(1)

hcal_histos = tk.IntVar()
hcer_histos = tk.IntVar()
hdc_histos = tk.IntVar()
hhodo_histos = tk.IntVar()
hkin_histos = tk.IntVar()
hgtr_histos = tk.IntVar()
hraster_histos = tk.IntVar()
htrig_histos = tk.IntVar()
hreact_histos = tk.IntVar()
hpid_histos = tk.IntVar()
hextcor_histos = tk.IntVar()
hepics_vars = tk.IntVar()
hf2kin_vars = tk.IntVar()
hpid_vars = tk.IntVar()

paero_histos = tk.IntVar()
pcal_histos = tk.IntVar()
pdc_histos = tk.IntVar()
pgtr_histos = tk.IntVar()
phgcer_histos = tk.IntVar()
phodo_histos = tk.IntVar()
pkin_histos = tk.IntVar()
pngcer_histos = tk.IntVar()
praster_histos = tk.IntVar()
ptrig_histos = tk.IntVar()
preact_histos = tk.IntVar()
ppid_histos = tk.IntVar()
pextcor_histos = tk.IntVar()
pepics_vars = tk.IntVar()
pf2dc_vars = tk.IntVar()
pf2kin_vars = tk.IntVar()
pf2gtr_vars = tk.IntVar()
ppid_vars = tk.IntVar()

hcalana_histos = tk.IntVar()
hcerana_histos = tk.IntVar()
hdcana_histos = tk.IntVar()
hhodoana_histos = tk.IntVar()
htrigana_histos = tk.IntVar()

hthms_vars = tk.IntVar()
hcer_vars = tk.IntVar()
hdc_vars = tk.IntVar()
htrig_vars = tk.IntVar()
hhodo_vars = tk.IntVar()
hcal_vars = tk.IntVar()
hkin_vars = tk.IntVar()
hgtr_vars = tk.IntVar()
hraster_vars = tk.IntVar()
hreact_vars = tk.IntVar()

paeroana_histos = tk.IntVar()
pcalana_histos = tk.IntVar()
pdcana_histos = tk.IntVar()
phgcerana_histos = tk.IntVar()
phodoana_histos = tk.IntVar()
pngcerana_histos = tk.IntVar()
ptrigana_histos = tk.IntVar()

ptshms_vars = tk.IntVar()
pngcer_vars = tk.IntVar()
pdc_vars = tk.IntVar()
phodo_vars = tk.IntVar()
phgcer_vars = tk.IntVar()
paero_vars = tk.IntVar()
pcal_vars = tk.IntVar()
ptrig_vars = tk.IntVar()
pkin_vars = tk.IntVar()
pgtr_vars = tk.IntVar()
praster_vars = tk.IntVar()
preact_vars = tk.IntVar()

set_hms_production_defaults()
set_shms_production_defaults()

irow=0
icol=0

tk.Label(root, 
        text="""HMS Histogram Blocks:""",
        justify = tk.LEFT,
        padx = 20,pady=20).grid(row=irow,column=icol,columnspan=2,sticky=tk.W)
irow=irow+1
tk.Label(root, 
        text="""Production:""",
        justify = tk.LEFT,
        padx = 20).grid(row=irow,column=icol,sticky=tk.W)
tk.Label(root, 
        text="""Test Stands:""",
        justify = tk.LEFT,
        padx = 20).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Calorimeter",
              padx = 20, 
              variable=hcal_histos).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="Raw Calorimeter",
              padx = 20, 
              variable=hcalana_histos).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Cerenkov",
              padx = 20, 
              variable=hcer_histos).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="Raw Cerenkov",
              padx = 20, 
              variable=hcerana_histos).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Drift Chambers",
              padx = 20, 
              variable=hdc_histos).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="Raw Drift Chambers",
              padx = 20, 
              variable=hdcana_histos).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Hodoscope",
              padx = 20, 
              variable=hhodo_histos).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="Raw Hodoscope",
              padx = 20, 
              variable=hhodoana_histos).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Trigger",
              padx = 20, 
              variable=htrig_histos).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="Raw Trigger",
              padx = 20, 
              variable=htrigana_histos).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Kinematics",
              padx = 20, 
              variable=hkin_histos).grid(row=irow,column=icol,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Tracking",
              padx = 20, 
              variable=hgtr_histos).grid(row=irow,column=icol,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Raster",
              padx = 20, 
              variable=hraster_histos).grid(row=irow,column=icol,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Reaction",
              padx = 20, 
              variable=hreact_histos).grid(row=irow,column=icol,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="PID",
              padx = 20, 
              variable=hpid_histos).grid(row=irow,column=icol,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="EXTCOR",
              padx = 20, 
              variable=hextcor_histos).grid(row=irow,column=icol,sticky=tk.W)
irow=irow+4
tk.Label(root, 
        text="""HMS Variables:""",
        justify = tk.LEFT,
        padx = 20,pady=20).grid(row=irow,column=icol,columnspan=2,sticky=tk.W)
irow=irow+1
tk.Label(root, 
        text="""Production:""",
        justify = tk.LEFT,
        padx = 20).grid(row=irow,column=icol,sticky=tk.W)
tk.Label(root, 
        text="""Test Stands:""",
        justify = tk.LEFT,
        padx = 20).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="EPICS",
              padx = 20, 
              variable=hepics_vars).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="HMS Tree",
              padx = 20, 
              variable=hthms_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="PID",
              padx = 20, 
              variable=hpid_vars).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="Calorimeter",
              padx = 20, 
              variable=hcal_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Kinematics",
              padx = 20, 
              variable=hf2kin_vars).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="Cerenkov",
              padx = 20, 
              variable=hcer_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Drift Chambers",
              padx = 20, 
              variable=hdc_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Hodoscope",
              padx = 20, 
              variable=hhodo_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Trigger",
              padx = 20, 
              variable=htrig_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Kinematics",
              padx = 20, 
              variable=hkin_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Tracking",
              padx = 20, 
              variable=hgtr_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Raster",
              padx = 20, 
              variable=hraster_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Reaction",
              padx = 20, 
              variable=hreact_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+5
tk.Button(root, text='Quit', command=root.quit,justify=tk.LEFT,padx=20).grid(row=irow,column=icol,sticky=tk.W)
tk.Button(root, text='HMS Production Default', command=set_hms_production_defaults,justify=tk.LEFT,padx=20).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Button(root, text='Write HMS DEF-file', command=hms_var_states,justify=tk.LEFT,padx=20).grid(row=irow,column=icol,sticky=tk.W)
tk.Button(root, text='All HMS Test Stands', command=set_hms_teststand_on,justify=tk.LEFT,padx=20).grid(row=irow,column=icol+1,sticky=tk.W)

irow=0
icol=2

tk.Label(root, 
        text="""SHMS Histogram Blocks:""",
        justify = tk.LEFT,
        padx = 20).grid(row=irow,column=icol,columnspan=2,sticky=tk.W)
irow=irow+1
tk.Label(root, 
        text="""Production:""",
        justify = tk.LEFT,
        padx = 20).grid(row=irow,column=icol,sticky=tk.W)
tk.Label(root, 
        text="""Test Stands:""",
        justify = tk.LEFT,
        padx = 20).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Aerogel",
              padx = 20, 
              variable=paero_histos).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="Raw Aerogel",
              padx = 20, 
              variable=paeroana_histos).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Calorimeter",
              padx = 20, 
              variable=pcal_histos).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="Raw Calorimeter",
              padx = 20, 
              variable=pcalana_histos).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Drift Chambers",
              padx = 20, 
              variable=pdc_histos).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="Raw Drift Chambers",
              padx = 20, 
              variable=pdcana_histos).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Heavy Gas Cerenkov",
              padx = 20, 
              variable=phgcer_histos).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="Raw Heavy Gas Cerenkov",
              padx = 20, 
              variable=phgcerana_histos).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Hodoscope",
              padx = 20, 
              variable=phodo_histos).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="Raw Hodoscope",
              padx = 20, 
              variable=phodoana_histos).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Noble Gas Cerenkov",
              padx = 20, 
              variable=pngcer_histos).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="Raw Noble Gas Cerenkov",
              padx = 20, 
              variable=pngcerana_histos).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Trigger",
              padx = 20, 
              variable=ptrig_histos).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="Raw Trigger",
              padx = 20, 
              variable=ptrigana_histos).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Kinematics",
              padx = 20, 
              variable=pkin_histos).grid(row=irow,column=icol,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Tracking",
              padx = 20, 
              variable=pgtr_histos).grid(row=irow,column=icol,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Raster",
              padx = 20, 
              variable=praster_histos).grid(row=irow,column=icol,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Reaction",
              padx = 20, 
              variable=preact_histos).grid(row=irow,column=icol,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="PID",
              padx = 20, 
              variable=ppid_histos).grid(row=irow,column=icol,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="EXTCOR",
              padx = 20, 
              variable=pextcor_histos).grid(row=irow,column=icol,sticky=tk.W)
irow=irow+2
tk.Label(root, 
        text="""SHMS Variables:""",
        justify = tk.LEFT,
        padx = 20).grid(row=irow,column=icol,columnspan=2,sticky=tk.W)
irow=irow+1
tk.Label(root, 
        text="""Production:""",
        justify = tk.LEFT,
        padx = 20).grid(row=irow,column=icol,sticky=tk.W)
tk.Label(root, 
        text="""Test Stands:""",
        justify = tk.LEFT,
        padx = 20).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="EPICS",
              padx = 20, 
              variable=pepics_vars).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="SHMS Tree",
              padx = 20, 
              variable=ptshms_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Tracking",
              padx = 20, 
              variable=pf2gtr_vars).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="Aerogel",
              padx = 20, 
              variable=paero_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="PID",
              padx = 20, 
              variable=ppid_vars).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="Calorimeter",
              padx = 20, 
              variable=pcal_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Drift Chambers",
              padx = 20, 
              variable=pf2dc_vars).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="Drift Chambers",
              padx = 20, 
              variable=pdc_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Kinematics",
              padx = 20, 
              variable=pf2kin_vars).grid(row=irow,column=icol,sticky=tk.W)
tk.Checkbutton(root, 
              text="Heavy Gas Cerenkov",
              padx = 20, 
              variable=phgcer_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Hodoscope",
              padx = 20, 
              variable=phodo_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Noble Gas Cerenkov",
              padx = 20, 
              variable=pngcer_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Trigger",
              padx = 20, 
              variable=ptrig_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Kinematics",
              padx = 20, 
              variable=pkin_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Tracking",
              padx = 20, 
              variable=pgtr_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Raster",
              padx = 20, 
              variable=praster_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Checkbutton(root, 
              text="Reaction",
              padx = 20, 
              variable=preact_vars).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+3
tk.Button(root, text='SHMS Production Default', command=set_shms_production_defaults,justify=tk.LEFT,padx=20).grid(row=irow,column=icol+1,sticky=tk.W)
irow=irow+1
tk.Button(root, text='Write SHMS DEF-file', command=shms_var_states,justify=tk.LEFT,padx=20).grid(row=irow,column=icol,sticky=tk.W)
tk.Button(root, text='All SHMS Test Stands', command=set_shms_teststand_on,justify=tk.LEFT,padx=20).grid(row=irow,column=icol+1,sticky=tk.W)

root.mainloop()