00001 #ifndef DataAnalyses_H 00002 #define DataAnalyses_H 00003 00004 #include "GaudiAlg/GaudiAlgorithm.h" 00005 #include "GaudiKernel/NTuple.h" 00006 #include "Context/TimeStamp.h" 00007 00008 class IPmtGeomInfoSvc; 00009 class ICableSvc; 00010 class TimeStamp; 00011 00012 class DataAnalyses: public GaudiAlgorithm 00013 { 00014 public: 00016 DataAnalyses(const std::string& name, ISvcLocator* svcloc); 00017 virtual ~DataAnalyses(); 00018 00020 StatusCode initialize(); 00021 StatusCode execute(); 00022 StatusCode finalize(); 00023 00024 private: 00025 mutable MsgStream m_log; 00026 int m_printFreq; 00027 int m_execNum; 00028 bool m_checkGen; 00029 bool m_checkReadout; 00030 bool m_checkCalibReadout; 00031 bool m_checkRec; 00032 bool m_checkLtb; 00033 00034 private: 00035 NTuple::Tuple* m_ntuple0; //Gen 00036 NTuple::Item<long> m_eventType; 00037 NTuple::Item<long> m_nVertex; 00038 NTuple::Array<float> m_verX0; 00039 NTuple::Array<float> m_verY0; 00040 NTuple::Array<float> m_verZ0; 00041 NTuple::Item<long> m_nParticle; 00042 NTuple::Array<float> m_verPx; 00043 NTuple::Array<float> m_verPy; 00044 NTuple::Array<float> m_verPz; 00045 00046 NTuple::Tuple* m_ntuple1; //Readout 00047 NTuple::Item<long> m_triggerNumber; 00048 NTuple::Item<float> m_triggerTime; 00049 NTuple::Item<long> m_triggerTimeSec; 00050 NTuple::Item<long> m_triggerTimeNanoSec; 00051 NTuple::Item<long> m_triggerType; 00052 NTuple::Item<float> m_trigTimeInterval; 00053 NTuple::Item<float> m_QSum; 00054 NTuple::Array<long> m_MultiTDC; 00055 NTuple::Item<long> m_nChannel; 00056 NTuple::Array<long> m_adc; 00057 NTuple::Array<long> m_adcGain; 00058 NTuple::Array<long> m_adcRange; 00059 NTuple::Array<long> m_adcPeakingCycle; 00060 NTuple::Array<long> m_pedestal; 00061 NTuple::Array<long> m_firstTdc; 00062 NTuple::Array<long> m_secondTdc; 00063 NTuple::Array<long> m_thirdTdc; 00064 NTuple::Array<long> m_fourthTdc; 00065 NTuple::Array<long> m_channelId; 00066 NTuple::Array<long> m_slot; 00067 NTuple::Array<long> m_connector; 00068 NTuple::Array<long> m_sensorId; 00069 NTuple::Array<long> m_ring; 00070 NTuple::Array<long> m_column; 00071 NTuple::Item<long> m_earliestHitTdc; 00072 NTuple::Item<long> m_earliestHitChn; 00073 NTuple::Item<long> m_latestHitTdc; 00074 NTuple::Item<long> m_latestHitChn; 00075 00076 NTuple::Tuple* m_ntuple2; //CalibReadout 00077 NTuple::Item<long> m_calibTriggerNumber; 00078 NTuple::Item<long> m_calibEvtNumber; 00079 NTuple::Item<float> m_calibTriggerTime; 00080 NTuple::Item<long> m_calibTriggerTimeSec; 00081 NTuple::Item<long> m_calibTriggerTimeNanoSec; 00082 NTuple::Item<float> m_calibEarlistTime; 00083 NTuple::Item<float> m_calibQSum; 00084 NTuple::Item<long> m_nCalibChannel; 00085 NTuple::Array<long> m_calibRing; 00086 NTuple::Array<long> m_calibColumn; 00087 NTuple::Array<float> m_calibAdc; 00088 NTuple::Array<float> m_calibTdc; 00089 00090 NTuple::Tuple* m_ntuple3; //Recon 00091 NTuple::Item<long> m_nRec; 00092 NTuple::Array<float> m_energy; 00093 NTuple::Array<float> m_recX; 00094 NTuple::Array<float> m_recY; 00095 NTuple::Array<float> m_recZ; 00096 NTuple::Array<float> m_recPx; 00097 NTuple::Array<float> m_recPy; 00098 NTuple::Array<float> m_recPz; 00099 00100 NTuple::Tuple* m_ntuple4; //Ltb 00101 NTuple::Item<long> m_ltbFrameNum; 00102 NTuple::Array<long> m_ltbTimestampType; 00103 NTuple::Array<long> m_ltbTrigTimeSec; 00104 NTuple::Array<long> m_ltbTrigTimeNanoSec; 00105 NTuple::Array<long> m_ltbTrigType; 00106 NTuple::Array<long> m_ltbHSum; 00107 NTuple::Array<long> m_ltbESumComp; 00108 NTuple::Array<long> m_ltbESumADC; 00109 NTuple::Array<long> m_ltbBlockedValidTrigger; 00110 00111 private: 00112 // Property CableSvcName - Name of the cable service 00113 std::string m_cableSvcName; 00114 00115 //CableSvc 00116 ICableSvc* m_cableSvc; 00117 00118 // Property PmtGeomSvcName - Name of the PmtGeom service 00119 std::string m_pmtGeomSvcName; 00120 00121 // Pmt Geometry Information Service 00122 IPmtGeomInfoSvc* m_pmtGeomSvc; 00123 00124 TimeStamp m_firstTime; 00125 }; 00126 00127 #endif