BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
BesClient.h
Go to the documentation of this file.
1#ifndef BES_Client_H
2#define BES_Client_H
3
4#include <cstdio> //Long Peixun's update: stdio.h -> cstdio
5#include <cstdlib> //Long Peixun's update: stdlib.h -> cstdlib
6#include <sys/ipc.h>
7#include <sys/sem.h>
8#include <sys/types.h>
9#include <unistd.h>
10// #include <wait.h>
11#include <cstring> //Long Peixun's update: string.h -> cstring
12#include <string> //Long Peixun's update: std::string class
13
14#include <TASImage.h>
15#include <TGFrame.h>
16#include <TGNumberEntry.h>
17#include <TGeometry.h>
18#include <TSystem.h>
19#include <TTimer.h>
20#include <TViewerX3D.h>
21
22// Long Peixun's update: remove redundant include
23// #include <stdio.h>
24// #include <stdlib.h>
25
26// Long Peixun's update: for geometry selection
27#include "BesGeoSelector.h"
28#include "BesVisLib/BesEvent.h"
29#include "BesVisLib/BesGMenuBar.h"
30#include "BesVisLib/BesGPictureButton.h"
31#include "BesVisLib/BesVisDisplay.h"
32#include "RootEventData/TDigiEvent.h"
33#include "RootEventData/TDstEvent.h" //Long Peixun's update: for dst file
34#include "RootEventData/TMcEvent.h"
35#include "RootEventData/TRecEmcShower.h"
36#include "RootEventData/TRecEvTime.h"
37#include "RootEventData/TRecTrackEvent.h"
38#include "RootEventData/TTrigEvent.h"
39
40// semphore
41union semun {
42 int val;
43 struct semid_ds* buf;
44 ushort* array;
45};
46
47// struct sembuf acquire = {0, -1, SEM_UNDO};
48// struct sembuf release = {0, 1, SEM_UNDO};
49
52
53// BesVis GUI command IDs
54#ifndef BES_EZCommand
55# define BES_EZCommand
69#endif
70
71// Bes button command IDs
72#ifndef BES_EZButtons
73# define BES_EZButtons
167};
168#endif
169
170// BesVis running modes
171#ifndef BES_EZMode
172# define BES_EZMode
173enum EZMode {
174 kModeOnline = BIT( 0 ),
175 kModeFile = BIT( 1 ),
176 kModeDown = BIT( 2 ),
177 kModeBes = BIT( 3 ),
178 kModePR = BIT( 4 )
179};
180#endif
181
182#ifndef BES_EZMenuViewOption
183# define BES_EZMenuViewOption
248#endif
249
250class TList;
251class TRootEmbeddedCanvas;
252class TApplication;
253class TInterpreter;
254class TFile;
255class TTimer;
256class TBranch;
257class TTree;
258class TGPopupMenu;
259class TGStatusBar;
260class TGHorizontal3DLine;
261class TGLayoutHints;
262class TGMenuBar;
263class TGNumberEntry;
264class TGNumberFormat;
265class TGLabel;
266class TGHButtonGroup;
267class TGRadioButton;
268class TGCheckButton;
269class TGTextButton;
270class TGTextBuffer;
271class TGTextEntry;
272class TGHProgressBar;
273class TGButton;
274class TGPictureButton;
275class TGFileInfo;
276class TGFileDialog;
277class TGMsgBox;
278class TGGroupFrame;
279class TGTab;
280class TGVSplitter;
281class TGCanvas;
282class TGListTree;
283class TGListTreeItem;
284class TGHSlider;
285class TGVSlider;
286class TCanvas;
287class TView;
288class TGListTreeItem;
289
290class BesClient : public TGMainFrame {
291
292private:
293 runStatus f_runStatus;
294 TGeometry* fGeometry; // Bes geometry
295 TFile* fGeoFile; // ROOT geometry file contains volBes
296 TFile* fEventFile; // Current event file
297 TTree* fEventTree; // Current event tree
298 BesEvent* fEvent; // Current Bes event
299 TEvtHeader* fEvtHeader;
300 TRecEvTime* fRecEvTime;
301 // TTrigEvent *fTrigEvent;
302 TDigiEvent* fDigiEvent;
303 TRecTrackEvent* fRecEvent_1;
304 TRecMdcTrack* recTrack1;
305 TRecMucTrack* muctrk;
306 TRecTofTrack* tofTrack;
307 // TRecMdcKalTrack *kalTrack;
308 TRecMdcHit* mdchit;
309 TRecEmcShower* emcshower;
310 TDstEvent* fDstEvent; // Long Peixun's update: for tracks from dst file
311 Bool_t isRecEvent; // Long Peixun's update: is this event rec event?
312 TMcEvent* fMcEvent;
313
314 Int_t NCluster; //...
315
316 TGLayoutHints* fMenuBarLayout; // Menu bar layout
317 TGLayoutHints* fMenuBarFirstItemLayout; // First Item popup menu layout
318 TGLayoutHints* fMenuBarItemLayout; // Item popup menu layout
319 TGLayoutHints* fMenuBarLastItemLayout; // Last Item popup menu layout
320 TGLayoutHints* fECLayout; // Embedded canvas layout
321
322 BesGMenuBar* fMenuBar; // Menu bar
323
324 TGPopupMenu* fMenuFile; // File menu
325 TGPopupMenu* fMenuEdit; // Edit menu
326 TGPopupMenu* fMenuView; // View menu
327 TGPopupMenu* fMenuHelp; // Help menu
328
329 TGPopupMenu* fMenuViewOptionHeader;
330 TGPopupMenu* fMenuViewOptionMdc;
331 TGPopupMenu* fMenuViewOptionTof;
332 TGPopupMenu* fMenuViewOptionEmc;
333 TGPopupMenu* fMenuViewOptionMuc;
334 TGPopupMenu* fMenuViewOptionFull3D;
335 TGPopupMenu* fMenuViewOptionOthers;
336 TGPopupMenu* fMenuViewOptionMdcHits;
337 TGPopupMenu* fMenuViewOptionTofHits;
338 TGPopupMenu* fMenuViewOptionEmcHits;
339 TGPopupMenu* fMenuViewOptionMucHits;
340 TGPopupMenu* fMenuViewOptionTracks;
341 TGPopupMenu* fMenuViewOptionMC;
342
343 TGLayoutHints* fUpButtonBarFirstItemLayout; // Up button bar first button layout
344 TGLayoutHints* fUpButtonBarItemLayout; // Up button bar button layout
345 TGLayoutHints* fUpButtonBarLastItemLayout; // Up button bar last button layout
346 TGCompositeFrame* fUpButtonBarFrame; // Up button bar frame
347
348 static const int kNUpSplitter = 4;
349 BesGPictureButton* fUpButtonSplitter[kNUpSplitter]; // Up button bar splitter
350 BesGPictureButton* fLoadGeoFileButton; // load geometry file
351 BesGPictureButton* fOpenEventFileButton; // open event file
352 BesGPictureButton* fSaveGeoAsButton; // save geometry as root file
353 BesGPictureButton* fSavePicAsButton; // save picture as
354 BesGPictureButton* fSavePicAsPSButton; // save picture as pdf
355 static const int kNCursorState = 2;
356 BesGPictureButton* fRefreshButton; // Refresh
357 BesGPictureButton* fResetCurrentButton; // Reset current pad
358 BesGPictureButton* fResetAllButton; // Reset all pad
359 BesGPictureButton* fCursorButton[kNCursorState]; // cursor state, pick or hand
360 BesGPictureButton* fZoomInButton; // ZoomIn
361 BesGPictureButton* fZoomOutButton; // ZoomOut
362 TGNumberEntryField* fZoomRatioNumber; // ZoomRatio number
363 BesGPictureButton* fZoomRatioPercentButton; // "%" picture
364 BesGPictureButton* fSwitchDisplayModeButton; // button to switch among display modes
365 BesGPictureButton* fSetHomeButton; // Set home position
366 BesGPictureButton* fGoHomeButton; // Go to home position
367 BesGPictureButton* fSaveMyConfigButton; // Save my style
368 BesGPictureButton* fLoadMyConfigButton; // Load my style
369 BesGPictureButton* fPaletteButton; // Display palette axis
370 BesGPictureButton* fHelpButton; // Help
371
372 TGLayoutHints* fDisplayModeBarItemLayout; // Display mode bar button layout
373 TGCompositeFrame* fDisplayModeBarFrame; // Display mode bar frame
374 static const int kNDisplayMode = 5;
375 BesGPictureButton* fDisplayModeButton[kNDisplayMode]; // button to switch among display modes
376
377 TGLayoutHints* fToolBarFirstItemLayout; // Tool bar first button layout
378 TGLayoutHints* fToolBarItemLayout; // Tool bar button layout
379 TGLayoutHints* fToolBarLastItemLayout; // Tool bar last button layout
380 TGCompositeFrame* fToolBarFrame; // Tool bar frame
381
382 static const int kNToolSplitter = 4;
383 BesGPictureButton* fToolButtonSplitter[kNToolSplitter]; // Tool button bar splitter
384 BesGPictureButton* fSwitchPadButton; // button to switch among pads
385 BesGPictureButton* fShowInfoButton; // Show info or not
386 BesGPictureButton* fShowAxisButton; // Show axis or not
387 BesGPictureButton* fFishEyeViewButton; // FishEye view
388 BesGPictureButton* fParallelViewButton; // Parallel view
389 BesGPictureButton* fPerspectiveViewButton; // Perspective view
390 BesGPictureButton* fX3DButton; // X3D view
391 BesGPictureButton* fOpenGLButton; // OpenGL view
392
393 TGCanvas* fEventListView; // Canvas for event list tree
394 TRootEmbeddedCanvas* fEmbeddedCanvas; // Embedded Canvas
395 TCanvas* fCanvas;
396 BesVisDisplay* fDisplay;
397
398 TGVerticalFrame* fV1; // Splitter for tabs
399
400 TGTab* fTabs; // Tabs for event
401
402 TGListTree* fEventListTree; // Event list tree
403 TGListTreeItem* fItem; // Active event list tree item
404 TGListTreeItem* fRunItem; // Active run list tree item
405
406 TGCompositeFrame* fEventDownFrame; // tab fame for download mode
407 TGCompositeFrame* fEventControlFrame; // Frame for event control
408 TGCompositeFrame* fEventControlTextFrame; // Frame for label "Event Control"
409 TGCompositeFrame* fEventNavFrame; // Frame for Event navigation
410 TGCompositeFrame* fEventPlayTextFrame; // Frame for label "Event Play"
411 TGCompositeFrame* fEventPlayButtonFrame; // Frame for buttons "prev, next, play, stop"
412 TGCompositeFrame* fEventPlaySpeedFrame; // Frame for set event play speed
413 TGCompositeFrame* fEventListFrame; // Frame for event list browser
414 TGCompositeFrame* fEventListTextFrame; // Frame for label "Event file list"
415 TGCompositeFrame* fEventListContentFrame; // Frame for event list content
416
417 TGCompositeFrame* fAutoFrame; // Frame for auto control
418 TGCompositeFrame* fAutoTextFrame; // Frame for label "Auto Control"
419
420 TGCompositeFrame* fViewFrame; // Frame for view control
421 TGCompositeFrame* fViewTextFrame; // Frame for label "View Control"
422 TGCompositeFrame* fViewContentFrame; // Frame for view content
423 TGCompositeFrame* fViewContent1Frame; // Frame for view content first line
424 TGCompositeFrame* fViewContent2Frame; // Frame for view content seconde line
425 TGCompositeFrame* fViewContent3Frame; // Frame for view content third line
426 TGCompositeFrame* fViewAngleFrame; // Frame for view angles
427 TGCompositeFrame* fViewAngleThetaFrame; // Frame for view theta
428 TGCompositeFrame* fViewAnglePhiFrame; // Frame for view phi
429 TGCompositeFrame* fViewAnglePsiFrame; // Frame for view psi
430
431 TGNumberEntry* fNumEntryRunNo; // Bes input of run number
432 TGNumberEntry* fNumEntryEventNo; // Bes input of event number
433 TGNumberEntry* fNumEntryEventPlaySpeed; // event play speed number
434 // TGNumberEntry *fBesSamplePos; // Bes input of sample position
435
436 TGLabel* fEventControlTextLabel; // Label "Event control"
437 TGLabel* fBesLabelRun; // Label "Run : "
438 TGLabel* fBesLabelEvent; // Label "Event : "
439 TGLabel* fEventPlayTextLabel; // Label "Event Play"
440 TGLabel* fEventPlaySpeedLabel; // Label "Play Speed : "
441 TGLabel* fEventListTextLabel; // Label "Event file list"
442 TGLabel* fViewTextLabel; // Label "View control"
443 TGLabel* fAutoTextLabel; // Label "Auto control"
444
445 TGHSlider* fEventPlaySlider; // slider for event play
446 BesGPictureButton* fPrevEventButton; // next event button
447 BesGPictureButton* fNextEventButton; // prev event button
448 BesGPictureButton* fPlayEventButton; // next event button
449 BesGPictureButton* fFirstEventButton; // prev event button
450
451 BesGPictureButton* fViewResetAngleButton; // View reset angle button
452 BesGPictureButton* fViewCounterClockWiseButton; // View CounterClockWise button
453 BesGPictureButton* fViewClockWiseButton; // View ClockWise button
454 BesGPictureButton* fViewMoveUpButton; // View MoveUp button
455 BesGPictureButton* fViewMoveLeftButton; // View MoveLeft button
456 BesGPictureButton* fViewMoveRightButton; // View MoveRight button
457 BesGPictureButton* fViewMoveDownButton; // View MoveDown button
458 BesGPictureButton* fViewMoveCenterButton; // View MoveCenter button
459
460 BesGPictureButton* fViewAngleThetaPlusButton; // View AngleTheta + button
461 BesGPictureButton* fViewAngleThetaMinusButton; // View AngleTheta - button
462 TGVSlider* fViewAngleThetaSlider; // View AngleTheta slider
463 TGNumberEntryField* fViewAngleThetaNumber; // View AngleTheta number
464 TGLabel* fViewAngleThetaLabel; // Label "Theta"
465
466 BesGPictureButton* fViewAnglePhiPlusButton; // View AnglePhi + button
467 BesGPictureButton* fViewAnglePhiMinusButton; // View AnglePhi - button
468 TGVSlider* fViewAnglePhiSlider; // View AnglePhi slider
469 TGNumberEntryField* fViewAnglePhiNumber; // View AnglePhi number
470 TGLabel* fViewAnglePhiLabel; // Label "Phi"
471
472 BesGPictureButton* fViewAnglePsiPlusButton; // View AnglePsi + button
473 BesGPictureButton* fViewAnglePsiMinusButton; // View AnglePsi - button
474 TGVSlider* fViewAnglePsiSlider; // View AnglePsi slider
475 TGNumberEntryField* fViewAnglePsiNumber; // View AnglePsi number
476 TGLabel* fViewAnglePsiLabel; // Label "Psi"
477
478 TGCompositeFrame* fRotateStepFrame; // Frame for RotateStep
479 TGLabel* fRotateStepLabel; // Label "Deg"
480 TGNumberEntryField* fNumEntryRotateStep; // Rotate step
481 TGLabel* fRotateStepUnitLabel; // Label "Deg"
482
483 TGGroupFrame* fFrameAutoRotate; // Frame for AutoRotate
484 TGCheckButton* fChkBtnAutoRotate; // CheckButton AutoRotate;
485
486 TGCompositeFrame* fRotateSpeedFrame; // Frame for RotateSpeed
487 TGNumberEntryField* fNumEntryRotateSpeed; // Auto Rotate speed number
488 TGLabel* fRotateSpeedLabel; // Label "Deg/Sec"
489
490 TGCompositeFrame* fRotateFPSFrame; // Frame for RotateFPS
491 TGNumberEntry* fNumEntryRotateFPS; // Auto Rotate fps number
492 TGLabel* fRotateFPSLabel; // Label "fps"
493
494 TGStatusBar* fStatusBar; // Status bar
495
496 TGGroupFrame* fFrameHeader; // Frame for Header
497 TGGroupFrame* fFrameHits; // Frame for Hits
498 TGGroupFrame* fFrameTracks; // Frame for Tracks
499
500 TGGroupFrame* fFrameSubDetector;
501 // TGGroupFrame *fFrameMdc;
502 // TGGroupFrame *fFrameTof;
503 // TGGroupFrame *fFrameEmc;
504 // TGGroupFrame *fFrameMuc;
505 TGGroupFrame* fFrameOthers;
506
507 TGGroupFrame* fFrameMdcMatch; // Frame for TQMatch
508 TGGroupFrame* fFrameTofMatch; // Frame for TQMatch
509 TGGroupFrame* fFrameMagnetic; // Frame for magnetic field
510
511 TGHorizontalFrame* fTitleFrame; // Title frame
512 TGHorizontalFrame* fMainFrame; // Main frame
513
514 TGHorizontalFrame* fBesRunFrame; // Bes Run nr input frame
515 TGHorizontalFrame* fBesEventFrame; // Bes Event nr input frame
516
517 TGCheckButton* fChkBtnHeaderGlobal;
518
519 TGCheckButton* fChkBtnMdcHitsGlobal;
520 TGCheckButton* fChkBtnTofHitsGlobal;
521 TGCheckButton* fChkBtnTofHitsEast;
522 TGCheckButton* fChkBtnTofHitsBarrel;
523 TGCheckButton* fChkBtnTofHitsWest;
524 TGCheckButton* fChkBtnEmcHitsGlobal;
525 TGCheckButton* fChkBtnEmcHitsEast;
526 TGCheckButton* fChkBtnEmcHitsBarrel;
527 TGCheckButton* fChkBtnEmcHitsWest;
528 TGCheckButton* fChkBtnEmcHitsSide;
529 TGCheckButton* fChkBtnMucHitsGlobal;
530 TGCheckButton* fChkBtnMucHitsEast;
531 TGCheckButton* fChkBtnMucHitsBarrel;
532 TGCheckButton* fChkBtnMucHitsWest;
533
534 TGCheckButton* fChkBtnTracksGlobal;
535 TGCheckButton* fChkBtnTracksMdc;
536 TGCheckButton* fChkBtnTracksIdeal; // added by wangll
537 TGCheckButton* fChkBtnTracksTof;
538 TGCheckButton* fChkBtnTracksEmc;
539 TGCheckButton* fChkBtnTracksMuc;
540 TGCheckButton* fChkBtnTracksExt;
541 TGCheckButton* fChkBtnMCTruthTrack;
542
543 TGCheckButton* fChkBtnMdcGlobal;
544 TGCheckButton* fChkBtnMdcTubes;
545 TGCheckButton* fChkBtnMdcWires;
546 TGCheckButton* fChkBtnTofGlobal;
547 TGCheckButton* fChkBtnTofEast;
548 TGCheckButton* fChkBtnTofBarrel;
549 TGCheckButton* fChkBtnTofWest;
550 TGCheckButton* fChkBtnEmcGlobal;
551 TGCheckButton* fChkBtnEmcEast;
552 TGCheckButton* fChkBtnEmcBarrel;
553 TGCheckButton* fChkBtnEmcWest;
554 TGCheckButton* fChkBtnEmcSide;
555 TGCheckButton* fChkBtnMucGlobal;
556 TGCheckButton* fChkBtnMucEast;
557 TGCheckButton* fChkBtnMucBarrel;
558 TGCheckButton* fChkBtnMucWest;
559 TGCheckButton* fChkBtnMucStrips;
560
561 TGCheckButton* fChkBtnBeamPipe;
562 TGCheckButton* fChkBtnZRPlaneOnXY;
563 TGCheckButton* fChkBtnAxis;
564
565 TGCheckButton* fChkBtnMdcTOverflowGlobal;
566 TGCheckButton* fChkBtnMdcQOverflowGlobal;
567 TGCheckButton* fChkBtnMdcTMatchGlobal;
568 TGCheckButton* fChkBtnMdcQMatchGlobal;
569 TGCheckButton* fChkBtnMdcColorfulWireGlobal;
570 TGCheckButton* fChkBtnMdcTimeSubEvTimeGlobal;
571 TGCheckButton* fChkBtnTofTMatchGlobal;
572 TGCheckButton* fChkBtnTofQMatchGlobal;
573
574 TGNumberEntry* fNumEntryMagnetic; // magnetic number
575
576 TString fBesVisPath;
577
578 Long64_t fBesRunNo; // run number of BES request
579 Long64_t fBesEventNo; // event number of BES request
580 Long64_t fCurrentEvent;
581 Int_t fEventPlaySpeed; // event play speed
582 Bool_t fAutoDisplayEvent; // auto display event
583 TTimer* fAutoDisplayEventTimer;
584
585 Double_t fMoveFactor; // factor of move
586 Double_t fRotateStep; // rotate angle in each step
587 Int_t fRotateFPS; // rotae fps, frame per second, 24? 10?
588 Double_t fRotateSpeed; // rotate angle per second, deg/sec
589 Bool_t fAutoRotate; // auto rotate flag
590 TTimer* fAutoRotateTimer; // auto rotate timer
591 Int_t fAutoRotateClockWise; // auto rotate clockwise flag
592 Int_t fAutoRotateTheta; // auto rotate theta flag
593 Int_t fAutoRotatePhi; // auto rotate phi flag
594 Int_t fAutoRotatePsi; // auto rotate psi flag
595
596 Int_t fViewer3DMode; // Mode of Viewer3D, 1:x3d, 2:OpenGL
597 // TViewerX3D *fx3d;
598 Double_t fViewThetaPreStep;
599 Double_t fViewPhiPreStep;
600
601 Double_t fHomeX[3], fHomeY[3]; // Home position of three pads
602
603 Int_t fWindowWidth; // zevis window width
604 Int_t fWindowHeight; // zevis window height
605
606 TList* fWidgets; // list to hold TGLayoutHints for destruction
607 TGLayoutHints* fLayout; // dummy TGLayoutHints;
608
609 // added by tianhl to add besvis to bossframework
610 TString f_evtFile;
611 TString f_geoFile;
612 Bool_t f_bossMode;
613 Int_t f_pid;
614 // Long Peixun's update: remove useless variable
615 // TString f_evtFile_1; //huangb add
616
617 // Long Peixun's update: Help text loaded from help.txt
618 std::string f_HelpText;
619 // Long Peixun's update: for geometry selection
620 BesGeoSelector fSelector;
621 // Long Peixun's update: current geometry file (for default geom)
622 TString fCurGeom;
623 // Long Peixun's update: whether current geometry is selected automatically
624 Bool_t fAutoGeom;
625 // Long Peixun's update: prime title text
626 TString fTitleText;
627
628private:
629 // void SetMdcTOverflow(Bool_t input);
630 void SetMdcQNotOverflow( Bool_t input );
631 void SetMdcTFire( Bool_t input );
632 void SetMdcQFire( Bool_t input );
633 void SetMdcColorfulWire( Bool_t input );
634 void SetMdcTimeSubEvTime( Bool_t input );
635 void SetTofTMatch( Bool_t input );
636 void SetTofQMatch( Bool_t input );
637
638public:
639 BesClient( const TGWindow* p, const char* title, UInt_t width, UInt_t height,
640 Option_t* option = "", Int_t argc = 0, char** argv = 0 );
641 virtual ~BesClient();
642 virtual void InitLocal();
643 virtual void InitParameter();
644 virtual void InitConnections();
645 // Long Peixun's update: Initialization of geometry selector
646 virtual void InitGeoSelector( const char* geomsel_file );
647
648 virtual void CreateWidget( const char* title, UInt_t width, UInt_t height );
649 virtual void CreateHorizontalRuler();
650 virtual void CreateMenuBar();
651 virtual void CreateUpButtonBar();
652 virtual void CreateDisplayModeBar();
653 virtual void CreateToolBar();
654 virtual void CreateTitleBar();
655 virtual void CreateStatusBar();
656 virtual void CreateMainFrame();
657 virtual void CreateCanvas();
658 virtual void CreateTabs();
659
660 virtual void HandleMenu( Int_t id );
661 virtual void HandleViewOptionMenu( Int_t id );
662 virtual void HandleError( const char* msg );
663 virtual void HandleInfoBar( const char* msg );
664 virtual void HandleStatusBar( const char* msg );
665 virtual void HandleButtons( Int_t id = -1 );
666 virtual void HandleSliders( Int_t id );
667 virtual void HandleEventList( TGListTreeItem* entry, Int_t btn );
668 virtual void UpdateBesInputFields();
669
670 virtual void LoadGeoFile();
671 virtual void OpenGeoFile( TString filename );
672 virtual void SaveGeoAs();
673
674 // Long Peixun's update: Add a parameter to determine whether choose a detector geometry
675 // automatically when open an event file.
676 virtual void OpenEventFile();
677 virtual void OpenEventFile( TString filename, bool auto_sel_geom = false );
678
679 virtual void SavePicAs();
680 virtual void SavePicAsPS();
681 virtual void SetHome();
682 virtual void GoHome();
683 virtual void SaveMyConfig();
684 virtual void LoadMyConfig();
685 virtual void LoadMdcPalette();
686 virtual void Help();
687
688 virtual void SetAllDisplayModeButtonUnHL();
689
690 virtual void X3D();
691 virtual void OpenGL();
692
693 virtual void Show();
694 virtual void CloseWindow();
695
696 // Long Peixun's update: Get run number and choose a detector geometry automatically when in
697 // need.
698 virtual Bool_t GetEvent( Long64_t i, bool openfile = false, bool sel_geom = false );
699 virtual Bool_t GetRecEvent();
700 virtual Bool_t NextEvent();
701 virtual Bool_t PrevEvent();
702 virtual void AutoDisplayEvent();
703 virtual void AutoDisplayEventCommand();
704 virtual Bool_t FirstEvent();
705 virtual Bool_t LastEvent(); // Long Peixun's update: Get last event
706
707 virtual void RotateClockWise( int clockwise );
708 virtual void RotateTheta( int pn );
709 virtual void RotatePhi( int pn );
710 virtual void RotatePsi( int pn );
711 virtual void AutoRotate();
712 virtual void AutoRotateCommand();
713
714 virtual void ExecuteEvent( Int_t event, Int_t px, Int_t py, TObject* sel );
715 virtual void SetState( Int_t id = -1 );
716 virtual void UpdateStatus();
717 virtual void UpdateAllView();
718 virtual void UpdateCurrentPad();
719 virtual void ChangeFocus();
720 virtual void ExecuteReturn();
721
722 virtual Pixmap_t GetPic( const char* file );
723 virtual Bool_t FileExists( TString fname );
724 virtual void SetRange( Double_t& input, Double_t min, Double_t max );
725 virtual const char* GetCurrentPadString(); // Long Peixun's update: Return current pad hint
726 // string
727
728 inline Long64_t GetBesRunNo() { return fBesRunNo; }
729 inline Long64_t GetBesEventNo() { return fBesEventNo; }
730 inline Int_t GetEventPlaySpeed() { return fEventPlaySpeed; }
731
732 inline Int_t GetRotateFPS() { return fRotateFPS; }
733 inline Double_t GetRotateSpeed() { return fRotateSpeed; }
734 inline Double_t GetRotateStep() { return fRotateStep; }
735 inline void SetRotateSpeed() { fRotateSpeed = fRotateStep * fRotateFPS; }
736 inline void SetRotateStep() {
737 if ( fRotateFPS != 0 ) fRotateStep = fRotateSpeed / fRotateFPS;
738 else fRotateStep = 0.0;
739 }
740
741 ClassDef( BesClient, 0 ) // Bes client
742};
743
744#endif
EZMenuViewOption
Definition BesClient.h:184
@ kM_Tof_Barrel
Definition BesClient.h:193
@ kM_Mdc_Tubes
Definition BesClient.h:189
@ kM_Tracks_Tof
Definition BesClient.h:229
@ kM_Muc_Barrel
Definition BesClient.h:202
@ kM_TofHits_East
Definition BesClient.h:215
@ kM_Standard_On
Definition BesClient.h:237
@ kM_Header_Global
Definition BesClient.h:185
@ kM_Muc_East
Definition BesClient.h:201
@ kM_EmcHits_East
Definition BesClient.h:219
@ kM_Emc_Side
Definition BesClient.h:199
@ kM_User_On
Definition BesClient.h:238
@ kM_Muc_Strips
Definition BesClient.h:204
@ kM_Tracks_Mdc
Definition BesClient.h:228
@ kM_Mdc_QNotOverflow_Global
Definition BesClient.h:240
@ kM_Full3D_Tof
Definition BesClient.h:206
@ kM_TofHits_Global
Definition BesClient.h:214
@ kM_MucHits_East
Definition BesClient.h:224
@ kM_Tof_QMatch_Global
Definition BesClient.h:246
@ kM_Tracks_Emc
Definition BesClient.h:230
@ kM_Emc_East
Definition BesClient.h:196
@ kM_MucHits_Barrel
Definition BesClient.h:225
@ kM_Muc_West
Definition BesClient.h:203
@ kM_Emc_Global
Definition BesClient.h:195
@ kM_TofHits_Barrel
Definition BesClient.h:216
@ kM_Mdc_QMatch_Global
Definition BesClient.h:244
@ kM_Tracks_Ideal
Definition BesClient.h:234
@ kM_Tof_East
Definition BesClient.h:192
@ kM_Mdc_Global
Definition BesClient.h:188
@ kM_MucHits_West
Definition BesClient.h:226
@ kM_MdcHits_Hits
Definition BesClient.h:213
@ kM_Mdc_Wires
Definition BesClient.h:190
@ kM_Mdc_ColorfulWire_Global
Definition BesClient.h:241
@ kM_Full3D_Muc
Definition BesClient.h:208
@ kM_EmcHits_Barrel
Definition BesClient.h:220
@ kM_Tracks_Muc
Definition BesClient.h:231
@ kM_Mdc_TMatch_Global
Definition BesClient.h:243
@ kM_BeamPipe
Definition BesClient.h:209
@ kM_ZRPlaneOnXY
Definition BesClient.h:210
@ kM_MucHits_Global
Definition BesClient.h:223
@ kM_Emc_West
Definition BesClient.h:198
@ kM_EmcHits_West
Definition BesClient.h:221
@ kM_Emc_Barrel
Definition BesClient.h:197
@ kM_Tof_TMatch_Global
Definition BesClient.h:245
@ kM_View_OpenGL
Definition BesClient.h:236
@ kM_View_X3D
Definition BesClient.h:235
@ kM_EmcHits_Global
Definition BesClient.h:218
@ kM_Tof_Global
Definition BesClient.h:191
@ kM_EmcHits_Side
Definition BesClient.h:222
@ kM_Tracks_Ext
Definition BesClient.h:232
@ kM_Tracks_Global
Definition BesClient.h:227
@ kM_Muc_Global
Definition BesClient.h:200
@ kM_Tof_West
Definition BesClient.h:194
@ kM_Axis
Definition BesClient.h:211
@ kM_Mdc_MdcTimeSubEvTime_Global
Definition BesClient.h:242
@ kM_TofHits_West
Definition BesClient.h:217
@ kM_MdcHits_Global
Definition BesClient.h:212
@ kM_Full3D_Emc
Definition BesClient.h:207
@ kM_Full3D_Mdc
Definition BesClient.h:205
@ kM_MC_TruthTrack
Definition BesClient.h:233
EZMode
Definition BesClient.h:173
@ kModeFile
Definition BesClient.h:175
@ kModePR
Definition BesClient.h:178
@ kModeDown
Definition BesClient.h:176
@ kModeBes
Definition BesClient.h:177
@ kModeOnline
Definition BesClient.h:174
EZCommand
Definition BesClient.h:56
@ kM_Option_TimerSpeed
Definition BesClient.h:64
@ kM_Help_About
Definition BesClient.h:67
@ kM_File_SaveGeoAs
Definition BesClient.h:58
@ kM_Option_DefaultPicType
Definition BesClient.h:65
@ kM_Edit_Editor
Definition BesClient.h:63
@ kM_File_Exit
Definition BesClient.h:62
@ kM_File_SavePicAs
Definition BesClient.h:60
@ kM_File_OpenEvent
Definition BesClient.h:59
@ kM_Help_Content
Definition BesClient.h:66
@ kM_File_Close
Definition BesClient.h:61
@ kM_File_LoadGeo
Definition BesClient.h:57
EZButtons
Definition BesClient.h:74
@ kM_Button_SwitchDisplayMode
Definition BesClient.h:88
@ kM_Button_BesRun
Definition BesClient.h:141
@ kM_Button_ShowAxis
Definition BesClient.h:102
@ kM_Button_PrevEvent
Definition BesClient.h:113
@ kM_Button_RotateStep
Definition BesClient.h:137
@ kM_Button_DownBrowse
Definition BesClient.h:155
@ kM_Button_NextEvent
Definition BesClient.h:114
@ kM_Button_DownRaw
Definition BesClient.h:153
@ kM_Button_Online
Definition BesClient.h:108
@ kM_Button_ViewAnglePhiMinus
Definition BesClient.h:131
@ kM_Button_Refresh
Definition BesClient.h:80
@ kM_Slider_Zoom
Definition BesClient.h:166
@ kM_Button_LoadGeoFile
Definition BesClient.h:75
@ kM_Button_ViewAnglePsiNumber
Definition BesClient.h:136
@ kM_Button_ResetCurrent
Definition BesClient.h:81
@ kM_Button_ViewAnglePhiNumber
Definition BesClient.h:132
@ kM_Button_SaveMyConfig
Definition BesClient.h:91
@ kM_Button_ViewResetAngle
Definition BesClient.h:117
@ kM_Button_Down
Definition BesClient.h:110
@ kM_Button_DownFZ
Definition BesClient.h:151
@ kM_Button_SavePicAs
Definition BesClient.h:78
@ kM_Button_Bes
Definition BesClient.h:111
@ kM_Button_CursorPick
Definition BesClient.h:83
@ kM_Button_ZoomIn
Definition BesClient.h:85
@ kM_Slider_ViewAngleTheta
Definition BesClient.h:125
@ kM_Button_OpenEventFile
Definition BesClient.h:77
@ kM_Button_ViewAnglePhiPlus
Definition BesClient.h:130
@ kM_Button_OnlineTime
Definition BesClient.h:160
@ kM_Button_RotateFPS
Definition BesClient.h:140
@ kM_Button_DisplayMode2D
Definition BesClient.h:95
@ kM_Button_Help
Definition BesClient.h:94
@ kM_Button_ViewMoveLeft
Definition BesClient.h:121
@ kM_Button_PRTime2
Definition BesClient.h:164
@ kM_Button_PRTime
Definition BesClient.h:163
@ kM_Button_DownZED
Definition BesClient.h:150
@ kM_Button_DisplayModeZR
Definition BesClient.h:97
@ kM_Button_PlayEvent
Definition BesClient.h:115
@ kM_Button_DownMDST
Definition BesClient.h:152
@ kM_Button_File
Definition BesClient.h:109
@ kM_Button_ZoomRatioNumber
Definition BesClient.h:87
@ kM_Button_SavePicAsPS
Definition BesClient.h:79
@ kM_Slider_ViewAnglePsi
Definition BesClient.h:133
@ kM_Button_AutoRotate
Definition BesClient.h:138
@ kM_Button_BesGet
Definition BesClient.h:148
@ kM_Button_ViewMoveRight
Definition BesClient.h:122
@ kM_Button_DisplayMode3D
Definition BesClient.h:98
@ kM_Button_ViewMoveCenter
Definition BesClient.h:124
@ kM_Button_EventPlaySpeed
Definition BesClient.h:143
@ kM_Button_ViewClockWise
Definition BesClient.h:119
@ kM_Button_FirstEvent
Definition BesClient.h:116
@ kM_Button_ParallelView
Definition BesClient.h:104
@ kM_Button_BesReset
Definition BesClient.h:149
@ kM_Button_ViewAngleThetaMinus
Definition BesClient.h:127
@ kM_Button_ViewAnglePsiMinus
Definition BesClient.h:135
@ kM_Button_RotateSpeed
Definition BesClient.h:139
@ kM_Button_GoHome
Definition BesClient.h:90
@ kM_Button_SetHome
Definition BesClient.h:89
@ kM_Button_ViewAnglePsiPlus
Definition BesClient.h:134
@ kM_Slider_EventPlay
Definition BesClient.h:112
@ kM_Button_ShowInfo
Definition BesClient.h:101
@ kM_Button_DisplayModeXY
Definition BesClient.h:96
@ kM_Button_ZoomOut
Definition BesClient.h:86
@ kM_Button_PerspectiveView
Definition BesClient.h:105
@ kM_Button_DisplayModeAll
Definition BesClient.h:99
@ kM_Button_ResetAll
Definition BesClient.h:82
@ kM_Button_DownEvents
Definition BesClient.h:156
@ kM_Button_BesVar
Definition BesClient.h:145
@ kM_Button_PRStart
Definition BesClient.h:162
@ kM_Button_ViewCounterClockWise
Definition BesClient.h:118
@ kM_Button_BesSample
Definition BesClient.h:147
@ kM_Button_DownGet
Definition BesClient.h:158
@ kM_Button_ViewAngleThetaPlus
Definition BesClient.h:126
@ kM_Button_CursorHand
Definition BesClient.h:84
@ kM_Button_BesEvent
Definition BesClient.h:142
@ kM_Button_ViewMoveDown
Definition BesClient.h:123
@ kM_Button_BesBit
Definition BesClient.h:146
@ kM_Button_OnlineStart
Definition BesClient.h:159
@ kM_Button_Magnetic
Definition BesClient.h:165
@ kM_Button_SwitchPad
Definition BesClient.h:100
@ kM_Button_X3D
Definition BesClient.h:106
@ kM_Button_OnlineTime2
Definition BesClient.h:161
@ kM_Button_ViewAngleThetaNumber
Definition BesClient.h:128
@ kM_Button_BesSamplePos
Definition BesClient.h:144
@ kM_Slider_ViewAnglePhi
Definition BesClient.h:129
@ kM_Button_DownSkip
Definition BesClient.h:157
@ kM_Button_FishEyeView
Definition BesClient.h:103
@ kM_Button_DownRawIncl
Definition BesClient.h:154
@ kM_Button_LoadMyConfig
Definition BesClient.h:92
@ kM_Button_Palette
Definition BesClient.h:93
@ kM_Button_ViewMoveUp
Definition BesClient.h:120
@ kM_Button_OpenGL
Definition BesClient.h:107
@ kM_Button_SaveGeoAs
Definition BesClient.h:76
runStatus
Definition BesClient.h:51
@ RUN_ERROR
Definition BesClient.h:51
@ RUN_SMOOTH
Definition BesClient.h:51
@ FREE_SPACE
Definition BesVisAlg.h:143
@ OUTPUT_STORE
Definition BesVisAlg.h:143
char * file
Definition DQA_TO_DB.cxx:16
#define min(a, b)
#define max(a, b)
titledef title[20]
Int_t GetEventPlaySpeed()
Definition BesClient.h:730
virtual void X3D()
virtual void GoHome()
virtual void CreateMainFrame()
virtual void CreateTitleBar()
virtual void UpdateAllView()
virtual void HandleMenu(Int_t id)
virtual void SetAllDisplayModeButtonUnHL()
virtual void CreateToolBar()
virtual Bool_t GetEvent(Long64_t i, bool openfile=false, bool sel_geom=false)
virtual void SavePicAsPS()
virtual void CreateDisplayModeBar()
virtual void HandleSliders(Int_t id)
virtual void CreateTabs()
virtual Bool_t LastEvent()
virtual void SaveMyConfig()
virtual void RotatePsi(int pn)
virtual void Show()
virtual void SetHome()
virtual void RotateClockWise(int clockwise)
Double_t GetRotateStep()
Definition BesClient.h:734
virtual void CreateMenuBar()
BesClient(const TGWindow *p, const char *title, UInt_t width, UInt_t height, Option_t *option="", Int_t argc=0, char **argv=0)
virtual void RotateTheta(int pn)
virtual ~BesClient()
Long64_t GetBesRunNo()
Definition BesClient.h:728
virtual void RotatePhi(int pn)
virtual void HandleViewOptionMenu(Int_t id)
virtual void OpenGL()
virtual void HandleEventList(TGListTreeItem *entry, Int_t btn)
virtual void OpenEventFile()
virtual void SavePicAs()
virtual void HandleStatusBar(const char *msg)
virtual Pixmap_t GetPic(const char *file)
virtual void AutoRotateCommand()
virtual void UpdateStatus()
virtual void CreateWidget(const char *title, UInt_t width, UInt_t height)
virtual void CloseWindow()
virtual void CreateHorizontalRuler()
virtual void InitGeoSelector(const char *geomsel_file)
virtual void InitConnections()
virtual void UpdateCurrentPad()
virtual void HandleError(const char *msg)
virtual void SaveGeoAs()
virtual void InitLocal()
virtual void CreateCanvas()
virtual void HandleInfoBar(const char *msg)
void SetRotateSpeed()
Definition BesClient.h:735
virtual Bool_t FirstEvent()
virtual void LoadMdcPalette()
virtual Bool_t GetRecEvent()
virtual void SetRange(Double_t &input, Double_t min, Double_t max)
virtual void AutoDisplayEvent()
virtual Bool_t NextEvent()
virtual void CreateStatusBar()
virtual void CreateUpButtonBar()
virtual void AutoDisplayEventCommand()
Long64_t GetBesEventNo()
Definition BesClient.h:729
void SetRotateStep()
Definition BesClient.h:736
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py, TObject *sel)
virtual void Help()
virtual void ExecuteReturn()
virtual void LoadMyConfig()
virtual Bool_t PrevEvent()
virtual void HandleButtons(Int_t id=-1)
virtual Bool_t FileExists(TString fname)
Int_t GetRotateFPS()
Definition BesClient.h:732
virtual void SetState(Int_t id=-1)
virtual void AutoRotate()
virtual void OpenGeoFile(TString filename)
virtual void ChangeFocus()
virtual const char * GetCurrentPadString()
Double_t GetRotateSpeed()
Definition BesClient.h:733
virtual void InitParameter()
virtual void UpdateBesInputFields()
virtual void LoadGeoFile()
ushort * array
Definition BesVisAlg.h:140
struct semid_ds * buf
Definition BesVisAlg.h:139
int val
Definition BesVisAlg.h:138