text_test.C: Demonstrates usage of class TEveText - 2D & 3D text in GL. | Event Display | triangleset.C: Demonstrates usage of class TEveTriangleSet. |
// @(#)root/eve:$Id: text_test.C 26717 2008-12-07 22:07:55Z matevz $ // Author: Alja Mrak-Tadel // Makes some tracks with three different magnetic field types. #include "TEveTrackPropagator.h" #include "TEveTrack.h" #include "TEveManager.h" #include "TEveViewer.h" #include "TSystem.h" #include "TGLViewer.h" #include "TMath.h" #include "TEveViewer.h" #include "TEvePointSet.h" class GappedField : public TEveMagField { public: GappedField():TEveMagField(){} ~GappedField(){}; using TEveMagField::GetField; virtual TEveVector GetField(Float_t /*x*/, Float_t /*y*/, Float_t z) const { if (TMath::Abs(z) < 300) return TEveVector(0, 0, -4); if (TMath::Abs(z) < 600) return TEveVector(0, 0, 0); return TEveVector(0, 0, 4); } }; //______________________________________________________________________________ TEveTrack* make_track(TEveTrackPropagator* prop, Int_t sign) { // Make track with given propagator. // Add to math-marks to test fit. TEveRecTrack *rc = new TEveRecTrack(); rc->fV.Set(0.028558, -0.000918, 3.691919); rc->fP.Set(0.767095, -2.400006, -0.313103); rc->fSign = sign; TEveTrack* track = new TEveTrack(rc, prop); track->SetName(Form("Charge %d", sign)); // daughter 0 TEvePathMark* pm1 = new TEvePathMark(TEvePathMark::kDaughter); pm1->fV.Set(1.479084, -4.370661, 3.119761); track->AddPathMark(*pm1); // daughter 1 TEvePathMark* pm2 = new TEvePathMark(TEvePathMark::kDaughter); pm2->fV.Set(57.72345, -89.77011, -9.783746); track->AddPathMark(*pm2); return track; } void track(Int_t bCase = 3, Bool_t isRungeKutta = kTRUE) { #if defined (__CINT__) Error("track.C", "Must be run in compiled mode!"); return; #endif gSystem->IgnoreSignal(kSigSegmentationViolation, true); TEveManager::Create(); TEveTrackList *list = new TEveTrackList(); TEveTrackPropagator* prop = list->GetPropagator(); prop->SetFitDaughters(kFALSE); prop->SetMaxZ(1000); if (isRungeKutta) { prop->SetStepper(TEveTrackPropagator::kRungeKutta); list->SetName("RK Propagator"); } else { list->SetName("Heix Propagator"); } TEveTrack *track = 0; switch (bCase) { case 0: { // B = 0 no difference btween signed and charge particles prop->SetMagField(0.); list->SetElementName(Form("%s, zeroB", list->GetElementName())); track = make_track(prop, 1); break; } case 1: { // constant B field, const angle prop->SetMagFieldObj(new TEveMagFieldConst(0., 0., -3.8)); list->SetElementName(Form("%s, constB", list->GetElementName())); track = make_track(prop, 1); break; } case 2: { // variable B field, sign change at R = 200 cm prop->SetMagFieldObj(new TEveMagFieldDuo(200, -4.4, 2)); list->SetElementName(Form("%s, duoB", list->GetElementName())); track = make_track(prop, 1); break; } case 3: { // gapped field prop->SetMagFieldObj(new GappedField()); list->SetElementName(Form("%s, gappedB", list->GetElementName())); TEveRecTrack *rc = new TEveRecTrack(); rc->fV.Set(0.028558, -0.000918, 3.691919); rc->fP.Set(0.767095, -0.400006, 2.313103); rc->fSign = 1; track = new TEveTrack(rc, prop); TEvePointSet* marker = new TEvePointSet(2); marker->SetElementName("B field break points"); marker->SetPoint(0, 0., 0., 300.f); marker->SetPoint(1, 0., 0., 600.f); marker->SetMarkerColor(3); gEve->AddElement(marker); } }; if (isRungeKutta) list->SetLineColor(kMagenta); else list->SetLineColor(kCyan); track->SetLineColor(list->GetLineColor()); gEve->AddElement(track, list); gEve->AddElement(list); track->MakeTrack(); TEveViewer* v = gEve->GetDefaultViewer(); v->GetGLViewer()->SetGuideState(TGLUtil::kAxesOrigin, kTRUE, kFALSE, 0); gEve->Redraw3D(1); } track.C:1 track.C:2 track.C:3 track.C:4 track.C:5 track.C:6 track.C:7 track.C:8 track.C:9 track.C:10 track.C:11 track.C:12 track.C:13 track.C:14 track.C:15 track.C:16 track.C:17 track.C:18 track.C:19 track.C:20 track.C:21 track.C:22 track.C:23 track.C:24 track.C:25 track.C:26 track.C:27 track.C:28 track.C:29 track.C:30 track.C:31 track.C:32 track.C:33 track.C:34 track.C:35 track.C:36 track.C:37 track.C:38 track.C:39 track.C:40 track.C:41 track.C:42 track.C:43 track.C:44 track.C:45 track.C:46 track.C:47 track.C:48 track.C:49 track.C:50 track.C:51 track.C:52 track.C:53 track.C:54 track.C:55 track.C:56 track.C:57 track.C:58 track.C:59 track.C:60 track.C:61 track.C:62 track.C:63 track.C:64 track.C:65 track.C:66 track.C:67 track.C:68 track.C:69 track.C:70 track.C:71 track.C:72 track.C:73 track.C:74 track.C:75 track.C:76 track.C:77 track.C:78 track.C:79 track.C:80 track.C:81 track.C:82 track.C:83 track.C:84 track.C:85 track.C:86 track.C:87 track.C:88 track.C:89 track.C:90 track.C:91 track.C:92 track.C:93 track.C:94 track.C:95 track.C:96 track.C:97 track.C:98 track.C:99 track.C:100 track.C:101 track.C:102 track.C:103 track.C:104 track.C:105 track.C:106 track.C:107 track.C:108 track.C:109 track.C:110 track.C:111 track.C:112 track.C:113 track.C:114 track.C:115 track.C:116 track.C:117 track.C:118 track.C:119 track.C:120 track.C:121 track.C:122 track.C:123 track.C:124 track.C:125 track.C:126 track.C:127 track.C:128 track.C:129 track.C:130 track.C:131 track.C:132 track.C:133 track.C:134 track.C:135 track.C:136 track.C:137 track.C:138 track.C:139 track.C:140 track.C:141 track.C:142 track.C:143 track.C:144 track.C:145 track.C:146 track.C:147 track.C:148 track.C:149 |
|