Public Member Functions | |
def | initTagList |
def | check |
def | SaveReadoutData |
def | __init__ |
def | initialize |
def | addTag |
def | getTag |
def | tagIt |
def | reset |
def | config |
def | save |
def | execute |
def | finalPrint |
def | finalize |
Public Attributes | |
cableSvc |
Add AD Channel Stats to UserData
Definition at line 11 of file ADChannelData.py.
def UserTagging::UserData::ADChannelData::ADChannelData::initTagList | ( | self | ) |
Child Class should overwrite this function. Child Class should initialize UserTag and UserData here example adding Tag: self.addTag('AD' , '/Event/UserTag/Detector/AD') or alternative (pythonic) syntax: self.tagSet.AD = Tag('/Event/UserTag/Detector/AD') example adding a Dummy Tag and UserData: self.addTag('Dummy', '' ).addData('ADReadoutData', '/Event/UserData/AD/ADReadoutData' ).addInt('nChannels', 'nHits' ).addFloat('chargeSum') or alternative (pythonic) syntax: self.tagSet.Dummy = Tag() self.tagSet.Dummy.dataSet.ADReadoutData = Data('/Event/UserData/AD/ADReadoutData') paraSet = self.tagSet.Dummy.dataSet.ADReadoutData.paraSet paraSet.nChannels = Int() paraSet.nHits = Int() paraSet.chargeSum = Float()
Reimplemented from UserTagging::UserTaggingAlg::UserTaggingAlg.
Definition at line 15 of file ADChannelData.py.
00015 : 00016 00017 # Chao recommends method chaning since it's less typing and he is lazy. 00018 # A tag with no path (default to '') means no tag HeaderObject will be created 00019 # but this dummy tag is still need in order to manage the UserData 00020 # 00021 self.addTag('Dummy', '' 00022 ).addData('ADChannelData', '/Event/UserData/AD/ADChannelData' 00023 ).addIntArray('board', 'connector', 'ring', 'column', 'hitCount' 00024 ).addFloatArray('adc0', 'preAdc0', 'charge0', 'tdc0', 'adcMax', 'charge') 00025 00026 # or use Brett's preferred pythonic syntax: 00027 # 00028 # dummyTag = self.tagSet.Dummy = Tag() 00029 # myData = dummyTag.dataSet.ADChannelData = Data('/Event/UserData/AD/ADChannelData') 00030 # 00031 # myData.paraSet.board = IntArray() 00032 # myData.paraSet.connector = IntArray() 00033 # myData.paraSet.ring = IntArray() 00034 # myData.paraSet.column = IntArray() 00035 # myData.paraSet.hitCount = IntArray() 00036 # 00037 # myData.paraSet.adc0 = FloatArray() 00038 # myData.paraSet.preAdc0 = FloatArray() 00039 # myData.paraSet.charge0 = FloatArray() 00040 # myData.paraSet.tdc0 = FloatArray() 00041 # myData.paraSet.adcMax = FloatArray() 00042 # myData.paraSet.charge = FloatArray() 00043 00044 self.cableSvc = self.svc('ICableSvc','StaticCableSvc') 00045 if self.cableSvc == None: 00046 self.error("Failed to get StaticCableSvc") 00047 return FAILURE 00048 00049 00050 # ---------------------------------------- def check(self, evt):
def UserTagging::UserData::ADChannelData::ADChannelData::check | ( | self, | ||
evt | ||||
) |
Child Class should overwrie this function
Reimplemented from UserTagging::UserTaggingAlg::UserTaggingAlg.
Definition at line 51 of file ADChannelData.py.
00051 : 00052 ADTag = evt['/Event/UserTag/Detector/AD'] 00053 if not ADTag: 00054 return 00055 00056 readoutHdr = evt['/Event/Readout/ReadoutHeader'] 00057 if not readoutHdr: 00058 self.warning('cannot find readoutHdr') 00059 return 00060 self.SaveReadoutData(readoutHdr) 00061 00062 self.tagIt('Dummy') 00063 00064 # ---------------------------------------- def SaveReadoutData(self, readoutHdr):
def UserTagging::UserData::ADChannelData::ADChannelData::SaveReadoutData | ( | self, | ||
readoutHdr | ||||
) |
Definition at line 65 of file ADChannelData.py.
00065 : 00066 00067 myData = self.getTag('Dummy').getData('ADChannelData') 00068 00069 svcMode = gbl.ServiceMode(readoutHdr.context(), 0) 00070 daqCrate = readoutHdr.daqCrate() 00071 pmtCrate = daqCrate.asPmtCrate(); 00072 00073 nChannels = 0 00074 for channel in pmtCrate.channelReadouts(): 00075 nChannels += 1 00076 channelId = channel.channelId() 00077 board = channelId.board() 00078 connector = channelId.connector() 00079 pmtId = self.cableSvc.adPmtSensor(channelId, svcMode) 00080 ring = pmtId.ring() 00081 column = pmtId.column() 00082 00083 myData.append('board', board 00084 ).append('connector', connector 00085 ).append('ring', ring 00086 ).append('column', column 00087 ).append('hitCount', channel.hitCount()) 00088 00089 # or use Brett's preferred pythonic syntax: 00090 # myData.paraSet.board.append(board) 00091 # myData.paraSet.connector.append(connector) 00092 # myData.paraSet.ring.append(ring) 00093 # myData.paraSet.column.append(column) 00094 # myData.paraSet.hitCount.append(channel.hitCount()) 00095 00096 adc0 = channel.adc(0) 00097 preAdc0 = channel.preAdcAvg(0) 00098 if channel.isHighGainAdc(0): 00099 charge0 = adc0 - preAdc0 00100 else: 00101 charge0 = (adc0 - preAdc0) * 20 00102 tdc0 = channel.tdc(0) 00103 00104 myData.append('adc0', adc0 00105 ).append('preAdc0', preAdc0 00106 ).append('charge0', charge0 00107 ).append('tdc0', tdc0) 00108 00109 adcMax = adc0 00110 charge = charge0 00111 for i in range(1, channel.hitCount()): 00112 adc = channel.adc(i) 00113 preAdc = channel.preAdcAvg(i) 00114 00115 if channel.isHighGainAdc(i): 00116 if (adc > adcMax): adcMax = adc 00117 charge += (adc - preAdc) 00118 else: 00119 if (adc*20 > adcMax): adcMax = adc*20 00120 charge += (adc - preAdc) * 20 00121 00122 myData.append('adcMax', adcMax 00123 ).append('charge', charge) 00124 00125 # you can print all branches of UserData 00126 # myData.dump() 00127 # or an individual branch 00128 # print 'charge: ', myData.get('charge') 00129 00130 ##### Job Configuration for nuwa.py ########################################
def UserTagging::UserTaggingAlg::UserTaggingAlg::__init__ | ( | self, | ||
name | ||||
) | [inherited] |
Definition at line 13 of file UserTaggingAlg.py.
00014 : 00015 00016 UserTaggingAlg 00017 | 00018 | 00019 ---------------- 00020 | | 00021 | | 00022 tagSet 'other members ...' |
def UserTagging::UserTaggingAlg::UserTaggingAlg::initialize | ( | self | ) | [inherited] |
User need not implement, but if so, you must call this method on the super-class
Definition at line 23 of file UserTaggingAlg.py.
def UserTagging::UserTaggingAlg::UserTaggingAlg::addTag | ( | self, | ||
name, | ||||
path = '' | ||||
) | [inherited] |
Add one UserTag by name, provide a path to cause the tag object to be sent through I/O. Can also do: self.tagSet.<name> = Models.Tag([path])
Definition at line 72 of file UserTaggingAlg.py.
00072 : return status 00073 00074 # self.tagSet = {} 00075 self.tagSet = TagSet() 00076 00077 status = self.initTagList() 00078 if status == FAILURE: 00079 self.error('error in initTagList() function') 00080 return FAILURE 00081 00082 self.execNumber = 1 00083
def UserTagging::UserTaggingAlg::UserTaggingAlg::getTag | ( | self, | ||
name | ||||
) | [inherited] |
Look the UserTagHeader a tag by name. Can also do: mytag = self.tagSet.<name>
Definition at line 84 of file UserTaggingAlg.py.
00087 : 00088 ''' 00089 Child Class should overwrite this function. 00090 Child Class should initialize UserTag and UserData here 00091 00092 example adding Tag: 00093 self.addTag('AD' , '/Event/UserTag/Detector/AD') 00094 or alternative (pythonic) syntax:
def UserTagging::UserTaggingAlg::UserTaggingAlg::tagIt | ( | self, | ||
name | ||||
) | [inherited] |
Tag the named UserTag. Can also do: self.tagSet.<name>.tagIt()
Definition at line 95 of file UserTaggingAlg.py.
00095 : 00096 self.tagSet.AD = Tag('/Event/UserTag/Detector/AD') 00097 00098 example adding a Dummy Tag and UserData: 00099 self.addTag('Dummy', '' 00100 ).addData('ADReadoutData', '/Event/UserData/AD/ADReadoutData' 00101 ).addInt('nChannels', 'nHits' 00102 ).addFloat('chargeSum') 00103 00104 or alternative (pythonic) syntax: 00105 self.tagSet.Dummy = Tag() self.tagSet.Dummy.dataSet.ADReadoutData = Data('/Event/UserData/AD/ADReadoutData')
def UserTagging::UserTaggingAlg::UserTaggingAlg::reset | ( | self | ) | [inherited] |
Reset the Tag States
Definition at line 106 of file UserTaggingAlg.py.
00114 : 00115 """ 00116 Add one UserTag by name, provide a path to cause the tag 00117 object to be sent through I/O. 00118 00119 Can also do:
def UserTagging::UserTaggingAlg::UserTaggingAlg::config | ( | self, | ||
evt | ||||
) | [inherited] |
Configure the UserTagHeader and UserDataHeader object Child class can overwrite depends on the situation. The "evt" is the transient event store object.
Definition at line 136 of file UserTaggingAlg.py.
00137 : 00138 """ 00139 Tag the named UserTag. 00140 00141 Can also do: 00142 00143 self.tagSet.<name>.tagIt() 00144 """ 00145 return self.tagSet.get(name).tagIt() 00146 00147 # -------------------------------------- 00148 def reset(self): 00149 '''Reset the Tag States''' 00150 00151 for tag in self.tagSet.all(): 00152 if tag.isTagged: 00153 if tag.path: 00154 tag.header = gbl.DayaBay.HeaderObject() 00155 ROOT.SetOwnership(tag.header,False) 00156 for data in tag.dataSet.all(): 00157 data.header = gbl.DayaBay.UserDataHeader() 00158 ROOT.SetOwnership(data.header,False) 00159 tag.isTagged = False 00160 00161 # -------------------------------------- 00162 def check(self, evt): 00163 '''Child Class should overwrie this function''' 00164 # all the real logics/algorithms happen here: # - check the properties of the event headers, run some algorithms.
def UserTagging::UserTaggingAlg::UserTaggingAlg::save | ( | self, | ||
evt | ||||
) | [inherited] |
Save the UserTag and UserData objects Most subclass should not override.
Definition at line 165 of file UserTaggingAlg.py.
00178 : 00179 ''' 00180 Configure the UserTagHeader and UserDataHeader object 00181 Child class can overwrite depends on the situation. 00182 00183 The "evt" is the transient event store object. '''
def UserTagging::UserTaggingAlg::UserTaggingAlg::execute | ( | self | ) | [inherited] |
Definition at line 184 of file UserTaggingAlg.py.
00186 : 00187 if tag.isTagged: 00188 baseHeader = evt[tag.baseHeader] 00189 if not baseHeader: 00190 self.error(tag.baseHeader + ' does not exist') 00191 return FAILURE 00192 if tag.path: 00193 tagHeader = tag.header 00194 tagHeader.setExecNumber(baseHeader.execNumber()) 00195 tagHeader.setContext(baseHeader.context()) 00196 tagHeader.setEarliest(baseHeader.earliest()) 00197 tagHeader.setLatest(baseHeader.latest()) 00198 00199 for data in tag.dataSet.all(): 00200 dataHeader = data.header 00201 dataHeader.setExecNumber(baseHeader.execNumber()) 00202 dataHeader.setContext(baseHeader.context()) 00203 dataHeader.setEarliest(baseHeader.earliest()) 00204 dataHeader.setLatest(baseHeader.latest()) 00205 00206 # -------------------------------------- 00207 def save(self, evt): 00208 ''' 00209 Save the UserTag and UserData objects 00210 00211 Most subclass should not override. 00212 '''
def UserTagging::UserTaggingAlg::UserTaggingAlg::finalPrint | ( | self | ) | [inherited] |
Print how many tagged events
Definition at line 213 of file UserTaggingAlg.py.
00214 : 00215 if tag.isTagged: 00216 tag.nTagged += 1 00217 if tag.path: 00218 evt[tag.path] = tag.header 00219 del tag.header 00220 for data in tag.dataSet.all(): 00221 data.save() evt[data.path] = data.header
def UserTagging::UserTaggingAlg::UserTaggingAlg::finalize | ( | self | ) | [inherited] |
Definition at line 44 of file ADChannelData.py.