]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveBase/AliEveKinkEditor.cxx
- synchronized the overlay macro to the changes of the drawing one
[u/mrichter/AliRoot.git] / EVE / EveBase / AliEveKinkEditor.cxx
CommitLineData
4711ad43 1// $Id$
2// Author: Paraskevi Ganoti: 2009
3
4/**************************************************************************
5 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
7 * full copyright notice. *
8 **************************************************************************/
9
10#include "AliEveKinkEditor.h"
11#include "AliEveKink.h"
12
13#include "TVirtualPad.h"
14#include "TColor.h"
15
16// Cleanup these includes:
17#include "TGLabel.h"
18#include "TGButton.h"
19#include "TGNumberEntry.h"
20#include "TGColorSelect.h"
21#include "TGDoubleSlider.h"
22#include "TMath.h"
23
24//______________________________________________________________________________
25// GUI editor for AliEveKink.
26//
27
28ClassImp(AliEveKinkEditor)
29
30//______________________________________________________________________________
31AliEveKinkEditor::AliEveKinkEditor(const TGWindow *p, Int_t width, Int_t height,
32 UInt_t options, Pixel_t back) :
33 TGedFrame(p, width, height, options | kVerticalFrame, back),
34 fM(0),
35 fInfoLabel0(0),
36 fInfoLabel1(0),
37 fInfoLabelDaughter(0),
38 fXButton(0)
39 // Initialize widget pointers to 0
40{
41 // Constructor.
42
43 MakeTitle("AliEveKink");
44
45 fInfoLabel0 = new TGLabel(this);
46 fInfoLabel0->SetTextJustify(kTextLeft);
47 AddFrame(fInfoLabel0, new TGLayoutHints(kLHintsLeft|kLHintsExpandX,
48 8, 0, 2, 0));
49
50 fInfoLabel1 = new TGLabel(this);
51 fInfoLabel1->SetTextJustify(kTextLeft);
52 AddFrame(fInfoLabel1, new TGLayoutHints(kLHintsLeft|kLHintsExpandX,
53 8, 0, 2, 0));
54
55 fInfoLabelDaughter = new TGLabel(this);
56 fInfoLabelDaughter->SetTextJustify(kTextLeft);
57 AddFrame(fInfoLabelDaughter, new TGLayoutHints(kLHintsLeft|kLHintsExpandX,
58 8, 0, 2, 0));
59
60 fXButton = new TGTextButton(this, "Detailed View");
61 AddFrame(fXButton, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 1, 0, 0));
62 fXButton->Connect("Clicked()", "AliEveKinkEditor", this, "DisplayDetailed()");
63}
64
65/******************************************************************************/
66
67//______________________________________________________________________________
68void AliEveKinkEditor::SetModel(TObject* obj)
69{
70 // Set model object.
71
04a6d27f 72 fM = static_cast<AliEveKink*>(obj);
4711ad43 73
74 // Set values of widgets
75 fInfoLabel0->SetText(Form("Radius = %f, Kink Angle = %f", fM->GetKinkRadius(), (fM->GetKinkAngle(2))*TMath::RadToDeg() ));
76 fInfoLabel1->SetText(Form("Mother Pt = %f", fM->GetKinkPMotherPerp()));
77 fInfoLabelDaughter->SetText(Form("Daughter Prob= %f for Pdg= %d", fM->GetDaugMaxProbPid(), fM->GetDaugMaxProbPdg()));
78
79}
80
81/******************************************************************************/
82
83#include <TEveManager.h>
84#include <TEveWindow.h>
85#include <TEveViewer.h>
86#include <TEveScene.h>
87
88#include <TGLCamera.h>
89#include <TGLViewer.h>
90
91#include <TLatex.h>
92#include <TRootEmbeddedCanvas.h>
93
94void AliEveKinkEditor::DisplayDetailed()
95{
96 TEveWindowSlot *slot = TEveWindow::CreateWindowMainFrame();
97 TEveWindowPack *pack = slot->MakePack();
98 pack->SetShowTitleBar(kFALSE);
99 pack->SetHorizontal();
100
101 //
102 // This part is for the bending plane view
103 //
104 pack->NewSlot()->MakeCurrent();
105 TEveViewer *bpViewer = gEve->SpawnNewViewer("Kink bending plane View");
106 TEveScene *bpScene = gEve->SpawnNewScene("Kink bending plane Scene");
107 bpViewer->AddScene(bpScene);
108 bpScene->AddElement(fM);
109 bpViewer->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
110 bpViewer->GetGLViewer()->ResetCamerasAfterNextUpdate();
111 TGLCamera& bpCam = bpViewer->GetGLViewer()->CurrentCamera();
112 bpCam.SetExternalCenter(kTRUE);
113 bpCam.SetCenterVec(fM->fRecKinkPosition.fX, fM->fRecKinkPosition.fY, fM->fRecKinkPosition.fZ);
114
115 //
116 // This part is for the decay plane view
117 //
118 pack->NewSlot()->MakeCurrent();
119 TEveViewer *dpViewer = gEve->SpawnNewViewer("Kink decay plane View");
120 TEveScene *dpScene = gEve->SpawnNewScene("Kink decay plane Scene");
121 dpViewer->AddScene(dpScene);
122 dpScene->AddElement(fM);
123 dpViewer->GetGLViewer()->ResetCamerasAfterNextUpdate();
124 TGLCamera& dpCam = dpViewer->GetGLViewer()->CurrentCamera();
125 dpCam.SetExternalCenter(kTRUE);
126 dpCam.SetCenterVec(fM->fRecKinkPosition.fX, fM->fRecKinkPosition.fY, fM->fRecKinkPosition.fZ);
127
128 // This part is for displaying the information
129 slot = pack->NewSlot();
130
131 TEveWindowFrame *frame = slot->MakeFrame(new TRootEmbeddedCanvas());
132 frame->SetElementName("Details");
133
134 char info[100] = {0};
135 TLatex* ltx = new TLatex(0.1, 0.9, info);
136 ltx->SetTextSize(0.08);
137
949755d2 138 snprintf(info,100,"radius = %.3f [cm]",fM->GetKinkRadius());
4711ad43 139 ltx->DrawLatex(0.1, 0.8, info);
949755d2 140 snprintf(info,100,"mass_{K^{+, -}} = %.3f [GeV/c^{2}]",fM->GetInvMass(13));
4711ad43 141 ltx->DrawLatex(0.1, 0.3, info);
142
143 gEve->Redraw3D();
144}