//------------------------------------------------------------------------------ // Application task example -- // (C) Piero Giubilato 2008-2010, Berkeley Lab -- //------------------------------------------------------------------------------ //______________________________________________________________________________ // {Trace} // [File name] "task_Demo.h" // [Author] "Piero Giubilato" // [Version] "1.2" // [Modified by] "Piero Giubilato" // [Last revision] "06 Jun 2009" // [Language] "C++" // [Compiler] "Visual C++ 8.x 9.x" // [Member of] "Cool SEAL" // [Project] "SEAL" // [Description] "Application task example" // [Key documentation] // "Visual C++ Reference Help" // {Trace} //______________________________________________________________________________ // Overloading check #ifndef task_Demo_H #define task_Demo_H // Standard components #include #include // Root components #include // Application components // Data #include "data_Burst.h" #include "geom_Frame.h" // GUI #include "gui_Const.h" #include "gui_Form.h" #include "gui_Panel.h" #include "gui_Check.h" #include "gui_Led.h" #include "gui_Button.h" #include "gui_Combo.h" #include "gui_CoolButton.h" #include "gui_Numeric.h" #include "gui_Menu.h" #include "gui_Map.h" #include "gui_Plot.h" #include "gui_Text.h" //______________________________________________________________________________ class task_Demo: public task_Object { private: // DATA objects std::vector detector_List;// Detector description data_Burst* burst_Raw; // Raw data container data_Frame* frame_Image; // Image data_Frame* frame_Sum; // Image data_Frame* frame_Display; // Image data_Frame* frame_Pedestal; // Pedestals data_Frame* frame_Noise; // Noise // GUI objects std::vector btn_Acq; // Acquisition buttons std::vector chk_Acq; // Acquisition buttons std::vector led_Acq; // Acquisition leds std::vector txt_Acq; // Acquisition dump file std::vector btn_Comm; // Communication buttons std::vector lbl_Desk; // Generic label std::vector pnl_Desk; // Generic panels std::vector cmb_Det; // Detector options combos std::vector btn_Det; // Detector buttons std::vector cmb_Acq; // Acquisition options combos std::vector num_Acq; // Acquisition options numerics std::vector num_Reg; // Registers options numerics std::vector btn_Reg; // Registers options numerics std::vector chk_Adc; // Channel selectors std::vector cmb_TEAM; // Acquisition options combos std::vector btn_TEAM; // Acquisition options combos std::vector btn_DAC; // Acquisition options combos std::vector num_DAC; // Acquisition options combos std::vector btn_Temp; // Acquisition options combos std::vector num_Temp; // Acquisition options combos // Graphics display gui_Menu* mnu_Test; // Test menu gui_Map* map_Signal; // Signal Map gui_Plot* plt_Slice; // The slice plot gui_Map* map_Reference; // Reference Map gui_Numeric* num_Slice; // Plot line selector // DDR stuff gui_Combo* cbox_Mode; // Combo box for mode selection (real data, write calibration, read calibration) gui_Combo* cbox_ADC_Input; // Combo box for ADC_FIFO input selection gui_Combo* cbox_RO_Input; // Combo box for RO_FIFO input selection gui_Numeric* num_ADC_Phase; // ADC_FIFO readout clock phase shifting selection gui_Numeric* num_RO_Phase; // RO_CLOCK write in clock phase shifting selection gui_Numeric* num_prog_Data; // Programmable pattern for ADC_FIFO input gui_Numeric* num_Row; // Number of rows gui_Numeric* num_CG; // Number of column groups gui_CoolButton* btn_set_All; // Button for setting all settings gui_CoolButton* btn_set_ADC; // Button for setting ADC_FIFO settings gui_CoolButton* btn_set_RO; // Button for setting void btn_all_Evn(const int arg); // Handles btn_set_All press void btn_adc_Evn(const int arg); // Handles btn_set_ADC press void btn_ro_Evn(const int arg); void set_All(); void set_ADC(); void set_RO(); // Setup/Cleanup functions void detector_Setup(UInt_t col_Count = 16, UInt_t row_Count = 16); void data_Setup(geom_Frame* detector, UInt_t fr_Count = 1); void fpga_Setup(data_Burst* burst); void gui_Setup(); void delete_All(); // Data acquisition/analysis void reg_Write(const UShort_t* = 0); void reg_Read(const UShort_t* = 0); void data_Preset(); enum kAcq {ka_Std, ka_Ped, ka_PedSub}; void data_Acquire(UInt_t acq_Mode = 0); void data_Pedestal(); void team_Setup(); void data_Write(TString* fileName = 0, UInt_t fileMode = 0, bool setMode = false); void team_EraseFirmware(const int arg); void team_DownloadFirmware(const int arg); void team_VerifyFirmware(const int arg); // Acquisition flags UInt_t old_Det; // Old selected detector UInt_t old_Col; // Old col number UInt_t old_Row; // Old row number UInt_t old_frm_Cnt; // Old frame number // Files TString stream_fileRoot; // The strem file root UInt_t stream_fileMode; // The strem file mode UInt_t stream_fileCount; // The strem file count // GUI objects calback target functions (can be either public or private) void btn_acq_Evn(const int arg); // Handles acquisition buttons void btn_comm_Evn(const int arg); // Handles comm buttons void btn_reg_Evn(const int arg); // Handles btn_Reg[i] press void cmb_acq_Evn(const int arg); // Handles cmb_Acq[i] changes void cmb_det_Evn(const int arg); // Handles cmb_Det changes void btn_det_Evn(const int arg); // Handles btn_Det changes void num_slice_Evn(const int arg); // Handles btn_Det changes void btn_TEAM_Evn(const int arg); // Handles btn_TEAM changes void btn_DAC_Evn(const int arg); // Handles btn_TEAM changes void btn_Temp_Evn(const int arg); // Handles btn_Temp changes // Special private memebers task_Demo(const task_Demo&) {} const task_Demo& operator=(const task_Demo&) {return *this;} public: // Special members task_Demo(); ~task_Demo(); // Run! UInt_t run(); // Static handler (Callback can handle static target function as well) static void static_Evn(const int arg); }; // Overloading check #endif