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

In This Package:

Ge68PositionStats.py

Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 #
00003 # Makes reconstructed position histograms
00004 #
00005 #  Usage:
00006 #   nuwa.py -n -1 PositionStats 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 # x, y, and z ranges for graphs
00015 z1=-3000
00016 z2=3500
00017 x1=-3000
00018 x2=3000
00019 y1=-3000
00020 y2=3000
00021 r2=5000
00022 
00023 from math import sqrt, atan2
00024 
00025 # Make shortcuts to any ROOT classes you want to use
00026 TH1F = gbl.TH1F
00027 TH2F = gbl.TH2F
00028 
00029 # Make shortcuts to any ROOT classes you want to use
00030 
00031 loaddict("libCLHEPRflx")
00032 loaddict("libHepMCRflx")
00033 Detector = gbl.DayaBay.Detector
00034 AdPmtSensor = gbl.DayaBay.AdPmtSensor
00035 ServiceMode = gbl.ServiceMode
00036 ReconStatus = gbl.ReconStatus
00037 
00038 # Make your algorithm
00039 class PositionStatsAlg(DybPythonAlg):
00040     "Algorithm to make Position Statistics file"
00041     def __init__(self,name):
00042         DybPythonAlg.__init__(self,name)
00043         return
00044 
00045     def initialize(self):
00046         status = DybPythonAlg.initialize(self)
00047         if status.isFailure(): return status
00048         self.info("initializing")
00049 
00050         self.cableSvc = self.svc('ICableSvc','StaticCableSvc')
00051         if self.cableSvc == None:
00052             self.error("Failed to get StaticCableSvc")
00053             return FAILURE
00054 
00055         hist = TH2F("reconZvsX",
00056                     "Reconstructed Z position vs. X position",
00057                     200,x1,x2,
00058                     200,z1,z2)
00059         hist.GetXaxis().SetTitle("X position")
00060         hist.GetYaxis().SetTitle("Z position")
00061         self.stats["/file0/position/reconZvsX"] = hist
00062 
00063         hist = TH2F("reconZvsY",
00064                     "Reconstructed Z position vs. Y position",
00065                     200,y1,y2,
00066                     200,z1,z2)
00067         hist.GetXaxis().SetTitle("Y position")
00068         hist.GetYaxis().SetTitle("Z position")
00069         self.stats["/file0/position/reconZvsY"] = hist
00070 
00071         hist = TH2F("reconYvsX",
00072                     "Reconstructed Y position vs. X position",
00073                     200,x1,x2,
00074                     200,y1,y2)
00075         hist.GetXaxis().SetTitle("X position")
00076         hist.GetYaxis().SetTitle("Y position")
00077         self.stats["/file0/position/reconYvsX"] = hist
00078 
00079 
00080         hist = TH2F("reconZvsR",
00081                     "Reconstructed Z position vs. R position",
00082                     200,0.0,r2,
00083                     200,z1,z2)
00084         hist.GetXaxis().SetTitle("R position")
00085         hist.GetYaxis().SetTitle("Z position")
00086         self.stats["/file0/position/reconZvsR"] = hist
00087 
00088         return SUCCESS
00089 
00090     def execute(self):
00091         self.info("executing")
00092         
00093         evt = self.evtSvc()
00094 
00095         # Calibrated Readout Data
00096         recHdr = evt["/Event/Rec/RecHeader"]
00097         if recHdr == None:
00098             self.error("Failed to get RecHeader")
00099             return FAILURE
00100         recResults = recHdr.recResults()
00101         recTrigger = recResults["AdSimple"]
00102         if recTrigger.positionStatus() == ReconStatus.kGood:
00103             reconPosition = recTrigger.position()
00104             recPositionR=sqrt(reconPosition.y()**2+reconPosition.x()**2)
00105             recPositionPhi=atan2(reconPosition.y(),reconPosition.x())
00106             #PositionDiff=sqrt((reconPosition.y()-yGenPosition)**2+(reconPosition.x()-xGenPosition)**2+(reconPosition.z()-zGenPosition)**2)
00107             self.stats["/file0/position/reconZvsX"].Fill(
00108                                                        reconPosition.x(),
00109                                                        reconPosition.z() )
00110             self.stats["/file0/position/reconZvsY"].Fill(
00111                                                        reconPosition.y(),
00112                                                        reconPosition.z() )
00113             self.stats["/file0/position/reconYvsX"].Fill(
00114                                                        reconPosition.x(),
00115                                                        reconPosition.y() )
00116             self.stats["/file0/position/reconZvsR"].Fill(
00117                                                        recPositionR,
00118                                                        reconPosition.z() )
00119             
00120         return SUCCESS
00121         
00122     def finalize(self):
00123         self.info("finalizing")
00124         status = DybPythonAlg.finalize(self)
00125         return status
00126 
00127 
00128 #####  Job Configuration for nuwa.py ########################################
00129 
00130 def configure():
00131     from StatisticsSvc.StatisticsSvcConf import StatisticsSvc
00132     statsSvc = StatisticsSvc()
00133     statsSvc.Output ={"file0":"positionStats.root"}
00134     import DataSvc
00135     DataSvc.Configure()
00136     return
00137 
00138 def run(app):
00139     '''
00140     Configure and add an algorithm to job
00141     '''
00142     app.ExtSvc += ["StaticCableSvc", "StatisticsSvc"]
00143     positionStatsAlg = PositionStatsAlg("MyPositionStats")
00144     app.addAlgorithm(positionStatsAlg)
00145     pass
00146 
| 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