/search.css" rel="stylesheet" type="text/css"/> /search.js">
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

Public Member Functions | Public Attributes
TaggingExample::GenData::GenData Class Reference
Inheritance diagram for TaggingExample::GenData::GenData:
Inheritance graph
[legend]
Collaboration diagram for TaggingExample::GenData::GenData:
Collaboration graph
[legend]

List of all members.

Public Member Functions

def initTagList
def check
def SaveGenData

Public Attributes

 target_de_name
 genTypes

Detailed Description

Add Generator Info to UserData

Definition at line 17 of file GenData.py.


Member Function Documentation

def TaggingExample::GenData::GenData::initTagList (   self)

Definition at line 21 of file GenData.py.

00022                          :
00023         # for details see doc-6020
00024         #
00025         # generator info, size of nGen
00026         # positon from first vtx
00027         # nVtx is the number of 'real primary' particles of each generator
00028         # IBD event has nVtx = 1 : nu_e_bar
00029         # Radioactive event nVtx > 1 for correlated decay events
00030         # Muon event nVtx = 1 : one out-going muon
00031         #
00032         # the first incoming particles of each vtx info, size of nVtxTotal, or 0 (muon)
00033         # for IBD, pid = [-12] for nu_e
00034         #          KE = KE for nu_e
00035         # for radioactive event, pid = [parent nuclei]
00036         # for radioactive event, t[j] - t[i] tells the correlation time
00037         # nOut[i] is the number of out-going particles at each primary vertex
00038         # nOut[i] == 2 for IBD 
00039         # nIn[i] should be 1, but 0 for muons
00040         #
00041         # outgoing particles info, size of nOutTotal
00042         # for IBD, out_pid = [-11, 2112]
00043         # for radioactive event, out_pid = [daughter nucliei+decay particles]
00044         self.addTag('Dummy', ''
00045             ).addData('GenData', '/Event/UserData/General/GenData'
00046             ).addInt('nGen', 'nVtxTotal', 'nOutTotal'
00047             ).addIntArray('genType', 'nVtx'
00048             ).addFloatArray('genX', 'genY', 'genZ'
00049             ).addIntArray('nIn', 'nOut', 'in_pid', 'out_pid'
00050             ).addFloatArray('in_x', 'in_y', 'in_z', 'in_t', 'in_KE', 'in_px', 'in_py', 'in_pz'
00051             ).addFloatArray('out_x', 'out_y', 'out_z', 'out_t', 'out_KE', 'out_px', 'out_py', 'out_pz')
00052                
00053         self.target_de_name = '/dd/Structure/AD/db-ade1/db-sst1/db-oil1'
00054         
00055         self.genTypes = {
00056             "IBD_gds":11, "IBD_lso":12, "IBD_oil":13, "IBD_acrylic":14,           
00057             "U238_gds":21, "U238_lso":22, "U238_PMT":23, "U238_sst":24,
00058             "Th232_gds":31, "Th232_lso":32, "Th232_PMT":33, "Th232_sst":34,
00059             "K40_gds":41, "K40_lso":42, "K40_PMT":43, "K40_sst":44,
00060             "Co60_sst":54,
00061         }
        
def TaggingExample::GenData::GenData::check (   self,
  evt 
)

Definition at line 63 of file GenData.py.

00064                         :
00065 
00066         readoutHdr = evt['/Event/Readout/ReadoutHeader']
00067         if not readoutHdr:
00068             self.warning('cannot find readoutHdr')
00069             return
00070         
00071         genHdrs = readoutHdr.findHeaders(gbl.DayaBay.GenHeader.classID())
00072         self.SaveGenData(genHdrs)
00073         
00074         self.tagIt('Dummy')
        
def TaggingExample::GenData::GenData::SaveGenData (   self,
  genHdrs 
)

Definition at line 76 of file GenData.py.

00077                                   :
00078 
00079         myData = self.getTag('Dummy').getData('GenData')
00080 
00081         de = self.getDet(self.target_de_name)
00082         if not de:
00083             self.info('Failed to get DE' + self.target_de_name)
00084             return FAILURE
00085         Gaudi = PyCintex.makeNamespace('Gaudi')
00086                                 
00087         # number of generators associated with this readout
00088         # nGen should be one except for pile-up events    
00089         nGen = len(genHdrs) 
00090         # total number of 'real primary' particles (vtx)
00091         nVtxTotal = 0
00092         # total number of outgoing particles
00093         nOutTotal = 0
00094  
00095         for genHdr in genHdrs:
00096             genName = genHdr.generatorName()
00097             self.debug("genName:" + genName)
00098             myData.append('genType', self.genTypes.get(genName, 0))
00099             
00100             nVtx = 0
00101             genEvt = genHdr.event()
00102             for vtx in irange(genEvt.vertices_begin(), genEvt.vertices_end()):
00103                 # do stuff with the vertex
00104                 nVtx += 1
00105                 nVtxTotal += 1
00106                 position = vtx.position()
00107                 genGlbPoint = Gaudi.XYZPoint(
00108                     position.x(), 
00109                     position.y(),
00110                     position.z()
00111                 )
00112                 genLclPoint = de.geometry().toLocal(genGlbPoint)
00113                 myData.append('in_x', genLclPoint.x()/units.mm)
00114                 myData.append('in_y', genLclPoint.y()/units.mm)
00115                 myData.append('in_z', genLclPoint.z()/units.mm)
00116                 myData.append('in_t', vtx.position().t()/units.microsecond)
00117                 
00118                 if nVtx == 1:
00119                     myData.append('genX', genLclPoint.x()/units.mm)
00120                     myData.append('genY', genLclPoint.y()/units.mm)
00121                     myData.append('genZ', genLclPoint.z()/units.mm)
00122                                 
00123                 nIn = 0    
00124                 for particle in irange(vtx.particles_in_const_begin(),
00125                                       vtx.particles_in_const_end()):
00126                     # do stuff with the incoming particles
00127                     nIn += 1
00128                     if nIn == 1:                  
00129                         myData.append('in_pid', particle.pdg_id())
00130                         momentum = particle.momentum()
00131                         myData.append('in_KE', (momentum.e() - momentum.m())/units.MeV)
00132                         myData.append('in_px', momentum.px()/units.MeV)
00133                         myData.append('in_py', momentum.py()/units.MeV)
00134                         myData.append('in_pz', momentum.pz()/units.MeV)
00135                 myData.append('nIn', nIn)
00136                 
00137                 nOut = 0
00138                 for particle in irange(vtx.particles_out_const_begin(),
00139                                        vtx.particles_out_const_end()):
00140                     # do stuff with the outgoing particles
00141                     nOut += 1
00142                     nOutTotal += 1
00143                     myData.append('out_pid', particle.pdg_id())
00144                     momentum = particle.momentum()
00145                     myData.append('out_KE', (momentum.e() - momentum.m())/units.MeV)
00146                     myData.append('out_px', momentum.px()/units.MeV)
00147                     myData.append('out_py', momentum.py()/units.MeV)
00148                     myData.append('out_pz', momentum.pz()/units.MeV)
00149                                  
00150                 myData.append('nOut', nOut)
00151                     
00152             myData.append('nVtx', nVtx)
00153 
00154         # set more user data
00155         myData.set("nGen", nGen
00156             ).set("nVtxTotal", nVtxTotal
00157             ).set("nOutTotal", nOutTotal)
00158         
00159         # print 'genX: ', myData.get('genX')
            

Member Data Documentation

Definition at line 21 of file GenData.py.

Definition at line 21 of file GenData.py.


The documentation for this class was generated from the following file:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Fri May 16 2014 09:54:29 for TaggingExample by doxygen 1.7.4