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

In This Package:

EnergyStats::EnergyStatsAlg Class Reference

List of all members.

Public Member Functions

def __init__
def initialize
def execute
def finalize

Public Attributes

 cableSvc

Detailed Description

Definition at line 28 of file EnergyStats.py.


Member Function Documentation

def EnergyStats::EnergyStatsAlg::__init__ (   self,
  name 
)

Definition at line 30 of file EnergyStats.py.

00030                            :
00031         DybPythonAlg.__init__(self,name)
00032         return
00033 
    def initialize(self):

def EnergyStats::EnergyStatsAlg::initialize (   self  ) 

Definition at line 34 of file EnergyStats.py.

00034                         :
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         hist = TH1F("genEnergy","Generated Particle Energy",100,937.0,940.0)
00046         hist.GetXaxis().SetTitle("Particle Energy [MeV]")
00047         hist.GetYaxis().SetTitle("Generated Particles")
00048         hist.SetLineColor(4)
00049         self.stats["/file0/energy/genEnergy"] = hist
00050 
00051          
00052         hist = TH1F("genKineticEnergy","Generated Particle Kinetic Energy",
00053                     100,0.0,10.0)
00054         hist.GetXaxis().SetTitle("Particle Kinetic Energy [MeV]")
00055         hist.GetYaxis().SetTitle("Generated Particles")
00056         hist.SetLineColor(4)
00057         self.stats["/file0/energy/genKineticEnergy"] = hist
00058 
00059         hist = TH1F("simScintEnergy","Energy deposited in Scintillator",
00060                     500,0.0,10.0)
00061         hist.GetXaxis().SetTitle("Ionization Energy [MeV]")
00062         hist.GetYaxis().SetTitle("Simulated Events")
00063         hist.SetLineColor(4)
00064         self.stats["/file0/energy/simScintEnergy"] = hist
00065         
00066         hist = TH1F("simQuenchedEnergy","Quenched Energy in Scintillator",
00067                     500,0.0,10.0)
00068         hist.GetXaxis().SetTitle("Quenched Ionization Energy [MeV]")
00069         hist.GetYaxis().SetTitle("Simulated Events")
00070         hist.SetLineColor(4)
00071         self.stats["/file0/energy/simQuenchedEnergy"] = hist
00072         
00073         hist = TH2F("simQuenching",
00074                     "Quenching vs. Total Energy in Scintillator",
00075                     300,0.0,10.0,
00076                     300,0.0,1.5)
00077         hist.GetXaxis().SetTitle("Ionization Energy [MeV]")
00078         hist.GetYaxis().SetTitle("Quenched Energy / Ionization Energy")
00079         self.stats["/file0/energy/simQuenching"] = hist
00080 
00081         hist = TH1F("simHits","Number of Simulated Hits on PMTs",
00082                     500,0.0,2000)
00083         hist.GetXaxis().SetTitle("Simulated Number of Photoelectrons [NPE]")
00084         hist.GetYaxis().SetTitle("Simulated Events")
00085         hist.SetLineColor(4)
00086         self.stats["/file0/energy/simHits"] = hist
00087 
00088         hist = TH2F("simHitsVsQE",
00089                     "Number of Simulated Hits vs. Quenched Energy",
00090                     200,0.0,10.0,
00091                     200,0.0,200)
00092         hist.GetXaxis().SetTitle("Quenched Energy [MeV]")
00093         hist.GetYaxis().SetTitle("Photelectrons / Quenched Energy")
00094         self.stats["/file0/energy/simHitsVsQE"] = hist
00095 
00096         hist = TH2F("adcSumVsSimHits",
00097                     "Sum of Raw ADC vs. Number of Simulated PMT Hits",
00098                     200,0.0,2000,
00099                     200,0.0,1000.0)
00100         hist.GetXaxis().SetTitle("Simulated Number of Photoelectrons [NPE]")
00101         hist.GetYaxis().SetTitle("Raw ADC Sum / Photoelectrons")
00102         self.stats["/file0/energy/adcSumVsSimHits"] = hist
00103         
00104         hist = TH1F("calibAdcSum","Sum of Calibrated ADC",500,0.0,2000.)
00105         hist.GetXaxis().SetTitle("Sum of calibrated ADC values in AD [ADC_SPE]")
00106         hist.GetYaxis().SetTitle("Simulated Triggered Readouts")
00107         hist.SetLineColor(4)
00108         self.stats["/file0/energy/calibAdcSum"] = hist
00109         
00110         hist = TH2F("calibAdcSumVsSimHits",
00111                     "Sum of Calibrated ADC vs. Number of Simulated PMT Hits",
00112                     200,0.0,2000.0,
00113                     200,0.0,2.)
00114         hist.GetXaxis().SetTitle("Simulated Number of Photoelectrons [NPE]")
00115         hist.GetYaxis().SetTitle("Calibrated ADC Sum / Photoelectrons")
00116         self.stats["/file0/energy/calibAdcSumVsSimHits"] = hist
00117         
00118         hist = TH1F("reconEnergy","Reconstructed Energy",500,0.0,10.0)
00119         hist.GetXaxis().SetTitle("Reconstructed Visible Energy [E_rec]")
00120         hist.GetYaxis().SetTitle("Triggered Readouts")
00121         hist.SetLineColor(4)
00122         self.stats["/file0/energy/reconEnergy"] = hist
00123 
00124         hist = TH2F("calibAdcSumVsReconEnergy",
00125                     "Sum of Calibrated ADC vs. Reconstructed Energy",
00126                     200,0.0,10.0,
00127                     200,0.0,150.)
00128         hist.GetXaxis().SetTitle("Reconstructed Visible Energy [E_rec]")
00129         hist.GetYaxis().SetTitle("Calibrated ADC Sum / Reconstructed Energy")
00130         self.stats["/file0/energy/calibAdcSumVsReconEnergy"] = hist
00131         
00132         hist = TH2F("reconEnergyVsQE","Reconstructed vs. Quenched Energy",
00133                     200,0.0,10.0,
00134                     200,0.0,1.5)
00135         hist.GetXaxis().SetTitle("Quenched Energy [MeV]")
00136         hist.GetYaxis().SetTitle("Reconstructed Energy / Quenched Energy")
00137         self.stats["/file0/energy/reconEnergyVsQE"] = hist
00138 
00139         return SUCCESS
00140 
    def execute(self):

def EnergyStats::EnergyStatsAlg::execute (   self  ) 

Definition at line 141 of file EnergyStats.py.

00141                      :
00142         self.info("executing")
00143         
00144         evt = self.evtSvc()
00145 
00146         # Generated Particle Data
00147         genHdr = evt["/Event/Gen/GenHeader"]
00148         if genHdr == None:
00149             self.error("Failed to get GenHeader")
00150             return FAILURE
00151         # Fill particle histograms
00152         totalGenEnergy = 0
00153         totalGenKineticEnergy = 0
00154         genEvt = genHdr.event()
00155         for vertex in irange(genEvt.vertices_begin(),
00156                              genEvt.vertices_end()):
00157             for particle in irange(vertex.particles_out_const_begin(),
00158                                    vertex.particles_out_const_end()):
00159                 totalGenEnergy += particle.momentum().e()
00160                 totalGenKineticEnergy += (particle.momentum().e()
00161                                           - particle.momentum().m())
00162         self.stats["/file0/energy/genEnergy"].Fill(totalGenEnergy)
00163         self.stats["/file0/energy/genKineticEnergy"].Fill(totalGenKineticEnergy)
00164 
00165         # Simulated Particle Data
00166         simHdr = evt["/Event/Sim/SimHeader"]
00167         if simHdr == None:
00168             self.error("Failed to get SimHeader")
00169             return FAILURE
00170         statsHdr = simHdr.unobservableStatistics()
00171         simScintEnergy = 0
00172         simQuenchedEnergy = 0
00173         if statsHdr == None:
00174             self.warning("No SimStatistics for this event")
00175         else:    
00176             simStats = statsHdr.stats()
00177             simScintEnergy = (simStats["EDepInGdLS"].sum()
00178                               + simStats["EDepInLS"].sum())
00179             simQuenchedEnergy = (simStats["QEDepInGdLS"].sum()
00180                                  + simStats["QEDepInLS"].sum())
00181             self.stats["/file0/energy/simScintEnergy"].Fill( simScintEnergy )
00182             self.stats["/file0/energy/simQuenchedEnergy"].Fill(
00183                                                           simQuenchedEnergy )
00184             if simScintEnergy > 0:
00185                 self.stats["/file0/energy/simQuenching"].Fill( simScintEnergy,
00186                                            simQuenchedEnergy/simScintEnergy )
00187         # Simulated Hits    
00188         hitCollectionMap = simHdr.hits().hitCollection()
00189         detector = Detector("DayaBayAD1")
00190         hitCollection = hitCollectionMap[detector.siteDetPackedData()]
00191         if hitCollection == None:
00192             self.info("No Hit Collection for "+detector.detName())
00193             return SUCCESS
00194         hits = hitCollectionMap[detector.siteDetPackedData()].collection()
00195         nSimHits = 0
00196         for hit in hits:
00197             pmtId = AdPmtSensor( hit.sensDetId() )
00198             if pmtId.ring() < 1: continue  # Skip calibration PMTs
00199             nSimHits += 1
00200         self.stats["/file0/energy/simHits"].Fill( nSimHits )
00201         if simQuenchedEnergy > 0:
00202             self.stats["/file0/energy/simHitsVsQE"].Fill( simQuenchedEnergy,
00203                                                     nSimHits/simQuenchedEnergy)
00204                                                        
00205         # Raw Readout Data
00206         readoutHdr = evt["/Event/Readout/ReadoutHeader"]
00207         if readoutHdr == None:
00208             self.error("Failed to get ReadoutHeader")
00209             return FAILURE
00210         readout = readoutHdr.readout()
00211         if readout == None:
00212             self.info("No Triggered Readout for this event")
00213             return SUCCESS
00214         adcSum = 0
00215         svcMode = ServiceMode( readoutHdr.context(), 0 )
00216         for channelPair in readout.channelReadout():
00217             channel = channelPair.second
00218             chanId = channel.channelId()
00219             pmtId = self.cableSvc.adPmtSensor( chanId, svcMode )
00220             if pmtId.ring() < 1: continue  # Skip calibration PMTs
00221             #adcSum += channel.peakAdc()
00222             adcSum += channel.peakAdc()
00223         if nSimHits > 0:
00224             self.stats["/file0/energy/adcSumVsSimHits"].Fill( nSimHits,
00225                                                           adcSum/nSimHits )
00226 
00227         # Calibrated Readout Data
00228         calibReadoutHdr = evt["/Event/CalibReadout/CalibReadoutHeader"]
00229         if calibReadoutHdr == None:
00230             self.error("Failed to get CalibReadoutHeader")
00231             return FAILURE
00232         calibReadout = calibReadoutHdr.calibReadout()
00233         if calibReadout == None:
00234             self.info("No Calibrate Readout for this event")
00235             return SUCCESS
00236         calibAdcSum = 0
00237         svcMode = ServiceMode( calibReadoutHdr.context(), 0 )
00238         for channelPair in calibReadout.channelReadout():
00239             channel = channelPair.second
00240             chanId = channel.channelId()
00241             pmtId = self.cableSvc.adPmtSensor( chanId, svcMode )
00242             if pmtId.ring() < 1: continue  # Skip calibration PMTs
00243             calibAdcSum += channel.peakAdc()
00244         self.stats["/file0/energy/calibAdcSum"].Fill( calibAdcSum )
00245         if nSimHits > 0:
00246             self.stats["/file0/energy/calibAdcSumVsSimHits"].Fill(
00247                                                           nSimHits,
00248                                                           calibAdcSum/nSimHits
00249                                                           )
00250 
00251         recHdr = evt["/Event/Rec/RecHeader"]
00252         if recHdr == None:
00253             self.error("Failed to get RecHeader")
00254             return FAILURE
00255         recResults = recHdr.recResults()
00256         recTrigger = recResults["AdSimple"]
00257         if recTrigger.energyStatus() == ReconStatus.kGood:
00258             reconEnergy = recTrigger.energy()
00259             self.stats["/file0/energy/reconEnergy"].Fill(reconEnergy)
00260             self.stats["/file0/energy/calibAdcSumVsReconEnergy"].Fill(
00261                                                        reconEnergy,
00262                                                        calibAdcSum/reconEnergy )
00263             if simQuenchedEnergy > 0:
00264                 self.stats["/file0/energy/reconEnergyVsQE"].Fill(
00265                                                 simQuenchedEnergy,
00266                                                 reconEnergy/simQuenchedEnergy )
00267             
00268         return SUCCESS
00269         
    def finalize(self):

def EnergyStats::EnergyStatsAlg::finalize (   self  ) 

Definition at line 270 of file EnergyStats.py.

00270                       :
00271         self.info("finalizing")
00272         status = DybPythonAlg.finalize(self)
00273         return status
00274 
00275 
#####  Job Configuration for nuwa.py ########################################


Member Data Documentation

EnergyStats::EnergyStatsAlg::cableSvc

Definition at line 39 of file EnergyStats.py.


The documentation for this class was generated from the following file:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:05:55 2011 for UnderstandingEnergy by doxygen 1.4.7