ATLAS Offline Software
Loading...
Searching...
No Matches
python.variable.DCSC_Global_Variable Class Reference
Inheritance diagram for python.variable.DCSC_Global_Variable:
Collaboration diagram for python.variable.DCSC_Global_Variable:

Public Types

typedef HLT::TypeInformation::for_each_type_c< typenameEDMLIST::map, my_functor, my_result<>, my_arg< HLT::TypeInformation::get_cont, CONTAINER > >::type result

Public Member Functions

 __init__ (self, folder_name, evaluator, caution_evaluator=None, **kwargs)
 make_good_iov (self, iov)
 quantize (self, lbtime, iovs)
 __hash__ (self)
 __repr__ (self)
 read (self, query_range, folder_base, folder_name)
 print_time_info (self, iovs)
 map_input_channels (self, iovs)
 make_good_iovs (self, iovs)
 calculate_good_iovs (self, lbtime, subdetector)

Public Attributes

 caution_evaluator = caution_evaluator
str input_db = 'COOLOFL_DCS/CONDBR2'
 folder_name = folder_name
 evaluator = evaluator
dict fetch_args = {}
list input_hashes = []
 subdetector = subdetector
 iovs = iovs

Static Public Attributes

bool is_global = False
bool is_config_variable = False
bool timewise_folder = True

Detailed Description

A global variable.

This class over-rides the behaviour for evaluating the "goodness" of an 
input channel. It allows for an intermediate state (caution) between good
and bad.

Definition at line 231 of file variable.py.

Member Typedef Documentation

◆ result

Definition at line 90 of file EDM_MasterSearch.h.

Constructor & Destructor Documentation

◆ __init__()

python.variable.DCSC_Global_Variable.__init__ ( self,
folder_name,
evaluator,
caution_evaluator = None,
** kwargs )

Definition at line 241 of file variable.py.

241 def __init__(self, folder_name, evaluator, caution_evaluator=None, **kwargs):
242 super(DCSC_Global_Variable, self).__init__(folder_name, evaluator, **kwargs)
243
244 self.caution_evaluator = caution_evaluator
245

Member Function Documentation

◆ __hash__()

python.variable.DCSC_Variable.__hash__ ( self)
inherited
Useful for verifying if input variables have changed.

Definition at line 60 of file variable.py.

60 def __hash__(self):
61 """
62 Useful for verifying if input variables have changed.
63 """
64 # Consider the fact that hash((hash(x), hash(y))) == hash((x, y)) where
65 # x and y are tuples.
66 return hash(tuple(self.input_hashes))
67

◆ __repr__()

python.variable.DCSC_Variable.__repr__ ( self)
inherited

Definition at line 68 of file variable.py.

68 def __repr__(self):
69 return "<DCSCVariable %s>" % self.folder_name
70

◆ calculate_good_iovs()

python.variable.DCSC_Variable.calculate_good_iovs ( self,
lbtime,
subdetector )
inherited
Calculate LB-wise "good" states

Definition at line 179 of file variable.py.

179 def calculate_good_iovs(self, lbtime, subdetector):
180 """
181 Calculate LB-wise "good" states
182 """
183
184 self.subdetector = subdetector
185
186 if self.timewise_folder:
187 query_range = RANGEIOV_VAL(lbtime.first.since, lbtime.last.until)
188 else:
189 a, b = lbtime.first, lbtime.last
190 query_range = RANGEIOV_VAL(RunLumi(a.Run, a.LumiBlock),
191 RunLumi(b.Run, b.LumiBlock))
192
193 # Read the database
194 iovs = self.read(query_range, subdetector.folder_base, self.folder_name)
195 #iovs.pprint()
196
197 # Decide the states of the input iovs
198 iovs = self.make_good_iovs(iovs)
199 #iovs.pprint()
200
201 # Apply a mapping for input channels if necessary
202 # This only does something for variables that require additional mapping
203 # i.e., if the channel numbers for different DCS variables don't match up
204 iovs = self.map_input_channels(iovs)
205
206 if self.timewise_folder and not config.opts.timewise:
207 # we might already know the defect mapping
208 with timer("Quantize %s (%i iovs over %i lbs)" %
209 (self.folder_name, len(iovs), len(lbtime))):
210 # Quantize to luminosity block
211 iovs = self.quantize(lbtime, iovs)
212 #iovs.pprint()
213
214 # Debug printout of problematic channels
215 # DQUtils messes with the logging and isEnabledFor doesn't work
216 #if log.isEnabledFor(logging.DEBUG):
217 #log.verbose("Bad input channels for %s:", self.folder_name)
218 #log.verbose("= [%r]", ", ".join(str(i.channel) for i in iovs if not i.good))
219
220 self.iovs = iovs
221
222 return self
223

◆ make_good_iov()

python.variable.DCSC_Global_Variable.make_good_iov ( self,
iov )
Determine DQ colour for this global variable iov.

Reimplemented from python.variable.DCSC_Variable.

Definition at line 246 of file variable.py.

246 def make_good_iov(self, iov):
247 """
248 Determine DQ colour for this global variable iov.
249 """
250
251 if self.evaluator(iov):
252 state = GREEN
253
254 elif self.caution_evaluator and self.caution_evaluator(iov):
255 state = YELLOW
256
257 else:
258 state = RED
259
260 return CodeIOV(iov.since, iov.until, iov.channel, state)
261

◆ make_good_iovs()

python.variable.DCSC_Variable.make_good_iovs ( self,
iovs )
inherited
Determine whether each iov signifies a good or bad state.

Reimplemented in python.subdetectors.sct.DCSC_Variable_SCT_Config, and python.subdetectors.tile.Tile_NoHighVoltage.

Definition at line 172 of file variable.py.

172 def make_good_iovs(self, iovs):
173 """
174 Determine whether each iov signifies a good or bad state.
175 """
176 make_good_iov = self.make_good_iov
177 return IOVSet(make_good_iov(iov) for iov in iovs)
178

◆ map_input_channels()

python.variable.DCSC_Variable.map_input_channels ( self,
iovs )
inherited
By default, do nothing. Overloaded by DCSC_Variable_With_Mapping.

Reimplemented in python.variable.DCSC_Variable_With_Mapping.

Definition at line 141 of file variable.py.

141 def map_input_channels(self, iovs):
142 """
143 By default, do nothing. Overloaded by DCSC_Variable_With_Mapping.
144 """
145 return iovs
146

◆ print_time_info()

python.variable.DCSC_Variable.print_time_info ( self,
iovs )
inherited
Logs the first and last insertion times of the IoVs, and their ranges.

Definition at line 124 of file variable.py.

124 def print_time_info(self, iovs):
125 """
126 Logs the first and last insertion times of the IoVs, and their ranges.
127 """
128 first_value, last_value = iovs.range_iov
129
130 log.info("Times for %s:", self)
131 log.info(" IoV : (first)%26s (last)%26s",
132 first_value.date, last_value.date)
133
134 if not hasattr(iovs.first, "insertion_time"):
135 log.info("Insertion time not available")
136 else:
137 insertion_times = [iov.insertion_time for iov in iovs]
138 log.info(" Insertion: (first)%26s (last)%26s",
139 min(insertion_times), max(insertion_times))
140
#define min(a, b)
Definition cfImp.cxx:40
#define max(a, b)
Definition cfImp.cxx:41

◆ quantize()

python.variable.DCSC_Global_Variable.quantize ( self,
lbtime,
iovs )
Needs a different quantizer. (The default DQ quantizer will do)

Reimplemented from python.variable.DCSC_Variable.

Definition at line 262 of file variable.py.

262 def quantize(self, lbtime, iovs):
263 """
264 Needs a different quantizer. (The default DQ quantizer will do)
265 """
266 iovs = [iovs_ for c, iovs_ in sorted(iovs.by_channel.items())]
267 # Custom quantizer not needed
268 result = quantize_iovs_slow_mc(lbtime, iovs)
269 return IOVSet(CodeIOV(*iov)
270 for iovs in result
271 for iov in iovs
272 if iov[0].run == iov[1].run)
273

◆ read()

python.variable.DCSC_Variable.read ( self,
query_range,
folder_base,
folder_name )
inherited
Read the relevant data from COOL for this variable

Definition at line 71 of file variable.py.

71 def read(self, query_range, folder_base, folder_name):
72 """
73 Read the relevant data from COOL for this variable
74 """
75 if folder_name.startswith("/"):
76 folder_path = folder_name
77 else:
78 # For relative folders prepend the folder_base
79 folder_path = "/".join((folder_base, folder_name))
80
81 log.info("Querying COOL folder %s", folder_path)
82
83 if config.opts.check_input_time:
84 self.fetch_args["with_time"] = True
85
86 # Massage DB access
87 if '/' in self.input_db:
88 newdbstring = self.input_db.rsplit('/', 1)[0]
89 else:
90 newdbstring = self.input_db
91 if config.opts.input_database.startswith('sqlite'):
92 self.fetch_args['database'] = config.opts.input_database
93 else:
94 self.fetch_args['database'] = ('%s/%s' % (newdbstring, config.opts.input_database))
95 if self.fetch_args:
96 log.debug("Fetching with args: %r", self.fetch_args)
97
98 iovs = fetch_iovs(folder_path, *query_range, **self.fetch_args)
99
100 # Prints even when not doing debug.
101 # TODO: fix this. Might be broken in DQUtils.logger
102 #if log.isEnabledFor(logging.DEBUG):
103 # log.debug("Dumping input IOVs:")
104 # for iov in iovs:
105 # print iov
106
107 #Remove Old TGC Chambers
108 original_length=len(list(iovs))
109 if folder_path=='/TGC/DCS/PSHVCHSTATE':
110 for i in range(original_length-1, -1, -1):
111 if list(iovs)[i].channel in range(5504,5552) or list(iovs)[i].channel in range(7362,7411):
112 iovs.pop(i)
113
114 if config.opts.check_input_time:
115 self.print_time_info(iovs)
116
117 if log.isEnabledFor(logging.INFO):
118 input_hash = hash(iovs)
119 self.input_hashes.append(input_hash)
120 log.info(" -> Input hash: % 09x (len=%i)", input_hash, len(iovs))
121
122 return iovs
123
IovVectorMap_t read(const Folder &theFolder, const SelectionCriterion &choice, const unsigned int limit=10)

Member Data Documentation

◆ caution_evaluator

python.variable.DCSC_Global_Variable.caution_evaluator = caution_evaluator

Definition at line 244 of file variable.py.

◆ evaluator

python.variable.DCSC_Variable.evaluator = evaluator
inherited

Definition at line 54 of file variable.py.

◆ fetch_args

python.variable.DCSC_Variable.fetch_args = {}
inherited

Definition at line 56 of file variable.py.

◆ folder_name

python.variable.DCSC_Variable.folder_name = folder_name
inherited

Definition at line 53 of file variable.py.

◆ input_db

str python.variable.DCSC_Variable.input_db = 'COOLOFL_DCS/CONDBR2'
inherited

Definition at line 52 of file variable.py.

◆ input_hashes

python.variable.DCSC_Variable.input_hashes = []
inherited

Definition at line 58 of file variable.py.

◆ iovs

python.variable.DCSC_Variable.iovs = iovs
inherited

Definition at line 220 of file variable.py.

◆ is_config_variable

bool python.variable.DCSC_Variable.is_config_variable = False
staticinherited

Definition at line 47 of file variable.py.

◆ is_global

bool python.variable.DCSC_Variable.is_global = False
staticinherited

Definition at line 46 of file variable.py.

◆ subdetector

python.variable.DCSC_Variable.subdetector = subdetector
inherited

Definition at line 184 of file variable.py.

◆ timewise_folder

bool python.variable.DCSC_Variable.timewise_folder = True
staticinherited

Definition at line 48 of file variable.py.


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