ATLAS Offline Software
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
python.variable.DCSC_Global_Variable Class Reference
Inheritance diagram for python.variable.DCSC_Global_Variable:
Collaboration diagram for python.variable.DCSC_Global_Variable:

Public Member Functions

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

Public Attributes

 caution_evaluator
 
 input_db
 
 folder_name
 
 evaluator
 
 fetch_args
 
 input_hashes
 
 subdetector
 
 iovs
 

Static Public Attributes

bool is_global = True
 
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.

Constructor & Destructor Documentation

◆ __init__()

def 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__()

def 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__()

def 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()

def 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()

def 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()

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

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

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()

def 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()

def 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 

◆ quantize()

def 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()

def 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 

Member Data Documentation

◆ caution_evaluator

python.variable.DCSC_Global_Variable.caution_evaluator

Definition at line 244 of file variable.py.

◆ evaluator

python.variable.DCSC_Variable.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
inherited

Definition at line 53 of file variable.py.

◆ input_db

python.variable.DCSC_Variable.input_db
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
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_Global_Variable.is_global = True
static

Definition at line 239 of file variable.py.

◆ subdetector

python.variable.DCSC_Variable.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:
read
IovVectorMap_t read(const Folder &theFolder, const SelectionCriterion &choice, const unsigned int limit=10)
Definition: openCoraCool.cxx:569
DerivationFramework::TriggerMatchingUtils::sorted
std::vector< typename R::value_type > sorted(const R &r, PROJ proj={})
Helper function to create a sorted vector from an unsorted range.
python.db.fetch_iovs
def fetch_iovs(folder_name, since=None, until=None, channels=None, tag="", what="all", max_records=-1, with_channel=True, loud=False, database=None, convert_time=False, named_channels=False, selection=None, runs=None, with_time=False, unicode_strings=False)
Definition: DQUtils/python/db.py:65
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
python.sugar.iovtype.RANGEIOV_VAL
def RANGEIOV_VAL()
Definition: iovtype.py:153
dumpHVPathFromNtuple.append
bool append
Definition: dumpHVPathFromNtuple.py:91
python.utils.AtlRunQueryTimer.timer
def timer(name, disabled=False)
Definition: AtlRunQueryTimer.py:85
python.events.quantize_iovs_slow_mc
def quantize_iovs_slow_mc(lbtime, iovs, quantizer=default_quantizing_function)
Definition: events.py:330
python.sugar.runlumi.RunLumi
RunLumi
Definition: runlumi.py:131
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:194
python.variable.CodeIOV
def CodeIOV(channel, Code)
Definition: variable.py:21
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
python.processes.powheg.ZZ.ZZ.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZ.py:18
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:108