Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
httpgeom.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_http
3/// This program creates trivial geometry with several tracks and
4/// configure online monitoring of geometry via THttpServer
5/// Geometry regularly changed by the program and correspondent changes immediately seen in the browser
6///
7/// \macro_code
8///
9/// \author Sergey Linev
10
11#include "THttpServer.h"
12#include "TGeoManager.h"
13#include "TGeoMaterial.h"
14#include "TGeoMedium.h"
15#include "TGeoVolume.h"
16#include "TGeoTrack.h"
17#include "TRandom.h"
18#include "TTimer.h"
19#include "TPad.h"
20
21THttpServer *serv = nullptr;
22bool drawing = false;
23int interval = 2000;
24
25void create_geo()
26{
27 if (gGeoManager) {
28 serv->Unregister(gGeoManager);
29 delete gGeoManager;
30 }
31
32 new TGeoManager("world", "the simplest geometry");
33
34 if (serv) {
35 serv->Register("/", gGeoManager);
36 // enable monitoring and
37 // specify item to draw when page is opened
38 // serv->SetItemField("/","_layout","grid2x2");
39 serv->SetItemField("/","_monitoring",Form("%d",interval));
40 serv->SetItemField("/","_drawitem","world");
41 serv->SetItemField("/","_drawopt","tracks");
42 }
43
44 auto rnd = gRandom;
45
46 TGeoMaterial *mat = new TGeoMaterial("Vacuum",0,0,0);
47 mat->SetTransparency(50);
48 TGeoMedium *med = new TGeoMedium("Vacuum",1,mat);
49
50 TGeoVolume *top = gGeoManager->MakeBox("Top",med, 10+5*rnd->Rndm(), 10+5*rnd->Rndm(), 10+5*rnd->Rndm());
52 top->SetFillColor(3);
53
54 TGeoVolume *in = gGeoManager->MakeBox("In",med, 2.,2.,2.);
55 in->SetFillColor(2);
56 TGeoCombiTrans *tr = new TGeoCombiTrans("tr");
57 double x = -8+16*rnd->Rndm();
58 double y = -8+16*rnd->Rndm();
59 double z = -8+16*rnd->Rndm();
60 tr->SetTranslation (x, y, z);
61 tr->RegisterYourself();
62 top->AddNode(in, 1, tr);
63
65
67 if (rnd->Rndm() < 0.5)
69 else
71
72 for (int j=0; j<50; j++)
73 {
76 if (rnd->Rndm() < 0.5)
77 track->SetLineColor(kRed);
78 else
79 track->SetLineColor(kBlue);
80 track->SetLineWidth(2);
81
82 track->AddPoint(x, y, z, 0);
83 track->AddPoint(-10 + 20*rnd->Rndm(), -10 + 20*rnd->Rndm(), -10 + 20*rnd->Rndm(), 0);
84 }
85
86 if (drawing) {
87 // add "showtop" option to display top volume in JSROOT
88 // gGeoManager->SetTopVisible();
89
90 top->Draw();
92 gPad->Modified();
93 gPad->Update();
94 }
95}
96
97
98void httpgeom()
99{
100 drawing = false; // to enable canvas drawing
101
102 serv = new THttpServer("http:8090");
103
104 TTimer *timer = new TTimer("create_geo()", interval);
105 timer->TurnOn();
106}
int Int_t
Definition RtypesCore.h:45
@ kRed
Definition Rtypes.h:66
@ kBlack
Definition Rtypes.h:65
@ kGreen
Definition Rtypes.h:66
@ kMagenta
Definition Rtypes.h:66
@ kBlue
Definition Rtypes.h:66
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
R__EXTERN TGeoManager * gGeoManager
R__EXTERN TRandom * gRandom
Definition TRandom.h:62
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
Definition TString.cxx:2489
#define gPad
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
Definition TAttFill.h:38
Class describing rotation + translation.
Definition TGeoMatrix.h:317
The manager class for any TGeo geometry.
Definition TGeoManager.h:44
Int_t AddTrack(Int_t id, Int_t pdgcode, TObject *particle=nullptr)
Add a track to the list of tracks.
TVirtualGeoTrack * GetTrack(Int_t index)
void CloseGeometry(Option_t *option="d")
Closing geometry implies checking the geometry validity, fixing shapes with negative parameters (run-...
TGeoVolume * MakeBox(const char *name, TGeoMedium *medium, Double_t dx, Double_t dy, Double_t dz)
Make in one step a volume pointing to a box shape with given medium.
void SetTopVolume(TGeoVolume *vol)
Set the top volume and corresponding node as starting point of the geometry.
void DrawTracks(Option_t *option="")
Draw tracks over the geometry, according to option.
Base class describing materials.
Media are used to store properties related to tracking and which are useful only when using geometry ...
Definition TGeoMedium.h:23
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
Definition TGeoVolume.h:43
virtual TGeoNode * AddNode(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=nullptr, Option_t *option="")
Add a TGeoNode to the list of nodes.
void Draw(Option_t *option="") override
draw top volume according to option
void SetLineColor(Color_t lcolor) override
Set the line color.
Online http server for arbitrary ROOT application.
Definition THttpServer.h:31
Handles synchronous and a-synchronous timer events.
Definition TTimer.h:51
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17