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

In This Package:

CheckAlg.py
Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 
00003 '''Algorithm to test RPC readout simulation
00004 
00005 It can be called via nuwa.py:
00006 
00007   nuwa.py -n XXX -m 'ReadoutSim.CheckAlg ["my optional message"]'
00008 
00009 '''
00010 
00011 
00012 from DybPython.DybPythonAlg import DybPythonAlg
00013 from GaudiPython import SUCCESS, FAILURE
00014 #import PyCintex
00015 #ElecFecCrate = PyCintex.makeClass('DayaBay::ElecFecCrate')
00016 
00017 class CheckAlg(DybPythonAlg):
00018     '''
00019     Algorithm to test RPC readout simulation
00020     '''
00021 
00022     def __init__(self,myname):
00023         ''' '''
00024         DybPythonAlg.__init__(self,myname)
00025         return
00026 
00027     def initialize(self):
00028         status = DybPythonAlg.initialize(self)
00029         if status.isFailure(): return status
00030         self.info("initializing")
00031 
00032         #self.stats.defaultPath = "/file1/examples/"
00033         ## Make the trigger time histogram
00034         #self.stats["TrigTime"] = TH1F("TrigTime","Trigger Time [s]",
00035                                       #100,0.0,10.0)
00036         ## Make the TDC histogram
00037         #self.stats["Tdc"] = TH1F("Tdc","TDC Values",300,0,300)
00038 
00039         return SUCCESS
00040 
00041     def execute(self):
00042         self.info("executing")
00043         evt = self.evtSvc()
00044 
00045         # Elec header info dump
00046         elhdr = evt["/Event/Elec/ElecHeader"]
00047         self.info("===== ElecSim =====")
00048         if elhdr == None:
00049             self.info("No ElecSim header this cycle")
00050         else :
00051             # pulses:
00052             pulhdr = elhdr.pulseHeader()
00053             # signals:
00054             crhdr = elhdr.crateHeader()
00055 
00056             self.info( "Elec time: %s"%(elhdr.timeStamp().GetSeconds()) )
00057             if pulhdr == None:
00058                 self.info("No pulse header stored this cycle")
00059             else :
00060                 self.info( "Number of pulse collections: %d"%(pulhdr.pulseCollection().size()) )
00061 
00062             if crhdr == None:
00063                 self.info("No crate header this cycle")
00064             else :
00065                 self.info( "Number of crates: %d"%(crhdr.crates().size()) )
00066                 det = crhdr.crates().begin().first
00067                 feccr = crhdr.crates()[det]
00068                 self.info("%d FEC boards stored in the crate."%feccr.fecBoards().size())
00069 
00070         # SimTrig header info dump
00071         trighdr = evt["/Event/SimTrig/SimTrigHeader"]
00072         self.info("===== TrigSim =====")
00073         if trighdr == None:
00074             self.info("No SimElec header this cycle")
00075         else :
00076             cmdhdr = trighdr.commandHeader()
00077             cmdcoll= cmdhdr.collections()[cmdhdr.collections().begin().first]
00078 
00079             if cmdcoll == None:
00080                 self.info("No trigger command collection")
00081             else :
00082                 self.info("SimTrig: Detector: %s"%(cmdcoll.detector().detName()))
00083                 self.info( "SimTrig: %d commands in TriggerCommandCollection."%(cmdcoll.commands().size()) )
00084                 for cmd in cmdcoll.commands() :
00085                     self.info("%d input triggers in this command."%cmd.inTriggers().size())
00086                     self.info("%d output triggers in this command."%cmd.outTriggers().size())
00087 
00088         # SimReadout header info dump
00089         self.info("===== SimReadout =====")
00090         simrohdr = evt["/Event/SimReadout/SimReadoutHeader"]
00091         if simrohdr == None:
00092             self.info("No SimReadoutHeader header this cycle")
00093         else :
00094             simros = simrohdr.readouts()
00095             self.info("SimReadout: Got %d simreadouts."%simros.size())
00096             for simro in simros :
00097                 ro = simro.readout()
00098                 if ro == None:
00099                     self.info("No Readout this cycle")
00100                 else :
00101                     self.info("Readout: Detector: %s"%(ro.detector().detName()))
00102                     self.info("Readout: Trigger time: %f"%(ro.triggerTime().GetSeconds()))
00103                     self.info("Readout: TriggerType: 0x%x"%ro.triggerType())
00104                     if (ro.detector().isRPC()) :
00105                         self.info("Readout: RPC readouts: %d"%(ro.fecReadouts().size()))
00106                         self.info("Readout: Hitmaps: ")
00107                         i = 0
00108                         for fec in ro.fecReadouts() :
00109                             hitmap = fec.second.hitMap()
00110                             print "%d: 0x%0x"%(i,hitmap)
00111                             i += 1
00112                 simdaq = ro.daqCrate(1,1,1)
00113                 self.info("DaqCrate: Detector: %s"%(simdaq.detector().detName()))
00114                 self.info("DaqCrate: Trigger time: %f"%(simdaq.triggerTime().GetSeconds()))
00115                 self.info("DaqCrate: TriggerType: 0x%x"%simdaq.triggerType())
00116                 if (simdaq.detector().isRPC()) :
00117                     self.info( "DaqCrate: RPC readouts: %d"%(simdaq.rpcPanelReadouts().size()) )
00118 
00119         # Readout header info dump
00120         self.info("===== Readout =====")
00121         rohdr = evt["/Event/Readout/ReadoutHeader"]
00122         if rohdr == None:
00123             self.info("No ReadoutHeader header this cycle")
00124         else :
00125             ro = rohdr.readout()
00126             if ro == None:
00127                 self.info("No Readout this cycle")
00128             else :
00129                 self.info("Readout: Detector: %s"%(ro.detector().detName()))
00130                 self.info("Readout: Trigger time: %f"%(ro.triggerTime().GetSeconds()))
00131                 self.info("Readout: TriggerType: %x"%ro.triggerType())
00132                 if (ro.detector().isRPC()) :
00133                     self.info("Readout: RPC readouts: %d"%(ro.fecReadouts().size()))
00134                     self.info("Readout: Hitmaps: ")
00135                     i = 0
00136                     for fec in ro.fecReadouts() :
00137                         hitmap = fec.second.hitMap()
00138                         print "%d: 0x%0x"%(i,hitmap)
00139                         i += 1
00140             daq = rohdr.daqCrate()
00141             if daq == None:
00142                 self.info("No daq crate this cycle")
00143             else :
00144                 self.info("DaqCrate: Detector: %s"%(daq.detector().detName()))
00145                 self.info("DaqCrate: Trigger time: %f"%(daq.triggerTime().GetSeconds()))
00146                 self.info("DaqCrate: TriggerType: 0x%x"%daq.triggerType())
00147                 if (daq.detector().isRPC()) :
00148                     self.info( "DaqCrate: RPC readouts: %d"%(daq.rpcPanelReadouts().size()) )
00149                     self.info("DaqCrate: Hitmaps:")
00150                     for i in range(daq.rpcPanelReadouts().size()) :
00151                         hitmap = daq.rpcPanelReadouts()[i].hitMap()
00152                         print "%d: 0x%0x"%(i,hitmap)
00153                     
00154         return SUCCESS
00155     pass
00156 
00157 
00158 
00159 ### nuwa.py hooks:
00160 
00161 def configure(argv = []):
00162     pass
00163 
00164 def run(app):
00165     alg = CheckAlg("RpcCheckAlg")
00166     app.addAlgorithm(alg)
00167     return
00168 
00169 
00170 
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Fri May 16 2014 10:17:05 for ReadoutSim by doxygen 1.7.4