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

In This Package:

AmCData.py
Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 '''
00003 AmC Data 
00004 Usage:
00005     nuwa.py --no-history -A "0.1*s" -n -1 -m"Quickstart.EH1Tables" -m"Quickstart.Calibrate" -m"Quickstart.CalculateCalibStats"  -m"Quickstart.Reconstruct" -m"MuonTagging.MuonTagLoose" -m"CalibrationTagging.AmCTag" -m"CalibrationTagging.AmCData" -o output.root input.root
00006 Help:
00007     nuwa.py -m"CalibrationTagging.AmCData -h"
00008     
00009 Created By: tsang@caltech.edu 2011/08/22
00010 Based on: ADCoincData.py by zhang@caltech.edu
00011 '''
00012 
00013 from UserTagging.UserTaggingAlg import UserTaggingAlg
00014 from Tagger.DataHelpers import RecDataHelper, CalibDataHelper
00015 from Tagger.DataHelpers import GenDataHelper, SimDataHelper
00016 
00017 from GaudiPython import SUCCESS, FAILURE
00018 from GaudiPython import gbl
00019 import GaudiKernel.SystemOfUnits as units
00020 
00021 ServiceMode = gbl.ServiceMode
00022 
00023 # ===========================================
00024 class AmCData(UserTaggingAlg):
00025     'Coincidence Data for AD coincidence events'
00026 
00027     def __init__(self, name):
00028         UserTaggingAlg.__init__(self, name)
00029         
00030         self.runStartTime = None
00031         self.isSimulation = False
00032 
00033     # -------------------------------------------
00034     def initTagList(self):        
00035         myTag = self.addTag('/Event/Tag/Calib/AmC', '').setBaseHeader('/Events/Rec/AdSimple')
00036         myData = myTag.addData('/Event/Tag/Calib/AmC' , '/Event/Data/Calib/AmC')
00037         myData.addFloat('ePrompt' , 'xPrompt' , 'yPrompt' , 'zPrompt' ,
00038                         'eDelayed', 'xDelayed', 'yDelayed', 'zDelayed', 'deltaT_us')
00039         
00040     # -------------------------------------------
00041     def check(self, evt):                
00042 
00043         tagHeader = evt['/Event/Tag/Calib/AmC']  # '/Event/Tag/Calib/AmC' == tagPath
00044         if not tagHeader:
00045           return
00046         
00047         myData = self.getTag('/Event/Tag/Calib/AmC').getData('/Event/Tag/Calib/AmC')
00048         self.SaveAmCData(myData, tagHeader)
00049         self.tagIt('/Event/Tag/Calib/AmC')
00050         return SUCCESS
00051     
00052     # -------------------------------------------
00053     def SaveAmCData(self, myData, tagHeader):
00054         '''
00055         Keyword arguments:
00056             myData -- the Data object defined in UserTagging.Models
00057             tagHeader -- the AD coincidence UserTag object
00058         '''
00059 
00060         savedRecHdrs = tagHeader.inputHeaders()
00061         promptRecHdr = savedRecHdrs[0]
00062         delayedRecHdr = savedRecHdrs[1]
00063 
00064         # Don't process SAB data
00065         #if(promptRecHdr.context().GetSite() == Site.kSAB):
00066         #    return
00067 
00068         if promptRecHdr == None:
00069           print 'promptRecHdr == None'
00070           return FAILURE
00071         if delayedRecHdr == None:
00072           print 'delayedRecHdr == None'
00073           return FAILURE
00074 
00075         promptRecResult = promptRecHdr.recTrigger()
00076         delayedRecResult = delayedRecHdr.recTrigger()
00077 
00078         # Position-related info
00079         pRecPosStat = promptRecResult.positionStatus()
00080         pRecX = promptRecResult.position().x()
00081         pRecY = promptRecResult.position().y()
00082         pRecZ = promptRecResult.position().z()
00083         myData.set('xPrompt',pRecX)
00084         myData.set('yPrompt',pRecY)
00085         myData.set('zPrompt',pRecZ)
00086         dRecPosStat = delayedRecResult.positionStatus()
00087         dRecX = delayedRecResult.position().x()
00088         dRecY = delayedRecResult.position().y()
00089         dRecZ = delayedRecResult.position().z()
00090         myData.set('xDelayed',dRecX)
00091         myData.set('yDelayed',dRecY)
00092         myData.set('zDelayed',dRecZ)
00093 
00094         # Energy-related info
00095         pRecEStat = promptRecResult.energyStatus()
00096         pRecE = promptRecResult.energy()
00097         pRecE *= 184./160.
00098         myData.set('ePrompt',pRecE)
00099         dRecEStat = delayedRecResult.energyStatus()
00100         dRecE = delayedRecResult.energy()
00101         dRecE *= 184./160.
00102         myData.set('eDelayed',dRecE)
00103     
00104         # Time-related info
00105         deltaT = gbl.TimeStamp( delayedRecResult.triggerTime() )
00106         deltaT.Subtract( promptRecResult.triggerTime() )
00107         myData.set('deltaT_us',deltaT.GetSeconds() * 1e6)
00108 
00109         # Calibstats
00110 #        nPERMS = calibStats.get('nPERMS').value()
00111 #        Co60Data.set('nPERMS_co60',nPERMS)
00112 #        nPESum = calibStats.get('nPESum').value()
00113 #        Co60Data.set('nPESum_co60',nPESum)
00114         
00115 #####  Job Configuration for nuwa.py ########################################
00116 options = None
00117 
00118 def configure(argv=[]):
00119     """Configuration with command line arguments"""   
00120     global options 
00121     from optparse import OptionParser
00122     
00123     parser = OptionParser()
00124     parser.add_option('--simulation',
00125         dest='isSimulation',
00126         action='store_true', default=False,
00127         help='flag for simulation files (save extra gen/truth info)')
00128     (options, args) = parser.parse_args(args=argv)
00129 
00130 def run(app):
00131     from DybPython.Tools import mapify
00132     #app.ExtSvc += ["CoordSysSvc"]
00133     
00134     myAlg = AmCData("AmCData")
00135     myAlg.isSimulation = options.isSimulation
00136     app.addAlgorithm(myAlg)
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Fri May 16 2014 10:10:08 for CalibrationTagging by doxygen 1.7.4