| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

SimData.py

Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 '''
00003 Usage:
00004 '''
00005 
00006 from UserTagging.UserTaggingAlg import UserTaggingAlg
00007 from GaudiPython import SUCCESS, FAILURE
00008 from GaudiPython import gbl
00009 import GaudiKernel.SystemOfUnits as units
00010 import PyCintex
00011 
00012 
00013 class SimData(UserTaggingAlg):
00014     '''Add MC Truth Info to UserData'''
00015         
00016     # ----------------------------------------    
00017     def initTagList(self):
00018         
00019         # nSim should be one except for pile-up events        
00020         # Truth information, size of nSim
00021         self.addTag('Dummy', ''
00022             ).addData('SimData', '/Event/UserData/General/SimData'
00023             ).addInt('nSim'
00024             ).addIntArray('capTargetZ'
00025             ).addFloatArray('tCap', 'xCap', 'yCap', 'zCap'
00026             ).addFloatArray('QEInGdLS', 'QEInLS', 'QEInIAV', 'QEInOAV', 'QEInOIL', 'QESum')
00027     
00028         self.target_de_name = '/dd/Structure/AD/db-ade1/db-sst1/db-oil1'
00029         
00030     # ----------------------------------------
00031     def check(self, evt):
00032 
00033         readoutHdr = evt['/Event/Readout/ReadoutHeader']
00034         if not readoutHdr:
00035             self.warning('cannot find readoutHdr')
00036             return
00037         
00038         simHdrs = readoutHdr.findHeaders(gbl.DayaBay.SimHeader.classID())
00039         self.SaveSimData(simHdrs)
00040         
00041         self.tagIt('Dummy')
00042         
00043     # ----------------------------------------
00044     def SaveSimData(self, simHdrs):
00045 
00046         myData = self.getTag('Dummy').getData('SimData')
00047         
00048         de = self.getDet(self.target_de_name)
00049         if not de:
00050             self.info('Failed to get DE' + self.target_de_name)
00051             return FAILURE
00052         Gaudi = PyCintex.makeNamespace('Gaudi')
00053                         
00054         nSim = len(simHdrs) 
00055                 
00056         for simHdr in simHdrs:
00057             uo_hdr = simHdr.unobservableStatistics()
00058             if not uo_hdr:
00059                 self.info("no unobservableStatistics header in sim header")
00060                 continue
00061             uo_stats = uo_hdr.stats()
00062             if not uo_stats:
00063                 self.info("no unobservableStatistics in sim header")
00064                 continue
00065             QEInGdLS = uo_stats["QEDepInGdLS"].sum()/units.MeV
00066             QEInLS   = uo_stats["QEDepInLS"].sum()/units.MeV
00067             QEInIAV  = uo_stats["QEDepInIAV"].sum()/units.MeV
00068             QEInOAV  = uo_stats["QEDepInOAV"].sum()/units.MeV
00069             QEInOIL  = uo_stats["QEDepInOIL"].sum()/units.MeV
00070             QESum = QEInGdLS+QEInLS+QEInIAV+QEInOAV+QEInOIL
00071             myData.append('QEInGdLS', QEInGdLS
00072                 ).append('QEInLS'  , QEInLS
00073                 ).append('QEInIAV' , QEInIAV
00074                 ).append('QEInOAV' , QEInOAV
00075                 ).append('QEInOIL' , QEInOIL
00076                 ).append('QESum'   , QESum
00077                 
00078                 ).append('capTargetZ', int(uo_stats["capTargetZ"].sum())
00079                 ).append('tCap', uo_stats["tCap"].sum()/units.microsecond
00080                 ).append('xCap', uo_stats["xCap"].sum()/units.mm
00081                 ).append('yCap', uo_stats["yCap"].sum()/units.mm
00082                 ).append('zCap', uo_stats["zCap"].sum()/units.mm)
00083             
00084         myData.set("nSim", nSim)        
00085 
00086 
00087 #####  Job Configuration for nuwa.py ########################################
00088 
00089 def configure(argv=[]):
00090     pass
00091 
00092 def run(app):
00093     myAlg = SimData("UserData::SimData")
00094     app.addAlgorithm(myAlg)
00095     pass                    
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:10:48 2011 for UserTagging by doxygen 1.4.7