Complex example showing ALICE VSD visualization.
No ALICE code is needed – the VSD file is exported from AliRoot into VSD format – see TEveVSDStructs.h and TEveVSD.h.
A simple geometry of 10KB, extracted from the full TGeo-geometry, is used to outline the central detectors of ALICE.
All files are access from the web by using the "CACHEREAD" option.
MultiView* gMultiView = 0;
class TVSDReader
{
public:
public:
TVSDReader(const char* file_name) :
fFile(0), fDirectory(0), fEvDirKeys(0),
fVSD(0),
fMaxEv(-1), fCurEv(-1),
fTrackList(0),
fITSClusters(0), fTPCClusters(0), fTRDClusters(0), fTOFClusters(0)
{
if (!fFile)
{
Error(
"VSD_Reader",
"Can not open file '%s' ... terminating.",
file_name);
}
while (lnk) {
{
}
}
if (fMaxEv == 0) {
Error(
"VSD_Reader",
"No events to show ... terminating.");
}
}
virtual ~TVSDReader()
{
DropEvent();
delete fVSD;
delete fEvDirKeys;
delete fFile;
}
void AttachEvent()
{
}
void DropEvent()
{
delete fDirectory;
fDirectory = 0;
}
void NextEvent()
{
GotoEvent(fCurEv + 1);
}
void PrevEvent()
{
GotoEvent(fCurEv - 1);
}
{
if (ev < 0 || ev >= fMaxEv)
{
Warning(
"GotoEvent",
"Invalid event id %d.", ev);
}
DropEvent();
fCurEv = ev;
AttachEvent();
LoadClusters(fITSClusters, "ITS", 0);
LoadClusters(fTPCClusters, "TPC", 1);
LoadClusters(fTRDClusters, "TRD", 2);
LoadClusters(fTOFClusters, "TOF", 3);
LoadEsdTracks();
gMultiView->DestroyEventRPhi();
gMultiView->ImportEventRPhi(top);
gMultiView->DestroyEventRhoZ();
gMultiView->ImportEventRhoZ(top);
}
{
} else {
}
ss.Select();
}
enum ESDTrackFlags
{
kITSin=0x0001,kITSout=0x0002,kITSrefit=0x0004,kITSpid=0x0008,
kTPCin=0x0010,kTPCout=0x0020,kTPCrefit=0x0040,kTPCpid=0x0080,
kTRDin=0x0100,kTRDout=0x0200,kTRDrefit=0x0400,kTRDpid=0x0800,
kTOFin=0x1000,kTOFout=0x2000,kTOFrefit=0x4000,kTOFpid=0x8000,
kHMPIDpid=0x20000,
kEMCALmatch=0x40000,
kTRDbackup=0x80000,
kTRDStop=0x20000000,
kESDpid=0x40000000,
kTIME=0x80000000
};
{
}
void LoadEsdTracks()
{
if (fTrackList == 0) {
} else {
}
}
}
};
TVSDReader* gVSDReader = 0;
void make_gui();
void alice_vsd(const char* vsd_file_name=
"http://mtadel.home.cern.ch/mtadel/root/AliVSD.root")
{
gVSDReader = new TVSDReader(vsd_file_name);
{
auto geom =
TFile::Open(
"http://mtadel.home.cern.ch/mtadel/root/alice_mini_geom.root",
"CACHEREAD");
if (!geom)
return;
geom->Close();
delete geom;
}
gMultiView = new MultiView;
gMultiView->SetDepth(-10);
gMultiView->ImportGeomRPhi(gentle_geom);
gMultiView->ImportGeomRhoZ(gentle_geom);
gMultiView->SetDepth(0);
make_gui();
gVSDReader->GotoEvent(0);
}
void make_gui()
{
frmMain->SetWindowName("XX GUI");
{
b->Connect(
"Clicked()",
"TVSDReader", gVSDReader,
"PrevEvent()");
b->Connect(
"Clicked()",
"TVSDReader", gVSDReader,
"NextEvent()");
}
frmMain->AddFrame(hf);
frmMain->MapSubwindows();
frmMain->Resize();
frmMain->MapWindow();
browser->StopEmbedding();
browser->SetTabTitle("Event Control", 0);
}
Multi-view (3d, rphi, rhoz) service class using EVE Window Manager.
#define ClassDef(name, id)
void Error(const char *location, const char *msgfmt,...)
void Warning(const char *location, const char *msgfmt,...)
R__EXTERN TEveManager * gEve
char * Form(const char *fmt,...)
R__EXTERN TSystem * gSystem
TList * GetListOfKeys() const override
Describe directory structure in memory.
virtual void AddElement(TEveElement *el)
Add el to the list of children.
void IncDenyDestroy()
Increases the deny-destroy count of the element.
virtual void DestroyElements()
Destroy all children of this element.
Base class for event management and navigation.
Wrapper for TGeoShape with absolute positioning and color attributes allowing display of extracted TG...
static TEveGeoShape * ImportShapeExtract(TEveGeoShapeExtract *gse, TEveElement *parent=0)
Import a shape extract 'gse' under element 'parent'.
TEveViewerList * GetViewers() const
void AddElement(TEveElement *element, TEveElement *parent=0)
Add an element.
void AddGlobalElement(TEveElement *element, TEveElement *parent=0)
Add a global element, i.e.
TGLViewer * GetDefaultGLViewer() const
Get TGLViewer of the default TEveViewer.
TEveBrowser * GetBrowser() const
static TEveManager * Create(Bool_t map_window=kTRUE, Option_t *opt="FIV")
If global TEveManager* gEve is not set initialize it.
TGListTreeItem * AddEvent(TEveEventManager *event)
Add a new event and make it the current event.
void Redraw3D(Bool_t resetCameras=kFALSE, Bool_t dropLogicals=kFALSE)
TEveEventManager * GetCurrentEvent() const
TEvePointSelector is a sub-class of TSelectorDraw for direct extraction of point-like data from a Tre...
TEvePointSet is a render-element holding a collection of 3D points with optional per-point TRef and a...
A list of tracks supporting change of common attributes and selection based on track parameters.
virtual void SetMarkerStyle(Style_t s)
Set marker style for the list and the elements.
virtual void SetMarkerColor(Color_t c)
Set marker color for the list and the elements.
void MakeTracks(Bool_t recurse=kTRUE)
Regenerate the visual representations of tracks.
virtual void SetMainColor(Color_t c)
Set main (line) color for the list and the elements.
TEveTrackPropagator * GetPropagator()
virtual void SetMarkerSize(Size_t s)
Set marker size for the list and the elements.
void SetMagField(Double_t bX, Double_t bY, Double_t bZ)
Set constant magnetic field and rebuild tracks.
Visual representation of a track.
void SetAttLineAttMarker(TEveTrackList *tl)
Set line and marker attributes from TEveTrackList.
virtual void SetStdTitle()
Set standard track title based on most data-member values.
Visualization Summary Data - a collection of trees holding standard event data in experiment independ...
static void DisableTObjectStreamersForVSDStruct()
Disable TObject streamers for those VSD structs that inherit from TObject directly.
virtual void SetBranchAddresses()
Set branche addresses of internal trees.
virtual void DeleteTrees()
Delete internal trees.
virtual void SetDirectory(TDirectory *dir)
Set directory in which the trees are (or will be) created.
virtual void LoadTrees()
Load internal trees from directory.
void SwitchColorSet()
Switch background color.
void DeleteAnnotations()
Delete annotations from all viewers.
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
static Bool_t SetCacheFileDir(ROOT::Internal::TStringView cacheDir, Bool_t operateDisconnected=kTRUE, Bool_t forceCacheread=kFALSE)
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
void Close(Option_t *option="") override
Close a file.
void SetStyle(Short_t st)
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...
Book space in a file, create I/O buffers, to fill them, (un)compress them.
virtual TObjLink * FirstLink() const
Int_t GetEntriesFast() const
TObject * At(Int_t idx) const
Wrapper around a TObject so it can be stored in a TList.
TObject * GetObject() const
virtual const char * GetName() const
Returns name of object.
Wrapper for PCRE library (Perl Compatible Regular Expressions).
virtual void SetName(const char *name)
Change (i.e.
virtual void StartEmbedding(Int_t pos=kRight, Int_t subpos=-1)
Start embedding external frame in the tab "pos" and tab element "subpos".
TGTab * GetTabRight() const
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
virtual const char * Getenv(const char *env)
Get environment variable.
virtual void Exit(int code, Bool_t mode=kTRUE)
Exit the application.
virtual Long64_t GetEntries() const
virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0)
Read all branches of entry and return total number of bytes read.
static constexpr double ps