Logo ROOT   6.12/07
Reference Guide
alice_esd.C
Go to the documentation of this file.
1 /// \file
2 /// \ingroup tutorial_eve
3 /// Complex example showing ALICE ESD track visualization.
4 ///
5 /// alice_esd.C - a simple event-display for ALICE ESD tracks and clusters
6 ///
7 ///
8 /// Only standard ROOT is used to process the ALICE ESD files.
9 ///
10 /// No ALICE code is needed, only four simple coordinate-transformation
11 /// functions declared in this macro.
12 ///
13 /// A simple geometry of 10KB, extracted from the full TGeo-geometry, is
14 /// used to outline the central detectors of ALICE.
15 ///
16 /// All files are access from the web by using the "CACHEREAD" option.
17 ///
18 ///
19 /// ### Automatic building of ALICE ESD class declarations and dictionaries.
20 ///
21 /// ALICE ESD is a TTree containing tracks and other event-related
22 /// information with one entry per event. All these classes are part of
23 /// the AliROOT offline framework and are not available to standard
24 /// ROOT.
25 ///
26 /// To be able to access the event data in a natural way, by using
27 /// data-members of classes and object containers, the header files and
28 /// class dictionaries are automatically generated from the
29 /// TStreamerInfo classes stored in the ESD file by using the
30 /// TFile::MakeProject() function. The header files and a shared library
31 /// is created in the aliesd/ directory and can be loaded dynamically
32 /// into the ROOT session.
33 ///
34 /// See the run_alice_esd.C macro.
35 ///
36 ///
37 /// ### Creation of simple GUI for event navigation.
38 ///
39 /// Most common use of the event-display is to browse through a
40 /// collection of events. Thus a simple GUI allowing this is created in
41 /// the function make_gui().
42 ///
43 /// Eve uses the configurable ROOT-browser as its main window and so we
44 /// create an extra tab in the left working area of the browser and
45 /// provide backward/forward buttons.
46 ///
47 ///
48 /// ### Event-navigation functions.
49 ///
50 /// As this is a simple macro, we store the information about the
51 /// current event in the global variable 'Int_t esd_event_id'. The
52 /// functions for event-navigation simply modify this variable and call
53 /// the load_event() function which does the following:
54 /// 1. drop the old visualization objects;
55 /// 2. retrieve given event from the ESD tree;
56 /// 3. call alice_esd_read() function to create visualization objects
57 /// for the new event.
58 ///
59 ///
60 /// ### Reading of ALICE data and creation of visualization objects.
61 ///
62 /// This is performed in alice_esd_read() function, with the following
63 /// steps:
64 /// 1. create the track container object - TEveTrackList;
65 /// 2. iterate over the ESD tracks, create TEveTrack objects and append
66 /// them to the container;
67 /// 3. instruct the container to extrapolate the tracks and set their
68 /// visual attributes.
69 ///
70 /// \image html eve_alice_esd.png
71 /// \macro_code
72 ///
73 /// \author Matevz Tadel
74 
75 #ifndef __RUN_ALICE_ESD__
76 
77 void alice_esd()
78 {
79  TString dir = gSystem->UnixPathName(__FILE__);
80  dir.ReplaceAll("alice_esd.C","");
81  dir.ReplaceAll("/./","/");
82  gROOT->LoadMacro(dir +"MultiView.C+");
83  const char* esd_file_name = "http://root.cern.ch/files/alice_ESDs.root";
85  TString lib(Form("aliesd/aliesd.%s", gSystem->GetSoExt()));
86 
88  TFile* f = TFile::Open(esd_file_name, "CACHEREAD");
89  if (f == 0) return;
90  TTree *tree = (TTree*) f->Get("esdTree");
91  tree->SetBranchStatus ("ESDfriend*", 1);
92  f->MakeProject("aliesd", "*", "++");
93  f->Close();
94  delete f;
95  }
96  gSystem->Load(lib);
97  gROOT->ProcessLine("#define __RUN_ALICE_ESD__ 1");
98  gROOT->ProcessLine("#include \"alice_esd.C\"");
99  gROOT->ProcessLine("run_alice_esd()");
100  gROOT->ProcessLine("#undef __RUN_ALICE_ESD__");
101 }
102 
103 #else
104 
105 #include "alice_esd_html_summary.C"
106 
107 // Forward declarations.
108 
109 class AliESDEvent;
110 class AliESDfriend;
111 class AliESDtrack;
112 class AliExternalTrackParam;
113 
114 void make_gui();
115 void load_event();
116 
117 void alice_esd_read();
118 TEveTrack* esd_make_track(TEveTrackPropagator* trkProp, Int_t index,
119  AliESDtrack* at,
120  AliExternalTrackParam* tp=0);
121 Bool_t trackIsOn(AliESDtrack* t, Int_t mask);
122 void trackGetPos(AliExternalTrackParam* tp, Double_t r[3]);
123 void trackGetMomentum(AliExternalTrackParam* tp, Double_t p[3]);
124 Double_t trackGetP(AliExternalTrackParam* tp);
125 
126 
127 // Configuration and global variables.
128 
129 const char* esd_file_name = "http://root.cern.ch/files/alice_ESDs.root";
130 // Temporarily disable reading of ESD friend.
131 // There seems to be no way to get it working without AliRoot.
132 // const char* esd_friends_file_name =
133 // "http://root.cern.ch/files/alice_ESDfriends.root";
134 const char* esd_friends_file_name = 0;
135 
136 const char* esd_geom_file_name =
137  "http://root.cern.ch/files/alice_ESDgeometry.root";
138 
139 // For testing
140 // const char* esd_file_name = "AliESDs.root";
141 // const char* esd_friends_file_name = "AliESDfriends.root";
142 
143 TFile *esd_file = 0;
144 TFile *esd_friends_file = 0;
145 
146 TTree *esd_tree = 0;
147 
148 AliESDEvent *esd = 0;
149 TList *esd_objs = 0;
150 AliESDfriend *esd_friend = 0;
151 
152 Int_t esd_event_id = 0; // Current event id.
153 
154 TEveTrackList *gTrackList = 0;
155 
156 TEveGeoShape *gGeomGentle = 0;
157 
158 // Implemented in MultiView.C
159 class MultiView;
160 MultiView* gMultiView = 0;
161 
162 /******************************************************************************/
163 // Initialization and steering functions
164 /******************************************************************************/
165 
166 //______________________________________________________________________________
167 void run_alice_esd()
168 {
169  // Main function, initializes the application.
170  //
171  // 1. Load the auto-generated library holding ESD classes and
172  // ESD dictionaries.
173  // 2. Open ESD data-files.
174  // 3. Load cartoon geometry.
175  // 4. Spawn simple GUI.
176  // 5. Load first event.
177 
178  const TString weh("alice_esd()");
179 
181 
182  printf("*** Opening ESD ***\n");
183  esd_file = TFile::Open(esd_file_name, "CACHEREAD");
184  if (!esd_file)
185  return;
186 
187  esd_tree = (TTree*) esd_file->Get("esdTree");
188  esd = (AliESDEvent*) esd_tree->GetUserInfo()->FindObject("AliESDEvent");
189  esd_objs = esd->fESDObjects;
190 
191  if (esd_friends_file_name != 0)
192  {
193  printf("*** Opening ESD-friends ***\n");
194  esd_friends_file = TFile::Open(esd_friends_file_name, "CACHEREAD");
195  if (!esd_friends_file)
196  return;
197 
198  esd_tree->SetBranchStatus ("ESDfriend*", 1);
199  }
200 
201  // Set the branch addresses.
202  {
203  TIter next(esd_objs);
204  TObject *el;
205  while ((el = (TNamed*)next()))
206  {
207  TString bname(el->GetName());
208  if (bname == "AliESDfriend")
209  {
210  // AliESDfriend needs special treatment.
211  TBranch *br = esd_tree->GetBranch("ESDfriend.");
212  br->SetAddress(esd_objs->GetObjectRef(el));
213  }
214  else
215  {
216  TBranch *br = esd_tree->GetBranch(bname);
217  if (br)
218  {
219  br->SetAddress(esd_objs->GetObjectRef(el));
220  }
221  else
222  {
223  br = esd_tree->GetBranch(bname + ".");
224  if (br)
225  {
226  br->SetAddress(esd_objs->GetObjectRef(el));
227  }
228  else
229  {
230  Warning("AliESDEvent::ReadFromTree() "
231  "No Branch found with Name '%s' or '%s.'.",
232  bname.Data(),bname.Data());
233  }
234  }
235  }
236  }
237  }
238 
239 
241 
242  { // Simple geometry
243  TFile* geom = TFile::Open(esd_geom_file_name, "CACHEREAD");
244  if (!geom)
245  return;
246  TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) geom->Get("Gentle");
247  gGeomGentle = TEveGeoShape::ImportShapeExtract(gse, 0);
248  geom->Close();
249  delete geom;
250  gEve->AddGlobalElement(gGeomGentle);
251  }
252 
253 
254  // Standard multi-view
255  //=====================
256 
257  gMultiView = new MultiView;
258 
259  gMultiView->ImportGeomRPhi(gGeomGentle);
260  gMultiView->ImportGeomRhoZ(gGeomGentle);
261 
262 
263  // HTML summary view
264  //===================
265 
266  fgHtmlSummary = new HtmlSummary("Alice Event Display Summary Table");
268  fgHtml = new TGHtml(0, 100, 100);
269  TEveWindowFrame *wf = slot->MakeFrame(fgHtml);
270  fgHtml->MapSubwindows();
271  wf->SetElementName("Summary");
272 
273 
274  // Final stuff
275  //=============
276 
277  gEve->GetBrowser()->GetTabRight()->SetTab(1);
278 
279  make_gui();
280 
281  load_event();
282 
283  gEve->Redraw3D(kTRUE); // Reset camera after the first event has been shown.
284 }
285 
286 //______________________________________________________________________________
287 void load_event()
288 {
289  // Load event specified in global esd_event_id.
290  // The contents of previous event are removed.
291 
292  printf("Loading event %d.\n", esd_event_id);
293 
295 
296  if (gTrackList)
297  gTrackList->DestroyElements();
298 
299  esd_tree->GetEntry(esd_event_id);
300  // esd_tree->Show();
301 
302  alice_esd_read();
303 
304  TEveElement* top = gEve->GetCurrentEvent();
305 
306  gMultiView->DestroyEventRPhi();
307  gMultiView->ImportEventRPhi(top);
308 
309  gMultiView->DestroyEventRhoZ();
310  gMultiView->ImportEventRhoZ(top);
311 
312  update_html_summary();
313 
315 }
316 
317 
318 /******************************************************************************/
319 // GUI
320 /******************************************************************************/
321 
322 //______________________________________________________________________________
323 //
324 // EvNavHandler class is needed to connect GUI signals.
325 
326 class EvNavHandler
327 {
328 public:
329  void Fwd()
330  {
331  if (esd_event_id < esd_tree->GetEntries() - 1) {
332  ++esd_event_id;
333  load_event();
334  } else {
335  printf("Already at last event.\n");
336  }
337  }
338  void Bck()
339  {
340  if (esd_event_id > 0) {
341  --esd_event_id;
342  load_event();
343  } else {
344  printf("Already at first event.\n");
345  }
346  }
347 };
348 
349 //______________________________________________________________________________
350 void make_gui()
351 {
352  // Create minimal GUI for event navigation.
353 
354  TEveBrowser* browser = gEve->GetBrowser();
356 
357  TGMainFrame* frmMain = new TGMainFrame(gClient->GetRoot(), 1000, 600);
358  frmMain->SetWindowName("XX GUI");
359  frmMain->SetCleanup(kDeepCleanup);
360 
361  TGHorizontalFrame* hf = new TGHorizontalFrame(frmMain);
362  {
363 
364  TString icondir( Form("%s/icons/", gSystem->Getenv("ROOTSYS")) );
365  TGPictureButton* b = 0;
366  EvNavHandler *fh = new EvNavHandler;
367 
368  b = new TGPictureButton(hf, gClient->GetPicture(icondir+"GoBack.gif"));
369  hf->AddFrame(b);
370  b->Connect("Clicked()", "EvNavHandler", fh, "Bck()");
371 
372  b = new TGPictureButton(hf, gClient->GetPicture(icondir+"GoForward.gif"));
373  hf->AddFrame(b);
374  b->Connect("Clicked()", "EvNavHandler", fh, "Fwd()");
375  }
376  frmMain->AddFrame(hf);
377 
378  frmMain->MapSubwindows();
379  frmMain->Resize();
380  frmMain->MapWindow();
381 
382  browser->StopEmbedding();
383  browser->SetTabTitle("Event Control", 0);
384 }
385 
386 
387 /******************************************************************************/
388 // Code for reading AliESD and creating visualization objects
389 /******************************************************************************/
390 
391 enum ESDTrackFlags {
392  kITSin=0x0001,kITSout=0x0002,kITSrefit=0x0004,kITSpid=0x0008,
393  kTPCin=0x0010,kTPCout=0x0020,kTPCrefit=0x0040,kTPCpid=0x0080,
394  kTRDin=0x0100,kTRDout=0x0200,kTRDrefit=0x0400,kTRDpid=0x0800,
395  kTOFin=0x1000,kTOFout=0x2000,kTOFrefit=0x4000,kTOFpid=0x8000,
396  kHMPIDpid=0x20000,
397  kEMCALmatch=0x40000,
398  kTRDbackup=0x80000,
399  kTRDStop=0x20000000,
400  kESDpid=0x40000000,
401  kTIME=0x80000000
402 };
403 
404 //______________________________________________________________________________
405 void alice_esd_read()
406 {
407  // Read tracks and associated clusters from current event.
408 
409  AliESDRun *esdrun = (AliESDRun*) esd_objs->FindObject("AliESDRun");
410  TClonesArray *tracks = (TClonesArray*) esd_objs->FindObject("Tracks");
411 
412  // This needs further investigation. Clusters not shown.
413  // esd_friend = (AliESDfriend*) esd_objs->FindObject("AliESDfriend");
414  // printf("Friend %p, n_tracks:%d\n",
415  // esd_friend,
416  // esd_friend->fTracks.GetEntries());
417 
418  if (gTrackList == 0)
419  {
420  gTrackList = new TEveTrackList("ESD Tracks");
421  gTrackList->SetMainColor(6);
422  gTrackList->SetMarkerColor(kYellow);
423  gTrackList->SetMarkerStyle(4);
424  gTrackList->SetMarkerSize(0.5);
425 
426  gEve->AddElement(gTrackList);
427  }
428 
429  TEveTrackPropagator* trkProp = gTrackList->GetPropagator();
430  trkProp->SetMagField( 0.1 * esdrun->fMagneticField ); // kGaus to Tesla
431 
432  for (Int_t n=0; n<tracks->GetEntriesFast(); ++n)
433  {
434  AliESDtrack* at = (AliESDtrack*) tracks->At(n);
435 
436  // If ITS refit failed, take track parameters at inner TPC radius.
437  AliExternalTrackParam* tp = at;
438  if (! trackIsOn(at, kITSrefit)) {
439  tp = at->fIp;
440  }
441 
442  TEveTrack* track = esd_make_track(trkProp, n, at, tp);
443  track->SetAttLineAttMarker(gTrackList);
444  gTrackList->AddElement(track);
445 
446  // This needs further investigation. Clusters not shown.
447  // if (frnd)
448  // {
449  // AliESDfriendTrack* ft = (AliESDfriendTrack*) frnd->fTracks->At(n);
450  // printf("%d friend = %p\n", ft);
451  // }
452  }
453 
454  gTrackList->MakeTracks();
455 }
456 
457 //______________________________________________________________________________
458 TEveTrack* esd_make_track(TEveTrackPropagator* trkProp,
459  Int_t index,
460  AliESDtrack* at,
461  AliExternalTrackParam* tp)
462 {
463  // Helper function creating TEveTrack from AliESDtrack.
464  //
465  // Optionally specific track-parameters (e.g. at TPC entry point)
466  // can be specified via the tp argument.
467 
468  Double_t pbuf[3], vbuf[3];
469  TEveRecTrack rt;
470 
471  if (tp == 0) tp = at;
472 
473  rt.fLabel = at->fLabel;
474  rt.fIndex = index;
475  rt.fStatus = (Int_t) at->fFlags;
476  rt.fSign = (tp->fP[4] > 0) ? 1 : -1;
477 
478  trackGetPos(tp, vbuf); rt.fV.Set(vbuf);
479  trackGetMomentum(tp, pbuf); rt.fP.Set(pbuf);
480 
481  Double_t ep = trackGetP(at);
482  Double_t mc = 0.138; // at->GetMass(); - Complicated function, requiring PID.
483 
484  rt.fBeta = ep/TMath::Sqrt(ep*ep + mc*mc);
485 
486  TEveTrack* track = new TEveTrack(&rt, trkProp);
487  track->SetName(Form("TEveTrack %d", rt.fIndex));
488  track->SetStdTitle();
489 
490  return track;
491 }
492 
493 //______________________________________________________________________________
494 Bool_t trackIsOn(AliESDtrack* t, Int_t mask)
495 {
496  // Check is track-flag specified by mask are set.
497 
498  return (t->fFlags & mask) > 0;
499 }
500 
501 //______________________________________________________________________________
502 void trackGetPos(AliExternalTrackParam* tp, Double_t r[3])
503 {
504  // Get global position of starting point of tp.
505 
506  r[0] = tp->fX; r[1] = tp->fP[0]; r[2] = tp->fP[1];
507 
508  Double_t cs=TMath::Cos(tp->fAlpha), sn=TMath::Sin(tp->fAlpha), x=r[0];
509  r[0] = x*cs - r[1]*sn; r[1] = x*sn + r[1]*cs;
510 }
511 
512 //______________________________________________________________________________
513 void trackGetMomentum(AliExternalTrackParam* tp, Double_t p[3])
514 {
515  // Return global momentum vector of starting point of tp.
516 
517  p[0] = tp->fP[4]; p[1] = tp->fP[2]; p[2] = tp->fP[3];
518 
519  Double_t pt=1./TMath::Abs(p[0]);
520  Double_t cs=TMath::Cos(tp->fAlpha), sn=TMath::Sin(tp->fAlpha);
521  Double_t r=TMath::Sqrt(1 - p[1]*p[1]);
522  p[0]=pt*(r*cs - p[1]*sn); p[1]=pt*(p[1]*cs + r*sn); p[2]=pt*p[2];
523 }
524 
525 //______________________________________________________________________________
526 Double_t trackGetP(AliExternalTrackParam* tp)
527 {
528  // Return magnitude of momentum of tp.
529 
530  return TMath::Sqrt(1.+ tp->fP[3]*tp->fP[3])/TMath::Abs(tp->fP[4]);
531 }
532 
533 #endif
534 
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
Definition: TSystem.cxx:1276
virtual void Resize(UInt_t w=0, UInt_t h=0)
Resize the frame.
Definition: TGFrame.cxx:587
virtual void StartEmbedding(Int_t pos=kRight, Int_t subpos=-1)
Start embedding external frame in the tab "pos" and tab element "subpos".
virtual void SetAddress(void *add)
Set address of this branch.
Definition: TBranch.cxx:2240
Globally positioned TGeoShape with rendering attributes and an optional list of daughter shape-extrac...
virtual void SetBranchStatus(const char *bname, Bool_t status=1, UInt_t *found=0)
Set branch status to Process or DoNotProcess.
Definition: TTree.cxx:8044
static TEveWindowSlot * CreateWindowInTab(TGTab *tab, TEveWindow *eve_parent=0)
Create a new tab in a given tab-widget and populate it with a default window-slot.
void Set(const Float_t *v)
Definition: TEveVector.h:78
virtual void SetName(const char *name)
Change (i.e.
void SetWindowName(const char *name=0)
Set window name. This is typically done via the window manager.
Definition: TGFrame.cxx:1746
TEveVectorD fP
Definition: TEveTrack.h:51
TEveBrowser * GetBrowser() const
Definition: TEveManager.h:137
TString & ReplaceAll(const TString &s1, const TString &s2)
Definition: TString.h:638
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format...
Definition: TFile.h:46
void AddGlobalElement(TEveElement *element, TEveElement *parent=0)
Add a global element, i.e.
static Bool_t SetCacheFileDir(ROOT::Internal::TStringView cacheDir, Bool_t operateDisconnected=kTRUE, Bool_t forceCacheread=kFALSE)
Definition: TFile.h:303
virtual TObject * Get(const char *namecycle)
Return pointer to object identified by namecycle.
#define gROOT
Definition: TROOT.h:402
Specialization of TRootBrowser for Eve.
Definition: TEveBrowser.h:129
virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0)
Read all branches of entry and return total number of bytes read.
Definition: TTree.cxx:5330
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library.
Definition: TSystem.cxx:1829
Basic string class.
Definition: TString.h:125
#define gClient
Definition: TGClient.h:166
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
virtual const char * GetSoExt() const
Get the shared library extension.
Definition: TSystem.cxx:3890
void Redraw3D(Bool_t resetCameras=kFALSE, Bool_t dropLogicals=kFALSE)
Definition: TEveManager.h:168
virtual void SetMarkerColor(Color_t c)
Set marker color for the list and the elements.
Definition: TEveTrack.cxx:933
Definition: Rtypes.h:59
TObject * At(Int_t idx) const
Definition: TObjArray.h:165
Html table and event summary for alice_esd.C.
Short_t Abs(Short_t d)
Definition: TMathBase.h:108
virtual TObject * FindObject(const char *name) const
Delete a TObjLink object.
Definition: TList.cxx:574
virtual const char * UnixPathName(const char *unixpathname)
Convert from a Unix pathname to a local pathname.
Definition: TSystem.cxx:1044
Definition: TGHtml.h:872
void AddElement(TEveElement *element, TEveElement *parent=0)
Add an element.
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=1, Int_t netopt=0)
Create / open a file.
Definition: TFile.cxx:3950
Double_t x[n]
Definition: legend1.C:17
virtual void SetMarkerStyle(Style_t s)
Set marker style for the list and the elements.
Definition: TEveTrack.cxx:901
virtual void MakeProject(const char *dirname, const char *classes="*", Option_t *option="new")
Generate source code necessary to access the objects stored in the file.
Definition: TFile.cxx:2600
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
A list of tracks supporting change of common attributes and selection based on track parameters...
Definition: TEveTrack.h:137
virtual const char * Getenv(const char *env)
Get environment variable.
Definition: TSystem.cxx:1638
virtual void SetMainColor(Color_t c)
Set main (line) color for the list and the elements.
Definition: TEveTrack.cxx:805
TEveViewerList * GetViewers() const
Definition: TEveManager.h:145
static TEveManager * Create(Bool_t map_window=kTRUE, Option_t *opt="FIV")
If global TEveManager* gEve is not set initialize it.
TEveVectorT< TT > fV
TEveVectorT< TT > fP
virtual void DestroyElements()
Destroy all children of this element.
virtual void SetElementName(const char *name)
Virtual function for setting of name of an element.
Definition: TEveElement.h:484
virtual TList * GetUserInfo()
Return a pointer to the list containing user objects associated to this tree.
Definition: TTree.cxx:6023
A doubly linked list.
Definition: TList.h:44
virtual TBranch * GetBranch(const char *name)
Return pointer to the branch with the given name in this tree or its friends.
Definition: TTree.cxx:4985
Bool_t Connect(const char *signal, const char *receiver_class, void *receiver, const char *slot)
Non-static method is used to connect from the signal of this object to the receiver slot...
Definition: TQObject.cxx:867
TPaveText * pt
ROOT::R::TRInterface & r
Definition: Object.C:4
R__EXTERN TSystem * gSystem
Definition: TSystem.h:540
void SetTabTitle(const char *title, Int_t pos=kRight, Int_t subpos=-1)
Set text "title" of Tab "subpos" in TGTab "pos".
R__EXTERN TEveManager * gEve
Definition: TEveManager.h:243
virtual Bool_t SetTab(Int_t tabIndex, Bool_t emit=kTRUE)
Brings the composite frame with the index tabIndex to the front and generate the following event if t...
Definition: TGTab.cxx:507
Int_t GetEntriesFast() const
Definition: TObjArray.h:64
char * Form(const char *fmt,...)
TEveTrackPropagator * GetPropagator()
Definition: TEveTrack.h:175
virtual void AddElement(TEveElement *el)
Add el to the list of children.
Holding structure for a number of track rendering parameters.
Visual representation of a track.
Definition: TEveTrack.h:32
void Warning(const char *location, const char *msgfmt,...)
TGTab * GetTabRight() const
Definition: TRootBrowser.h:141
Double_t Cos(Double_t)
Definition: TMath.h:550
void DeleteAnnotations()
Delete annotations from all viewers.
Definition: TEveViewer.cxx:475
const Bool_t kFALSE
Definition: RtypesCore.h:88
double Double_t
Definition: RtypesCore.h:55
virtual void SetCleanup(Int_t mode=kLocalCleanup)
Turn on automatic cleanup of child frames in dtor.
Definition: TGFrame.cxx:1054
virtual void SetMarkerSize(Size_t s)
Set marker size for the list and the elements.
Definition: TEveTrack.cxx:965
virtual void StopEmbedding(const char *name=0)
Definition: TRootBrowser.h:152
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=0)
Add frame to the composite frame using the specified layout hints.
Definition: TGFrame.cxx:1099
virtual void MapSubwindows()
Map all sub windows that are part of the composite frame.
Definition: TGFrame.cxx:1146
void SetMagField(Double_t bX, Double_t bY, Double_t bZ)
Set constant magnetic field and rebuild tracks.
Mother of all ROOT objects.
Definition: TObject.h:37
An array of clone (identical) objects.
Definition: TClonesArray.h:32
virtual void MapWindow()
Definition: TGFrame.h:251
TEveEventManager * GetCurrentEvent() const
Definition: TEveManager.h:149
Wrapper for TGeoShape with absolute positioning and color attributes allowing display of extracted TG...
Definition: TEveGeoShape.h:23
Double_t Sin(Double_t)
Definition: TMath.h:547
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
Definition: TRolke.cxx:630
void MakeTracks(Bool_t recurse=kTRUE)
Regenerate the visual representations of tracks.
Definition: TEveTrack.cxx:639
virtual void SetStdTitle()
Set standard track title based on most data-member values.
Definition: TEveTrack.cxx:268
Definition: tree.py:1
A TTree object has a header with a name and a title.
Definition: TTree.h:70
void SetAttLineAttMarker(TEveTrackList *tl)
Set line and marker attributes from TEveTrackList.
Definition: TEveTrack.cxx:322
Double_t Sqrt(Double_t x)
Definition: TMath.h:590
virtual const char * GetName() const
Returns name of object.
Definition: TObject.cxx:357
A TTree is a list of TBranches.
Definition: TBranch.h:59
static TEveGeoShape * ImportShapeExtract(TEveGeoShapeExtract *gse, TEveElement *parent=0)
Import a shape extract &#39;gse&#39; under element &#39;parent&#39;.
const Bool_t kTRUE
Definition: RtypesCore.h:87
Base class for TEveUtil visualization elements, providing hierarchy management, rendering control and...
Definition: TEveElement.h:33
virtual TObject ** GetObjectRef(const TObject *obj) const
Return address of pointer to obj.
Definition: TList.cxx:667
const Int_t n
Definition: legend1.C:16
Encapsulates TGFrame into an eve-window.
Definition: TEveWindow.h:335
virtual void Close(Option_t *option="")
Close a file.
Definition: TFile.cxx:916