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

In This Package:

Ge68EnergyStats.py

Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 #
00003 # Makes reconstructed energy and energy bias histograms and outputs physical time elapsed
00004 #
00005 #  Usage:
00006 #   nuwa.py -n -1 EnergyStats reconAndSimData.root
00007 
00008 # Load DybPython
00009 from DybPython.DybPythonAlg import DybPythonAlg
00010 from GaudiPython import SUCCESS, FAILURE
00011 from GaudiPython import gbl, loaddict
00012 from DybPython.Util import irange
00013 
00014 # Make shortcuts to any ROOT classes you want to use
00015 TH1F = gbl.TH1F
00016 TH2F = gbl.TH2F
00017 
00018 # Make shortcuts to any ROOT classes you want to use
00019 
00020 loaddict("libCLHEPRflx")
00021 loaddict("libHepMCRflx")
00022 Detector = gbl.DayaBay.Detector
00023 AdPmtSensor = gbl.DayaBay.AdPmtSensor
00024 ServiceMode = gbl.ServiceMode
00025 ReconStatus = gbl.ReconStatus
00026 
00027 # Make your algorithm
00028 class EnergyStatsAlg(DybPythonAlg):
00029     "Algorithm to make Energy Statistics file"
00030     def __init__(self,name):
00031         DybPythonAlg.__init__(self,name)
00032         return
00033 
00034     def initialize(self):
00035         status = DybPythonAlg.initialize(self)
00036         if status.isFailure(): return status
00037         self.info("initializing")
00038 
00039         self.cableSvc = self.svc('ICableSvc','StaticCableSvc')
00040         if self.cableSvc == None:
00041             self.error("Failed to get StaticCableSvc")
00042             return FAILURE
00043 
00044         # Make energy histograms
00045 
00046         hist = TH1F("EnergyBias","Energy Bias",500,-2.0,2.5)
00047         hist.GetXaxis().SetTitle("Energy Difference [MeV]")
00048         hist.GetYaxis().SetTitle("Generated Particles")
00049         hist.SetLineColor(4)
00050         self.stats["/file0/energy/EnergyBias"] = hist
00051 
00052         hist = TH1F("reconEnergy","Reconstructed Energy",500,0.0,3.0)
00053         hist.GetXaxis().SetTitle("Reconstructed Visible Energy [E_rec]")
00054         hist.GetYaxis().SetTitle("Triggered Readouts")
00055         hist.SetLineColor(4)
00056         self.stats["/file0/energy/reconEnergy"] = hist
00057         return SUCCESS
00058 
00059     def execute(self):
00060         self.info("executing")
00061         
00062         evt = self.evtSvc()
00063 
00064 
00065         # reconstructed energy
00066         recHdr = evt["/Event/Rec/RecHeader"]
00067 
00068 
00069         roHdr = evt["/Event/Readout/ReadoutHeader"]
00070         readout = roHdr.readout()
00071         if readout != None:
00072            trigTime = readout.triggerTime()
00073            print "seconds=", trigTime.GetSec()
00074            print "nanoseconds=", trigTime.GetNanoSec()
00075          
00076 
00077         if recHdr == None:
00078             self.error("Failed to get RecHeader")
00079             return FAILURE
00080         recResults = recHdr.recResults()
00081         recTrigger = recResults["AdSimple"]
00082         if recTrigger.energyStatus() == ReconStatus.kGood:
00083             reconEnergy = recTrigger.energy()
00084             self.stats["/file0/energy/reconEnergy"].Fill(reconEnergy)
00085             self.stats["/file0/energy/EnergyBias"].Fill(reconEnergy-1.022)
00086         return SUCCESS
00087 
00088     def finalize(self):
00089         self.info("finalizing")
00090 
00091         status = DybPythonAlg.finalize(self)
00092         return status
00093 
00094 
00095 #####  Job Configuration for nuwa.py ########################################
00096 
00097 def configure():
00098     from StatisticsSvc.StatisticsSvcConf import StatisticsSvc
00099     statsSvc = StatisticsSvc()
00100     statsSvc.Output ={"file0":"energyStats.root"}
00101     import DataSvc
00102     DataSvc.Configure()
00103     return
00104 
00105 def run(app):
00106     '''
00107     Configure and add an algorithm to job
00108     '''
00109     app.ExtSvc += ["StaticCableSvc", "StatisticsSvc"]
00110     energyStatsAlg = EnergyStatsAlg("MyEnergyStats")
00111     app.addAlgorithm(energyStatsAlg)
00112     pass
00113 
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:11:24 2011 for Calibration by doxygen 1.4.7