00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "TEveTrackEditor.h"
00013 #include "TEveTrack.h"
00014 #include "TEveTrackPropagator.h"
00015 #include "TEveTrackPropagatorEditor.h"
00016 #include "TEveManager.h"
00017
00018 #include "TEveGValuators.h"
00019
00020 #include "TVirtualPad.h"
00021 #include "TColor.h"
00022
00023 #include "TGedEditor.h"
00024 #include "TAttMarkerEditor.h"
00025 #include "TGLabel.h"
00026 #include "TG3DLine.h"
00027 #include "TGButton.h"
00028 #include "TGNumberEntry.h"
00029 #include "TGColorSelect.h"
00030 #include "TGDoubleSlider.h"
00031
00032
00033
00034
00035
00036
00037 ClassImp(TEveTrackEditor);
00038
00039
00040 TEveTrackEditor::TEveTrackEditor(const TGWindow *p, Int_t width, Int_t height,
00041 UInt_t options, Pixel_t back) :
00042 TGedFrame(p, width, height, options | kVerticalFrame, back),
00043 fM(0),
00044 fRSEditor(0)
00045 {
00046
00047
00048 MakeTitle("TEveTrack");
00049
00050 TGHorizontalFrame* f = new TGHorizontalFrame(this);
00051
00052 fRSEditor = new TGTextButton(f, "Edit Propagator");
00053 fRSEditor->Connect("Clicked()", "TEveTrackEditor", this, "DoEditPropagator()");
00054 f->AddFrame(fRSEditor, new TGLayoutHints(kLHintsLeft, 2, 1, 4, 4));
00055
00056 AddFrame(f, new TGLayoutHints(kLHintsTop, 0,0,2,1));
00057 }
00058
00059
00060 void TEveTrackEditor::SetModel(TObject* obj)
00061 {
00062
00063
00064 fM = dynamic_cast<TEveTrack*>(obj);
00065 }
00066
00067
00068 void TEveTrackEditor::DoEditPropagator()
00069 {
00070
00071
00072 fGedEditor->SetModel(fGedEditor->GetPad(), fM->GetPropagator(), kButton1Down);
00073 }
00074
00075
00076
00077
00078
00079
00080
00081 ClassImp(TEveTrackListEditor);
00082
00083
00084 TEveTrackListEditor::TEveTrackListEditor(const TGWindow *p,
00085 Int_t width, Int_t height,
00086 UInt_t options, Pixel_t back) :
00087 TGedFrame(p, width, height, options | kVerticalFrame, back),
00088
00089 fTC (0),
00090 fPtRange (0),
00091 fPRange (0),
00092 fRSSubEditor(0)
00093 {
00094
00095
00096 {
00097 TGHorizontalFrame* f = new TGHorizontalFrame(this);
00098
00099 fRnrPoints = new TGCheckButton(f, "Draw Marker");
00100 f->AddFrame(fRnrPoints, new TGLayoutHints(kLHintsLeft, 2,1,0,0));
00101 fRnrPoints->Connect("Toggled(Bool_t)"," TEveTrackListEditor", this, "DoRnrPoints()");
00102
00103 fRnrLine = new TGCheckButton(f, "Draw Line");
00104 f->AddFrame(fRnrLine, new TGLayoutHints(kLHintsLeft, 1,2,0,0));
00105 fRnrLine->Connect("Toggled(Bool_t)", "TEveTrackListEditor", this, "DoRnrLine()");
00106
00107 AddFrame(f, new TGLayoutHints(kLHintsTop, 0,0,2,1));
00108 }
00109 {
00110 Int_t labelW = 51;
00111 Int_t dbW = 210;
00112
00113 fPtRange = new TEveGDoubleValuator(this,"Pt rng:", 40, 0);
00114 fPtRange->SetNELength(6);
00115 fPtRange->SetLabelWidth(labelW);
00116 fPtRange->Build();
00117 fPtRange->GetSlider()->SetWidth(dbW);
00118 fPtRange->SetLimits(0, 10, TGNumberFormat::kNESRealTwo);
00119 fPtRange->Connect("ValueSet()",
00120 "TEveTrackListEditor", this, "DoPtRange()");
00121 AddFrame(fPtRange, new TGLayoutHints(kLHintsTop, 1, 1, 4, 1));
00122
00123 fPRange = new TEveGDoubleValuator(this,"P rng:", 40, 0);
00124 fPRange->SetNELength(6);
00125 fPRange->SetLabelWidth(labelW);
00126 fPRange->Build();
00127 fPRange->GetSlider()->SetWidth(dbW);
00128 fPRange->SetLimits(0, 100, TGNumberFormat::kNESRealTwo);
00129 fPRange->Connect("ValueSet()",
00130 "TEveTrackListEditor", this, "DoPRange()");
00131 AddFrame(fPRange, new TGLayoutHints(kLHintsTop, 1, 1, 4, 1));
00132 }
00133
00134 MakeTitle("RenderStyle");
00135 fRSSubEditor = new TEveTrackPropagatorSubEditor(this);
00136 fRSSubEditor->Connect("Changed()", "TEveTrackListEditor", this, "Update()");
00137 AddFrame(fRSSubEditor, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,0,0));
00138 CreateRefsTab();
00139 }
00140
00141
00142
00143
00144 void TEveTrackListEditor::CreateRefsTab()
00145 {
00146
00147
00148 fRefs = CreateEditorTabSubFrame("Refs");
00149
00150 TGCompositeFrame *title1 = new TGCompositeFrame(fRefs, 145, 10,
00151 kHorizontalFrame |
00152 kLHintsExpandX |
00153 kFixedWidth |
00154 kOwnBackground);
00155 title1->AddFrame(new TGLabel(title1, "PathMarks"),
00156 new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
00157 title1->AddFrame(new TGHorizontal3DLine(title1),
00158 new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
00159 fRefs->AddFrame(title1, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));
00160
00161
00162 fRSSubEditor->CreateRefsContainer(fRefs);
00163 fRSSubEditor->fPMAtt->SetGedEditor((TGedEditor*)gEve->GetEditor());
00164 fRSSubEditor->fFVAtt->SetGedEditor((TGedEditor*)gEve->GetEditor());
00165 }
00166
00167
00168
00169
00170 void TEveTrackListEditor::SetModel(TObject* obj)
00171 {
00172
00173
00174 fTC = dynamic_cast<TEveTrackList*>(obj);
00175 fRnrLine ->SetState(fTC->GetRnrLine() ? kButtonDown : kButtonUp);
00176 fRnrPoints->SetState(fTC->GetRnrPoints() ? kButtonDown : kButtonUp);
00177
00178 Float_t llim;
00179 fPtRange->SetValues(fTC->fMinPt, fTC->fMaxPt);
00180 llim = fTC->fLimPt > 1 ? TMath::Log10(fTC->fLimPt) : 0;
00181 fPtRange->SetLimits(0, fTC->fLimPt, llim < 2 ? TGNumberFormat::kNESRealTwo : (llim < 3 ? TGNumberFormat::kNESRealOne : TGNumberFormat::kNESInteger));
00182 fPRange ->SetValues(fTC->fMinP, fTC->fMaxP);
00183 llim = fTC->fLimP > 1 ? TMath::Log10(fTC->fLimP) : 0;
00184 fPRange ->SetLimits(0, fTC->fLimP, llim < 2 ? TGNumberFormat::kNESRealTwo : (llim < 3 ? TGNumberFormat::kNESRealOne : TGNumberFormat::kNESInteger));
00185
00186 fRSSubEditor->SetModel(fTC->GetPropagator());
00187 }
00188
00189
00190
00191
00192 void TEveTrackListEditor::DoRnrLine()
00193 {
00194
00195
00196 fTC->SetRnrLine(fRnrLine->IsOn());
00197 Update();
00198 }
00199
00200
00201 void TEveTrackListEditor::DoRnrPoints()
00202 {
00203
00204
00205 fTC->SetRnrPoints(fRnrPoints->IsOn());
00206 Update();
00207 }
00208
00209
00210
00211
00212 void TEveTrackListEditor::DoPtRange()
00213 {
00214
00215
00216 fTC->SelectByPt(fPtRange->GetMin(), fPtRange->GetMax());
00217 Update();
00218 }
00219
00220
00221 void TEveTrackListEditor::DoPRange()
00222 {
00223
00224
00225 fTC->SelectByP(fPRange->GetMin(), fPRange->GetMax());
00226 Update();
00227 }
00228