Public Member Functions | |
def | __init__ |
def | initialize |
def | execute |
def | finalize |
Public Attributes | |
SaveHistograms | |
figures |
Definition at line 761 of file Tools.py.
def DataQuality::Tools::DiagnosticAlg::__init__ | ( | self, | ||
name | ||||
) |
Definition at line 763 of file Tools.py.
00763 : 00764 DybPythonAlg.__init__(self,name) 00765 self.SaveHistograms = True 00766 return 00767 def initialize(self):
def DataQuality::Tools::DiagnosticAlg::initialize | ( | self | ) |
Definition at line 768 of file Tools.py.
00768 : 00769 status = DybPythonAlg.initialize(self) 00770 if status.isFailure(): return status 00771 self.info("initialize") 00772 00773 self.figures = [{"name" :"genTime", 00774 "title" :"Generator Time", 00775 "draw" :"genTimeSec+(genTimeNanoSec*1e-9)", 00776 "cut" :"hasGen", 00777 "options" :"", 00778 "xaxis" :"time [s]", 00779 "yaxis" :"Generated Events", 00780 "filename":"genTime.png" 00781 }, 00782 {"name" :"nGenParticles", 00783 "title" :"Number of Generated Particles", 00784 "draw" :"nGenParticles>>htemp(20,0,20)", 00785 "cut" :"hasGen", 00786 "options" :"", 00787 "xaxis" :"Number of particles", 00788 "yaxis" :"Generated Events", 00789 "filename":"nGenParticles.png" 00790 }, 00791 {"name" :"genPdgid", 00792 "title" :"PDG ID", 00793 "draw" :"genPdgid", 00794 "cut" :"hasGen", 00795 "options" :"", 00796 "xaxis" :"PDG ID", 00797 "yaxis" :"Generated Particles", 00798 "filename":"genPdgid.png" 00799 }, 00800 {"name" :"genPosition", 00801 "title" :"Generated Position", 00802 "draw" :"genZ:genY:genX", 00803 "cut" :"hasGen", 00804 "options" :"", 00805 "xaxis" :"x [mm]", 00806 "yaxis" :"y [mm]", 00807 "zaxis" :"z [mm]", 00808 "filename":"genPosition.png" 00809 }, 00810 {"name" :"genE", 00811 "title" :"Generated Particle Energy", 00812 "draw" :"genE", 00813 "cut" :"hasGen", 00814 "options" :"", 00815 "xaxis" :"Energy [MeV]", 00816 "yaxis" :"Generated Particles", 00817 "filename":"genE.png" 00818 }, 00819 {"name" :"genT", 00820 "title" :"Generated Particle Time Offset", 00821 "draw" :"genT", 00822 "cut" :"hasGen", 00823 "options" :"", 00824 "xaxis" :"Time Offset [ns]", 00825 "yaxis" :"Generated Particles", 00826 "filename":"genT.png" 00827 }, 00828 {"name" :"nSimHits", 00829 "title" :"Number of Simulated Hits", 00830 "draw" :"nSimHits>>htemp(2000,0,2000)", 00831 "cut" :"hasSim", 00832 "options" :"", 00833 "xaxis" :"Number of hits on detectors", 00834 "yaxis" :"Number of Simulated Events", 00835 "filename":"nSimHits.png" 00836 }, 00837 {"name" :"simHitTime", 00838 "title" :"Simulated Hit Time", 00839 "draw" :"simHitTime>>htemp(1000,0,500)", 00840 "cut" :"hasSim", 00841 "options" :"", 00842 "xaxis" :"time [ns]", 00843 "yaxis" :"Number of hits", 00844 "filename":"simHitTime.png" 00845 }, 00846 {"name" :"simHitPosition", 00847 "title" :"Simulated Hit Position on PMT", 00848 "draw" :"simHitZ:simHitY:simHitX>>htemp(100,-100,100,100,-100,100,150,0,150)", 00849 "cut" :"hasSim", 00850 "options" :"", 00851 "xaxis" :"x [mm]", 00852 "yaxis" :"y [mm]", 00853 "zaxis" :"z [mm]", 00854 "filename":"simHitPosition.png" 00855 }, 00856 {"name" :"simHitPmt", 00857 "title" :"Simulated Hits on AD PMTs", 00858 "draw" :"simHitRing:simHitColumn>>htemp(25,0,25,9,0,9)", 00859 "cut" :"hasSim", 00860 "options" :"colz", 00861 "xaxis" :"PMT column", 00862 "yaxis" :"PMT ring", 00863 "filename":"simHitPmt.png" 00864 }, 00865 {"name" :"simQuenchedEnergyGdLS", 00866 "title" :"Quenched energy deposition in GdLS", 00867 "draw" :"simUnobs_QEDepInGdLS_sum>>htemp(2000,0,20)", 00868 "cut" :"", 00869 "options" :"", 00870 "xaxis" :"Quenched Energy [MeV]", 00871 "yaxis" :"Number of Simulated Events", 00872 "filename":"simQuenchedEnergyGdLS.png" 00873 }, 00874 {"name" :"simQuenchedEnergyLS", 00875 "title" :"Quenched energy deposition in LS", 00876 "draw" :"simUnobs_QEDepInLS_sum>>htemp(2000,0,20)", 00877 "cut" :"", 00878 "options" :"", 00879 "xaxis" :"Quenched Energy [MeV]", 00880 "yaxis" :"Number of Simulated Events", 00881 "filename":"simQuenchedEnergyLS.png" 00882 }, 00883 {"name" :"simQuenchedEnergyOil", 00884 "title" :"Quenched energy deposition in Buffer Oil", 00885 "draw" :"simUnobs_QEDepInOIL_sum>>htemp(2000,0,20)", 00886 "cut" :"", 00887 "options" :"", 00888 "xaxis" :"Quenched Energy [MeV]", 00889 "yaxis" :"Number of Simulated Events", 00890 "filename":"simQuenchedEnergyOil.png" 00891 }, 00892 {"name" :"hasReadout", 00893 "title" :"Detector Triggered?", 00894 "draw" :"hasReadout>>htemp(2,0,2)", 00895 "cut" :"hasRo", 00896 "options" :"", 00897 "xaxis" :"False=0, True=1", 00898 "yaxis" :"Number of Events", 00899 "filename":"hasReadout.png" 00900 }, 00901 {"name" :"readoutDetector", 00902 "title" :"Triggered Detector", 00903 "draw" :"roSite:roDetector>>htemp(10,0,10,10,0,10)", 00904 "cut" :"hasReadout", 00905 "options" :"colz", 00906 "xaxis" :"Detector ID", 00907 "yaxis" :"Site ID", 00908 "filename":"readoutDetector.png" 00909 }, 00910 {"name" :"readoutTime", 00911 "title" :"Trigger Time", 00912 "draw" :"roTriggerTimeSec+(roTriggerTimeNanoSec*1e-9)", 00913 "cut" :"hasReadout", 00914 "options" :"", 00915 "xaxis" :"Time [s]", 00916 "yaxis" :"Number of Readouts", 00917 "filename":"readoutTime.png" 00918 }, 00919 {"name" :"nRoChannels", 00920 "title" :"Number of Channels in Readout", 00921 "draw" :"nRoChannels>>htemp(300,0,300)", 00922 "cut" :"hasReadout", 00923 "options" :"", 00924 "xaxis" :"Number of Channels", 00925 "yaxis" :"Number of Readouts", 00926 "filename":"nRoChannels.png" 00927 }, 00928 {"name" :"roChannel", 00929 "title" :"Readout Channels in Crate", 00930 "draw" :"roConnector:roBoard>>htemp(17,0,17,17,0,17)", 00931 "cut" :"hasReadout", 00932 "options" :"colz", 00933 "xaxis" :"FEE Board", 00934 "yaxis" :"FEE Connector", 00935 "filename":"roChannel.png" 00936 }, 00937 {"name" :"tdc", 00938 "title" :"Readout TDC Spectrum", 00939 "draw" :"roTdc>>htemp(400,0,400)", 00940 "cut" :"hasReadout", 00941 "options" :"", 00942 "xaxis" :"TDC value", 00943 "yaxis" :"Number of TDCs", 00944 "filename":"tdc.png" 00945 }, 00946 {"name" :"adc", 00947 "title" :"Readout ADC Spectrum", 00948 "draw" :"roAdc>>htemp(1000,0,1000)", 00949 "cut" :"hasReadout", 00950 "options" :"", 00951 "xaxis" :"ADC value", 00952 "yaxis" :"Number of ADCs", 00953 "filename":"adc.png" 00954 }, 00955 {"name" :"adcClock", 00956 "title" :"Clock Offset of ADC value", 00957 "draw" :"roAdcClock>>htemp(16,0,16)", 00958 "cut" :"hasReadout", 00959 "options" :"", 00960 "xaxis" :"ADC clock (40 MHz)", 00961 "yaxis" :"Number of ADCs", 00962 "filename":"adcClock.png" 00963 }, 00964 {"name" :"calibTdc", 00965 "title" :"Calibrated TDC values", 00966 "draw" :"croTdc>>htemp(500,-500,0)", 00967 "cut" :"hasCro && hasCalibReadout", 00968 "options" :"", 00969 "xaxis" :"Calibrated TDC value [ns]", 00970 "yaxis" :"Number of TDC values", 00971 "filename":"calibTdc.png" 00972 }, 00973 {"name" :"calibAdc", 00974 "title" :"Calibrated ADC values", 00975 "draw" :"croAdc>>htemp(500,0,50)", 00976 "cut" :"hasCro && hasCalibReadout", 00977 "options" :"", 00978 "xaxis" :"Calibrated ADC values [Number of Photoelectrons]", 00979 "yaxis" :"Number of ADC values", 00980 "filename":"calibAdc.png" 00981 }, 00982 {"name" :"calibAdcSum", 00983 "title" :"Sum of Calibrated ADC values in Readout", 00984 "draw" :"Sum$(croAdc)>>htemp(1000,0,2000)", 00985 "cut" :"hasCro && hasCalibReadout", 00986 "options" :"", 00987 "xaxis" :"ADC Sum [Number of Photoelectrons]", 00988 "yaxis" :"Number of Readouts", 00989 "filename":"calibAdcSum.png" 00990 }, 00991 {"name" :"reconEnergy", 00992 "title" :"Reconstucted Energy", 00993 "draw" :"rec_AdSimple_energy>>htemp(1000,0,20)", 00994 "cut" :"hasRecTrigger && rec_AdSimple_energyStatus==1", 00995 "options" :"", 00996 "xaxis" :"Visible Energy [MeV]", 00997 "yaxis" :"Number of Readouts", 00998 "fit" :"gaus", 00999 "filename":"reconEnergy.png" 01000 }, 01001 {"name" :"reconEnergyStatus", 01002 "title" :"Reconstucted Energy Status", 01003 "draw" :"rec_AdSimple_energyStatus>>htemp(10,0,10)", 01004 "cut" :"hasRecTrigger", 01005 "options" :"", 01006 "xaxis" :"Status: Unknown=0, Good=1, Bad>1", 01007 "yaxis" :"Number of Readouts", 01008 "filename":"reconEnergyStatus.png" 01009 }, 01010 {"name" :"reconEnergyQuality", 01011 "title" :"Reconstucted Energy Quality", 01012 "draw" :"rec_AdSimple_energyQuality>>htemp(200,0,10)", 01013 "cut" :"hasRecTrigger && rec_AdSimple_energyStatus==1", 01014 "options" :"", 01015 "xaxis" :"Quality Measure", 01016 "yaxis" :"Number of Readouts", 01017 "filename":"reconEnergyQuality.png" 01018 }, 01019 {"name" :"reconPosition", 01020 "title" :"Reconstucted Position", 01021 "draw" :"rec_AdSimple_position[2]:sqrt(rec_AdSimple_position[0]*rec_AdSimple_position[0]+rec_AdSimple_position[1]*rec_AdSimple_position[1])>>htemp(100,0,3000.,1000,-3000.,3000.)", 01022 "cut" :"hasRecTrigger && rec_AdSimple_positionStatus==1", 01023 "options" :"colz", 01024 "xaxis" :"#rho [mm]", 01025 "yaxis" :"z [mm]", 01026 "filename":"reconPosition.png" 01027 }, 01028 {"name" :"reconPositionX", 01029 "title" :"Reconstucted X Position", 01030 "draw" :"rec_AdSimple_position[0]>>htemp(1000,-3000.,3000.)", 01031 "cut" :"hasRecTrigger && rec_AdSimple_positionStatus==1", 01032 "options" :"colz", 01033 "xaxis" :"x [mm]", 01034 "yaxis" :"Entries", 01035 "fit" :"gaus", 01036 "filename":"reconPositionX.png" 01037 }, 01038 {"name" :"reconPositionY", 01039 "title" :"Reconstucted Y Position", 01040 "draw" :"rec_AdSimple_position[1]>>htemp(1000,-3000.,3000.)", 01041 "cut" :"hasRecTrigger && rec_AdSimple_positionStatus==1", 01042 "options" :"colz", 01043 "xaxis" :"y [mm]", 01044 "yaxis" :"Entries", 01045 "fit" :"gaus", 01046 "filename":"reconPositionY.png" 01047 }, 01048 {"name" :"reconPositionZ", 01049 "title" :"Reconstucted Z Position", 01050 "draw" :"rec_AdSimple_position[2]>>htemp(1000,-3000.,3000.)", 01051 "cut" :"hasRecTrigger && rec_AdSimple_positionStatus==1", 01052 "options" :"colz", 01053 "xaxis" :"z [mm]", 01054 "yaxis" :"Entries", 01055 "fit" :"gaus", 01056 "filename":"reconPositionZ.png" 01057 }, 01058 {"name" :"reconPositionStatus", 01059 "title" :"Reconstucted Position Status", 01060 "draw" :"rec_AdSimple_positionStatus>>htemp(10,0,10)", 01061 "cut" :"hasRecTrigger", 01062 "options" :"", 01063 "xaxis" :"Status: Unknown=0, Good=1, Bad>1", 01064 "yaxis" :"Number of Readouts", 01065 "filename":"reconPositionStatus.png" 01066 }, 01067 {"name" :"reconPositionQuality", 01068 "title" :"Reconstucted Position Quality", 01069 "draw" :"rec_AdSimple_positionQuality>>htemp(200,0,5000)", 01070 "cut" :"hasRecTrigger && rec_AdSimple_positionStatus==1", 01071 "options" :"", 01072 "xaxis" :"Quality measure", 01073 "yaxis" :"Number of Readouts", 01074 "filename":"reconPositionQuality.png" 01075 } 01076 #{"title" :"", 01077 # "draw" :"", 01078 # "cut" :"", 01079 # "options" :"", 01080 # "xaxis" :"", 01081 # "yaxis" :"", 01082 # "zaxis" :"", 01083 # "filename":"" 01084 # }, 01085 ] 01086 return SUCCESS 01087 def execute(self):
def DataQuality::Tools::DiagnosticAlg::execute | ( | self | ) |
def DataQuality::Tools::DiagnosticAlg::finalize | ( | self | ) |
Definition at line 1091 of file Tools.py.
01091 : 01092 self.info("finalize") 01093 tesTree = self.stats['/file0/tes/tesTree'] 01094 if tesTree == None: 01095 self.error("Failed to retrieve tree of TES data") 01096 return FAILURE 01097 # Make figures 01098 canvas = TCanvas() 01099 failedFigs = [] 01100 for figure in self.figures: 01101 self.info("Making figure "+figure["title"]) 01102 nEntries = tesTree.Draw(figure["draw"], figure["cut"], figure["options"]) 01103 hist = canvas.FindObject("htemp") 01104 if nEntries < 1 or hist == None: 01105 self.warning("Failed to generate figure: "+figure["title"]) 01106 failedFigs.append( figure["name"] ) 01107 continue 01108 hist.SetTitle(figure["title"]) 01109 hist.SetLineColor(4) 01110 if figure.has_key("xaxis"): 01111 hist.GetXaxis().SetTitle(figure["xaxis"]) 01112 if figure.has_key("yaxis"): 01113 hist.GetYaxis().SetTitle(figure["yaxis"]) 01114 if figure.has_key("zaxis"): 01115 hist.GetZaxis().SetTitle(figure["zaxis"]) 01116 if figure.has_key("fit"): 01117 hist.Fit(figure["fit"]) 01118 canvas.SaveAs(figure["filename"]) 01119 if self.SaveHistograms: 01120 hist.SetName(figure["name"]) 01121 self.stats["/file1/diagnostics/"+figure["name"]] = hist.Clone() 01122 # Generate html page 01123 htmlList = [] 01124 htmlList.append("<HTML>") 01125 htmlList.append("<HEAD>") 01126 htmlList.append("<TITLE>") 01127 htmlList.append(" Diagnostics Figures") 01128 htmlList.append("</TITLE>") 01129 htmlList.append("</HEAD>") 01130 htmlList.append("<BODY>") 01131 htmlList.append(" <H1>Diagnostics Figures</H1>") 01132 htmlList.append(' <P>Histogram file: <A HREF="diagnostics.root">diagnostics.root</A></P>') 01133 htmlList.append(' <P>Diagnostics <A HREF="log/">logs</A></P>') 01134 htmlList.append(" <TABLE>") 01135 for figureIdx in range(len(self.figures)): 01136 figure = self.figures[figureIdx] 01137 if figureIdx % 2 == 0: 01138 htmlList.append(" <TR>") 01139 figString =" <TD><H3>"+figure["title"]+"</H3>" 01140 if figure["name"] in failedFigs: 01141 figString += "<P>No Data for this figure</P>" 01142 else: 01143 figString += "<IMG SRC=\""+figure["filename"]+"\" WIDTH=70%>" 01144 figString += "</TD>" 01145 htmlList.append(figString) 01146 if figureIdx % 2 != 0: 01147 htmlList.append(" </TR>") 01148 elif figureIdx == len(self.figures): 01149 htmlList.append(" <TD></TD>") 01150 htmlList.append(" </TR>") 01151 htmlList.append(" </TABLE>") 01152 htmlList.append("</BODY>") 01153 htmlList.append("</HTML>") 01154 htmlFile = open("index.html","w") 01155 htmlFile.write("\n".join(htmlList)) 01156 htmlFile.close() 01157 status = DybPythonAlg.finalize(self) 01158 return status 01159 01160 01161