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

Public Member Functions

 __init__ (self, name="LArCellConditionsAlg", **kw)
 initialize (self)
 execute (self)
 printChannelInfo (self, id, chid)
 finalize (self)
 output (self, out, file=None)
 readInput (self)
 IdentifiersToString (self, chid, id)
 getOfflineIDFromString (self, input)
 getOnlineIDFromString (self, input)
 search (self, input)
 printHelp (self)
virtual StatusCode reinitialize () override
virtual StatusCode start () override
virtual StatusCode stop () override
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual const char * typeName () const override
 return the std::type_info name of the underlying py-component This is used by concrete implementations to connect a python component to its C++ counter-part
virtual PyObjectself () override
 return associated python object.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Public Attributes

 includeConditions = kw.get('printConditions',False)
 includeLocation = kw.get('printLocation',False)
 includeDSPTh = kw.get('printDSPTh',False)
int nLinesPrinted = 0
int nEvts = 0
 onlineID = self._detStore.retrieve("LArOnlineID","LArOnlineID")
 offlineID = self._detStore.retrieve("CaloCell_ID","CaloCell_ID")
 bc_packing = LArBadChanBitPacking()
int noisepattern = 0
int deadpattern = 0
 noid = Identifier()
 larPedestal = None
 larMphysOverMcal = None
 larRamp = None
 larDAC2uA = None
 laruA2MeV = None
 larhvScaleCorr = None
 larDSPThr = None
 larCabling = condCont.find(eid)
 badChannels = condCont.find(eid)
 caloDDM = condCont.find(eid)

Protected Member Functions

virtual bool setPyAttr (PyObject *pyobj) override
 attach the C++ component to its python cousin
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Protected Attributes

 _detStore = PyAthena.py_svc('StoreGateSvc/DetectorStore')
 note that we are using the python logging service and that the PyAthena.Alg base class has already initialized it for us
 _condStore = PyAthena.py_svc('StoreGateSvc/ConditionStore')
str _onlErrStr
str _oflErrStr
PyObjectm_self
 Pointer to self (from the python world)

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

DataObjIDColl m_extendedExtraObjects
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

This class is an Athena algorithm although it doesn't quite behave like one.
It's purpose is to interactivly convert LAr Online/Offline identifiers and
prints the bad channel status and optionally some calibration constants for
the given channel identifier.

Definition at line 26 of file LArCellConditionsAlg.py.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ __init__()

python.LArCellConditionsAlg.LArCellConditionsAlg.__init__ ( self,
name = "LArCellConditionsAlg",
** kw )

Definition at line 34 of file LArCellConditionsAlg.py.

34 def __init__(self, name="LArCellConditionsAlg", **kw):
35
36 kw['name'] = name
37 super(LArCellConditionsAlg,self).__init__(**kw)
38
39 self.includeConditions=kw.get('printConditions',False)
40 self.includeLocation=kw.get('printLocation',False)
41 self.includeDSPTh=kw.get('printDSPTh',False)
42 self.nLinesPrinted=0
43 self.nEvts=0
44
45 return
46
47

Member Function Documentation

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

python.LArCellConditionsAlg.LArCellConditionsAlg.execute ( self)

Definition at line 106 of file LArCellConditionsAlg.py.

106 def execute(self):
107 #self.msg.info('running execute...')
108
109 #for debugging purposes:
110 #sgdump = open("sgdump.txt", 'w')
111 #self._condStore.dump(sgdump)
112 #sgdump.close()
113
114 eid=ROOT.Gaudi.Hive.currentContext().eventID()
115
116 try:
117 condCont=self._condStore.retrieve("CondCont<LArOnOffIdMapping>","LArOnOffIdMap")
118 self.larCabling=condCont.find(eid)
119 except Exception:
120 print("ERROR, failed to get LArCabling")
121 return StatusCode.Failure
122
123
124 try:
125 condCont=self._condStore.retrieve("CondCont<LArBadChannelCont>","LArBadChannel")
126 self.badChannels=condCont.find(eid)
127 except Exception:
128 print("ERROR, failed to get LArBadChannels")
129 return StatusCode.Failure
130
131 if self.includeConditions:
132 try:
133 condCont=self._condStore.retrieve("CondCont<ILArPedestal>","LArPedestal")
134 self.larPedestal=condCont.find(eid)
135 except Exception:
136 print ("WARNING: Failed to retrieve Pedestal from DetStore")
137 import traceback
138 traceback.print_exc()
139 self.larPedestal=None
140
141 try:
142 condCont=self._condStore.retrieve("CondCont<ILArMphysOverMcal>","LArMphysOverMcal")
143 self.larMphysOverMcal=condCont.find(eid)
144 except Exception:
145 print ("WARNING: Failed to retrieve MphysOverMcal from DetStore")
146 import traceback
147 traceback.print_exc()
148 self.larMphysOverMcal=None
149
150 try:
151 condCont=self._condStore.retrieve("CondCont<ILArRamp>","LArRamp")
152 self.larRamp=condCont.find(eid)
153 except Exception:
154 print ("WARNING: Failed to retrieve LArRamp from DetStore")
155 import traceback
156 traceback.print_exc()
157 self.larRamp=None
158
159 try:
160 condCont=self._condStore.retrieve("CondCont<ILArDAC2uA>","LArDAC2uA")
161 self.larDAC2uA=condCont.find(eid)
162 except Exception:
163 print ("WARNING: Failed to retrieve LArDAC2uA from DetStore")
164 import traceback
165 traceback.print_exc()
166 self.larDAC2uA=None
167
168 try:
169 condCont=self._condStore.retrieve("CondCont<ILAruA2MeV>","LAruA2MeV")
170 self.laruA2MeV=condCont.find(eid)
171 except Exception:
172 print ("WARNING: Failed to retrieve LAruA2MeV from DetStore")
173 import traceback
174 traceback.print_exc()
175 self.laruA2MeV=None
176
177 try:
178 condCont=self._condStore.retrieve("CondCont<ILArHVScaleCorr>","LArHVScaleCorr")
179 self.larhvScaleCorr=condCont.find(eid)
180 except Exception:
181 print ("WARNING: Failed to retrieve LArHVScaleCorr from DetStore")
182 import traceback
183 traceback.print_exc()
184 self.larhvScaleCorr=None
185
186 if self.includeDSPTh:
187 try:
188 self.larDSPThr=self._detStore.retrieve("LArDSPThresholdsComplete","LArDSPThresholds")
189 except Exception:
190 print ("WARNING: Failed to retrieve LArDPSThresholds from DetStore")
191 import traceback
192 traceback.print_exc()
193 self.larDSPThr=None
194
195
196 if self.includeLocation:
197 try:
198 condCont=self._condStore.retrieve("CondCont<CaloDetDescrManager>","CaloDetDescrManager")
199 self.caloDDM = condCont.find(eid)
200 except Exception:
201 print("Failed to retrieve CaloDDM")
202 return StatusCode.Failure
203
204 if self.nEvts==0:
205 self.nEvts+=1
206 #Process one 'dummy' event to make sure all DB connections get closed
207 #print ("Dummy event...")
208 return StatusCode.Success
209
210 self.onlineID.set_do_checks(True)
211 self.offlineID.set_do_checks(True)
212
213 while (1):
214 id=None
215 chid=None
216 rep_in=self.readInput() #"Enter Id >").upper().strip()
217 #rep_in="EMBA 0 0 60 2"
218 rep=rep_in.upper()
219
220 #Quit
221 if len(rep)==0 or rep=="QUIT" or rep=="EXIT" or rep==".Q": break
222
223
224 if rep.startswith("SEARCH"):
225 inp=rep_in[6:].strip()
226 starttime=time.time()
227 self.search(inp)
228 print("seach time %.1f sec" % (time.time()-starttime))
229 continue
230
231 #Help
232 if rep=="HELP":
233 self.printHelp()
234 continue
235
236
237
238 try:
239 t_int=int(rep,10)
240 t=Identifier(c_uint(t_int))
241 if self.onlineID.is_lar(t):
242 print(t.get_identifier32().get_compact()," IsLAr (online)")
243 if self.offlineID.is_lar(t):
244 print(t.get_identifier32().getCompact()," isLAr (offline)")
245 except Exception:
246 pass
247
248
249
250
251
252 if rep.startswith("ON"):
253 s=rep.find(" ")
254 if s==-1:s=0
255 chid=self.getOnlineIDFromString(rep[s:])
256 if chid is not None and self.onlineID.is_lar(chid):
257 id=self.larCabling.cnvToIdentifier(chid)
258 if id is None: id=self.noid
259 self.printChannelInfo(id,chid)
260 else:
261 print("ERROR: Could not interpret input.")
262 print("Interpretation as online ID gave:",self._onlErrStr)
263 continue
264
265 if rep.startswith("OF"):
266 s=rep.find(" ")
267 if s==-1:s=0
268 id=self.getOfflineIDFromString(rep[s:])
269 if id is not None and self.offlineID.is_lar(id):
270 chid=self.larCabling.createSignalChannelID(id)
271 self.printChannelInfo(id,chid)
272 else:
273 print("ERROR: Could not interpret input.")
274 print("Interpretation as offline ID gave:",self._oflErrStr)
275 continue
276
277 #Try to interpet input as identifiers
278 chid=self.getOnlineIDFromString(rep)
279 if chid is not None and self.onlineID.is_lar(chid):
280 id=self.larCabling.cnvToIdentifier(chid)
281 else: #try interpret at offline ID
282 id=self.getOfflineIDFromString(rep)
283 if id is not None and self.offlineID.is_lar(id):
284 chid=self.larCabling.createSignalChannelID(id)
285
286 if chid is None or id is None:
287 print( "ERROR: Could not interpret input.")
288 print( "Interpretation as online ID gave:",self._onlErrStr)
289 print( "Interpretation as offline ID gave:",self._oflErrStr)
290 continue
291
292 self.printChannelInfo(id,chid)
293 #break
294 return StatusCode.Success
295
void print(char *figname, TCanvas *c1)

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 50 of file AthAlgorithm.cxx.

51{
52 // If we didn't find any symlinks to add, just return the collection
53 // from the base class. Otherwise, return the extended collection.
54 if (!m_extendedExtraObjects.empty()) {
56 }
57 return Algorithm::extraOutputDeps();
58}
DataObjIDColl m_extendedExtraObjects

◆ finalize()

python.LArCellConditionsAlg.LArCellConditionsAlg.finalize ( self)

Definition at line 362 of file LArCellConditionsAlg.py.

362 def finalize(self):
363 self.msg.info('finalizing...')
364 return StatusCode.Success
365
366

◆ getOfflineIDFromString()

python.LArCellConditionsAlg.LArCellConditionsAlg.getOfflineIDFromString ( self,
input )

Definition at line 465 of file LArCellConditionsAlg.py.

465 def getOfflineIDFromString(self,input):
466 self._oflErrStr=""
467
468 upInput=input.upper().strip()
469 if upInput.startswith('0X'):
470 #hex-input
471 try:
472 id_int=int(upInput,16)
473 except Exception:
474 self._oflErrStr="Can't interpret hexadecimal identifier, got " + upInput
475 return None
476 id=Identifier(id_int << 32)
477 if not self.offlineID.is_lar(id):
478 self._oflErrStr="Not a LAR identifier: " + upInput
479 return None
480
481 elif upInput.isdigit():
482 try:
483 id_int=int(upInput,10)
484 except Exception:
485 self._oflErrStr="Can't interpret decimal identifier, got "+upInput
486 return None
487 id=Identifier(id_int << 32)
488
489 if not self.offlineID.is_lar(id):
490 self._oflErrStr="Not a LAR identifier: " + upInput
491 return None
492
493 else: #given as expanded ID
494 tbl=str.maketrans(r",:;/\#"," ")
495 fields=[]
496 for f in upInput.translate(tbl).split():
497 if len(f):
498 fields+=[f]
499 if len(fields)<5:
500 self._oflErrStr="Not enough fields to build offline id"
501 return None
502
503 #Format: Subdet/Side/Layer/Region/Eta/Phi
504 if fields[0].startswith("EMB"):
505 subcalo=self.offlineID.LAREM
506 bepn=1
507 elif fields[0].startswith("EMECOW"):
508 subcalo=self.offlineID.LAREM
509 bepn=2
510 elif fields[0].startswith("EMECIW"):
511 subcalo=self.offlineID.LAREM
512 bepn=3
513 elif fields[0].startswith("HE"):
514 subcalo=self.offlineID.LARHEC
515 bepn=2
516 elif fields[0].startswith("F"):
517 subcalo=self.offlineID.LARFCAL
518 bepn=2
519 else:
520 self._oflErrStr="Can't interpret subcalo field, got "+fields[0]
521 return None
522
523 if len(fields)==6:
524 sidefield=fields[1]
525 elif len(fields)==5:
526 sidefield=fields[0]
527 else:
528 self._oflErrStr="Can't interpret input: Expected 5 or 6 sub-fields, found "+str(len(fields))
529 return None
530
531 if sidefield.endswith("A") or sidefield.endswith("P") or sidefield.endswith("POS") or sidefield == '1':
532 side=1
533 elif sidefield.endswith("C") or sidefield.endswith("N") or sidefield.endswith("NEG") or sidefield == '0':
534 side=-1
535 else:
536 self._oflErrStr="Can't interpret field for detector side, got "+ sidefield
537 return None
538
539 bepn=bepn*side
540
541
542 if fields[-4].isdigit():
543 layer=int(fields[-4])
544 else:
545 ls=fields[-4]
546 if (ls=="PS" or ls.startswith("PRES")): layer=0
547 elif (ls=="FRONT" or ls.startswith("STRIP")): layer=1
548 elif ls.startswith("MID"): layer=2
549 elif ls=="BACK": layer=3
550 else:
551 self._oflErrStr="Can't interpet textual value for layer, got " + ls
552 return None
553 try:
554 region=int(fields[-3])
555 eta=int(fields[-2])
556 phi=int(fields[-1])
557 except Exception:
558 self._oflErrStr="Not-numerical input for region, eta or phi"
559 return None
560
561 #print ("Got",subcalo,bepn,layer,region,eta,phi)
562 #self.offlineID.set_do_checks(True)
563 try: #Build Region ID
564 regid=self.offlineID.region_id(subcalo,bepn,layer,region)
565 except Exception:
566 self._oflErrStr="Failed to build offline region identifier. Layer/region values inconsistent?"
567 return None
568
569 etamin=self.offlineID.eta_min(regid)
570 etamax=self.offlineID.eta_max(regid)
571
572 if (eta<etamin or eta>etamax):
573 self._oflErrStr="Eta must be between %i and %i for this region, got %i" % (etamin,etamax,eta)
574 return None
575
576 phimin=self.offlineID.phi_min(regid)
577 phimax=self.offlineID.phi_max(regid)
578 if (phi<phimin or phi>phimax):
579 self._oflErrStr="Phi must be between %i and %i for this region, got %i" % (phimin,phimax,phi)
580 return None
581
582 id=None
583 try:
584 id=self.offlineID.cell_id(regid,eta,phi)
585 #id=self.offlineID.cell_id(subcalo,bepn,layer,region,eta,phi)
586 except Exception:
587 self._oflErrStr="Failed to build offline identifier. One or more values out-of-range?"
588 id=None
589
590 #self.offlineID.set_do_checks(False)
591 return id
592
593
std::vector< std::string > split(const std::string &s, const std::string &t=":")
Definition hcg.cxx:177

◆ getOnlineIDFromString()

python.LArCellConditionsAlg.LArCellConditionsAlg.getOnlineIDFromString ( self,
input )

Definition at line 594 of file LArCellConditionsAlg.py.

594 def getOnlineIDFromString(self,input):
595 #print ("onfline id input=[%s]" % input)
596 self._onlErrStr=""
597 upInput=input.upper().strip()
598 if upInput.startswith('0X'):
599 #hex-input
600 try:
601 id_int=int(upInput,16)
602 except Exception:
603 self._onlErrStr="Can't interpret hexadecimal online identifier, got "+input
604 return None
605
606 if (id_int < 0x38000000 or id_int > 0x3bc68000):
607 self._onlErrStr="Outside of numerical range of online identifiers"
608 return None
609
610
611 id=HWIdentifier(id_int<<32)
612 if not self.onlineID.is_lar(id):
613 self._onlErrStr="Not a LAR identifier:" + input
614 return None
615
616 elif upInput.isdigit():
617 try:
618 id_int=int(upInput,10)
619 except Exception:
620 self._onlErrStr="Can't interpret decimal online identifier, got "+input
621 return None
622
623 if (id_int < 0x38000000 or id_int > 0x3bc68000):
624 self._onlErrStr="Outside of numerical range of online identifiers"
625 return None
626
627 id=HWIdentifier(id_int<<32)
628 if not self.onlineID.is_lar(id):
629 self._onlErrStr="Not a LAR identifier:" + input
630 return None
631
632 else: #given as expanded ID
633 tbl=str.maketrans(r",:;/\#"," ")
634 fields=[]
635 for f in upInput.translate(tbl).split():
636 if len(f):
637 fields+=[f]
638
639 #fields is now a 'clean array' of input
640 #Format: B/EC Side FT Slot Chan
641 if len(fields)==4:
642 sideField=fields[0]
643 elif len(fields)==5: # and len(fields[1])==1:
644 sideField=fields[1]
645 else:
646 self._onlErrStr="Expected 4 or 5 fields, found "+str(len(fields))
647 return None
648
649 if "BARREL".find(fields[0][0:6])==0:
650 bec=0
651 elif "ENDCAP".find(fields[0][0:6])==0:
652 bec=1
653 elif "EC".find(fields[0][0:2])==0:
654 bec=1
655 else:
656 self._onlErrStr="Can't interpret field for Barrel/Endcap, got "+fields[0]
657 return None
658
659 if sideField.endswith("A") or sideField=="1" or sideField.startswith("P"):
660 side=1
661 elif sideField.endswith("C") or sideField=="0" or sideField.startswith("N"):
662 side=0
663 else:
664 self._onlErrStr="Can't interpret field for detector side, got " + sideField
665 return None
666 try:
667 chan=int(fields[-1])
668 slot=int(fields[-2])
669 ft=int(fields[-3])
670 except Exception:
671 self._onlErrStr="Not-numerical input for FT slot or channel"
672 return None
673
674 if bec==0:
675 if ft<0 or ft>31:
676 self._onlErrStr="Barrel feedthrough number must be between 0 and 31, got "+str(slot)
677 return None
678 else:
679 if ft<0 or ft>24:
680 self._onlErrStr="Endcap feedthrough number must be between 0 and 24, got "+str(slot)
681 return None
682
683 if slot<1 or slot>15:
684 self._onlErrStr="Slot number must be between 1 and 15, got "+str(slot)
685 return None
686
687 if chan<0 or chan>127:
688 self._onlErrStr="Channel number must be between 0 and 127, got "+str(chan)
689 return None
690
691
692 id=None
693 #self.onlineID.set_do_checks(True)
694 try:
695 id=self.onlineID.channel_Id(bec,side,ft,slot,chan)
696 except Exception:
697 self._onlErrStr="Failed to build online identifier. One or more values out-of-range?"
698 id=None
699 #self.onlineID.set_do_checks(False)
700 return id
701
702
std::string find(const std::string &s)
return a remapped string
Definition hcg.cxx:138

◆ IdentifiersToString()

python.LArCellConditionsAlg.LArCellConditionsAlg.IdentifiersToString ( self,
chid,
id )

Definition at line 389 of file LArCellConditionsAlg.py.

389 def IdentifiersToString(self,chid,id):
390 onlName="None"
391 oflName="None"
392 if chid is not None:
393 onlName=str(chid.get_identifier32().get_compact())+" " #+str(chid.get_compact())+" "
394 #onlName=self.onlineID.channel_name(chid)
395 bec=self.onlineID.barrel_ec(chid)
396 side=self.onlineID.pos_neg(chid)
397 ft=self.onlineID.feedthrough(chid)
398 slot=self.onlineID.slot(chid)
399 chan=self.onlineID.channel(chid)
400 ftname=self.onlineID.feedthrough_name(chid)
401
402 if bec==0:
403 onlName+="[BARREL/"
404 else:
405 onlName+="[ENDCAP/"
406
407 if side==0:
408 onlName+="C/"
409 else:
410 onlName+="A/"
411
412 onlName+="FT "+str(ft)+"("+ftname+")/Slot "+str(slot)+"/Chan "+str(chan)
413
414 try:
415 calibLines=self.larCabling.calibSlotLine(chid)
416 if (len(calibLines)):
417 onlName+="/CL"
418 for calib_chid in calibLines:
419 onlName+=" "+str(self.onlineID.channel(calib_chid))
420 except Exception:
421 pass
422
423 onlName+=']'
424
425 if id is not None:
426
427 oflName=str(id.get_identifier32().get_compact()) + " "# +str(id.get_compact())+" "
428
429 if (id==self.noid):#0xFFFFFFFF):
430 oflName += "[disconnected]"
431 else:
432 subcalo=self.offlineID.sub_calo(id)
433 side=self.offlineID.pos_neg(id)
434 layer=self.offlineID.sampling(id)
435 region=self.offlineID.region(id)
436 eta=self.offlineID.eta(id)
437 phi=self.offlineID.phi(id)
438
439 if subcalo is self.offlineID.LAREM:
440 if abs(side)==1:
441 oflName+="[EMB"
442 elif abs(side)==2:
443 oflName+="[EMECOW"
444 elif abs(side)==3:
445 oflName+="[EMECIW"
446 else:
447 oflName+="[UNKNOWN"
448 elif subcalo is self.offlineID.LARHEC:
449 oflName+="[HEC"
450 elif subcalo is self.offlineID.LARFCAL:
451 oflName+="[FCAL"
452 else:
453 oflName+="[UNKNOWN"
454
455 oflName+="/"
456 if side>0:
457 oflName+="A/"
458 else:
459 oflName+="C/"
460
461 oflName+="Lay "+str(layer)+"/Reg "+str(region)+"/Eta "+str(eta)+"/Phi "+str(phi) +"]"
462 return onlName+" = "+oflName
463
464
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method

◆ initialize()

python.LArCellConditionsAlg.LArCellConditionsAlg.initialize ( self)

Definition at line 48 of file LArCellConditionsAlg.py.

48 def initialize(self):
49
52
53 # Get DetectorStore...
54
55 self._detStore = PyAthena.py_svc('StoreGateSvc/DetectorStore')
56 if self._detStore is None:
57 self.msg.error("Failed to get DetectorStore")
58 return StatusCode.Failure
59
60 self._condStore = PyAthena.py_svc('StoreGateSvc/ConditionStore')
61 if (self._condStore is None):
62 self.msg.error("Failed to get ConditionStore")
63 return StatusCode.Failure
64
65 # Get LArOnlineID helper class
66 self.onlineID=self._detStore.retrieve("LArOnlineID","LArOnlineID")
67 if self.onlineID is None:
68 self.msg.error("Failed to get LArOnlineID")
69 return StatusCode.Failure
70
71 # Get CaloCell_ID
72 self.offlineID=self._detStore.retrieve("CaloCell_ID","CaloCell_ID")
73 if self.offlineID is None:
74 self.msg.error("Failed to get CaloCell_ID")
75 return StatusCode.Failure
76
77 self.bc_packing=LArBadChanBitPacking()
78
79 self.noisepattern=0
80 for n in ("lowNoiseHG","highNoiseHG","unstableNoiseHG","lowNoiseMG","highNoiseMG","unstableNoiseMG","lowNoiseLG","highNoiseLG","unstableNoiseLG","sporadicBurstNoise"):
81 stat=self.bc_packing.enumName(n)
82 if stat[0]:
83 self.noisepattern |= 1<<stat[1]
84
85 self.deadpattern=0
86 for n in ("deadReadout","deadPhys","almostDead"):
87 stat=self.bc_packing.enumName(n)
88 if stat[0]:
89 self.deadpattern |= 1<<stat[1]
90
91 self.noid=Identifier()
92
93
94
95 self.larPedestal=None
96 self.larMphysOverMcal=None
97 self.larRamp=None
98 self.larDAC2uA=None
99 self.laruA2MeV=None
100 self.larhvScaleCorr=None
101 self.larDSPThr=None
102
103 return StatusCode.Success
104
105
void initialize()

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ msg()

MsgStream & AthCommonMsg< Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ output()

python.LArCellConditionsAlg.LArCellConditionsAlg.output ( self,
out,
file = None )

Definition at line 367 of file LArCellConditionsAlg.py.

367 def output(self,out,file=None):
368 if file is not None: file.write(out+"\n")
369 print(out)
370 self.nLinesPrinted=self.nLinesPrinted+1
371 if self.nLinesPrinted%40 == 0:
372 c=input("Press 'q' to quit, 'a' for all ...")
373 if c.upper().startswith("Q"):
374 return True
375 if c.upper().startswith("A"):
376 self.nLinesPrinted=0xFFFFFFFF
377 return False
378
379

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ printChannelInfo()

python.LArCellConditionsAlg.LArCellConditionsAlg.printChannelInfo ( self,
id,
chid )

Definition at line 296 of file LArCellConditionsAlg.py.

296 def printChannelInfo(self,id,chid):
297 bc=self.badChannels.status(chid)
298 print(self.IdentifiersToString(chid,id)+ " " + self.bc_packing.stringStatus(bc))
299 if id!=self.noid: #Don't try to show anything more for disconnected channels
300 if self.includeLocation:
301 try:
302 #idHash=self.offlineID.calo_cell_hash(id)
303 theDDE=self.caloDDM.get_element(id)
304 print("raw Eta= %.3f, Phi=%.3f r=%.3f" % (theDDE.eta_raw(),theDDE.phi_raw(),theDDE.r_raw()))
305 print("raw x=%.3f, y=%.3f, z=%.3f" % (theDDE.x(),theDDE.y(),theDDE.z_raw()))
306 except Exception as e:
307 print(e)
308
309 if self.includeConditions:
310 if self.larDAC2uA is not None:
311 print("DAC2uA: %.3f" % self.larDAC2uA.DAC2UA(chid), end="")
312 else:
313 print("DAC2uA: None",end="")
314
315 if self.laruA2MeV is not None:
316 print(" uA2MeV: %.3f" % self.laruA2MeV.UA2MEV(chid),end="")
317 else:
318 print(" uA2MeV: None",end="")
319
320 if self.larhvScaleCorr is not None:
321 print(" HVScaleCorr: %.3f" % self.larhvScaleCorr.HVScaleCorr(chid))
322 else:
323 print(" HVScaleCorr: None")
324
325 for gain,gainname in ((0,"HG"),(1,"MG"),(2,"LG")):
326 print(gainname,end="")
327 if self.larPedestal is not None:
328 ped=self.larPedestal.pedestal(chid,gain)
329 pedRMS=self.larPedestal.pedestalRMS(chid,gain)
330 else:
331 ped=-9999
332 pedRMS=-9999
333
334 print (" Ped: %.3f " % ped,end="")
335 print (" PedRMS: %.3f" % pedRMS,end="")
336
337 if self.larRamp is not None:
338 ramp=self.larRamp.ADC2DAC(chid,gain)
339 if len(ramp)>1:
340 print(" Ramp: %.3f" % ramp[1],end="")
341 else:
342 print(" Ramp: Empty",end="")
343 else:
344 print(" Ramp: None",end="")
345
346 if self.larMphysOverMcal is not None:
347 mpmc=self.larMphysOverMcal.MphysOverMcal(chid,gain)
348 print (" MphysOverMcal: %.5f" % mpmc,end="")
349 else:
350 print (" MphysOverMcal: None",end="")
351 print ("")
352 if self.includeDSPTh:
353 if self.larDSPThr is not None:
354 tQThr=self.larDSPThr.tQThr(chid)
355 samThr=self.larDSPThr.samplesThr(chid)
356 trgSumTrh=self.larDSPThr.trigSumThr(chid)
357 print("DSP Thresholds: tQ:%f, samples:%f, trigSum:%f" % (tQThr,samThr,trgSumTrh))
358 else:
359 print("DSP Thresholds: None")
360
361

◆ printHelp()

python.LArCellConditionsAlg.LArCellConditionsAlg.printHelp ( self)

Definition at line 911 of file LArCellConditionsAlg.py.

911 def printHelp(self):
912 print( "First mode of operation:")
913 print( "Enter a channel identifier (online or offline). Allowed forms are:")
914 print( " Decimal or hexadecimal compact identifier, eg. 'online 0x39000000'")
915 print( " Expanded identifer like")
916 print( " 'online Bar C 1 1 1' (Barrel C FT 1, Slot 1 channel 1)")
917 print( " 'offline FCAL A 1 0 1 1' (FCAL A, Layer 1, Region 0, Eta 1 Phi 1)")
918 print( " Offline ids must start with one of the following subdetectors names:")
919 print( " EMB, EMECIW, EMECOW, HEC, FCAL")
920 print( " Online ids must start with either 'BAR' or 'END'")
921 print( " If the prefix 'online' or 'offline' is omitted both are tried.")
922 print( "\nSecond mode of operation:")
923 print( "Search <keyword> <keyword> ..")
924 print( " Keywords are: 'barrel', 'endcap', A', 'C', or any bad-channel type")
925 print( " Keywords with arguments are: 'eta', 'phi', 'layer', 'FT', 'Slot' and 'CL'")
926 print( "\nType 'quit' to terminate'")
927
928
void printHelp()

◆ readInput()

python.LArCellConditionsAlg.LArCellConditionsAlg.readInput ( self)

Definition at line 380 of file LArCellConditionsAlg.py.

380 def readInput(self):
381 self.nLinesPrinted=0
382 try:
383 rep=input("Enter Id >")
384 except Exception:
385 return ""
386
387 return rep.strip()
388

◆ reinitialize()

StatusCode Alg::reinitialize ( )
overridevirtualinherited

Definition at line 67 of file PyAthenaAlg.cxx.

68{
69 ATH_MSG_INFO("Re-Initializing " << name() << "...");
70 return PyAthena::callPyMethod( m_self, "sysReinitialize" );
71}
#define ATH_MSG_INFO(x)
PyObject * m_self
Pointer to self (from the python world)
Definition PyAthenaAlg.h:96

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ search()

python.LArCellConditionsAlg.LArCellConditionsAlg.search ( self,
input )

Definition at line 703 of file LArCellConditionsAlg.py.

703 def search(self,input):
704
705 subcalo=None
706 eta=None
707 phi=None
708 bec=None
709 side=None
710 ft=None
711 slot=None
712 bctypes=0
713 outname=None
714 outfile=None
715 layer=None
716 cl=None
717 tbl=str.maketrans(",:;#="," ")
718 tokens=[]
719 for t in input.translate(tbl).split():
720 if len(t):
721 if (len(tokens)>0) and not tokens[-1].isalpha() and not t[0].isalpha():
722 tokens[-1]+=t
723 else:
724 tokens+=[t]
725
726 def interpretToken(input):
727 pos=input[1:].find("+-")
728 if pos==-1:
729 pos=input[1:].find("-")
730 if pos==-1:
731 uplow=None
732 pos=len(input)-1
733 else:
734 uplow=True
735 else:
736 uplow=False
737
738
739 pos=pos+1
740 try:
741 e1=float(input[:pos])
742 except Exception:
743 print("Expected numerical value, got",input[:pos] )
744 return None
745
746 if uplow is not None:
747 try:
748 e2=float(input[pos+1:])
749 except Exception:
750 print("Expected numerical value after '+-', got",input[pos+1:])
751 return None
752
753
754 if uplow:
755 ret=[e1,e2]
756 else:
757 ret=[e1-e2,e1+e2]
758 else:
759 ret=[e1-0.025,e1+0.025]
760 ret.sort()
761 return ret
762
763 i=0
764 while (i<len(tokens)):
765 if tokens[i].upper()=="OUT" and i+1<len(tokens):
766 outname=tokens[i+1]
767 i=i+1
768 elif tokens[i].upper()=="ETA" and i+1<len(tokens):
769 eta=interpretToken(tokens[i+1])
770 i=i+1
771 elif tokens[i].upper()=="LAYER" and i+1<len(tokens):
772 layer=interpretToken(tokens[i+1])
773 i=i+1
774 elif tokens[i].upper()=="PHI" and i+1<len(tokens):
775 phi=interpretToken(tokens[i+1])
776 i=i+1
777 elif tokens[i].upper()=="FT" and i+1<len(tokens):
778 ft=interpretToken(tokens[i+1])
779 i=i+1
780 elif tokens[i].upper()=="SLOT" and i+1<len(tokens):
781 slot=interpretToken(tokens[i+1])
782 i=i+1
783 elif tokens[i].upper()=="BAD":
784 bctypes=0xFFFFFFFF
785 elif tokens[i].upper()=="NOISE" or tokens[i].upper()=="NOISY":
786 bctypes |= self.noisepattern
787 elif tokens[i].upper()=="DEAD":
788 bctypes |= self.deadpattern
789 elif tokens[i].upper().startswith("BAR"):
790 bec=0
791 elif tokens[i].upper().startswith("END"):
792 bec=1
793 elif tokens[i].upper()=="EM":
794 subcalo=self.offlineID.LAREM
795 elif tokens[i].upper()=="HEC":
796 subcalo=self.offlineID.LARHEC
797 elif tokens[i].upper()=="FCAL":
798 subcalo=self.offlineID.LARFCAL
799 elif tokens[i].upper()=="A" or tokens[i]=="P":
800 side=1
801 elif tokens[i].upper()=="C" or tokens[i]=="N":
802 side=0
803 elif tokens[i].upper()=="CL" and tokens[i+1].isdigit():
804 cl=int(tokens[i+1])
805 i=i+1
806 else:
807 stat=self.bc_packing.enumName(tokens[i])
808 if stat[0]:
809 bctypes |= 1<<stat[1]
810 else:
811 print("Unknown Keyword",tokens[i] )
812 i=i+1
813
814 print("Searching for cells with ",end="")
815 if eta is not None: print(" %.3f <= eta <= %.3f" % (eta[0],eta[1]),end="")
816 if phi is not None: print(" %.3f <= phi <= %.3f" % (phi[0],phi[1]),end="")
817 if layer is not None: print(" %.0f <= layer <= %.0f" % (layer[0],layer[1]),end="")
818
819 if bec==0: print(" Barrel",end="")
820 if bec==1: print(" Endcap",end="")
821
822 if side==1: print(" A Side",end="")
823 if side==0: print(" C Side",end="")
824
825 if ft is not None: print(" %.0f <= FT <= %.0f" % (ft[0],ft[1]),end="")
826 if slot is not None: print(" %.0f <= Slot <= %.0f" % (slot[0],slot[1]),end="")
827
828 if bctypes!=0:
829 print (" "+self.bc_packing.stringStatus(LArBadChannel(bctypes)),end="")
830
831 if phi is None and eta is None and bctypes==0 and ft is None and side is None and bec is None and slot is None and layer and subcalo is None:
832 print ("No search criteria set!")
833 return
834
835
836 if cl is not None: print(" CL:",cl,end="")
837
838 print(os.linesep)
839
840 if not self.includeLocation and (eta is not None or phi is not None):
841 print("ERROR: GeoModel not activated, run with -g option")
842 return
843
844 if outname is not None:
845 try:
846 outfile=open(outname,"w")
847 except IOError:
848 print ("ERROR failed to open file",outname)
849 import traceback
850 traceback.print_exc()
851 outfile=None
852 outname=None
853
854
855 #for idH in range(self.offlineID.calo_cell_hash_max()): //This one includes also tile cells
856 for idH in range(182468):
857 idHash=IdentifierHash(idH)
858 chid=self.larCabling.createSignalChannelIDFromHash(idHash)
859
860 #print ("Loop hash=%i , on: %x , off: %x" % (idH, chid.get_identifier32().get_compact(), self.offlineID.cell_id(idHash).get_identifier32().get_compact()))
861 #Check Bad-Channel Status
862 bcstat=self.badChannels.status(chid)
863 if bctypes!=0:
864 bcw=bcstat.packedData()
865 if bcw & bctypes == 0: continue
866
867
868 #Check Online Id
869 if bec is not None and bec!=self.onlineID.barrel_ec(chid): continue
870 if side is not None and side!=self.onlineID.pos_neg(chid): continue
871 if ft is not None and (self.onlineID.feedthrough(chid)<ft[0] or self.onlineID.feedthrough(chid)>ft[1]): continue
872 if slot is not None and (self.onlineID.slot(chid)<slot[0] or self.onlineID.slot(chid)>slot[1]): continue
873
874 if cl is not None:
875 try:
876 calibLines=self.larCabling.calibSlotLine(chid)
877 keep=False
878 for foundCLs in calibLines:
879 if self.onlineID.channel(foundCLs) == cl:
880 keep=True
881 break
882
883 if not keep: continue
884
885 except Exception:
886 print ("Failed to get calib line:")
887 import traceback
888 traceback.print_exc()
889 continue
890
891 #Check geometrical location
892 ep=""
893 if eta is not None or phi is not None:
894 theDDE=self.caloDDM.get_element(idHash)
895 e=theDDE.eta()
896 p=theDDE.phi()
897 if eta is not None and (e<eta[0] or e>eta[1]): continue
898 if phi is not None and (p<phi[0] or p>phi[1]): continue
899 ep=" eta=%.3f phi=%.3f " % (e,p)
900
901 id=self.offlineID.cell_id(idHash)
902 if subcalo is not None and subcalo!=self.offlineID.sub_calo(id): continue
903 if layer is not None and (self.offlineID.sampling(id)<layer[0] or self.offlineID.sampling(id)>layer[1]): continue
904
905 br=self.output(self.IdentifiersToString(chid,id) + " " +ep+self.bc_packing.stringStatus(bcstat),outfile)
906 if br: break
907
908 if outfile is not None: outfile.close()
909 return
910
int upper(int c)
This is a "hash" representation of an Identifier.
void search(TDirectory *td, const std::string &s, std::string cwd, node *n)
recursive directory search for TH1 and TH2 and TProfiles
Definition hcg.cxx:739

◆ self()

virtual PyObject * PyAthena::Alg::self ( )
inlineoverridevirtualinherited

return associated python object.

BORROWED reference.

Implements IPyComponent.

Definition at line 71 of file PyAthenaAlg.h.

71{ return m_self; }

◆ setPyAttr()

bool Alg::setPyAttr ( PyObject * pyobj)
overrideprotectedvirtualinherited

attach the C++ component to its python cousin

Implements IPyComponent.

Definition at line 143 of file PyAthenaAlg.cxx.

144{
145 // now we tell the PyObject which C++ object it is the cousin of.
146 RootUtils::PyGILStateEnsure ensure;
147 PyObject* pyobj = TPython::CPPInstance_FromVoidPtr
148 ( (void*)this, this->typeName() );
149 if ( !pyobj ) {
150 PyErr_Clear();
151 // try PyAthena::Alg
152 pyobj = TPython::CPPInstance_FromVoidPtr ((void*)this, "PyAthena::Alg");
154 ("could not dyncast component [" << name() << "] to a python "
155 << "object of type [" << this->typeName() << "] (probably a missing "
156 << "dictionary)" << endmsg
157 << "fallback to [PyAthena::Alg]...");
158 }
159 if ( !pyobj ) {
160 PyErr_Clear();
161 ATH_MSG_WARNING("Could not dyncast component ["
162 << name() << "] to a pyobject of type ["
163 << this->typeName() << "]");
164 } else {
165 if ( -1 == PyObject_SetAttrString(o, "_cppHandle", pyobj) ) {
166 PyErr_Clear();
168 ("Could not attach C++ handle [" << name() << "] to its python "
169 << "cousin !");
170 if ( -1 == PyObject_SetAttrString(o, "_cppHandle", Py_None) ) {
171 PyErr_Clear();
173 ("could not attach a dummy C++ handle [" << name() << "] to its "
174 "python cousin !");
175 }
176 } else {
177 return true;
178 }
179 }
180 return false;
181}
#define endmsg
#define ATH_MSG_WARNING(x)
_object PyObject
virtual const char * typeName() const override
return the std::type_info name of the underlying py-component This is used by concrete implementation...

◆ start()

StatusCode Alg::start ( )
overridevirtualinherited

Definition at line 74 of file PyAthenaAlg.cxx.

75{
76 return PyAthena::callPyMethod( m_self, "sysStart" );
77}

◆ stop()

StatusCode Alg::stop ( )
overridevirtualinherited

Definition at line 80 of file PyAthenaAlg.cxx.

81{
82 return PyAthena::callPyMethod( m_self, "sysStop" );
83}

◆ sysInitialize()

StatusCode Alg::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthAlgorithm.

Definition at line 105 of file PyAthenaAlg.cxx.

106{
107 ServiceHandle<IPyComponentMgr> pyMgr
108 ( "PyAthena::PyComponentMgr/PyComponentMgr", name() );
109 if ( !pyMgr.retrieve().isSuccess() ) {
110 ATH_MSG_ERROR("Could not retrieve service [" << pyMgr.typeAndName()
111 << "] !!");
112 return StatusCode::FAILURE;
113 }
114
115 // first retrieve our python object cousin...
116 m_self = pyMgr->pyObject( this );
117
118 if ( m_self == Py_None ) {
119 ATH_MSG_ERROR("Wrapped PyObject is NONE !");
120 return StatusCode::FAILURE;
121 }
122
123 // re-route to usual sysInit...
125}
#define ATH_MSG_ERROR(x)
virtual StatusCode sysInitialize() override
Override sysInitialize.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ typeName()

const char * Alg::typeName ( ) const
overridevirtualinherited

return the std::type_info name of the underlying py-component This is used by concrete implementations to connect a python component to its C++ counter-part

Implements IPyComponent.

Definition at line 132 of file PyAthenaAlg.cxx.

133{
134 static const std::string tname = System::typeinfoName(typeid(*this));
135 return tname.c_str();
136}

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ _condStore

python.LArCellConditionsAlg.LArCellConditionsAlg._condStore = PyAthena.py_svc('StoreGateSvc/ConditionStore')
protected

Definition at line 60 of file LArCellConditionsAlg.py.

◆ _detStore

python.LArCellConditionsAlg.LArCellConditionsAlg._detStore = PyAthena.py_svc('StoreGateSvc/DetectorStore')
protected

note that we are using the python logging service and that the PyAthena.Alg base class has already initialized it for us

Definition at line 55 of file LArCellConditionsAlg.py.

◆ _oflErrStr

python.LArCellConditionsAlg.LArCellConditionsAlg._oflErrStr
protected

Definition at line 274 of file LArCellConditionsAlg.py.

◆ _onlErrStr

python.LArCellConditionsAlg.LArCellConditionsAlg._onlErrStr
protected

Definition at line 262 of file LArCellConditionsAlg.py.

◆ badChannels

python.LArCellConditionsAlg.LArCellConditionsAlg.badChannels = condCont.find(eid)

Definition at line 126 of file LArCellConditionsAlg.py.

◆ bc_packing

python.LArCellConditionsAlg.LArCellConditionsAlg.bc_packing = LArBadChanBitPacking()

Definition at line 77 of file LArCellConditionsAlg.py.

◆ caloDDM

python.LArCellConditionsAlg.LArCellConditionsAlg.caloDDM = condCont.find(eid)

Definition at line 199 of file LArCellConditionsAlg.py.

◆ deadpattern

int python.LArCellConditionsAlg.LArCellConditionsAlg.deadpattern = 0

Definition at line 85 of file LArCellConditionsAlg.py.

◆ includeConditions

python.LArCellConditionsAlg.LArCellConditionsAlg.includeConditions = kw.get('printConditions',False)

Definition at line 39 of file LArCellConditionsAlg.py.

◆ includeDSPTh

python.LArCellConditionsAlg.LArCellConditionsAlg.includeDSPTh = kw.get('printDSPTh',False)

Definition at line 41 of file LArCellConditionsAlg.py.

◆ includeLocation

python.LArCellConditionsAlg.LArCellConditionsAlg.includeLocation = kw.get('printLocation',False)

Definition at line 40 of file LArCellConditionsAlg.py.

◆ larCabling

python.LArCellConditionsAlg.LArCellConditionsAlg.larCabling = condCont.find(eid)

Definition at line 118 of file LArCellConditionsAlg.py.

◆ larDAC2uA

python.LArCellConditionsAlg.LArCellConditionsAlg.larDAC2uA = None

Definition at line 98 of file LArCellConditionsAlg.py.

◆ larDSPThr

python.LArCellConditionsAlg.LArCellConditionsAlg.larDSPThr = None

Definition at line 101 of file LArCellConditionsAlg.py.

◆ larhvScaleCorr

python.LArCellConditionsAlg.LArCellConditionsAlg.larhvScaleCorr = None

Definition at line 100 of file LArCellConditionsAlg.py.

◆ larMphysOverMcal

python.LArCellConditionsAlg.LArCellConditionsAlg.larMphysOverMcal = None

Definition at line 96 of file LArCellConditionsAlg.py.

◆ larPedestal

python.LArCellConditionsAlg.LArCellConditionsAlg.larPedestal = None

Definition at line 95 of file LArCellConditionsAlg.py.

◆ larRamp

python.LArCellConditionsAlg.LArCellConditionsAlg.larRamp = None

Definition at line 97 of file LArCellConditionsAlg.py.

◆ laruA2MeV

python.LArCellConditionsAlg.LArCellConditionsAlg.laruA2MeV = None

Definition at line 99 of file LArCellConditionsAlg.py.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_self

PyObject* PyAthena::Alg::m_self
protectedinherited

Pointer to self (from the python world)

Definition at line 96 of file PyAthenaAlg.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ nEvts

int python.LArCellConditionsAlg.LArCellConditionsAlg.nEvts = 0

Definition at line 43 of file LArCellConditionsAlg.py.

◆ nLinesPrinted

int python.LArCellConditionsAlg.LArCellConditionsAlg.nLinesPrinted = 0

Definition at line 42 of file LArCellConditionsAlg.py.

◆ noid

python.LArCellConditionsAlg.LArCellConditionsAlg.noid = Identifier()

Definition at line 91 of file LArCellConditionsAlg.py.

◆ noisepattern

int python.LArCellConditionsAlg.LArCellConditionsAlg.noisepattern = 0

Definition at line 79 of file LArCellConditionsAlg.py.

◆ offlineID

python.LArCellConditionsAlg.LArCellConditionsAlg.offlineID = self._detStore.retrieve("CaloCell_ID","CaloCell_ID")

Definition at line 72 of file LArCellConditionsAlg.py.

◆ onlineID

python.LArCellConditionsAlg.LArCellConditionsAlg.onlineID = self._detStore.retrieve("LArOnlineID","LArOnlineID")

Definition at line 66 of file LArCellConditionsAlg.py.


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