Logo ROOT  
Reference Guide
gtime2.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_graphs
3/// \notebook
4/// Example of TGraphTime showing how the class could be used to visualize
5/// a set of particles with their time stamp in a MonteCarlo program.
6///
7/// \macro_image
8/// \macro_code
9///
10/// \author Rene Brun
11
12#include "TRandom3.h"
13#include "TMath.h"
14#include "TMarker.h"
15#include "TPaveLabel.h"
16#include "TArrow.h"
17#include "TGraphTime.h"
18
19void gtime2(Int_t nsteps = 200, Int_t np=5000) {
20 if (np > 5000) np = 5000;
21 Int_t color[5000];
22 Double_t cosphi[5000], sinphi[5000], speed[5000];
23 TRandom3 r;
24 Double_t xmin = 0, xmax = 10, ymin = -10, ymax = 10;
25 TGraphTime *g = new TGraphTime(nsteps,xmin,ymin,xmax,ymax);
26 g->SetTitle("TGraphTime demo 2;X;Y");
27 Int_t i,s;
28 Double_t phi,fact = xmax/Double_t(nsteps);
29 for (i=0;i<np;i++) { //calculate some object parameters
30 speed[i] = r.Uniform(0.5,1);
31 phi = r.Gaus(0,TMath::Pi()/6.);
32 cosphi[i] = fact*speed[i]*TMath::Cos(phi);
33 sinphi[i] = fact*speed[i]*TMath::Sin(phi);
34 Double_t rc = r.Rndm();
35 color[i] = kRed;
36 if (rc > 0.3) color[i] = kBlue;
37 if (rc > 0.7) color[i] = kYellow;
38 }
39 for (s=0;s<nsteps;s++) { //fill the TGraphTime step by step
40 for (i=0;i<np;i++) {
41 Double_t xx = s*cosphi[i];
42 if (xx < xmin) continue;
43 Double_t yy = s*sinphi[i];
44 TMarker *m = new TMarker(xx,yy,25);
45 m->SetMarkerColor(color[i]);
46 m->SetMarkerSize(1.5 -s/(speed[i]*nsteps));
47 g->Add(m,s);
48 }
49 g->Add(new TPaveLabel(.70,.92,.98,.99,Form("shower at %5.3f nsec",3.*s/nsteps),"brNDC"),s);
50 }
51 g->Draw();
52}
53
54
55
ROOT::R::TRInterface & r
Definition: Object.C:4
#define g(i)
Definition: RSha256.hxx:105
int Int_t
Definition: RtypesCore.h:43
double Double_t
Definition: RtypesCore.h:57
@ kRed
Definition: Rtypes.h:64
@ kBlue
Definition: Rtypes.h:64
@ kYellow
Definition: Rtypes.h:64
float xmin
Definition: THbookFile.cxx:93
float ymin
Definition: THbookFile.cxx:93
float xmax
Definition: THbookFile.cxx:93
float ymax
Definition: THbookFile.cxx:93
char * Form(const char *fmt,...)
TGraphTime is used to draw a set of objects evolving with nsteps in time between tmin and tmax.
Definition: TGraphTime.h:29
Manages Markers.
Definition: TMarker.h:23
A Pave (see TPave) with a text centered in the Pave.
Definition: TPaveLabel.h:20
Random number generator class based on M.
Definition: TRandom3.h:27
static constexpr double s
Double_t Cos(Double_t)
Definition: TMath.h:631
constexpr Double_t Pi()
Definition: TMath.h:38
Double_t Sin(Double_t)
Definition: TMath.h:627
auto * m
Definition: textangle.C:8