#include <Bes2DView.h>
Public Member Functions | |
virtual void | AdjustScales (TVirtualPad *pad=0) |
virtual void | AdjustScales (TVirtualPad *pad=0) |
Bes2DView () | |
Bes2DView () | |
void | Center () |
void | Center () |
virtual void | Centered () |
virtual void | Centered () |
virtual void | ClearPad () |
virtual void | ClearPad () |
virtual void | Delete (Option_t *option) |
virtual void | Delete (Option_t *option) |
virtual void | DrawClass () |
virtual void | DrawClass () |
virtual TObject * | DrawClone (Option_t *option) |
virtual TObject * | DrawClone (Option_t *option) |
virtual void | DrawLabel () |
virtual void | DrawLabel () |
virtual void | Dump () |
virtual void | Dump () |
virtual void | ExecuteEvent (Int_t event, Int_t px, Int_t py) |
virtual void | ExecuteEvent (Int_t event, Int_t px, Int_t py) |
virtual void | Front () |
virtual void | Front () |
Int_t | Get2DViewType () |
Int_t | Get2DViewType () |
Bool_t | GetFishEye () |
Bool_t | GetFishEye () |
Bool_t | GetFishEyeStatus () |
Bool_t | GetFishEyeStatus () |
Float_t | GetMarkerSize () |
Float_t | GetMarkerSize () |
virtual char * | GetObjectInfo (Int_t px, Int_t py) const |
virtual char * | GetObjectInfo (Int_t px, Int_t py) const |
virtual Int_t | GetRSign (Float_t Phi) |
virtual Int_t | GetRSign (Float_t Phi) |
BesStatus * | GetStatusCurrent () |
BesStatus * | GetStatusCurrent () |
virtual Double_t | GetZoomFactor () |
virtual Double_t | GetZoomFactor () |
virtual void | Inspect () |
virtual void | Inspect () |
void | Move (Int_t px, Int_t py) |
void | Move (Int_t px, Int_t py) |
virtual void | NDCtoWC (const Double_t *pn, Double_t *pw) |
virtual void | NDCtoWC (const Float_t *pn, Float_t *pw) |
virtual void | NDCtoWC (const Double_t *pn, Double_t *pw) |
virtual void | NDCtoWC (const Float_t *pn, Float_t *pw) |
void | PrintCurrent () |
void | PrintCurrent () |
void | Reset () |
void | Reset () |
void | Set2DViewType (Int_t viewType) |
void | Set2DViewType (Int_t viewType) |
virtual void | SetDrawOption (Option_t *option) |
virtual void | SetDrawOption (Option_t *option) |
void | SetFishEye (Bool_t input=0) |
void | SetFishEye (Bool_t input=0) |
virtual void | SetLineAttributes () |
virtual void | SetLineAttributes () |
void | SetMarkerSize (Float_t size) |
void | SetMarkerSize (Float_t size) |
virtual void | SetZoomFactor (Double_t factor) |
virtual void | SetZoomFactor (Double_t factor) |
virtual void | Side () |
virtual void | Side () |
virtual void | Top () |
virtual void | Top () |
void | UnZoom () |
void | UnZoom () |
virtual void | UpdateView (Bool_t resetview=kFALSE) |
virtual void | UpdateView (Bool_t resetview=kFALSE) |
virtual void | WCtoNDC (const Double_t *pw, Double_t *pn) |
virtual void | WCtoNDC (const Float_t *pw, Float_t *pn) |
virtual void | WCtoNDC (const Double_t *pw, Double_t *pn) |
virtual void | WCtoNDC (const Float_t *pw, Float_t *pn) |
void | Zoom () |
void | Zoom () |
virtual void | ZoomMove () |
virtual void | ZoomMove () |
virtual | ~Bes2DView () |
virtual | ~Bes2DView () |
Private Attributes | |
Int_t | f2DViewType |
Bool_t | fFishEye |
TPaveLabel * | fLabel |
TPaveLabel * | fLabel |
Float_t | fMarkerSize |
Float_t | fPhiRangeMax |
Float_t | fPhiRangeMin |
BesStatus * | fStatus3D |
BesStatus * | fStatus3D |
BesStatus * | fStatusCurrent |
BesStatus * | fStatusCurrent |
BesStatus * | fStatusXY |
BesStatus * | fStatusXY |
BesStatus * | fStatusZR |
BesStatus * | fStatusZR |
Double_t | fZoomFactor |
|
|
|
00083 { 00084 // 00085 // Bes2DView default destructor 00086 if ( gDebug ) cout << "Bes2DView default dtor called" << endl; 00087 00088 delete fLabel; 00089 00090 delete fStatus3D; 00091 delete fStatusXY; 00092 delete fStatusZR; 00093 delete fStatusCurrent; 00094 00095 }
|
|
|
|
|
|
00114 { TView::AdjustScales(pad); }
|
|
00114 { TView::AdjustScales(pad); }
|
|
|
|
00189 { 00190 // 00191 // Center view 00192 /* 00193 if ( fViewType & k3DView ){ 00194 this->Centered(); 00195 } else { 00196 */ 00197 Double_t xrange, yrange; 00198 xrange = gPad->GetX2() - gPad->GetX1(); 00199 yrange = gPad->GetY2() - gPad->GetY1(); 00200 gPad->Range(-xrange/2, -yrange/2, xrange/2, yrange/2); 00201 gPad->Modified(); 00202 }
|
|
00108 { TView::Centered(); }
|
|
00108 { TView::Centered(); }
|
|
|
|
00099 { 00100 // 00101 // Clear current without deleting this view 00102 // 00103 // Probably this doesn't work for the postscript output 00104 // Look at TPad::Clear() for more details 00105 if ( gDebug ) cout << "Bes2DView::ClearPad called" << endl; 00106 if ( gPad->GetListOfPrimitives() ) gPad->GetListOfPrimitives()->Clear(); 00107 }
|
|
00115 { TView::Delete(option); }
|
|
00115 { TView::Delete(option); }
|
|
00116 { TView::DrawClass(); }
|
|
00116 { TView::DrawClass(); }
|
|
00117 { return TView::DrawClone(option); }
|
|
00117 { return TView::DrawClone(option); }
|
|
|
|
00257 { 00258 // 00259 // Draw label for current view 00260 00261 fLabel->SetX1NDC(0.05); 00262 fLabel->SetX2NDC(0.20); 00263 fLabel->SetY1NDC(0.05); 00264 fLabel->SetY2NDC(0.12); 00265 00266 switch (f2DViewType) { 00267 //case k3DView: 00268 //fLabel->SetLabel("3D View"); 00269 //break; 00270 case 0: 00271 fLabel->SetLabel("XY View"); 00272 break; 00273 case 1: 00274 fLabel->SetLabel("ZR View"); 00275 break; 00276 } 00277 fLabel->Draw("BR,NDC,SAME"); 00278 }
|
|
00120 { TView::Dump(); }
|
|
00120 { TView::Dump(); }
|
|
|
|
00111 { 00112 // 00113 // Execute mouse events 00114 if ( gDebug ) cout << "Bes2DView::ExecuteEvent called" << endl; 00115 //cout << "f2DViewType " << f2DViewType << " k3DView " << k3DView << endl; 00116 00117 /* 00118 if ( fViewType & k3DView ) { 00119 ExecuteRotateView(event, px, py); 00120 } else { 00121 */ 00122 00123 // Editor mode 00124 if (gROOT->GetEditorMode()) { 00125 cout << "ROOT" << endl; 00126 gPad->ExecuteEvent(event,px,py); 00127 return; 00128 } 00129 00130 static Double_t xmin, ymin, xmax, ymax, x0, y0; 00131 Double_t dx, dy, x, y; 00132 switch (event) { 00133 00134 case kButton1Down: 00135 gPad->SetCursor(kMove); 00136 // Remember position of pointer 00137 xmin = gPad->GetX1(); 00138 ymin = gPad->GetY1(); 00139 xmax = gPad->GetX2(); 00140 ymax = gPad->GetY2(); 00141 x0 = gPad->AbsPixeltoX(px); 00142 y0 = gPad->AbsPixeltoY(py); 00143 break; 00144 00145 case kButton1Motion: 00146 gPad->SetCursor(kMove); 00147 00148 case kButton1Up: 00149 // Set new pad range 00150 x = gPad->AbsPixeltoX(px); 00151 y = gPad->AbsPixeltoY(py); 00152 dx = -(x - x0); 00153 dy = -(y - y0); 00154 //((TPad*)gPad)->SetNoAspect(kTRUE); 00155 gPad->Range(xmin+dx, ymin+dy, xmax+dx, ymax+dy); 00156 //((TPad*)gPad)->SetNoAspect(kFALSE); 00157 gPad->Modified(); 00158 break; 00159 00160 default: 00161 gPad->SetCursor(kCross); 00162 } 00163 }
|
|
00109 { TView::Top(); }
|
|
00109 { TView::Top(); }
|
|
00058 { return f2DViewType; }
|
|
00058 { return f2DViewType; }
|
|
00091 { return fFishEye; }
|
|
00091 { return fFishEye; }
|
|
00090 { return fStatusCurrent->fFishEye; }
|
|
00090 { return fStatusCurrent->fFishEye; }
|
|
00059 { return fMarkerSize;}
|
|
00059 { return fMarkerSize;}
|
|
|
|
00426 { 00427 // 00428 // Returns string containing info about the object at position (px,py). 00429 Double_t pw[3]; 00430 //((TPad*)gPad)->PixeltoWC(px, py, pw); 00431 00432 static char info[64]; 00433 if ( f2DViewType == 1 ) { 00434 sprintf(info, "z=%-.3fcm, r=%-.3fcm", pw[0], pw[1]); 00435 return info; 00436 } else { 00437 sprintf(info, "x=%-.3fcm, y=%-.3fcm", pw[0], pw[1]); 00438 return info; 00439 } 00440 }
|
|
|
|
00224 { 00225 // 00226 // Get sign of the R coordinate (ZR view) 00227 // for a given phi (in radians) 00228 Int_t Sign; 00229 00230 // Convert to deg, because phi range is given in degrees 00231 Float_t Phi2 = (Phi - 2*TMath::Pi()*Int_t(Phi/(2*TMath::Pi()))) 00232 * 180./TMath::Pi(); 00233 if ( Phi2 < 0 ) Phi2 += 360; 00234 if ( Phi2 >= fStatusCurrent->fPhiRangeMin && Phi2 < fStatusCurrent->fPhiRangeMax ) { 00235 Sign = 1; 00236 } else { 00237 Sign = -1; 00238 } 00239 return Sign; 00240 }
|
|
00129 { return fStatusCurrent; };
|
|
00129 { return fStatusCurrent; };
|
|
00128 { return fZoomFactor; }
|
|
00128 { return fZoomFactor; }
|
|
00121 { TView::Inspect(); }
|
|
00121 { TView::Inspect(); }
|
|
|
|
00167 { 00168 // 00169 // Move (px, py in pixel coordinates) 00170 Double_t x1, y1, x2, y2, dx, dy, x, y, x0, y0; 00171 x1 = gPad->GetX1(); 00172 y1 = gPad->GetY1(); 00173 x2 = gPad->GetX2(); 00174 y2 = gPad->GetY2(); 00175 x0 = gPad->PixeltoX(0); 00176 y0 = gPad->PixeltoY(0); 00177 x = gPad->PixeltoX(px); 00178 y = gPad->PixeltoY(py); 00179 dx = -(x - x0); 00180 dy = -(y - y0); 00181 //((TPad*)gPad)->SetNoAspect(kTRUE); 00182 gPad->Range(x1+dx, y1+dy, x2+dx, y2+dy); 00183 //((TPad*)gPad)->SetNoAspect(kFALSE); 00184 gPad->Modified(); 00185 }
|
|
|
|
|
|
00387 { 00388 // 00389 // Transform back from NDCs 00390 Double_t p[3]; 00391 if (f2DViewType == 0) { // XYView 00392 p[0] = pn[0]; 00393 p[1] = pn[1]; 00394 p[2] = pn[2]; 00395 } 00396 else { // ZRView 00397 p[0] = pn[2]; 00398 p[1] = pn[1]; 00399 p[2] = pn[0]; 00400 } 00401 00402 if ( fStatusCurrent->fFishEye == kTRUE ) { 00403 Double_t r; 00404 if ( f2DViewType == 1 ) { 00405 Double_t pvWC[3], pvNDC[3]; 00406 pvWC[0] = +4; 00407 pvWC[1] = 0; 00408 pvWC[2] = 0; 00409 TView::WCtoNDC(pvWC, pvNDC); 00410 p[0] = TMath::Sign((pn[0] - pvNDC[0])*(pn[0] - pvNDC[0]), 00411 pn[0] - pvNDC[0]) + pvNDC[0]; 00412 p[1] = TMath::Sign((pn[1] - pvNDC[1])*(pn[1] - pvNDC[1]), 00413 pn[1] - pvNDC[1]) + pvNDC[1]; 00414 } else { 00415 r = TMath::Sqrt(TMath::Power(p[0],2) 00416 +TMath::Power(p[1],2)); 00417 p[0] *= r; 00418 p[1] *= r; 00419 } 00420 } 00421 TView::NDCtoWC(p, pw); 00422 }
|
|
00348 { 00349 // 00350 // Transform back from NDCs 00351 Float_t p[3]; 00352 if (f2DViewType == 0) { // XYView 00353 p[0] = pn[0]; 00354 p[1] = pn[1]; 00355 p[2] = pn[2]; 00356 } 00357 else { // ZRView 00358 p[0] = pn[2]; 00359 p[1] = pn[1]; 00360 p[2] = pn[0]; 00361 } 00362 00363 if ( fStatusCurrent->fFishEye == kTRUE ) { 00364 Float_t r; 00365 if ( f2DViewType == 1 ) { 00366 Float_t pvWC[3], pvNDC[3]; 00367 pvWC[0] = +4; 00368 pvWC[1] = 0; 00369 pvWC[2] = 0; 00370 TView::WCtoNDC(pvWC, pvNDC); 00371 p[0] = TMath::Sign((pn[0] - pvNDC[0])*(pn[0] - pvNDC[0]), 00372 pn[0] - pvNDC[0]) + pvNDC[0]; 00373 p[1] = TMath::Sign((pn[1] - pvNDC[1])*(pn[1] - pvNDC[1]), 00374 pn[1] - pvNDC[1]) + pvNDC[1]; 00375 } else { 00376 r = TMath::Sqrt(TMath::Power(p[0],2) 00377 +TMath::Power(p[1],2)); 00378 p[0] *= r; 00379 p[1] *= r; 00380 } 00381 } 00382 TView::NDCtoWC(p, pw); 00383 }
|
|
00105 { fStatusCurrent->Print(); }
|
|
00105 { fStatusCurrent->Print(); }
|
|
|
|
00444 { 00445 // 00446 // reset view to default values 00447 00448 // reset status instances of views 00449 //fStatus3D->Default(k3DView); 00450 //fStatusXY->Default(kXYView); 00451 //fStatusZR->Default(kZRView); 00452 fZoomFactor = 1.5; 00453 00454 // reset current status instance tp fViewType 00455 //fStatusCurrent->Default(fViewType); 00456 00457 // center the view 00458 this->Center(); 00459 this->SetRange(-2635,-2635,-2875,2635,2635,2875); 00460 //int iret; 00461 //this->SetView(0,0,270,iret); 00462 this->ZoomView(gPad, 1.5); 00463 00464 // reset phirange 00465 // this->SetPhiRange(0,180); 00466 //this->UpdateView(); 00467 gPad->Update(); 00468 }
|
|
00057 { f2DViewType = viewType; }
|
|
00057 { f2DViewType = viewType; }
|
|
00124 { TView::SetDrawOption(option); }
|
|
00124 { TView::SetDrawOption(option); }
|
|
00092 { 00093 /* 00094 if ( fViewType & k3DView ) { 00095 fFishEye = 0; 00096 fStatusCurrent->fFishEye = 0; 00097 } else { 00098 */ 00099 fFishEye = input; 00100 fStatusCurrent->fFishEye = input; 00101 00102 } // *TOGGLE*
|
|
00092 { 00093 /* 00094 if ( fViewType & k3DView ) { 00095 fFishEye = 0; 00096 fStatusCurrent->fFishEye = 0; 00097 } else { 00098 */ 00099 fFishEye = input; 00100 fStatusCurrent->fFishEye = input; 00101 00102 } // *TOGGLE*
|
|
00125 { TView::SetLineAttributes(); }
|
|
00125 { TView::SetLineAttributes(); }
|
|
00087 { fMarkerSize = size; }
|
|
00087 { fMarkerSize = size; }
|
|
00127 { fZoomFactor = factor; };
|
|
00127 { fZoomFactor = factor; };
|
|
00110 { TView::Side(); }
|
|
00110 { TView::Side(); }
|
|
00111 { TView::Front(); }
|
|
00111 { TView::Front(); }
|
|
|
|
00215 { 00216 // 00217 // Demagnify 00218 fMarkerSize = fMarkerSize / fZoomFactor; 00219 UnzoomView(gPad, fZoomFactor); 00220 }
|
|
|
|
00245 { 00246 // 00247 // Update current view 00248 if ( !gGeometry ) return; 00249 00250 // Redraw 00251 //SetViewType(fViewType,resetview); 00252 }
|
|
|
|
|
|
00315 { 00316 // 00317 // Transform world coordinates to 00318 // normalised device coordinates. 00319 // This method was taken from TView 00320 // and extended by FishEye view 00321 TView::WCtoNDC(pw, pn); 00322 00323 if ( fStatusCurrent->fFishEye == kTRUE ) { 00324 Double_t r, s; 00325 if ( f2DViewType == 1 ) { 00326 Double_t pvWC[3], pvNDC[3]; 00327 pvWC[0] = +4; 00328 pvWC[1] = 0; 00329 pvWC[2] = 0; 00330 TView::WCtoNDC(pvWC, pvNDC); 00331 pn[0] = TMath::Sign(TMath::Sqrt(TMath::Abs(pn[0] - pvNDC[0])), 00332 pn[0] - pvNDC[0]) + pvNDC[0]; 00333 pn[1] = TMath::Sign(TMath::Sqrt(TMath::Abs(pn[1] - pvNDC[1])), 00334 pn[1] - pvNDC[1]) + pvNDC[1]; 00335 } else { 00336 00337 r = TMath::Sqrt(TMath::Power(pn[0],2) 00338 +TMath::Power(pn[1],2)); 00339 s = TMath::Sqrt(r)/r; 00340 pn[0] *= s; 00341 pn[1] *= s; 00342 } 00343 } 00344 }
|
|
00282 { 00283 // 00284 // Transform world coordinates to 00285 // normalised device coordinates. 00286 // This method was taken from TView 00287 // and extended by FishEye view 00288 TView::WCtoNDC(pw, pn); 00289 //cout << "fFishEye " << fFishEye << endl; 00290 00291 if ( fStatusCurrent->fFishEye == kTRUE ) { 00292 Float_t r, s; 00293 if ( f2DViewType == 1) { 00294 Float_t pvWC[3], pvNDC[3]; 00295 pvWC[0] = +4; 00296 pvWC[1] = 0; 00297 pvWC[2] = 0; 00298 TView::WCtoNDC(pvWC, pvNDC); 00299 pn[0] = TMath::Sign(Double_t(TMath::Sqrt(TMath::Abs(pn[0] - pvNDC[0]))), 00300 Double_t(pn[0] - pvNDC[0])) + pvNDC[0]; 00301 pn[1] = TMath::Sign(Double_t(TMath::Sqrt(TMath::Abs(pn[1] - pvNDC[1]))), 00302 Double_t(pn[1] - pvNDC[1])) + pvNDC[1]; 00303 } else { 00304 r = TMath::Sqrt(TMath::Power(pn[0],2) 00305 +TMath::Power(pn[1],2)); 00306 s = TMath::Sqrt(r)/r; 00307 pn[0] *= s; 00308 pn[1] *= s; 00309 } 00310 } 00311 }
|
|
|
|
00206 { 00207 // 00208 // Magnify 00209 fMarkerSize = fMarkerSize * fZoomFactor; 00210 ZoomView(gPad, fZoomFactor); 00211 }
|
|
00113 { TView::ZoomMove(); }
|
|
00113 { TView::ZoomMove(); }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|