ATLAS Offline Software
Loading...
Searching...
No Matches
createCoolChannelIdFile.py
Go to the documentation of this file.
1#!/bin/env python
2# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3# Author: nils.gollub@cern.ch
4
5
6import sys, re
7import ROOT
8from TileCoolDcs import TileDCSDataInfo
9
10
11buffer=[]
12
13re_ai = re.compile("ATLTILLV(\\d{2})(:ELMB/LVCAN.*_)(\\d*)/AI/M5VMB_TEMP2.value")
14re_states = re.compile("ATLTILLV(\\d{2})(:ELMB/LVCAN.*_)(\\d*)/states.ForDAQ_MBHV")
15re_hv = re.compile("ATLTILLV(\\d{2}):Drawer(\\d*).Readings.Monitoring.hvOut1.value")
16re_hvset = re.compile("ATLTILLV(\\d{2}):Drawer(\\d*).Readings.Requests.hvOut1.order")
17re_daq = re.compile("ATLTILSCS:DAQ(.*).state")
18
19#=== mapping of system name number to partition
20partitionID = { 0 : "EBA",
21 1 : "LBA",
22 2 : "LBC",
23 3 : "EBC"}
24
25
26#=== connect to Oracle DB
27
28par = sys.argv
29info = TileDCSDataInfo.TileDCSDataInfo()
30dbstring=info.get_dbstring('ORACLE',int(par[1]) if len(par)>1 and par[1].isdigit() else 2)
31if dbstring is None:
32 print ("Unknown DB")
33 sys.exit(2)
34
35print ("Connecting to",dbstring[0])
36
37db = ROOT.TSQLServer.Connect( dbstring[0], dbstring[1], dbstring[2])
38
39
40statement = "select ELEMENT_NAME, SYS_ID, DP_ID from ATLAS_PVSSTIL.elements"
41stmt = db.Statement(statement)
42if stmt.Process() is True:
43 stmt.StoreResult()
44 while stmt.NextResultRow():
45
46 element_name = stmt.GetString(0)
47 sys_id = stmt.GetString(1)
48 dp_id = stmt.GetString(2)
49
50 #=== build COOL channel id
51 channel_id = dp_id + ('000'+sys_id)[-3:]
52
53 #=== find components
54 result_ai = re_ai.search(element_name)
55 result_states = re_states.search(element_name)
56 result_hv = re_hv.search(element_name)
57 result_hvset = re_hvset.search(element_name)
58 result_daq = re_daq.search(element_name)
59
60 if result_ai:
61 partition = partitionID[int(result_ai.groups()[0])]
62 drawer = partition+('00'+result_ai.groups()[2])[-2:]
63 oracleId = "ATLTILLV"
64 for part in result_ai.groups():
65 oracleId += part
66 oracleId += "/AI"
67 buffer.append( "/TILE/DCS/AI\t%s\t%s\t%s\n"%(drawer,channel_id,oracleId) )
68
69 elif result_states:
70 partition = partitionID[int(result_states.groups()[0])]
71 drawer = partition+('00'+result_states.groups()[2])[-2:]
72 oracleId = "ATLTILLV"
73 for part in result_states.groups():
74 oracleId += part
75 oracleId += "/states"
76 buffer.append( "/TILE/DCS/STATES\t%s\t%s\t%s\n"%(drawer,channel_id,oracleId) )
77
78 elif result_hv:
79 part = result_hv.groups()
80 partition = partitionID[int(part[0])]
81 drawer = partition+('00'+part[1])[-2:]
82 oracleId = "ATLTILLV"+part[0]
83 oracleId += ":Drawer"+part[1]+".Readings.Monitoring"
84 buffer.append( "/TILE/DCS/HV\t%s\t%s\t%s\n"%(drawer,channel_id,oracleId) )
85
86 elif result_hvset:
87 part = result_hvset.groups()
88 partition = partitionID[int(part[0])]
89 drawer = partition+('00'+part[1])[-2:]
90 oracleId = "ATLTILLV"+part[0]
91 oracleId += ":Drawer"+part[1]+".Readings.Requests"
92 buffer.append( "/TILE/DCS/HVSET\t%s\t%s\t%s\n"%(drawer,channel_id,oracleId) )
93
94 elif result_daq:
95 part = result_daq.groups()
96 partition = part[0][:3]
97 oracleId = "ATLTILSCS:DAQ"+partition+".state"
98 #=== only one entry per partition, set module number to "XX"
99 drawer = partition + "XX"
100 buffer.append( "/DAQdummy/%s/DAQdummy\t%s\t%s\t%s\n"%(partition,drawer,channel_id,oracleId) )
101
102
103#=== write file
104oldname=info.find_data_file("cool_channel_id.dat")
105newname="cool_channel_id.dat"
106print ("Old file:", oldname)
107print ("New file:", newname)
108buffer.sort()
109file = open(newname,"w")
110for item in buffer:
111 file.write( item )