00001 #ifndef TRPCREC_H 00002 #define TRPCREC_H 00003 00004 00005 #include <vector> 00006 #include <stdint.h> 00007 00008 #include "TCBMBeamtimeProc.h" 00009 00010 #include "TRocEvent.h" 00011 #include "TRPCParam.h" 00012 00013 #include "TGet4HitUnpacked.h" 00014 00015 class TRpcParam; 00016 class TGo4MbsSubEvent; 00017 class TGet4HitUnpacked; 00018 00019 // Structure with all data field for 1 Get4 chip! 00020 struct TRpcRec { 00021 UInt_t u_nbConsLE[NB_CHAN_GET4]; 00022 UInt_t u_nbConsTE[NB_CHAN_GET4]; 00023 00024 // Flags 00025 Bool_t bFirstEpochBlock; 00026 Bool_t bStoredHitUnp; 00027 00028 std::vector<UInt_t> uEpochStart; // Start of each message XX epochs buffer 00029 std::vector<UInt_t> uCycleStart; // Start of each message XX epochs buffer 00030 00031 // Check for Hits Building 00032 TGet4HitUnpacked hitCurrent[NB_CHAN_GET4]; 00033 TGet4HitUnpacked hitLatest[NB_CHAN_GET4]; 00034 00035 // Check for Time ordering of Hits 00036 TGet4HitUnpacked hitCurrentBlock[NB_CHAN_GET4]; 00037 TGet4HitUnpacked hitLatestBlock[NB_CHAN_GET4]; 00038 00039 // Rate variable 00040 Double_t dInstantRateMean[NB_CHAN_GET4]; 00041 Double_t *dInstantRateOld[NB_CHAN_GET4]; 00042 UInt_t uInstantRateCounter[NB_CHAN_GET4]; 00043 00044 UInt_t u_messageCountLastEpoch; 00045 00046 00047 // Histograms 00048 TH1 *fGet4FineTimeLE[NB_CHAN_GET4]; // Finetime of Leading Edge 00049 TH1 *fGet4FineTimeTE[NB_CHAN_GET4]; // Finetime of Trailing Edge 00050 TH1 *fGet4LeDnl[NB_CHAN_GET4]; // DNL value for each bin 00051 TH1 *fGet4LeDnlSum[NB_CHAN_GET4]; // Integral of DNL value up to each bin 00052 TH1 *fGet4TeDnl[NB_CHAN_GET4]; // DNL value for each bin 00053 TH1 *fGet4TeDnlSum[NB_CHAN_GET4]; // Integral of DNL value up to each bin 00054 00055 TH1 *fGet4TOT[NB_CHAN_GET4]; // Time over threshold 00056 00057 TH1 *fGet4PulseSpacingClose[NB_CHAN_GET4]; // Pulse spacing between current and last hit, ns range 00058 TH1 *fGet4PulseSpacingMid[NB_CHAN_GET4]; // Pulse spacing between current and last hit, us range 00059 TH1 *fGet4PulseSpacingFar[NB_CHAN_GET4]; // Pulse spacing between current and last hit, s range 00060 TH2 *fGet4InstantRate[NB_CHAN_GET4]; // Instantaneous rate average over 8 or 10 hits 00061 00062 std::vector< TH1 * > fVGetTimeCorrelation; // Time Correlation between two channels 00063 std::vector< TH2 * > fVGetTotCorrelation; // Tot Correlation between two channels 00064 std::vector< TH1 * > fVCheckCorrelation; // Correlation between three channels 00065 std::vector< TH2 * > fVCheckCorrelation4; // Correlation between three channels 00066 00067 TH1 *fGet4RisEdgesNbEvol[NB_CHAN_GET4]; // Nb of rising edges depending on cycle/chan 00068 TH1 *fGet4FalEdgesNbEvol[NB_CHAN_GET4]; // Nb of falling edges depending on cycle/chan 00069 TH1 *fGet4HitsNbEvolution[NB_CHAN_GET4]; // Nb of matched hits depending on cycle/chan 00070 00071 TH1 *fGet4MessValidEpochs; // Nb of Messages in valid Epochs 00072 00073 TH1 *fNbConsecutiveLE[NB_CHAN_GET4]; // Nb of consecutive Leading edges (should stay at 1 or max 2 when multi hits) 00074 TH1 *fNbConsecutiveTE[NB_CHAN_GET4]; // Nb of consecutive Trailing edges (should stay at 1 or max 2 when multi hits) 00075 00076 TRpcRec(); 00077 }; 00078 00079 #endif // TRPCREC_H