Logo ROOT  
Reference Guide
httpgeom.C File Reference

Detailed Description

This program creates trivial geometry with several tracks and configure online monitoring of geometry via THttpServer Geometry regularly changed by the program and correspondent changes immediately seen in the browser.

#include "THttpServer.h"
#include "TGeoManager.h"
#include "TGeoMaterial.h"
#include "TGeoMedium.h"
#include "TGeoVolume.h"
#include "TGeoTrack.h"
#include "TRandom.h"
#include "TTimer.h"
#include "TPad.h"
THttpServer *serv = nullptr;
bool drawing = false;
int interval = 2000;
void create_geo()
{
if (gGeoManager) {
delete gGeoManager;
}
new TGeoManager("world", "the simplest geometry");
if (serv) {
serv->Register("/", gGeoManager);
// enable monitoring and
// specify item to draw when page is opened
// serv->SetItemField("/","_layout","grid2x2");
serv->SetItemField("/","_monitoring",Form("%d",interval));
serv->SetItemField("/","_drawitem","world");
serv->SetItemField("/","_drawopt","tracks");
}
auto rnd = gRandom;
TGeoMaterial *mat = new TGeoMaterial("Vacuum",0,0,0);
mat->SetTransparency(50);
TGeoMedium *med = new TGeoMedium("Vacuum",1,mat);
TGeoVolume *top = gGeoManager->MakeBox("Top",med, 10+5*rnd->Rndm(), 10+5*rnd->Rndm(), 10+5*rnd->Rndm());
top->SetFillColor(3);
TGeoVolume *in = gGeoManager->MakeBox("In",med, 2.,2.,2.);
in->SetFillColor(2);
TGeoCombiTrans *tr = new TGeoCombiTrans("tr");
double x = -8+16*rnd->Rndm();
double y = -8+16*rnd->Rndm();
double z = -8+16*rnd->Rndm();
tr->SetTranslation (x, y, z);
top->AddNode(in, 1, tr);
if (rnd->Rndm() < 0.5)
else
for (int j=0; j<50; j++)
{
Int_t track_index = gGeoManager->AddTrack(2,22);
auto track = gGeoManager->GetTrack(track_index);
if (rnd->Rndm() < 0.5)
track->SetLineColor(kRed);
else
track->SetLineColor(kBlue);
track->SetLineWidth(2);
track->AddPoint(x, y, z, 0);
track->AddPoint(-10 + 20*rnd->Rndm(), -10 + 20*rnd->Rndm(), -10 + 20*rnd->Rndm(), 0);
}
if (drawing) {
// add "showtop" option to display top volume in JSROOT
// gGeoManager->SetTopVisible();
top->Draw();
gPad->Modified();
gPad->Update();
}
}
void httpgeom()
{
drawing = false; // to enable canvas drawing
serv = new THttpServer("http:8090");
TTimer *timer = new TTimer("create_geo()", interval);
timer->TurnOn();
}
int Int_t
Definition: RtypesCore.h:43
@ kRed
Definition: Rtypes.h:64
@ kBlack
Definition: Rtypes.h:63
@ kGreen
Definition: Rtypes.h:64
@ kMagenta
Definition: Rtypes.h:64
@ kBlue
Definition: Rtypes.h:64
R__EXTERN TGeoManager * gGeoManager
Definition: TGeoManager.h:600
R__EXTERN TRandom * gRandom
Definition: TRandom.h:62
char * Form(const char *fmt,...)
#define gPad
Definition: TVirtualPad.h:287
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
Definition: TAttFill.h:37
virtual void SetLineColor(Color_t lcolor)
Set the line color.
Definition: TAttLine.h:40
Class describing rotation + translation.
Definition: TGeoMatrix.h:292
virtual void RegisterYourself()
Register the matrix in the current manager, which will become the owner.
void SetTranslation(const TGeoTranslation &tr)
copy the translation component
The manager class for any TGeo geometry.
Definition: TGeoManager.h:43
Int_t AddTrack(Int_t id, Int_t pdgcode, TObject *particle=0)
Add a track to the list of tracks.
TVirtualGeoTrack * GetTrack(Int_t index)
Definition: TGeoManager.h:396
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.
Definition: TGeoMaterial.h:31
void SetTransparency(Char_t transparency=0)
Definition: TGeoMaterial.h:135
Media are used to store properties related to tracking and which are useful only when using geometry ...
Definition: TGeoMedium.h:24
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
Definition: TGeoVolume.h:47
virtual void Draw(Option_t *option="")
draw top volume according to option
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual void AddNode(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=0, Option_t *option="")
Add a TGeoNode to the list of nodes.
Definition: TGeoVolume.cxx:931
Bool_t Register(const char *subfolder, TObject *obj)
Register object in subfolder.
Bool_t Unregister(TObject *obj)
Unregister object.
Bool_t SetItemField(const char *fullname, const char *name, const char *value)
Handles synchronous and a-synchronous timer events.
Definition: TTimer.h:51
virtual void TurnOn()
Add the timer to the system timer list.
Definition: TTimer.cxx:241
Double_t y[n]
Definition: legend1.C:17
Double_t x[n]
Definition: legend1.C:17
Author
Sergey Linev

Definition in file httpgeom.C.