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

In This Package:

PmtCalibFullModel.h

Go to the documentation of this file.
00001 /*
00002  *  PmtCalibFullModel.h
00003  *  
00004  *  Generate calibration fit parameters from PMT data
00005  *
00006  *  This method uses the leading edge of the signals on each channel
00007  *  to determine timing offsets.
00008  *  and use the PMT full response model to get the PMT gain, from NIM A339 (1994) 468-476  
00009  *  and to determine the relative efficiency of each channel
00010  *
00011  * wangzhm@ihep.ac.cn 2009/11/29
00012  */
00013 
00014 #ifndef PMTCALIBFULLMODEL_H
00015 #define PMTCALIBFULLMODEL_H
00016 
00017 #include "CalibParam/IPmtCalibParamTool.h"
00018 #include "GaudiAlg/GaudiTool.h"
00019 #include "Conventions/Electronics.h"
00020 #include "Conventions/Detectors.h"
00021 #include "Context/Context.h"
00022 #include <string>
00023 #include <vector>
00024 #include "FloatingFeePedestalSvc/IFloatingFeePedestalSvc.h"
00025 
00026 namespace DayaBay{
00027   class ReadoutHeader;
00028 }
00029 
00030 class IStatisticsSvc;
00031 class ICableSvc;
00032 class ICalibDataSvc;
00033 
00034 /*
00035 // Statistics container class for one PMT channel
00036 class PmtStatsOneChannelLE {
00037  public:
00038   PmtStatsOneChannelLE(const DayaBay::FeeChannelId& channelId)
00039     { m_channelId = channelId; m_nHits = 0; m_tdcRaw=0; m_tdcByMedian=0; 
00040       m_adcRaw=0; m_adc=0; m_adcByClock=0;}
00041   ~PmtStatsOneChannelLE(){;}
00042  public:
00043   DayaBay::FeeChannelId m_channelId;
00044   DayaBay::AdPmtSensor m_pmtId;
00045   int m_nHits;
00046   TH1F* m_tdcRaw;
00047   TH1F* m_tdcByMedian;
00048   TH1F* m_adcRaw;
00049   TH1F* m_adc;
00050   TH1F* m_adcByClock;
00051 };
00052 
00053 // Statistics container class for one detector
00054 class PmtStatsLE {
00055  public:
00056   PmtStatsLE(const DayaBay::Detector& detector){m_detector=detector; 
00057     m_nReadouts=0;}
00058   ~PmtStatsLE(){;}
00059  public:
00060   DayaBay::Detector m_detector;
00061   std::map<DayaBay::FeeChannelId,PmtStatsOneChannelLE*> m_channel;
00062   int m_nReadouts;
00063   TH1F* m_adcSum;
00064   TH1F* m_tdcMedian;
00065   std::map<int, TH1F*> m_occupancy;
00066   std::map<int, TH1F*> m_tdcOffset;
00067   std::map<int, TH1F*> m_adcMedian;
00068   std::map<int, TH1F*> m_adcSigma;
00069 };
00070 */
00071 
00072 class PmtCalibFullModel : public GaudiTool, virtual public IPmtCalibParamTool
00073 {
00074  public:
00075   PmtCalibFullModel(const std::string& type,
00076                       const std::string& name,
00077                       const IInterface* parent);
00078 
00079   virtual ~PmtCalibFullModel();
00080 
00081   virtual StatusCode initialize();
00082   virtual StatusCode finalize();
00083 
00085   
00088   virtual StatusCode process(const DayaBay::ReadoutHeader& readout);
00089   
00093   virtual StatusCode calibrate();
00094   
00095  private:
00097   bool hasStats(const DayaBay::Detector& detector);
00099   StatusCode prepareStats(const Context& context);
00100 
00101   // Format path to detector statistics
00102   std::string getPath(const DayaBay::Detector& detector);
00103   // Format path to detector, ring statistics
00104   std::string getPath(const DayaBay::Detector& detector, int ring);
00105   // Format path to channel statistics
00106   std::string getPath(const DayaBay::FeeChannelId& channelId);
00107 
00108  private:
00109     
00110   // Property CableSvcName - Name of the cable service
00111   std::string m_cableSvcName;
00112 
00113   // Property CalibSvcName - Name of the calibration service
00114   std::string m_calibSvcName;
00115 
00116   // Property FloatingFeePedesSvcName - Name of floating fee pedestal service
00117   std::string m_floatFeePedesSvcName;
00118 
00119   // Property FilePath - File path of registered histograms
00120   std::string m_filepath;
00121 
00122   // CableSvc
00123   ICableSvc *m_cableSvc;
00124 
00125   // CalibSvc
00126   ICalibDataSvc *m_calibSvc;
00127 
00128   // IStatisticsSvc
00129   IStatisticsSvc *m_statsSvc;
00130 
00131   // IFloatingFeePedestalSvc;
00132   IFloatingFeePedestalSvc *m_floatFeePedesSvc;
00133 
00134   // Use FloatFeePedes or not? In case of flase, it will use CalibSvc.
00135   bool m_useFloatFeePedes;
00136 
00137   // Cached list of processed detectors
00138   std::vector<DayaBay::Detector> m_processedDetectors;
00139 };
00140 
00141 #endif  // PMTCALIBFULLMODEL_H
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:29:39 2011 for CalibParam by doxygen 1.4.7