ATLAS Offline Software
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 
6 import sys, re
7 import ROOT
8 from TileCoolDcs import TileDCSDataInfo
9 
10 
11 buffer=[]
12 
13 re_ai = re.compile("ATLTILLV(\\d{2})(:ELMB/LVCAN.*_)(\\d*)/AI/M5VMB_TEMP2.value")
14 re_states = re.compile("ATLTILLV(\\d{2})(:ELMB/LVCAN.*_)(\\d*)/states.ForDAQ_MBHV")
15 re_hv = re.compile("ATLTILLV(\\d{2}):Drawer(\\d*).Readings.Monitoring.hvOut1.value")
16 re_hvset = re.compile("ATLTILLV(\\d{2}):Drawer(\\d*).Readings.Requests.hvOut1.order")
17 re_daq = re.compile("ATLTILSCS:DAQ(.*).state")
18 
19 #=== mapping of system name number to partition
20 partitionID = { 0 : "EBA",
21  1 : "LBA",
22  2 : "LBC",
23  3 : "EBC"}
24 
25 
26 #=== connect to Oracle DB
27 
28 par = sys.argv
29 info = TileDCSDataInfo.TileDCSDataInfo()
30 dbstring=info.get_dbstring('ORACLE',int(par[1]) if len(par)>1 and par[1].isdigit() else 2)
31 if dbstring is None:
32  print ("Unknown DB")
33  sys.exit(2)
34 
35 print ("Connecting to",dbstring[0])
36 
37 db = ROOT.TSQLServer.Connect( dbstring[0], dbstring[1], dbstring[2])
38 
39 
40 statement = "select ELEMENT_NAME, SYS_ID, DP_ID from ATLAS_PVSSTIL.elements"
41 stmt = db.Statement(statement)
42 if 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
104 oldname=info.find_data_file("cool_channel_id.dat")
105 newname="cool_channel_id.dat"
106 print ("Old file:", oldname)
107 print ("New file:", newname)
108 buffer.sort()
109 file = open(newname,"w")
110 for item in buffer:
111  file.write( item )
Trk::open
@ open
Definition: BinningType.h:40
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45