ATLAS Offline Software
Loading...
Searching...
No Matches
python.TileDCSDataInfo.TileDCSDataInfo Class Reference
Collaboration diagram for python.TileDCSDataInfo.TileDCSDataInfo:

Public Member Functions

 __init__ (self, dbstring=None)
 get_dbstring (self, key, ind=2)
 get_channel (self, folder, drawer)
 get_drawer (self, folder, channel)
 get_folder_and_channel (self, variable, drawer)
 get_variable_type (self, variable)
 get_all_variables (self)
 check_drawer_syntax (self, drawer)
 get_variables_by_folder (self, variables, drawer)
 find_data_file (self, fname, pathlist=None, access=os.R_OK)

Public Attributes

dict vars = {}
dict folderDrawer_to_channel = {}
dict folderChannel_to_drawer = {}
dict folderDrawer_to_oracleId = {}
dict dbstring = {"DEFAULT":[],"COOL":[],"ORACLE":[],"TESTBEAM":[]}

Static Public Attributes

tuple LVPS_AI = ("/TILE/DCS/", "AI")
tuple LVPS_STATES = ("/TILE/DCS/", "STATES")
tuple VARS_HV = ("/TILE/DCS/", "HV")
tuple VARS_HVSET = ("/TILE/DCS/", "HVSET")
tuple VARS_DAQ = ("/DAQdummy/","/DAQdummy")
tuple type_float = ('f','/F')
tuple type_int = ('i','/I')
dict vars_LVPS_STATES
dict vars_LVPS_AI
dict vars_HV = {}
 i = str(i+1)
dict vars_HVSET = {}
dict vars_DAQ = {}
dict systemID
dict partitionID

Detailed Description

Keeps a list of drawer, variable <---> folder, channel
associations and provides information about the available
variables and their datatypes.

Definition at line 7 of file TileDCSDataInfo.py.

Constructor & Destructor Documentation

◆ __init__()

python.TileDCSDataInfo.TileDCSDataInfo.__init__ ( self,
dbstring = None )

Definition at line 116 of file TileDCSDataInfo.py.

116 def __init__( self, dbstring=None ):
117
118 self.vars = {}
119 for var, info in list(self.vars_LVPS_AI.items()):
120 self.vars[var] = info
121 for var, info in list(self.vars_LVPS_STATES.items()):
122 self.vars[var] = info
123 for var, info in list(self.vars_HV.items()):
124 self.vars[var] = info
125 for var, info in list(self.vars_HVSET.items()):
126 self.vars[var] = info
127 for var, info in list(self.vars_DAQ.items()):
128 self.vars[var] = info
129
130 self.folderDrawer_to_channel = {}
131 self.folderChannel_to_drawer = {}
132 self.folderDrawer_to_oracleId = {}
133
134 filename=self.find_data_file("cool_channel_id.dat")
135 lines = open(filename,"r").readlines()
136 for line in lines:
137 line = line.strip()
138 folder, drawer, channel, oracleId = line.split()
139
140 keyFolderDrawer = ( folder , drawer)
141 if keyFolderDrawer in self.folderDrawer_to_channel:
142 raise Exception ("trying to generate key twice: ", keyFolderDrawer)
143 self.folderDrawer_to_channel[ keyFolderDrawer] = int(channel)
144 self.folderDrawer_to_oracleId[keyFolderDrawer] = oracleId
145
146 keyFolderChannel = ( folder , int(channel))
147 if keyFolderChannel in self.folderChannel_to_drawer:
148 raise Exception ("trying to generate key twice: ", keyFolderChannel)
149 self.folderChannel_to_drawer[keyFolderChannel] = drawer
150
151 self.dbstring = {"DEFAULT":[],"COOL":[],"ORACLE":[],"TESTBEAM":[]}
152 self.dbstring['DEFAULT'] += [dbstring]*3
153 dbstring = "oracle://ATLAS_COOLPROD;schema=ATLAS_COOLOFL_DCS;dbname=COMP200;"
154 dbstring+= "user=ATLAS_COOL_READER;password=COOLRED4PRO"
155 self.dbstring['COOL'] += [None]
156 self.dbstring['COOL'] += [dbstring]
157 self.dbstring['COOL'] += [dbstring.replace("COMP200","CONDBR2")]
158 self.dbstring['ORACLE'] += [["oracle://localhost/ATONR_PVSSPROD","ATLAS_PVSS_READER","PVSSRED4PRO"]]
159 self.dbstring['ORACLE'] += [["oracle://localhost/ATLAS_PVSSPROD","ATLAS_PVSS_READER","PVSSRED4PRO"]]
160 self.dbstring['ORACLE'] += [["oracle://localhost/ATONR_ADG","ATLAS_PVSS_READER","PVSSRED4PRO"]]
161 self.dbstring['TESTBEAM'] += [["oracle://localhost/INTR","ATLAS_PVSS_READER","PVSSRED4INT"]]*3
162
163

Member Function Documentation

◆ check_drawer_syntax()

python.TileDCSDataInfo.TileDCSDataInfo.check_drawer_syntax ( self,
drawer )

Definition at line 220 of file TileDCSDataInfo.py.

220 def check_drawer_syntax(self, drawer):
221 partition = drawer[0:3]
222 drawerNum = int(drawer[3:5])
223 valid = ("LBA" , "LBC", "EBA", "EBC")
224 if partition not in valid:
225 return False
226 if drawerNum<1 or drawerNum>64:
227 return False
228 return True
229

◆ find_data_file()

python.TileDCSDataInfo.TileDCSDataInfo.find_data_file ( self,
fname,
pathlist = None,
access = os.R_OK )
the python equivalent to the C++ PathResolver for datafiles.

Definition at line 248 of file TileDCSDataInfo.py.

248 def find_data_file(self, fname, pathlist=None, access=os.R_OK):
249 """the python equivalent to the C++ PathResolver for datafiles.
250 """
251
252 if pathlist is None:
253 pathlist = os.getenv('DATAPATH').split(os.pathsep)
254
255 for path in pathlist:
256 f = os.path.join( path, fname )
257 if os.access( f, access ):
258 return f
std::vector< std::string > split(const std::string &s, const std::string &t=":")
Definition hcg.cxx:177

◆ get_all_variables()

python.TileDCSDataInfo.TileDCSDataInfo.get_all_variables ( self)

Definition at line 217 of file TileDCSDataInfo.py.

217 def get_all_variables(self):
218 return list(self.vars.keys())
219

◆ get_channel()

python.TileDCSDataInfo.TileDCSDataInfo.get_channel ( self,
folder,
drawer )

Definition at line 167 of file TileDCSDataInfo.py.

167 def get_channel(self, folder, drawer):
168
169 if not self.check_drawer_syntax(drawer):
170 raise Exception ("ERROR: drawer not valid: ", drawer)
171 key = (folder, drawer )
172 if key not in self.folderDrawer_to_channel:
173 print ("get_channel WARNING, can not resolve key: ", key)
174 return None
175 return self.folderDrawer_to_channel[key]
176

◆ get_dbstring()

python.TileDCSDataInfo.TileDCSDataInfo.get_dbstring ( self,
key,
ind = 2 )

Definition at line 164 of file TileDCSDataInfo.py.

164 def get_dbstring(self, key, ind=2):
165 return self.dbstring[key][ind] if key in self.dbstring and len(self.dbstring[key])>ind else None
166

◆ get_drawer()

python.TileDCSDataInfo.TileDCSDataInfo.get_drawer ( self,
folder,
channel )

Definition at line 177 of file TileDCSDataInfo.py.

177 def get_drawer(self, folder, channel):
178
179 key = (folder, channel)
180 if key not in self.folderChannel_to_drawer:
181 print ("get_drawer WARNING, can not resolve key: ", key)
182 return None
183 return self.folderChannel_to_drawer[key]
184
185

◆ get_folder_and_channel()

python.TileDCSDataInfo.TileDCSDataInfo.get_folder_and_channel ( self,
variable,
drawer )
For a given DCS variable and drawer, return the complete COOL
folder name and the channel number associated to the drawer

Definition at line 186 of file TileDCSDataInfo.py.

186 def get_folder_and_channel(self, variable, drawer):
187 """
188 For a given DCS variable and drawer, return the complete COOL
189 folder name and the channel number associated to the drawer
190 """
191 if variable not in self.vars:
192 raise Exception ("Variable not known: ", variable)
193 partition = drawer[0:3]
194
195 folderDef = self.vars[variable][0]
196 #=== for STATE, we have only one "drawer" per partition
197 if variable=="STATE":
198 drawer = partition+"XX"
199 folder = folderDef[0]+partition+folderDef[1]
200 else:
201 folder = folderDef[0]+folderDef[1]
202 key = (folder, drawer)
203 if key not in self.folderDrawer_to_channel:
204 print ("WARNING, can not resolve key: ", key)
205 return None
206 channel = self.folderDrawer_to_channel[key]
207 return (folder, channel)
208

◆ get_variable_type()

python.TileDCSDataInfo.TileDCSDataInfo.get_variable_type ( self,
variable )
Returns the type of a variable

Definition at line 209 of file TileDCSDataInfo.py.

209 def get_variable_type(self, variable):
210 """
211 Returns the type of a variable
212 """
213 if variable not in self.vars:
214 raise Exception ("Variable not known: ", variable)
215 return self.vars[variable][1]
216

◆ get_variables_by_folder()

python.TileDCSDataInfo.TileDCSDataInfo.get_variables_by_folder ( self,
variables,
drawer )
Return a dictionary listing all folders that need to be
accessed as keys and all variables associated to the key folder
as values.

Definition at line 230 of file TileDCSDataInfo.py.

230 def get_variables_by_folder(self, variables, drawer):
231 """
232 Return a dictionary listing all folders that need to be
233 accessed as keys and all variables associated to the key folder
234 as values.
235 """
236 folderDict = {}
237 for var in variables:
238 if var not in self.vars:
239 print ("Unknown variable, IGNORING IT: ", var)
240 else:
241 folder, channel = self.get_folder_and_channel(var,drawer)
242 if folder not in folderDict:
243 folderDict[folder] = [var]
244 else:
245 folderDict[folder].extend([var])
246 return folderDict
247

Member Data Documentation

◆ dbstring

dict python.TileDCSDataInfo.TileDCSDataInfo.dbstring = {"DEFAULT":[],"COOL":[],"ORACLE":[],"TESTBEAM":[]}

Definition at line 151 of file TileDCSDataInfo.py.

◆ folderChannel_to_drawer

dict python.TileDCSDataInfo.TileDCSDataInfo.folderChannel_to_drawer = {}

Definition at line 131 of file TileDCSDataInfo.py.

◆ folderDrawer_to_channel

dict python.TileDCSDataInfo.TileDCSDataInfo.folderDrawer_to_channel = {}

Definition at line 130 of file TileDCSDataInfo.py.

◆ folderDrawer_to_oracleId

dict python.TileDCSDataInfo.TileDCSDataInfo.folderDrawer_to_oracleId = {}

Definition at line 132 of file TileDCSDataInfo.py.

◆ i

python.TileDCSDataInfo.TileDCSDataInfo.i = str(i+1)
static

Definition at line 77 of file TileDCSDataInfo.py.

◆ LVPS_AI

tuple python.TileDCSDataInfo.TileDCSDataInfo.LVPS_AI = ("/TILE/DCS/", "AI")
static

Definition at line 14 of file TileDCSDataInfo.py.

◆ LVPS_STATES

tuple python.TileDCSDataInfo.TileDCSDataInfo.LVPS_STATES = ("/TILE/DCS/", "STATES")
static

Definition at line 15 of file TileDCSDataInfo.py.

◆ partitionID

dict python.TileDCSDataInfo.TileDCSDataInfo.partitionID
static
Initial value:
= { 0 : "EBA",
1 : "LBA",
2 : "LBC",
3 : "EBC"}

Definition at line 111 of file TileDCSDataInfo.py.

◆ systemID

dict python.TileDCSDataInfo.TileDCSDataInfo.systemID
static
Initial value:
= { "LBA" : 88 ,
"LBC" : 87 ,
"EBA" : 86 ,
"EBC" : 89 ,
"SCS" : 80 }

Definition at line 105 of file TileDCSDataInfo.py.

◆ type_float

tuple python.TileDCSDataInfo.TileDCSDataInfo.type_float = ('f','/F')
static

Definition at line 19 of file TileDCSDataInfo.py.

◆ type_int

tuple python.TileDCSDataInfo.TileDCSDataInfo.type_int = ('i','/I')
static

Definition at line 20 of file TileDCSDataInfo.py.

◆ vars

dict python.TileDCSDataInfo.TileDCSDataInfo.vars = {}

Definition at line 118 of file TileDCSDataInfo.py.

◆ VARS_DAQ

tuple python.TileDCSDataInfo.TileDCSDataInfo.VARS_DAQ = ("/DAQdummy/","/DAQdummy")
static

Definition at line 18 of file TileDCSDataInfo.py.

◆ vars_DAQ

dict python.TileDCSDataInfo.TileDCSDataInfo.vars_DAQ = {}
static

Definition at line 102 of file TileDCSDataInfo.py.

◆ VARS_HV

tuple python.TileDCSDataInfo.TileDCSDataInfo.VARS_HV = ("/TILE/DCS/", "HV")
static

Definition at line 16 of file TileDCSDataInfo.py.

◆ vars_HV

dict python.TileDCSDataInfo.TileDCSDataInfo.vars_HV = {}
static

Definition at line 75 of file TileDCSDataInfo.py.

◆ VARS_HVSET

tuple python.TileDCSDataInfo.TileDCSDataInfo.VARS_HVSET = ("/TILE/DCS/", "HVSET")
static

Definition at line 17 of file TileDCSDataInfo.py.

◆ vars_HVSET

dict python.TileDCSDataInfo.TileDCSDataInfo.vars_HVSET = {}
static

Definition at line 87 of file TileDCSDataInfo.py.

◆ vars_LVPS_AI

dict python.TileDCSDataInfo.TileDCSDataInfo.vars_LVPS_AI
static

Definition at line 26 of file TileDCSDataInfo.py.

◆ vars_LVPS_STATES

dict python.TileDCSDataInfo.TileDCSDataInfo.vars_LVPS_STATES
static
Initial value:
= {"FORDAQ_MB" : [ LVPS_STATES, type_int],
"FORDAQ_HV" : [ LVPS_STATES, type_int],
"FORDAQ_MBHV" : [ LVPS_STATES, type_int]}

Definition at line 22 of file TileDCSDataInfo.py.


The documentation for this class was generated from the following file: