Go to the documentation of this file.00001 #ifndef TGET4V1PROC_H
00002 #define TGET4V1PROC_H
00003
00004 #include "roc/Iterator.h"
00005
00006 #include <vector>
00007 #include <stdint.h>
00008
00009 #include "TCBMBeamtimeProc.h"
00010
00011 #include "roc/Message.h"
00012 #include "roc/Board.h"
00013
00014 class TGet4v1Param;
00015 class TGo4MbsSubEvent;
00016 class TGet4MessageFull;
00017
00018 #include "TGet4v1Event.h"
00019 #include "TGet4v1Rec.h"
00020
00021
00022 class TGet4v1Proc : public TCBMBeamtimeProc {
00023 public:
00024 TGet4v1Proc();
00025 TGet4v1Proc(const char* name);
00026 virtual ~TGet4v1Proc() ;
00027
00028 virtual void InitEvent(TGo4EventElement * evt);
00029
00030 virtual void ProcessSubevent(TGo4MbsSubEvent* subevt);
00031
00032 virtual void FinalizeEvent();
00033
00034 protected:
00035
00037 void ProcessExtendedMessage(UInt_t uRocId, TGet4v1MessageExtended& extMess);
00038 void ProcessTriggerMessage(UInt_t uRocId, TGet4v1MessageExtended& extMess,
00039 Int_t iTriggerIndex = -1);
00041 Bool_t BuildHits(UInt_t uRocId, UInt_t uGet4Id, Bool_t bBufferToBuild);
00042 Bool_t CheckHit(UInt_t uRocId, UInt_t uGet4Id, Get4v1Hit& hit);
00043
00044 void CheckEventClosure();
00045
00047 Bool_t ProcessRocSyncMessage( UInt_t uRocId, TGet4v1MessageExtended& extMess);
00048 Bool_t ProcessRocEpochMessage( UInt_t uRocId, TGet4v1MessageExtended& extMess);
00049 Bool_t ProcessGet4EpochMessage( UInt_t uRocId, TGet4v1MessageExtended& extMess);
00050 Bool_t ProcessGet4DataMessage( UInt_t uRocId, TGet4v1MessageExtended& extMess);
00051 Bool_t ProcessGet4ExtSyncMessage(UInt_t uRocId, TGet4v1MessageExtended& extMess);
00052 Bool_t ProcessGet4SuppEpochMessage( UInt_t uRocId, TGet4v1MessageExtended& extMess);
00053 Bool_t ProcessGet4SuppDataMessage( UInt_t uRocId, TGet4v1MessageExtended& extMess);
00054 Bool_t ProcessGet4ReprocessSuppData( UInt_t uRocId, UInt_t uGet4Id );
00055
00056 Int_t Process32BitGet4Message(UInt_t uRocId, TGet4v1MessageExtended& extMess);
00057
00058 Bool_t fb24bitsReadoutDetected;
00059 Bool_t fb32bitsReadoutDetected;
00060 Bool_t AnalyzeAllGet4Channels( Get4v1Event &eventFull );
00061 Bool_t AnalyzeAllGet4Channels24Bits( Get4v1Event &eventFull );
00062 Bool_t AnalyzeAllGet4Channels32Bits( Get4v1Event &eventFull );
00063
00064 Bool_t PrintRocEpochIndexes(UInt_t uRocId, Int_t uMessagePriority = 0);
00065 Bool_t PrintRocEpochCycles(UInt_t uRocId, Int_t uMessagePriority = 0);
00066
00067
00068 void ResetTrigger();
00069
00070
00071 void ResetEndOfBuffer();
00072
00073
00074 void UpdateLeadingDnlHistograms( Get4v1Event &eventFull, UInt_t uRocId = 0 );
00075 void UpdateTrailingDnlHistograms( Get4v1Event &eventFull, UInt_t uRocId = 0 );
00076
00077 TGet4v1Param *fParam;
00078 TGet4v1Event *fOutputEvent;
00079 Get4v1Event fCurrentGet4Event;
00080
00081 Bool_t fIsTimeSorted;
00082
00083 TH1 *fEvntSize;
00084 TH1 *fEvtPerProc;
00085 TH1 *fEvtIndexRoc;
00086 TH1 *fEvtIndexTrig;
00087 TH1 *fEvtIndexVme;
00088 UInt_t uInitialEvent;
00089 UInt_t uEventCountsRoc;
00090 UInt_t uEventCountsTrig;
00091 UInt_t uEventCountsVme;
00092 TH1 *fTriggerNumber;
00093
00094 TH1 *fMsgsPerRoc;
00095 TH1 *fTriggerPerRoc;
00096
00097 TH1* fDeltaTriggerTime;
00098 TGo4WinCond* fGlobalTriggerWind;
00099 TGo4WinCond* fGlobalAUXWind;
00100 TGo4WinCond* fGlobalSelfTriggWind;
00101
00102 ULong_t fTotaldatasize;
00103
00104 UInt_t fCurrEvntTm;
00105
00106 Double_t fLastRateTm;
00107 Double_t fRate;
00108
00109 std::vector<TGet4v1Rec> ROC;
00110 Bool_t fFirstSubEvent;
00111
00112 Bool_t fHasNewGlobalTrigger;
00113 unsigned fTriggerCounter;
00114
00115
00118
00119 UInt_t printData;
00120 UInt_t uNbEvents[MAX_ROC];
00121 UInt_t uFirstEventIndex[MAX_ROC];
00122 UInt_t uPrevEventIndex[MAX_ROC];
00123
00124
00125 UInt_t uEventInsideMbsEvtCount[MAX_ROC];
00126 UInt_t uRealEventsCount[MAX_ROC];
00127 UInt_t uNotEmptyEventInsideMbsEvtCount[MAX_ROC];
00128 UInt_t uNotEmptyRealEventsCount[MAX_ROC];
00129
00130
00131 Get4v1Hit fHitTemp;
00132
00133
00134
00135
00136
00137
00138
00139
00140 private:
00141
00146
00147
00148
00149 ClassDef(TGet4v1Proc,1)
00150 };
00151
00152 #endif //TGET4V1PROC_H
00153