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

beamtime/cosy-nov11/go4/DIAMOND/TDiamondProc.cxx (r4864/r2218)

Go to the documentation of this file.
00001 #include "TDiamondProc.h"
00002 
00003 
00004 TDiamondProc::TDiamondProc(const char* name) : TCBMBeamtimeProc(name),fCrateInputEvent(0), fOutputEvent(0),fBeamEvent(0)
00005 {
00006    cout << "**** TDiamondProc: Create instance" << name << endl;
00007 
00008    fPar = (TDiamondParam*) MakeParameter("DiamondPar", "TDiamondParam");
00009 
00010    TString obname, obtitle;   
00011 
00012    printf("TDiamondProc Histograms created \n");
00013    fflush ( stdout);
00014 }
00015 
00016 
00017 TDiamondProc::~TDiamondProc()
00018 {
00019 }
00020 
00021 void TDiamondProc::InitEvent(TGo4EventElement* outevnt)
00022 {
00023    // first assign input event:
00024    // since input event object is never discarded within processor lifetime,
00025    // we just search for subevent by name once to speed up processing
00026    if(fCrateInputEvent==0)
00027    {
00028       TCBMBeamtimeEvent* btevent=dynamic_cast<TCBMBeamtimeEvent*>(GetInputEvent());
00029       if(btevent)
00030       {
00031          fCrateInputEvent=dynamic_cast<TMbsCrateEvent*>(btevent->GetSubEvent("MBSCRATE"));
00032       }
00033       else
00034       {
00035          fCrateInputEvent=dynamic_cast<TMbsCrateEvent*>(GetInputEvent());
00036 
00037       }
00038       if(fCrateInputEvent==0) {
00039          GO4_STOP_ANALYSIS_MESSAGE("**** TDiamondProc: Fatal error: input event is not a TMbsCrateEvent!!! STOP GO4");
00040       }
00041    }
00042    // then assign output event
00043    // since output event object is never discarded within processor lifetime,
00044    // we just search for subevent by name once to speed up processing
00045    if(fOutputEvent==0)
00046    {
00047       TCBMBeamtimeEvent* btevent=dynamic_cast<TCBMBeamtimeEvent*>(outevnt);
00048       if(btevent)
00049       {
00050          fOutputEvent=dynamic_cast<TDiamondEvent*>(btevent->GetSubEvent("DIAMOND"));
00051          // since output event object is never discarded within processor lifetime,
00052          // we just search for subevent by name once to speed up processing
00053          if(fBeamEvent==0)
00054             fBeamEvent=dynamic_cast<TBeamMonitorEvent*>(btevent->GetSubEvent("BEAM"));
00055       }
00056       else
00057       {
00058 
00059          fOutputEvent= dynamic_cast<TDiamondEvent*>(outevnt);
00060       }
00061       if(fOutputEvent==0) {
00062          GO4_STOP_ANALYSIS_MESSAGE("**** TDiamondProc: Fatal error: output event is not a TDiamondEvent!!! STOP GO4");
00063       }
00064    }
00065 }
00066 
00067 void TDiamondProc::FinalizeEvent()
00068 {
00069    if (fCrateInputEvent==0) return;
00070 
00071    if (fCrateInputEvent->IsValid()) {
00072       // analysis of FPGA TDC data
00073 
00074       for (int n=0;n<MAX_FPGA_TDC;n++) {
00075          // number of TDC messages in each FPGA
00076          unsigned num_hits = fCrateInputEvent->fFPGA[n].size();
00077       }
00078 
00079       if (fBeamEvent) {
00080          // use data from beam info - when available
00081 
00082       }
00083    }
00084 }

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