BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EventDisplay/BesVisLib/include/BesVisLib/BesView.h
Go to the documentation of this file.
1//
2// BesView.h
3//
4
5#ifndef BES_BESVIEW
6#define BES_BESVIEW
7
8#include "BesTView.h"
9#include <TCanvas.h>
10#include <TPad.h>
11#include <TPaveLabel.h>
12
13#include "BesGeometry.h"
14#include "BesStatus.h"
15
16#ifndef BES_EBESViewType
17# define BES_EBESViewType
18
19enum EBESViewType {
20 k3DView = BIT( 0 ),
21 kXYView = BIT( 1 ),
22 kZRView = BIT( 2 ),
23 // Long Peixun's update: CGEM unfolded display for each layer
24 kCgemUFView0 = BIT( 3 ),
25 kCgemUFView1 = BIT( 4 ),
26 kCgemUFView2 = BIT( 5 )
27};
28#endif
29
30class BesView : public BesTView {
31
32private:
33 Bool_t fFishEye; // variable needed for toggle in menu
34 EBESViewType fViewType; // View type
35 Float_t fPhiRangeMin; // Minimum of phi range for Z-R projection (in degrees)
36 Float_t fPhiRangeMax; // Maximum of phi range for Z-R projection (in degrees)
37 TPaveLabel* fLabel; // Label
38 Float_t fMarkerSize; // size for marker
39 BesStatus* fStatus3D; // 3D view status flags
40 BesStatus* fStatusXY; // XY view status flags
41 BesStatus* fStatusZR; // ZR view status flags
42
43 BesStatus* fStatusCurrent; // current view status flags
44 Double_t fZoomFactor; // zoom factor
45 Double_t fExtentDefault;
46 Float_t m_BesR;
47 Float_t m_BesZ;
48 Double_t ViewCenter[2]; // Long Peixun's update: Coordinate of the center of View
49
50public:
52 virtual ~BesView();
53
54 virtual void SetViewType( EBESViewType ViewType, Bool_t resetview = kFALSE );
55 virtual void SetViewTypeBare( EBESViewType ViewType, Bool_t resetview = kFALSE );
56 virtual void DefaultRange();
57 virtual void ClearPad();
58 virtual void DrawLabel();
59 virtual void ExecuteEvent( Int_t event, Int_t px, Int_t py );
60
61 virtual Int_t GetRSign( Float_t Phi );
62 virtual void UpdateView( Bool_t resetview = kFALSE );
63 virtual void WCtoNDC( const Float_t* pw, Float_t* pn );
64 virtual void WCtoNDC( const Double_t* pw, Double_t* pn );
65 virtual void NDCtoWC( const Float_t* pn, Float_t* pw );
66 virtual void NDCtoWC( const Double_t* pn, Double_t* pw );
67 virtual char* GetObjectInfo( Int_t px, Int_t py ) const;
68
69 void SetZoomRatio( Double_t ratio );
70 inline Double_t GetZoomRatio() { return fExtentDefault / GetExtent(); }
71 inline EBESViewType GetViewType() { return fViewType; }
72 inline Float_t GetMarkerSize() { return fMarkerSize; }
73
74 // menu
75 inline void View3D() { SetViewType( k3DView, 1 ); } // *MENU*
76 inline void ViewXY() { SetViewType( kXYView, 1 ); } // *MENU*
77 inline void ViewZR() { SetViewType( kZRView, 1 ); } // *MENU*
78
79 void ZoomIn(); // *MENU*
80 void ZoomOut(); // *MENU*
81 void Center(); // *MENU*
82 void Move( Int_t px, Int_t py );
83 inline void Front3D() {
84 this->View3D();
85 this->Front();
86 } // *MENU*
87 void Side3D(); // *MENU*
88 inline void Top3D() {
89 this->View3D();
90 Int_t iret;
91 this->SetView( -90, 90, 270, iret );
92
93 // this->Top();
94 } // *MENU*
95 void SetPhiRange( Float_t PhiMin = 0, Float_t PhiMax = 180 );
96 void Reset(); // *MENU*
97 void Refresh(); // Long Peixun's update: Refresh
98
99 inline void SetMarkerSize( Float_t size ) { fMarkerSize = size; }
100
101 // Long Peixun's update: Add access functions for CGEM visibility
102 inline Bool_t GetVisCgemGlobal() { return fStatusCurrent->fCgemGlobal; }
103 inline Bool_t GetVisCgemLayers() { return fStatusCurrent->fCgemLayers; }
104 inline Bool_t GetVisCgemXStrips() { return fStatusCurrent->fCgemXStrips; }
105 inline Bool_t GetVisCgemVStrips() { return fStatusCurrent->fCgemVStrips; }
106
107 inline void SetVisCgemGlobal( Bool_t input ) { fStatusCurrent->fCgemGlobal = input; }
108 inline void SetVisCgemLayers( Bool_t input ) { fStatusCurrent->fCgemLayers = input; }
109 inline void SetVisCgemXStrips( Bool_t input ) { fStatusCurrent->fCgemXStrips = input; }
110 inline void SetVisCgemVStrips( Bool_t input ) { fStatusCurrent->fCgemVStrips = input; }
111
112 // access functions for Mdc visibility
113 inline Bool_t GetVisMdcGlobal() { return fStatusCurrent->fMdcGlobal; }
114 inline Bool_t GetVisMdcTubes() { return fStatusCurrent->fMdcTubes; }
115 inline Bool_t GetVisMdcWires() { return fStatusCurrent->fMdcWires; }
116
117 inline void SetVisMdcGlobal( Bool_t input ) { fStatusCurrent->fMdcGlobal = input; }
118 inline void SetVisMdcTubes( Bool_t input ) { fStatusCurrent->fMdcTubes = input; }
119 inline void SetVisMdcWires( Bool_t input ) { fStatusCurrent->fMdcWires = input; }
120
121 // access functions for Tof visibility
122 inline Bool_t GetVisTofGlobal() { return fStatusCurrent->fTofGlobal; }
123 inline Bool_t GetVisTofEast() { return fStatusCurrent->fTofEast; }
124 inline Bool_t GetVisTofBarrel() { return fStatusCurrent->fTofBarrel; }
125 inline Bool_t GetVisTofWest() { return fStatusCurrent->fTofWest; }
126 inline Float_t GetVisZoom() { return fStatusCurrent->fZoom; }
127
128 inline void SetVisTofGlobal( Bool_t input ) { fStatusCurrent->fTofGlobal = input; }
129 inline void SetVisTofEast( Bool_t input ) { fStatusCurrent->fTofEast = input; }
130 inline void SetVisTofBarrel( Bool_t input ) { fStatusCurrent->fTofBarrel = input; }
131 inline void SetVisTofWest( Bool_t input ) { fStatusCurrent->fTofWest = input; }
132 inline void SetVisZoom( Float_t input ) { fStatusCurrent->fZoom = input; }
133
134 // access functions for Emc visibility
135 inline Bool_t GetVisEmcGlobal() { return fStatusCurrent->fEmcGlobal; }
136 inline Bool_t GetVisEmcEast() { return fStatusCurrent->fEmcEast; }
137 inline Bool_t GetVisEmcBarrel() { return fStatusCurrent->fEmcBarrel; }
138 inline Bool_t GetVisEmcWest() { return fStatusCurrent->fEmcWest; }
139 inline Bool_t GetVisEmcSide() { return fStatusCurrent->fEmcSide; }
140
141 inline void SetVisEmcGlobal( Bool_t input ) { fStatusCurrent->fEmcGlobal = input; }
142 inline void SetVisEmcEast( Bool_t input ) { fStatusCurrent->fEmcEast = input; }
143 inline void SetVisEmcBarrel( Bool_t input ) { fStatusCurrent->fEmcBarrel = input; }
144 inline void SetVisEmcWest( Bool_t input ) { fStatusCurrent->fEmcWest = input; }
145 inline void SetVisEmcSide( Bool_t input ) { fStatusCurrent->fEmcSide = input; }
146
147 // access functions for Muc visibility
148 inline Bool_t GetVisMucGlobal() { return fStatusCurrent->fMucGlobal; }
149 inline Bool_t GetVisMucEast() { return fStatusCurrent->fMucEast; }
150 inline Bool_t GetVisMucBarrel() { return fStatusCurrent->fMucBarrel; }
151 inline Bool_t GetVisMucWest() { return fStatusCurrent->fMucWest; }
152 inline Bool_t GetVisMucStrips() { return fStatusCurrent->fMucStrips; }
153
154 inline void SetVisMucGlobal( Bool_t input ) { fStatusCurrent->fMucGlobal = input; }
155 inline void SetVisMucEast( Bool_t input ) { fStatusCurrent->fMucEast = input; }
156 inline void SetVisMucBarrel( Bool_t input ) { fStatusCurrent->fMucBarrel = input; }
157 inline void SetVisMucWest( Bool_t input ) { fStatusCurrent->fMucWest = input; }
158 inline void SetVisMucStrips( Bool_t input ) { fStatusCurrent->fMucStrips = input; }
159
160 // access functions for Full3D visibility
161 inline Bool_t GetVisFull3DCgem() { return fStatusCurrent->fFull3DCgem; }
162 inline Bool_t GetVisFull3DMdc() { return fStatusCurrent->fFull3DMdc; }
163 inline Bool_t GetVisFull3DTof() { return fStatusCurrent->fFull3DTof; }
164 inline Bool_t GetVisFull3DEmc() { return fStatusCurrent->fFull3DEmc; }
165 inline Bool_t GetVisFull3DMuc() { return fStatusCurrent->fFull3DMuc; }
166
167 inline void SetVisFull3DCgem( Bool_t input ) { fStatusCurrent->fFull3DCgem = input; }
168 inline void SetVisFull3DMdc( Bool_t input ) { fStatusCurrent->fFull3DMdc = input; }
169 inline void SetVisFull3DTof( Bool_t input ) { fStatusCurrent->fFull3DTof = input; }
170 inline void SetVisFull3DEmc( Bool_t input ) { fStatusCurrent->fFull3DEmc = input; }
171 inline void SetVisFull3DMuc( Bool_t input ) { fStatusCurrent->fFull3DMuc = input; }
172
173 // access functions for other parts visibility
174 inline Bool_t GetVisBeamPipe() { return fStatusCurrent->fBeamPipe; }
175 inline Bool_t GetVisZRPlaneOnXY() { return fStatusCurrent->fZRPlaneOnXY; }
176 inline Bool_t GetVisAxis() { return fStatusCurrent->fAxis; }
177
178 inline void SetVisBeamPipe( Bool_t input ) { fStatusCurrent->fBeamPipe = input; }
179 inline void SetVisZRPlaneOnXY( Bool_t input ) { fStatusCurrent->fZRPlaneOnXY = input; }
180 inline void SetVisAxis( Bool_t input ) { fStatusCurrent->fAxis = input; }
181
182 // Long Peixun's update: access functions for Cgem hits
183 inline Bool_t GetVisCgemHitsGlobal() { return fStatusCurrent->fCgemHitsGlobal; }
184 inline Bool_t GetVisCgemHitsXStrip() { return fStatusCurrent->fCgemHitsXStrip; }
185 inline Bool_t GetVisCgemHitsVStrip() { return fStatusCurrent->fCgemHitsVStrip; }
186 inline Bool_t GetVisCgemHitsClusters() { return fStatusCurrent->fCgemHitsClusters; }
187
188 inline void SetVisCgemHitsGlobal( Bool_t input ) { fStatusCurrent->fCgemHitsGlobal = input; }
189 inline void SetVisCgemHitsXStrip( Bool_t input ) { fStatusCurrent->fCgemHitsXStrip = input; }
190 inline void SetVisCgemHitsVStrip( Bool_t input ) { fStatusCurrent->fCgemHitsVStrip = input; }
191 inline void SetVisCgemHitsClusters( Bool_t input ) {
192 fStatusCurrent->fCgemHitsClusters = input;
193 }
194
195 // access functions for Mdc hits
196 inline Bool_t GetVisMdcHitsGlobal() { return fStatusCurrent->fMdcHitsGlobal; }
197 inline Bool_t GetVisMdcHits() { return fStatusCurrent->fMdcHits; }
198
199 inline void SetVisMdcHitsGlobal( Bool_t input ) { fStatusCurrent->fMdcHitsGlobal = input; }
200 inline void SetVisMdcHits( Bool_t input ) { fStatusCurrent->fMdcHits = input; }
201
202 // access functions for Tof hits
203 inline Bool_t GetVisTofHitsGlobal() { return fStatusCurrent->fTofHitsGlobal; }
204 inline Bool_t GetVisTofHitsEast() { return fStatusCurrent->fTofHitsEast; }
205 inline Bool_t GetVisTofHitsBarrel() { return fStatusCurrent->fTofHitsBarrel; }
206 inline Bool_t GetVisTofHitsWest() { return fStatusCurrent->fTofHitsWest; }
207
208 inline void SetVisTofHitsGlobal( Bool_t input ) { fStatusCurrent->fTofHitsGlobal = input; }
209 inline void SetVisTofHitsEast( Bool_t input ) { fStatusCurrent->fTofHitsEast = input; }
210 inline void SetVisTofHitsBarrel( Bool_t input ) { fStatusCurrent->fTofHitsBarrel = input; }
211 inline void SetVisTofHitsWest( Bool_t input ) { fStatusCurrent->fTofHitsWest = input; }
212
213 // access functions for Emc hits
214 inline Bool_t GetVisEmcHitsGlobal() { return fStatusCurrent->fEmcHitsGlobal; }
215 inline Bool_t GetVisEmcHitsEast() { return fStatusCurrent->fEmcHitsEast; }
216 inline Bool_t GetVisEmcHitsBarrel() { return fStatusCurrent->fEmcHitsBarrel; }
217 inline Bool_t GetVisEmcHitsWest() { return fStatusCurrent->fEmcHitsWest; }
218 inline Bool_t GetVisEmcHitsSide() { return fStatusCurrent->fEmcHitsSide; }
219
220 inline void SetVisEmcHitsGlobal( Bool_t input ) { fStatusCurrent->fEmcHitsGlobal = input; }
221 inline void SetVisEmcHitsEast( Bool_t input ) { fStatusCurrent->fEmcHitsEast = input; }
222 inline void SetVisEmcHitsBarrel( Bool_t input ) { fStatusCurrent->fEmcHitsBarrel = input; }
223 inline void SetVisEmcHitsWest( Bool_t input ) { fStatusCurrent->fEmcHitsWest = input; }
224 inline void SetVisEmcHitsSide( Bool_t input ) { fStatusCurrent->fEmcHitsSide = input; }
225
226 // access functions for Muc hits
227 inline Bool_t GetVisMucHitsGlobal() { return fStatusCurrent->fMucHitsGlobal; }
228 inline Bool_t GetVisMucHitsEast() { return fStatusCurrent->fMucHitsEast; }
229 inline Bool_t GetVisMucHitsBarrel() { return fStatusCurrent->fMucHitsBarrel; }
230 inline Bool_t GetVisMucHitsWest() { return fStatusCurrent->fMucHitsWest; }
231
232 inline void SetVisMucHitsGlobal( Bool_t input ) { fStatusCurrent->fMucHitsGlobal = input; }
233 inline void SetVisMucHitsEast( Bool_t input ) { fStatusCurrent->fMucHitsEast = input; }
234 inline void SetVisMucHitsBarrel( Bool_t input ) { fStatusCurrent->fMucHitsBarrel = input; }
235 inline void SetVisMucHitsWest( Bool_t input ) { fStatusCurrent->fMucHitsWest = input; }
236
237 // access functions for tracks
238 inline Bool_t GetVisTracksGlobal() { return fStatusCurrent->fTracksGlobal; }
239 inline Bool_t GetVisTracksMdc() { return fStatusCurrent->fTracksMdc; }
240 inline Bool_t GetVisTracksTof() { return fStatusCurrent->fTracksTof; }
241 inline Bool_t GetVisTracksEmc() { return fStatusCurrent->fTracksEmc; }
242 inline Bool_t GetVisTracksMuc() { return fStatusCurrent->fTracksMuc; }
243 inline Bool_t GetVisTracksExt() { return fStatusCurrent->fTracksExt; }
244
245 inline void SetVisTracksGlobal( Bool_t input ) { fStatusCurrent->fTracksGlobal = input; }
246 inline void SetVisTracksMdc( Bool_t input ) { fStatusCurrent->fTracksMdc = input; }
247 inline void SetVisTracksTof( Bool_t input ) { fStatusCurrent->fTracksTof = input; }
248 inline void SetVisTracksEmc( Bool_t input ) { fStatusCurrent->fTracksEmc = input; }
249 inline void SetVisTracksMuc( Bool_t input ) { fStatusCurrent->fTracksMuc = input; }
250 inline void SetVisTracksExt( Bool_t input ) { fStatusCurrent->fTracksExt = input; }
251
252 // access functions for fish eye
253 inline Bool_t GetFishEyeStatus() { return fStatusCurrent->fFishEye; }
254 inline Bool_t GetFishEye() { return fFishEye; }
255 inline void SetFishEye( Bool_t input = 0 ) {
256 if ( fViewType & k3DView )
257 {
258 fFishEye = 0;
259 fStatusCurrent->fFishEye = 0;
260 }
261 else
262 {
263 fFishEye = input;
264 fStatusCurrent->fFishEye = input;
265 }
266 } // *TOGGLE*
267
268 inline void PrintCurrent() { fStatusCurrent->Print(); }
269
270 // clean up right mouse button menu
271 inline virtual void Centered() { BesTView::Centered(); }
272 inline virtual void Front() { BesTView::Top(); }
273 inline virtual void Side() { BesTView::Side(); }
274 inline virtual void Top() { BesTView::Front(); }
275 // inline virtual void ShowAxis() { BesTView::ShowAxis(); }
276 inline virtual void ZoomMove() { BesTView::ZoomMove(); }
277 inline virtual void AdjustScales( TVirtualPad* pad = 0 ) { BesTView::AdjustScales( pad ); }
278 inline virtual void Delete( Option_t* option ) { BesTView::Delete( option ); }
279 inline virtual void DrawClass() { BesTView::DrawClass(); }
280 inline virtual TObject* DrawClone( Option_t* option ) {
281 return BesTView::DrawClone( option );
282 }
283
284#ifndef CL__DEBUG
285 inline virtual void Dump() { BesTView::Dump(); }
286 inline virtual void Inspect() { BesTView::Inspect(); }
287#endif
288
289 inline virtual void SetDrawOption( Option_t* option ) { BesTView::SetDrawOption( option ); }
290 inline virtual void SetLineAttributes() { BesTView::SetLineAttributes(); }
291
292 inline virtual void SetZoomFactor( Double_t factor ) { fZoomFactor = factor; };
293 inline virtual Double_t GetZoomFactor() { return fZoomFactor; }
294 inline BesStatus* GetStatusCurrent() { return fStatusCurrent; };
295 inline BesStatus* GetStatus3D() { return fStatus3D; };
296 inline BesStatus* GetStatusXY() { return fStatusXY; };
297 inline BesStatus* GetStatusZR() { return fStatusZR; };
298
299 ClassDef( BesView, 0 ) // BesVis View
300};
301
302#endif
double Phi(RecMdcKalTrack *trk)
#define PhiMax
#define PhiMin
ClassDef(BesTView, 2)
virtual void AdjustScales(TVirtualPad *pad=0)
Double_t GetExtent() const
BesTView(const BesTView &)
Set to TRUE after ExecuteRotateView.
Definition BesTView.cxx:50
virtual void SetView(Double_t longitude, Double_t latitude, Double_t psi, Int_t &irep)
virtual void AdjustScales(TVirtualPad *pad=0)
virtual void WCtoNDC(const Float_t *pw, Float_t *pn)
Definition BesView.cxx:716
void ZoomIn()
Definition BesView.cxx:527
virtual TObject * DrawClone(Option_t *option)
virtual ~BesView()
Definition BesView.cxx:75
virtual Int_t GetRSign(Float_t Phi)
Definition BesView.cxx:625
void Move(Int_t px, Int_t py)
Definition BesView.cxx:433
virtual void UpdateView(Bool_t resetview=kFALSE)
Definition BesView.cxx:659
virtual char * GetObjectInfo(Int_t px, Int_t py) const
Definition BesView.cxx:871
virtual void ClearPad()
Definition BesView.cxx:359
void Center()
Definition BesView.cxx:480
virtual void Delete(Option_t *option)
void SetPhiRange(Float_t PhiMin=0, Float_t PhiMax=180)
Definition BesView.cxx:643
virtual void SetViewTypeBare(EBESViewType ViewType, Bool_t resetview=kFALSE)
Definition BesView.cxx:257
void Side3D()
Definition BesView.cxx:860
void ZoomOut()
Definition BesView.cxx:579
virtual void SetViewType(EBESViewType ViewType, Bool_t resetview=kFALSE)
Definition BesView.cxx:97
virtual void SetZoomFactor(Double_t factor)
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Definition BesView.cxx:371
virtual void NDCtoWC(const Float_t *pn, Float_t *pw)
Definition BesView.cxx:790
void Refresh()
Definition BesView.cxx:921
virtual void DefaultRange()
Definition BesView.cxx:90
void SetZoomRatio(Double_t ratio)
Definition BesView.cxx:499
void Reset()
Definition BesView.cxx:900
virtual void DrawLabel()
Definition BesView.cxx:677
virtual void SetDrawOption(Option_t *option)