예제 #1
0
def get_settings_by_date(date_start, date_end):
    beamline = Beamline(url='http://cdb.mice.rl.ac.uk')
    channel = CoolingChannel(url='http://cdb.mice.rl.ac.uk')

    channel_data_dates = channel.get_all_coolingchannels()
    print "Getting cooling channel keys"
    for key in channel_data_dates.keys():
        print type(key), key
    return
    print_heading()
    bl_data_dates = beamline.get_beamlines_for_dates(start_date, end_date)
     
    for run in range(run_start, run_end):
        channel_data, bl_data = None, None
        n_tries = 0
        while channel_data == None and n_tries < 5:
            try:
                channel_data = channel.get_coolingchannel_for_run(run)
            except (cdb._exceptions.CdbPermanentError, KeyError, urllib2.URLError):
                n_tries += 1
                time.sleep(5)
                continue
        while bl_data == None:
            try:
                bl_data = beamline.get_beamline_for_run(run)[run]
            except (cdb._exceptions.CdbPermanentError, KeyError, urllib2.URLError):
                n_tries += 1
                time.sleep(5)
                continue
        if not is_channel_okay(bl_data, channel_data):
            continue
        print_run(bl_data, channel_data)
예제 #2
0
def get_settings_by_run(run_start, run_end, run_step, output, do_header = True):
    beamline = Beamline(url='http://cdb.mice.rl.ac.uk')
    channel = CoolingChannel(url='http://cdb.mice.rl.ac.uk')

    if do_header:
        print_heading(output)
    for run in range(run_start, run_end, run_step): #:
        channel_data, bl_data = None, None
        n_tries = 0
        while channel_data == None and n_tries < 5:
            try:
                channel_data = channel.get_coolingchannel_for_run(run)
                print ".",
                sys.stdout.flush()
            except (cdb._exceptions.CdbPermanentError, KeyError, urllib2.URLError):
                print "Failed to get channel data for run", run, "... trying again", n_tries
                n_tries += 1
                time.sleep(0.1)
                continue
        while bl_data == None and n_tries < 5:
            try:
                bl_data = beamline.get_beamline_for_run(run)[run]
            except (cdb._exceptions.CdbPermanentError, KeyError, urllib2.URLError):
                print "Failed to get bl data for run", run, "... trying again", n_tries
                n_tries += 1
                time.sleep(0.1)
                continue
        if not is_channel_okay(bl_data, channel_data):
            print "Channel not okay for run", run
            continue
        print_run(bl_data, channel_data, output)
        sys.stdout.flush()
        time.sleep(1)
예제 #3
0
 def __init__(self, args_in):
     self._BL = Beamline(_R_SERVER)
     # print self._BL
     self._CC = CoolingChannel(_R_SERVER)
     self.run_number = args_in.run_number
     self.ssu_on = args_in.ssu_on
     self.ssd_on = args_in.ssd_on
     self.both_ss = args_in.both_ss
     self.pretty = pprint.PrettyPrinter(indent=4)
     self.oldstd = sys.stdout
     self.pout = open(os.devnull, 'w')
To switch between Preprod and Master, change the argument to the handle on Line:16
e.g. 
     cc = CoolingChannelSuperMouse(_PROD_CDB)
"""
import sys
from cdb import CoolingChannelSuperMouse
from cdb import CoolingChannel

_TEST_CDB = "http://preprodcdb.mice.rl.ac.uk"
_PROD_CDB = "http://cdb.mice.rl.ac.uk"
#_MASTER_CDB = "http://preprodcdb.mice.rl.ac.uk"
_MASTER_CDB = "http://172.16.246.25:8080"

_master_server = CoolingChannelSuperMouse(_MASTER_CDB)
_test_server = CoolingChannelSuperMouse(_TEST_CDB)
_prod_server = CoolingChannel(_PROD_CDB)
#print _server
############################################################################
_CC_TAG = '2016-05-2-SSUSSD'
data = [\
  {'polarity': 1, 'coils': \
   [{'vlim': 5.0, 'name': 'SSU-T2', 'iset': 0.0, 'calibration': 0.0451, 'ilim': 1.0, 'stability': 0.0, 'rate': 0.0}, \
    {'vlim': 16.0, 'name': 'SSU-C', 'iset': 204.02 , 'calibration': 0.0147, 'ilim': 210.0, 'stability': 95.0, 'rate': 0.0246}, \
    {'vlim': 5.0, 'name': 'SSU-T1', 'iset': 0.0, 'calibration': 0.0407, 'ilim': 1.0, 'stability': 0.0, 'rate': 0.0}, \
    {'vlim': 7.0, 'name': 'SSU-M2', 'iset': 226.63, 'calibration': 0.0201, 'ilim': 230.0, 'stability': 95.0, 'rate': 0.025}, \
    {'vlim': 7.0, 'name': 'SSU-M1', 'iset': 220.80, 'calibration': 0.0302, 'ilim': 230.0, 'stability': 95.0, 'rate': 0.0123} \
   ], \
   'name': 'SSU', 'mode': 'solenoid'\
  },\
  {'polarity': -1, 'coils': \
   [{'vlim': 11.0, 'name': 'FCU-C', 'iset': 0.0, 'calibration': 0.0268, 'ilim': 1.0, 'stability': 95.0, 'rate': 0.005}],\
예제 #5
0
class QueryCDB:
    """
    Handles CDB requuests
    """
    def __init__(self, args_in):
        self._BL = Beamline(_R_SERVER)
        # print self._BL
        self._CC = CoolingChannel(_R_SERVER)
        self.run_number = args_in.run_number
        self.ssu_on = args_in.ssu_on
        self.ssd_on = args_in.ssd_on
        self.both_ss = args_in.both_ss
        self.pretty = pprint.PrettyPrinter(indent=4)
        self.oldstd = sys.stdout
        self.pout = open(os.devnull, 'w')

    def process_request(self):
        # if run number is specified, then just get the info for the run
        if self.run_number > 0:
            self.get_beamline_for_run()
            self.get_cc_for_run()
        # if cooling channel match is requested, then find runs
        if self.ssu_on or self.ssd_on or self.both_ss:
            self.get_runs_for_cc()

    def get_beamline_for_run(self):
        print '===== Beamline for Run# ', self.run_number
        blrun = self._BL.get_beamline_for_run(self.run_number)
        self.pretty.pprint(blrun)

    def get_cc_for_run(self):
        print '===== Cooling Channel for Run# ', self.run_number
        sys.stdout = self.pout
        ccrun = self._CC.get_coolingchannel_for_run(self.run_number)
        sys.stdout = None
        self.pretty.pprint(ccrun)

    def get_runs_for_cc(self):
        runlist = sorted(self._BL.get_run_numbers())
        #### No cooling channel before run ~7100, so don't bother
        for run in runlist:
            if run < 7400:
                continue
            sys.stdout = self.pout
            ccrun = self._CC.get_coolingchannel_for_run(run)
            sys.stdout = self.oldstd
            for mag in ccrun:
                if mag['name'] == 'SSU':
                    ssu_coils = mag['coils']
                    for coil in ssu_coils:
                        if coil['name'] == 'SSU-C':
                            ssu_c_current = coil['iset']
                if mag['name'] == 'SSD':
                    ssu_coils = mag['coils']
                    for coil in ssu_coils:
                        if coil['name'] == 'SSD-C':
                            ssd_c_current = coil['iset']
            if self.ssu_on and ssu_c_current > 10.0:
                print '++++ SSU ON. Run# ', run
                self.pretty.pprint(ccrun)
            if self.ssd_on and ssd_c_current > 10.0:
                print '++++ SSD ON. Run# ', run
                self.pretty.pprint(ccrun)
            if self.both_ss and ssd_c_current > 10.0 and ssu_c_current > 10.0:
                print '++++ SSU and SSD ON. Run# ', run
                self.pretty.pprint(ccrun)
예제 #6
0
###############################################################################
# Load CDB elements
###############################################################################
print " Loading Beamline...",
try:
    beamline = Beamline()
except:
    print "  ERROR"
    sys.exit()
else:
    print "  OK"

print " Loading Cooling Channel...",
try:
    channel = CoolingChannel()
except:
    print "  ERROR"
    sys.exit()
else:
    print "  OK"

###############################################################################
# Setup processing
###############################################################################

# CDB spill counter
date0_unix = time.mktime(start_date.timetuple())
date1_unix = time.mktime(end_date.timetuple())
th1d_spills_hr = ROOT.TH1D("th1d_spills_hr", "Spills/hr",
                           int((date1_unix - date0_unix) / 900),
예제 #7
0
import sys
sys.path.insert(1, "/home/mice/MAUS/CDB/mice.cdb.client.api-python/src/")
from cdb import Beamline
from cdb import CoolingChannel
from pprint import pprint
from collections import defaultdict

_BL = Beamline("http://cdb.mice.rl.ac.uk")
_CC = CoolingChannel("http://cdb.mice.rl.ac.uk")

_RUNMIN = int(sys.argv[1])
_RUNMAX = int(sys.argv[2])

print 'min: ', _RUNMIN, 'max: ', _RUNMAX
tot_npart_26a = 0
tot_npart_26b = 0
tot_npart_26c = 0
tot_npart_27a = 0
tot_npart_27b = 0
tot_npart_27c = 0
tot_npart_28a = 0
tot_npart_28b = 0
tot_npart_28c = 0
tot_npart_29a = 0
tot_npart_29b = 0
tot_npart_29c = 0
tot_npart_14a = 0
tot_npart_14b = 0
tot_npart_14c = 0
tot_npart_14d = 0
tot_npart_14c = 0
예제 #8
0
import sys
from cdb import CoolingChannel
from cdb import Beamline
from cdb import Cabling
from pprint import pprint
_R_SERVER = "http://cdb.mice.rl.ac.uk"
_TEST_SERVER = "http://preprodcdb.mice.rl.ac.uk"
_MASTER_CDB = "http://172.16.246.25:8080"

#_CCT = CoolingChannel(_R_SERVER)
_CCT = CoolingChannel(_TEST_SERVER)
_CCM = CoolingChannel(_MASTER_CDB)

print _CCT.get_status()
print _CCT.get_server_host_name()
p_cctags = _CCT.list_tags()

print _CCM.get_status()
print _CCM.get_server_host_name()
m_cctags = _CCM.list_tags()

print 
print '++++++ List of CoolingChannel Tags'
print '++++++ MASTER '
pprint(m_cctags)
print
print
print '++++++ PREPROD '
pprint(p_cctags)

for ptag in p_cctags:
예제 #9
0
###############################################################################
# Load CDB elements
###############################################################################
print " Loading Beamline...",
try:
    beamline = Beamline()
except:
    print "  ERROR"
    sys.exit()
else:
    print "  OK"

print " Loading Cooling Channel...",
try:
    channel = CoolingChannel()
except:
    print "  ERROR"
    sys.exit()
else:
    print "  OK"

###############################################################################
# Setup processing
###############################################################################

# CDB spill counter
date0_unix = time.mktime(start_date.timetuple())
date1_unix = time.mktime(end_date.timetuple())
th1d_spills_hr = ROOT.TH1D("th1d_spills_hr", "Spills/hr",
                           int((date1_unix - date0_unix) / 900),
예제 #10
0
import sys
from cdb import CoolingChannel
from cdb import Beamline
from cdb import Cabling
from pprint import pprint
_PROD_CDB = "http://cdb.mice.rl.ac.uk"
_TEST_CDB = "http://preprodcdb.mice.rl.ac.uk"
_MASTER_CDB = "http://172.16.246.25:8080"

#_CCT = CoolingChannel(_TEST_CDB)
_CCM = CoolingChannel(_MASTER_CDB)
print _CCM.get_status()
_CCP = CoolingChannel(_PROD_CDB)

#print _CCT.get_status()
#print _CCT.get_server_host_name()
#p_cctags = _CCT.list_tags()

print _CCM.get_status()
print _CCM.get_server_host_name()
m_cctags = _CCM.list_tags()

print
print '++++++ List of CoolingChannel Tags'
print '++++++ MASTER '
pprint(m_cctags)
print
print
print '++++++ PREPROD '
#pprint(p_cctags)
예제 #11
0
#from cdb import CoolingChannelSuperMouse
from cdb import CoolingChannel
from cdb import Beamline

#_TEST_CDB = "http://preprodcdb.mice.rl.ac.uk"

_R_CDB = "http://cdb.mice.rl.ac.uk"
cc = CoolingChannel(_R_CDB)

#_MASTER_CDB = "http://172.16.246.25:8080"
#cc = CoolingChannelSuperMouse(_MASTER_CDB)

bl = Beamline(_R_CDB)

#print cc, help(cc), cc.get_name(), cc.get_server_host_name(), cc.get_version()

############################################################################

#print 'List'
#rint cc.list_absorber_tags()
#print 'Get'
#print cc.get_absorber_for_tag('ABS-SOLID-EMPTY')

print 'Get CCrun'
print cc.get_coolingchannel_for_run(7929)
print 'Get Absrun'
print cc.get_absorber_for_run(7929)

#print 'Get Beamline'
#print bl.get_beamline_for_run(7929)