TEveTrackEditor.cxx

Go to the documentation of this file.
00001 // @(#)root/eve:$Id: TEveTrackEditor.cxx 34597 2010-07-26 11:05:29Z matevz $
00002 // Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers.               *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
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 // TEveTrackEditor
00034 //
00035 // Editor for TEveTrack class.
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    // Constructor.
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    // Set model object.
00063 
00064    fM = dynamic_cast<TEveTrack*>(obj);
00065 }
00066 
00067 //______________________________________________________________________________
00068 void TEveTrackEditor::DoEditPropagator()
00069 {
00070    // Slot for EditPropagator.
00071 
00072    fGedEditor->SetModel(fGedEditor->GetPad(), fM->GetPropagator(), kButton1Down);
00073 }
00074 
00075 
00076 //______________________________________________________________________________
00077 // TEveTrackListEditor
00078 //
00079 // Editor for TEveTrackList class.
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    // Constructor.
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    {  // --- Selectors
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    // Create tab for control of path-mark display.
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    // path marks
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    // Set model object.
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    // Slot for RnrLine.
00195 
00196    fTC->SetRnrLine(fRnrLine->IsOn());
00197    Update();
00198 }
00199 
00200 //______________________________________________________________________________
00201 void TEveTrackListEditor::DoRnrPoints()
00202 {
00203    // Slot for RnrPoints.
00204 
00205    fTC->SetRnrPoints(fRnrPoints->IsOn());
00206    Update();
00207 }
00208 
00209 /******************************************************************************/
00210 
00211 //______________________________________________________________________________
00212 void TEveTrackListEditor::DoPtRange()
00213 {
00214    // Slot for PtRange.
00215 
00216    fTC->SelectByPt(fPtRange->GetMin(), fPtRange->GetMax());
00217    Update();
00218 }
00219 
00220 //______________________________________________________________________________
00221 void TEveTrackListEditor::DoPRange()
00222 {
00223    // Slot for PRange.
00224 
00225    fTC->SelectByP(fPRange->GetMin(), fPRange->GetMax());
00226    Update();
00227 }
00228 

Generated on Tue Jul 5 14:16:14 2011 for ROOT_528-00b_version by  doxygen 1.5.1