• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

onlinemonitor/trbmonitor/TTrbProc.h (r4864/r4341)

Go to the documentation of this file.
00001 #ifndef _TTrbUNPACKPROCESSOR_H_
00002 #define _TTrbUNPACKPROCESSOR_H_
00003 
00004 #include "TCBMBeamtimeProc.h"
00005 #include "TTrbEvent.h"
00006 #include "TTrbParam.h"
00007 #include "TTrbSource.h"
00008 
00009 #include "TH1.h"
00010 #include "TH2.h"
00011 #include "TGo4WinCond.h"
00012 
00013 class TTrbProc : public TCBMBeamtimeProc
00014 {
00015 public:
00016         TTrbProc ();
00017         TTrbProc (const char* name);
00018         virtual ~TTrbProc ();
00019 
00020         virtual void InitEvent (TGo4EventElement* evt);
00021         virtual void ProcessSubevent (TGo4MbsSubEvent* subevt);
00022 
00023 protected:
00025         void ProcessTrbSubevent (Trb_Subevent* sub);
00026 
00028         void ResetTDCV3TriggerTimes();
00029 
00031         void ProcessTDCV3 (Trb_Subevent* sub);
00032 
00034         void EvaluateTDCV3Data (UShort_t board=0);
00035 
00037         void DumpData (Trb_Subevent* hadsubevent);
00038 
00040         inline Bool_t IsAnyCalibration() const
00041            { return fPar ? fPar->generalCalibration || fPar->continuousCalibration : kFALSE; }
00042 
00044         inline Bool_t WithoutCalibration() const
00045      { return fPar ? !fPar->generalCalibration && !fPar->continuousCalibration : kTRUE; }
00046 
00048         inline double GetLinearFineCalibration(unsigned fine_cnt)
00049         {
00050       return (fine_cnt<20) ? 0. : ((fine_cnt>500) ? 5. : (fine_cnt-20)/480.*5.);
00051         }
00052 
00053 private:
00056         TH1* hTDCDataVolume;  // data volumes from all TDC boards,
00057    TH1* hSubevSize;  // subevents size
00058    bool fCanAssignTrigger;
00059    bool fCurrentTriggerType;
00060 
00061    unsigned fLastTriggerId;    // last id in trigger subevent, must be per TDR boards, 16 bit
00062    int fLostTriggerCnt;   // how many packets were lost/dropped
00063    int fTakenTriggerCnt;  // how many packets were obtained
00064    TH1* hLostRate;  // histogram with distribution of lost data
00065 
00066    TH1* hEventMultipl[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00067    TH1* hPulserMultipl[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00068    int fNumHitsSelected[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00069 
00070 /* --------------------------------------------------------------------------------------------- */
00071         TH1* hTriggerCount[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00072         TH1* hChannelCount[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00073 /* --------------------------------------------------------------------------------------------- */
00074         TH1* hLeadingCoarseAll[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00075         TH1* hLeadingFineAll[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00076         TH1* hLeadingDeltaCalAll[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00077         TH1* hLeadingDeltaCalAllFine[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00078         TH1* hTrailingCoarseAll[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00079         TH1* hTrailingFineAll[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00080         TH1* hTrailingDeltaCalAll[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00081 /* --------------------------------------------------------------------------------------------- */
00082         TH1* hLeadingCoarse[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC][TRB_TDC3_CHANNELS];
00083         TH1* hLeadingFine[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC][TRB_TDC3_CHANNELS];
00084         TH1* hLeadingFineBuffer[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC][TRB_TDC3_CHANNELS];
00085         TH1* hLeadingDeltaCal[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC][TRB_TDC3_CHANNELS];
00086    TH1* hLeadingDeltaRef[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC][TRB_TDC3_CHANNELS];
00087         #ifdef CREATEMAPS
00088         TH2* hLeadingCorrelFine[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC][TRB_TDC3_CHANNELS];
00089         #endif // CREATEMAPS
00090 /* --------------------------------------------------------------------------------------------- */
00091         TH1* hTrailingCoarse[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC][TRB_TDC3_CHANNELS];
00092         TH1* hTrailingFine[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC][TRB_TDC3_CHANNELS];
00093         TH1* hTrailingFineBuffer[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC][TRB_TDC3_CHANNELS];
00094         TH1* hTrailingDeltaCal[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC][TRB_TDC3_CHANNELS];
00095    TH1* hTrailingDeltaRef[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC][TRB_TDC3_CHANNELS];
00096    #ifdef CREATEMAPS
00097         TH2* hTrailingCorrelFine[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC][TRB_TDC3_CHANNELS];
00098         #endif // CREATEMAPS
00099 /* --------------------------------------------------------------------------------------------- */
00100         TH2* hLeadingCoarseAllChans[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00101         TH2* hLeadingFineAllChans[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00102         TH2* hTrailingCoarseAllChans[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00103         TH2* hTrailingFineAllChans[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00104 /* --------------------------------------------------------------------------------------------- */
00106         TH1* hCalcBinWidth[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC][TRB_TDC3_CHANNELS];
00107         TH1* hCalBinTime[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC][TRB_TDC3_CHANNELS];
00108 /* --------------------------------------------------------------------------------------------- */
00109         TH1* hTrbTriggerCount;
00110 /* --------------------------------------------------------------------------------------------- */
00111         TH1* hEpoch[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00112 /* --------------------------------------------------------------------------------------------- */
00113 
00115         TGo4WinCond* cLeadingFineTimeGate[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00116         TGo4WinCond* cLeadingCoarseTimeGate[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00117         TGo4WinCond* cTrailingFineTimeGate[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00118         TGo4WinCond* cTrailingCoarseTimeGate[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00119 
00121         TGo4WinCond* cLeadingDeltaTimeGate[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00122         TGo4WinCond* cTrailingDeltaTimeGate[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC];
00123 
00126         Bool_t fbHasCalibration[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC][TRB_TDC3_CHANNELS];
00127 
00128         Bool_t fNoCalibration;
00129 
00130         TTrbParam* fPar;
00131         TTrbEvent* fOutEvent;
00132 
00134         UInt_t fSubeventStatus;
00135 
00137         Double_t fLastTrigTime[TRB_TDC3_NUMBOARDS][TRB_TDC3_NUMTDC][2];
00138 
00140         std::vector<TTrbRawHit> fRawHits[TRB_TDC3_NUMBOARDS];
00141 
00142         void DoCalibration(UShort_t board, UShort_t tdc, UShort_t ch, Bool_t generalcal, Bool_t contcal);
00143 
00145         void GenHistos1 (TString dirname, Int_t b, Int_t t);
00146         void GenHistos2 (TString dirname, Int_t b, Int_t t, Int_t i);
00147         void GenHistos3 (TString dirname, Int_t b, Int_t t, Int_t i);
00148 
00149         static const TString leadingcoarseallname;
00150         static const TString leadingfineallname;
00151         static const TString leadingdeltacalallname;
00152         static const TString trailingcoarseallname;
00153         static const TString trailingfineallname;
00154         static const TString trailingdeltacalallname;
00155 
00156 ClassDef(TTrbProc,1)
00157 };
00158 
00159 #endif // _TTrbUNPACKPROCESSOR_H_

Generated on Tue Dec 10 2013 04:52:23 for ROCsoft by  doxygen 1.7.1