BOSS 7.0.4
BESIII Offline Software System
Loading...
Searching...
No Matches
InstallArea/include/BesVisClient/BesVisClient/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 <unistd.h>
6#include <cstdlib> //Long Peixun's update: stdlib.h -> cstdlib
7#include <sys/sem.h>
8#include <sys/types.h>
9#include <sys/ipc.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 <TSystem.h>
15#include <TGFrame.h>
16#include <TGeometry.h>
17#include <TGNumberEntry.h>
18#include <TViewerX3D.h>
19#include <TTimer.h>
20#include <TASImage.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/BesGMenuBar.h"
29#include "BesVisLib/BesGPictureButton.h"
30#include "BesVisLib/BesVisDisplay.h"
31#include "BesVisLib/BesEvent.h"
32#include "RootEventData/TRecTrackEvent.h"
33#include "RootEventData/TDigiEvent.h"
34#include "RootEventData/TTrigEvent.h"
35#include "RootEventData/TRecEvTime.h"
36#include "RootEventData/TRecEmcShower.h"
37#include "RootEventData/TDstEvent.h" //Long Peixun's update: for dst file
38
39// semphore
40union semun{
41 int val;
42 struct semid_ds *buf;
43 ushort *array;
44};
45
46//struct sembuf acquire = {0, -1, SEM_UNDO};
47//struct sembuf release = {0, 1, SEM_UNDO};
48
51
52
53// BesVis GUI command IDs
54#ifndef BES_EZCommand
55#define BES_EZCommand
68};
69#endif
70
71// Bes button command IDs
72#ifndef BES_EZButtons
73#define BES_EZButtons
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)
180#endif
181
182#ifndef BES_EZMenuViewOption
183#define BES_EZMenuViewOption
186 //kM_Header_On, //Long Peixun's update: remove kM_Header_On, because we just need kM_Header_Global
236 //kM_Mdc_TOverflow_Global,
245#endif
246
247class TList;
248class TRootEmbeddedCanvas;
249class TApplication;
250class TInterpreter;
251class TFile;
252class TTimer;
253class TBranch;
254class TTree;
255class TGPopupMenu;
256class TGStatusBar;
257class TGHorizontal3DLine;
258class TGLayoutHints;
259class TGMenuBar;
260class TGNumberEntry;
261class TGNumberFormat;
262class TGLabel;
263class TGHButtonGroup;
264class TGRadioButton;
265class TGCheckButton;
266class TGTextButton;
267class TGTextBuffer;
268class TGTextEntry;
269class TGHProgressBar;
270class TGButton;
271class TGPictureButton;
272class TGFileInfo;
273class TGFileDialog;
274class TGMsgBox;
275class TGGroupFrame;
276class TGTab;
277class TGVSplitter;
278class TGCanvas;
279class TGListTree;
280class TGListTreeItem;
281class TGHSlider;
282class TGVSlider;
283class TCanvas;
284class TView;
285class TGListTreeItem;
286
287class BesClient : public TGMainFrame {
288
289 private:
290 runStatus f_runStatus;
291 TGeometry *fGeometry; // Bes geometry
292 TFile *fGeoFile; // ROOT geometry file contains volBes
293 TFile *fEventFile; // Current event file
294 TTree *fEventTree; // Current event tree
295 BesEvent *fEvent; // Current Bes event
296 TEvtHeader *fEvtHeader;
297 TRecEvTime *fRecEvTime;
298 //TTrigEvent *fTrigEvent;
299 TDigiEvent *fDigiEvent;
300 TRecTrackEvent *fRecEvent_1;
301 TRecMdcTrack *recTrack1;
302 TRecMucTrack *muctrk;
303 TRecTofTrack *tofTrack;
304 //TRecMdcKalTrack *kalTrack;
305 TRecMdcHit *mdchit;
306 TRecEmcShower *emcshower;
307 TDstEvent* fDstEvent; //Long Peixun's update: for tracks from dst file
308 Bool_t isRecEvent; //Long Peixun's update: is this event rec event?
309
310 Int_t NCluster; //...
311
312 TGLayoutHints *fMenuBarLayout; // Menu bar layout
313 TGLayoutHints *fMenuBarFirstItemLayout; // First Item popup menu layout
314 TGLayoutHints *fMenuBarItemLayout; // Item popup menu layout
315 TGLayoutHints *fMenuBarLastItemLayout; // Last Item popup menu layout
316 TGLayoutHints *fECLayout; // Embedded canvas layout
317
318 BesGMenuBar *fMenuBar; // Menu bar
319
320 TGPopupMenu *fMenuFile; // File menu
321 TGPopupMenu *fMenuEdit; // Edit menu
322 TGPopupMenu *fMenuView; // View menu
323 TGPopupMenu *fMenuHelp; // Help menu
324
325 TGPopupMenu *fMenuViewOptionHeader;
326 TGPopupMenu *fMenuViewOptionMdc;
327 TGPopupMenu *fMenuViewOptionTof;
328 TGPopupMenu *fMenuViewOptionEmc;
329 TGPopupMenu *fMenuViewOptionMuc;
330 TGPopupMenu *fMenuViewOptionFull3D;
331 TGPopupMenu *fMenuViewOptionOthers;
332 TGPopupMenu *fMenuViewOptionMdcHits;
333 TGPopupMenu *fMenuViewOptionTofHits;
334 TGPopupMenu *fMenuViewOptionEmcHits;
335 TGPopupMenu *fMenuViewOptionMucHits;
336 TGPopupMenu *fMenuViewOptionTracks;
337
338 TGLayoutHints *fUpButtonBarFirstItemLayout; // Up button bar first button layout
339 TGLayoutHints *fUpButtonBarItemLayout; // Up button bar button layout
340 TGLayoutHints *fUpButtonBarLastItemLayout; // Up button bar last button layout
341 TGCompositeFrame *fUpButtonBarFrame; // Up button bar frame
342
343 static const int kNUpSplitter = 4;
344 BesGPictureButton *fUpButtonSplitter[kNUpSplitter]; // Up button bar splitter
345 BesGPictureButton *fLoadGeoFileButton; // load geometry file
346 BesGPictureButton *fOpenEventFileButton; // open event file
347 BesGPictureButton *fSaveGeoAsButton; // save geometry as root file
348 BesGPictureButton *fSavePicAsButton; // save picture as
349 BesGPictureButton *fSavePicAsPSButton; // save picture as pdf
350 static const int kNCursorState = 2;
351 BesGPictureButton *fRefreshButton; // Refresh
352 BesGPictureButton *fResetCurrentButton; // Reset current pad
353 BesGPictureButton *fResetAllButton; // Reset all pad
354 BesGPictureButton *fCursorButton[kNCursorState]; // cursor state, pick or hand
355 BesGPictureButton *fZoomInButton; // ZoomIn
356 BesGPictureButton *fZoomOutButton; // ZoomOut
357 TGNumberEntryField *fZoomRatioNumber; // ZoomRatio number
358 BesGPictureButton *fZoomRatioPercentButton; // "%" picture
359 BesGPictureButton *fSwitchDisplayModeButton; // button to switch among display modes
360 BesGPictureButton *fSetHomeButton; // Set home position
361 BesGPictureButton *fGoHomeButton; // Go to home position
362 BesGPictureButton *fSaveMyConfigButton; // Save my style
363 BesGPictureButton *fLoadMyConfigButton; // Load my style
364 BesGPictureButton *fPaletteButton; // Display palette axis
365 BesGPictureButton *fHelpButton; // Help
366
367 TGLayoutHints *fDisplayModeBarItemLayout; // Display mode bar button layout
368 TGCompositeFrame *fDisplayModeBarFrame; // Display mode bar frame
369 static const int kNDisplayMode = 5;
370 BesGPictureButton *fDisplayModeButton[kNDisplayMode]; // button to switch among display modes
371
372 TGLayoutHints *fToolBarFirstItemLayout; // Tool bar first button layout
373 TGLayoutHints *fToolBarItemLayout; // Tool bar button layout
374 TGLayoutHints *fToolBarLastItemLayout; // Tool bar last button layout
375 TGCompositeFrame *fToolBarFrame; // Tool bar frame
376
377 static const int kNToolSplitter = 4;
378 BesGPictureButton *fToolButtonSplitter[kNToolSplitter]; // Tool button bar splitter
379 BesGPictureButton *fSwitchPadButton; // button to switch among pads
380 BesGPictureButton *fShowInfoButton; // Show info or not
381 BesGPictureButton *fShowAxisButton; // Show axis or not
382 BesGPictureButton *fFishEyeViewButton; // FishEye view
383 BesGPictureButton *fParallelViewButton; // Parallel view
384 BesGPictureButton *fPerspectiveViewButton; // Perspective view
385 BesGPictureButton *fX3DButton; // X3D view
386 BesGPictureButton *fOpenGLButton; // OpenGL view
387
388 TGCanvas *fEventListView; // Canvas for event list tree
389 TRootEmbeddedCanvas *fEmbeddedCanvas; // Embedded Canvas
390 TCanvas *fCanvas;
391 BesVisDisplay *fDisplay;
392
393 TGVerticalFrame *fV1; // Splitter for tabs
394
395 TGTab *fTabs; // Tabs for event
396
397 TGListTree *fEventListTree; // Event list tree
398 TGListTreeItem *fItem; // Active event list tree item
399 TGListTreeItem *fRunItem; // Active run list tree item
400
401
402 TGCompositeFrame *fEventDownFrame; // tab fame for download mode
403 TGCompositeFrame *fEventControlFrame; // Frame for event control
404 TGCompositeFrame *fEventControlTextFrame; // Frame for label "Event Control"
405 TGCompositeFrame *fEventNavFrame; // Frame for Event navigation
406 TGCompositeFrame *fEventPlayTextFrame; // Frame for label "Event Play"
407 TGCompositeFrame *fEventPlayButtonFrame; // Frame for buttons "prev, next, play, stop"
408 TGCompositeFrame *fEventPlaySpeedFrame; // Frame for set event play speed
409 TGCompositeFrame *fEventListFrame; // Frame for event list browser
410 TGCompositeFrame *fEventListTextFrame; // Frame for label "Event file list"
411 TGCompositeFrame *fEventListContentFrame; // Frame for event list content
412
413 TGCompositeFrame *fAutoFrame; // Frame for auto control
414 TGCompositeFrame *fAutoTextFrame; // Frame for label "Auto Control"
415
416 TGCompositeFrame *fViewFrame; // Frame for view control
417 TGCompositeFrame *fViewTextFrame; // Frame for label "View Control"
418 TGCompositeFrame *fViewContentFrame; // Frame for view content
419 TGCompositeFrame *fViewContent1Frame; // Frame for view content first line
420 TGCompositeFrame *fViewContent2Frame; // Frame for view content seconde line
421 TGCompositeFrame *fViewContent3Frame; // Frame for view content third line
422 TGCompositeFrame *fViewAngleFrame; // Frame for view angles
423 TGCompositeFrame *fViewAngleThetaFrame; // Frame for view theta
424 TGCompositeFrame *fViewAnglePhiFrame; // Frame for view phi
425 TGCompositeFrame *fViewAnglePsiFrame; // Frame for view psi
426
427 TGNumberEntry *fNumEntryRunNo; // Bes input of run number
428 TGNumberEntry *fNumEntryEventNo; // Bes input of event number
429 TGNumberEntry *fNumEntryEventPlaySpeed; // event play speed number
430 //TGNumberEntry *fBesSamplePos; // Bes input of sample position
431
432 TGLabel *fEventControlTextLabel; // Label "Event control"
433 TGLabel *fBesLabelRun; // Label "Run : "
434 TGLabel *fBesLabelEvent; // Label "Event : "
435 TGLabel *fEventPlayTextLabel; // Label "Event Play"
436 TGLabel *fEventPlaySpeedLabel; // Label "Play Speed : "
437 TGLabel *fEventListTextLabel; // Label "Event file list"
438 TGLabel *fViewTextLabel; // Label "View control"
439 TGLabel *fAutoTextLabel; // Label "Auto control"
440
441 TGHSlider *fEventPlaySlider; // slider for event play
442 BesGPictureButton *fPrevEventButton; // next event button
443 BesGPictureButton *fNextEventButton; // prev event button
444 BesGPictureButton *fPlayEventButton; // next event button
445 BesGPictureButton *fFirstEventButton; // prev event button
446
447 BesGPictureButton *fViewResetAngleButton; // View reset angle button
448 BesGPictureButton *fViewCounterClockWiseButton; // View CounterClockWise button
449 BesGPictureButton *fViewClockWiseButton; // View ClockWise button
450 BesGPictureButton *fViewMoveUpButton; // View MoveUp button
451 BesGPictureButton *fViewMoveLeftButton; // View MoveLeft button
452 BesGPictureButton *fViewMoveRightButton; // View MoveRight button
453 BesGPictureButton *fViewMoveDownButton; // View MoveDown button
454 BesGPictureButton *fViewMoveCenterButton; // View MoveCenter button
455
456 BesGPictureButton *fViewAngleThetaPlusButton; // View AngleTheta + button
457 BesGPictureButton *fViewAngleThetaMinusButton; // View AngleTheta - button
458 TGVSlider *fViewAngleThetaSlider; // View AngleTheta slider
459 TGNumberEntryField *fViewAngleThetaNumber; // View AngleTheta number
460 TGLabel *fViewAngleThetaLabel; // Label "Theta"
461
462 BesGPictureButton *fViewAnglePhiPlusButton; // View AnglePhi + button
463 BesGPictureButton *fViewAnglePhiMinusButton; // View AnglePhi - button
464 TGVSlider *fViewAnglePhiSlider; // View AnglePhi slider
465 TGNumberEntryField *fViewAnglePhiNumber; // View AnglePhi number
466 TGLabel *fViewAnglePhiLabel; // Label "Phi"
467
468 BesGPictureButton *fViewAnglePsiPlusButton; // View AnglePsi + button
469 BesGPictureButton *fViewAnglePsiMinusButton; // View AnglePsi - button
470 TGVSlider *fViewAnglePsiSlider; // View AnglePsi slider
471 TGNumberEntryField *fViewAnglePsiNumber; // View AnglePsi number
472 TGLabel *fViewAnglePsiLabel; // Label "Psi"
473
474 TGCompositeFrame *fRotateStepFrame; // Frame for RotateStep
475 TGLabel *fRotateStepLabel; // Label "Deg"
476 TGNumberEntryField *fNumEntryRotateStep; // Rotate step
477 TGLabel *fRotateStepUnitLabel; // Label "Deg"
478
479 TGGroupFrame *fFrameAutoRotate; // Frame for AutoRotate
480 TGCheckButton *fChkBtnAutoRotate; // CheckButton AutoRotate;
481
482 TGCompositeFrame *fRotateSpeedFrame; // Frame for RotateSpeed
483 TGNumberEntryField *fNumEntryRotateSpeed; // Auto Rotate speed number
484 TGLabel *fRotateSpeedLabel; // Label "Deg/Sec"
485
486 TGCompositeFrame *fRotateFPSFrame; // Frame for RotateFPS
487 TGNumberEntry *fNumEntryRotateFPS; // Auto Rotate fps number
488 TGLabel *fRotateFPSLabel; // Label "fps"
489
490
491 TGStatusBar *fStatusBar; // Status bar
492
493 TGGroupFrame *fFrameHeader; // Frame for Header
494 TGGroupFrame *fFrameHits; // Frame for Hits
495 TGGroupFrame *fFrameTracks; // Frame for Tracks
496
497 TGGroupFrame *fFrameSubDetector;
498 //TGGroupFrame *fFrameMdc;
499 //TGGroupFrame *fFrameTof;
500 //TGGroupFrame *fFrameEmc;
501 //TGGroupFrame *fFrameMuc;
502 TGGroupFrame *fFrameOthers;
503
504 TGGroupFrame *fFrameMdcMatch; // Frame for TQMatch
505 TGGroupFrame *fFrameTofMatch; // Frame for TQMatch
506 TGGroupFrame *fFrameMagnetic; // Frame for magnetic field
507
508 TGHorizontalFrame *fTitleFrame; // Title frame
509 TGHorizontalFrame *fMainFrame; // Main frame
510
511 TGHorizontalFrame *fBesRunFrame; // Bes Run nr input frame
512 TGHorizontalFrame *fBesEventFrame; // Bes Event nr input frame
513
514 TGCheckButton *fChkBtnHeaderGlobal;
515
516 TGCheckButton *fChkBtnMdcHitsGlobal;
517 TGCheckButton *fChkBtnTofHitsGlobal;
518 TGCheckButton *fChkBtnTofHitsEast;
519 TGCheckButton *fChkBtnTofHitsBarrel;
520 TGCheckButton *fChkBtnTofHitsWest;
521 TGCheckButton *fChkBtnEmcHitsGlobal;
522 TGCheckButton *fChkBtnEmcHitsEast;
523 TGCheckButton *fChkBtnEmcHitsBarrel;
524 TGCheckButton *fChkBtnEmcHitsWest;
525 TGCheckButton *fChkBtnEmcHitsSide;
526 TGCheckButton *fChkBtnMucHitsGlobal;
527 TGCheckButton *fChkBtnMucHitsEast;
528 TGCheckButton *fChkBtnMucHitsBarrel;
529 TGCheckButton *fChkBtnMucHitsWest;
530
531 TGCheckButton *fChkBtnTracksGlobal;
532 TGCheckButton *fChkBtnTracksMdc;
533 TGCheckButton *fChkBtnTracksTof;
534 TGCheckButton *fChkBtnTracksEmc;
535 TGCheckButton *fChkBtnTracksMuc;
536 TGCheckButton *fChkBtnTracksExt;
537
538 TGCheckButton *fChkBtnMdcGlobal;
539 TGCheckButton *fChkBtnMdcTubes;
540 TGCheckButton *fChkBtnMdcWires;
541 TGCheckButton *fChkBtnTofGlobal;
542 TGCheckButton *fChkBtnTofEast;
543 TGCheckButton *fChkBtnTofBarrel;
544 TGCheckButton *fChkBtnTofWest;
545 TGCheckButton *fChkBtnEmcGlobal;
546 TGCheckButton *fChkBtnEmcEast;
547 TGCheckButton *fChkBtnEmcBarrel;
548 TGCheckButton *fChkBtnEmcWest;
549 TGCheckButton *fChkBtnEmcSide;
550 TGCheckButton *fChkBtnMucGlobal;
551 TGCheckButton *fChkBtnMucEast;
552 TGCheckButton *fChkBtnMucBarrel;
553 TGCheckButton *fChkBtnMucWest;
554 TGCheckButton *fChkBtnMucStrips;
555
556 TGCheckButton *fChkBtnBeamPipe;
557 TGCheckButton *fChkBtnZRPlaneOnXY;
558 TGCheckButton *fChkBtnAxis;
559
560 TGCheckButton *fChkBtnMdcTOverflowGlobal;
561 TGCheckButton *fChkBtnMdcQOverflowGlobal;
562 TGCheckButton *fChkBtnMdcTMatchGlobal;
563 TGCheckButton *fChkBtnMdcQMatchGlobal;
564 TGCheckButton *fChkBtnMdcColorfulWireGlobal;
565 TGCheckButton *fChkBtnMdcTimeSubEvTimeGlobal;
566 TGCheckButton *fChkBtnTofTMatchGlobal;
567 TGCheckButton *fChkBtnTofQMatchGlobal;
568
569 TGNumberEntry *fNumEntryMagnetic; // magnetic number
570
571 TString fBesVisPath;
572
573 Long64_t fBesRunNo; // run number of BES request
574 Long64_t fBesEventNo; // event number of BES request
575 Long64_t fCurrentEvent;
576 Int_t fEventPlaySpeed; // event play speed
577 Bool_t fAutoDisplayEvent; // auto display event
578 TTimer *fAutoDisplayEventTimer;
579
580 Double_t fMoveFactor; // factor of move
581 Double_t fRotateStep; // rotate angle in each step
582 Int_t fRotateFPS; // rotae fps, frame per second, 24? 10?
583 Double_t fRotateSpeed; // rotate angle per second, deg/sec
584 Bool_t fAutoRotate; // auto rotate flag
585 TTimer *fAutoRotateTimer; // auto rotate timer
586 Int_t fAutoRotateClockWise; // auto rotate clockwise flag
587 Int_t fAutoRotateTheta; // auto rotate theta flag
588 Int_t fAutoRotatePhi; // auto rotate phi flag
589 Int_t fAutoRotatePsi; // auto rotate psi flag
590
591 Int_t fViewer3DMode; // Mode of Viewer3D, 1:x3d, 2:OpenGL
592 //TViewerX3D *fx3d;
593 Double_t fViewThetaPreStep;
594 Double_t fViewPhiPreStep;
595
596 Double_t fHomeX[3], fHomeY[3]; // Home position of three pads
597
598 Int_t fWindowWidth; // zevis window width
599 Int_t fWindowHeight; // zevis window height
600
601 TList *fWidgets; // list to hold TGLayoutHints for destruction
602 TGLayoutHints *fLayout; // dummy TGLayoutHints;
603
604 // added by tianhl to add besvis to bossframework
605 TString f_evtFile;
606 TString f_geoFile;
607 Bool_t f_bossMode;
608 Int_t f_pid;
609 //Long Peixun's update: remove useless variable
610 //TString f_evtFile_1; //huangb add
611
612 //Long Peixun's update: Help text loaded from help.txt
613 std::string f_HelpText;
614 //Long Peixun's update: for geometry selection
615 BesGeoSelector fSelector;
616 //Long Peixun's update: current geometry file (for default geom)
617 TString fCurGeom;
618 //Long Peixun's update: whether current geometry is selected automatically
619 Bool_t fAutoGeom;
620
621 private:
622 //void SetMdcTOverflow(Bool_t input);
623 void SetMdcQNotOverflow(Bool_t input);
624 void SetMdcTFire(Bool_t input);
625 void SetMdcQFire(Bool_t input);
626 void SetMdcColorfulWire(Bool_t input);
627 void SetMdcTimeSubEvTime(Bool_t input);
628 void SetTofTMatch(Bool_t input);
629 void SetTofQMatch(Bool_t input);
630
631 public:
632 BesClient(const TGWindow *p, const char* title, UInt_t width, UInt_t height, Option_t *option = "", Int_t argc = 0, char **argv = 0);
633 virtual ~BesClient();
634 virtual void InitLocal();
635 virtual void InitParameter();
636 virtual void InitConnections();
637 //Long Peixun's update: Initialization of geometry selector
638 virtual void InitGeoSelector(const char* geomsel_file);
639
640 virtual void CreateWidget(const char* title, UInt_t width, UInt_t height);
641 virtual void CreateHorizontalRuler();
642 virtual void CreateMenuBar();
643 virtual void CreateUpButtonBar();
644 virtual void CreateDisplayModeBar();
645 virtual void CreateToolBar();
646 virtual void CreateTitleBar();
647 virtual void CreateStatusBar();
648 virtual void CreateMainFrame();
649 virtual void CreateCanvas();
650 virtual void CreateTabs();
651
652 virtual void HandleMenu(Int_t id);
653 virtual void HandleViewOptionMenu(Int_t id);
654 virtual void HandleError(const char* msg);
655 virtual void HandleInfoBar(const char* msg);
656 virtual void HandleStatusBar(const char* msg);
657 virtual void HandleButtons(Int_t id=-1);
658 virtual void HandleSliders(Int_t id);
659 virtual void HandleEventList(TGListTreeItem *entry, Int_t btn);
660 virtual void UpdateBesInputFields();
661
662 virtual void LoadGeoFile();
663 virtual void OpenGeoFile(TString filename);
664 virtual void SaveGeoAs();
665
666 //Long Peixun's update: Add a parameter to determine whether choose a detector geometry automatically when open an event file.
667 virtual void OpenEventFile();
668 virtual void OpenEventFile(TString filename, bool auto_sel_geom = false);
669
670 virtual void SavePicAs();
671 virtual void SavePicAsPS();
672 virtual void SetHome();
673 virtual void GoHome();
674 virtual void SaveMyConfig();
675 virtual void LoadMyConfig();
676 virtual void LoadMdcPalette();
677 virtual void Help();
678
680
681 virtual void X3D();
682 virtual void OpenGL();
683
684 virtual void Show();
685 virtual void CloseWindow();
686
687 //Long Peixun's update: Get run number and choose a detector geometry automatically when in need.
688 virtual Bool_t GetEvent(Long64_t i, bool openfile = false, bool sel_geom = false);
689 virtual Bool_t GetRecEvent();
690 virtual Bool_t NextEvent();
691 virtual Bool_t PrevEvent();
692 virtual void AutoDisplayEvent();
694 virtual Bool_t FirstEvent();
695 virtual Bool_t LastEvent(); //Long Peixun's update: Get last event
696
697 virtual void RotateClockWise(int clockwise);
698 virtual void RotateTheta(int pn);
699 virtual void RotatePhi(int pn);
700 virtual void RotatePsi(int pn);
701 virtual void AutoRotate();
702 virtual void AutoRotateCommand();
703
704 virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py, TObject *sel);
705 virtual void SetState(Int_t id = -1);
706 virtual void UpdateStatus();
707 virtual void UpdateAllView();
708 virtual void UpdateCurrentPad();
709 virtual void ChangeFocus();
710 virtual void ExecuteReturn();
711
712 virtual Pixmap_t GetPic(const char *file);
713 virtual Bool_t FileExists(TString fname);
714 virtual void SetRange(Double_t &input, Double_t min, Double_t max);
715 virtual const char* GetCurrentPadString(); //Long Peixun's update: Return current pad hint string
716
717 inline Long64_t GetBesRunNo() { return fBesRunNo; }
718 inline Long64_t GetBesEventNo() { return fBesEventNo; }
719 inline Int_t GetEventPlaySpeed() { return fEventPlaySpeed; }
720
721 inline Int_t GetRotateFPS() { return fRotateFPS; }
722 inline Double_t GetRotateSpeed() { return fRotateSpeed; }
723 inline Double_t GetRotateStep() { return fRotateStep; }
724 inline void SetRotateSpeed() { fRotateSpeed = fRotateStep * fRotateFPS; }
725 inline void SetRotateStep() { if (fRotateFPS != 0) fRotateStep = fRotateSpeed/fRotateFPS; else fRotateStep = 0.0; }
726
727 ClassDef(BesClient,0) // Bes client
728};
729
730#endif
char * file
Definition: DQA_TO_DB.cxx:15
titledef title[20]
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py, TObject *sel)
virtual void CreateStatusBar()
virtual void CreateUpButtonBar()
virtual Bool_t FileExists(TString fname)
virtual void RotateTheta(int pn)
virtual void HandleEventList(TGListTreeItem *entry, Int_t btn)
virtual void CreateWidget(const char *title, UInt_t width, UInt_t height)
virtual void InitGeoSelector(const char *geomsel_file)
virtual void SaveGeoAs()
virtual void UpdateAllView()
virtual Bool_t GetRecEvent()
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 OpenGeoFile(TString filename)
virtual void CreateMainFrame()
virtual void HandleError(const char *msg)
virtual void GoHome()
virtual void SetRange(Double_t &input, Double_t min, Double_t max)
virtual void OpenGL()
virtual void SetAllDisplayModeButtonUnHL()
virtual void Help()
virtual void LoadMyConfig()
virtual void UpdateStatus()
virtual void HandleMenu(Int_t id)
virtual void UpdateCurrentPad()
virtual void X3D()
virtual Bool_t FirstEvent()
virtual void LoadMdcPalette()
virtual Bool_t LastEvent()
virtual void SavePicAs()
virtual void SaveMyConfig()
virtual void CreateCanvas()
virtual ~BesClient()
virtual void ExecuteReturn()
virtual void CreateDisplayModeBar()
virtual void HandleInfoBar(const char *msg)
virtual void HandleViewOptionMenu(Int_t id)
virtual void HandleStatusBar(const char *msg)
virtual void InitParameter()
virtual void RotateClockWise(int clockwise)
virtual void HandleButtons(Int_t id=-1)
virtual void InitConnections()
virtual const char * GetCurrentPadString()
virtual void UpdateBesInputFields()
virtual Pixmap_t GetPic(const char *file)
virtual void AutoRotateCommand()
virtual Bool_t NextEvent()
virtual void RotatePhi(int pn)
virtual void CreateTabs()
virtual void SetHome()
virtual void AutoRotate()
virtual void ChangeFocus()
virtual Bool_t PrevEvent()
virtual void RotatePsi(int pn)
virtual void CloseWindow()
virtual void InitLocal()
virtual void AutoDisplayEventCommand()
virtual void HandleSliders(Int_t id)
virtual void SetState(Int_t id=-1)
virtual Bool_t GetEvent(Long64_t i, bool openfile=false, bool sel_geom=false)
virtual void CreateHorizontalRuler()
virtual void OpenEventFile()
virtual void AutoDisplayEvent()
virtual void Show()
virtual void SavePicAsPS()
virtual void CreateTitleBar()
virtual void OpenEventFile(TString filename, bool auto_sel_geom=false)
virtual void LoadGeoFile()
virtual void CreateMenuBar()
virtual void CreateToolBar()