+#if !defined(__CINT__) || defined(__MAKECINT__)
+#include <TGeoManager.h>
+#include <TGeoShape.h>
+#include <TGeoMatrix.h>
+#include <TStyle.h>
+#include <TEveRGBAPalette.h>
+#include <TEveGeoShape.h>
+#include <TEveStraightLineSet.h>
+#include <TEveManager.h>
+#include <TEveElement.h>
+
+#include <AliESDEvent.h>
+#include <AliESDZDC.h>
+#include <AliEveEventManager.h>
+#endif
+
TEveRGBAPalette *g_zdc_palette = 0;
+Float_t g_zdc_scale = 0.1;
+Float_t g_zdc_dist = 11695;
+Float_t g_zdc_cross = 20;
-TEveGeoShape* zdc_make_shape(const Text_t* name, Double_t signal,
- const Text_t* path)
+TEveGeoShape* zdc_make_shape(const Text_t* name, const Text_t* title_base,
+ Double_t signal, const Text_t* path)
{
if ( ! gGeoManager->cd(path))
{
UChar_t rgb[3];
g_zdc_palette->ColorFromValue(TMath::Nint(signal), rgb, kFALSE);
- TEveGeoShape *s = new TEveGeoShape(name);
+ TGeoShape *gs = (TGeoShape*) gGeoManager->GetCurrentVolume()->GetShape()->Clone();
+
+ TEveGeoShape *s = new TEveGeoShape(name, Form("%s %s, E=%.3f", title_base, name, signal));
s->SetPickable(kTRUE);
s->SetMainColorRGB(rgb[0], rgb[1], rgb[2]);
- s->SetShape(gGeoManager->GetCurrentVolume()->GetShape());
+ s->SetShape(gs);
s->RefMainTrans().SetFrom(*gGeoManager->GetCurrentMatrix());
// Scale z-dictance by 0.1
Double_t* t = s->RefMainTrans().ArrT();
- t[2] *= 0.1;
+ t[2] *= g_zdc_scale;
return s;
}
+TEveStraightLineSet*
+zdc_make_cross(const Text_t* name, const Text_t* title_base,
+ Float_t x, Float_t y, Float_t z, Float_t dx, Float_t dy, Float_t dz)
+{
+ TEveStraightLineSet* ls = new TEveStraightLineSet(name, Form("%s, x=%.3f, y=%.3f", title_base, x, y));
+ ls->SetMainColor(kYellow);
+ ls->SetLineWidth(2);
+ ls->RefMainTrans().SetPos(x, y, z);
+ ls->AddLine(dx, 0, 0, -dx, 0, 0);
+ ls->AddLine(0, dy, 0, 0, -dy, 0);
+ ls->AddLine(0, 0, dz, 0, 0, -dz);
+
+ return ls;
+}
+
// ???? There are 5 towers in ESD, 4 in geom.
// Not sure about assignment A/C <-> 1/2
gEve->AddElement(l);
TEveElementList *c = 0;
- TEveGeoShape *s = 0;
- Double_t *te = 0;
+ const Double_t *te = 0;
+ const Text_t *tb = 0;
// ZNC geometry ------------------------------------
- c = new TEveElementList("ZNC");
+ tb = "ZNC";
+ c = new TEveElementList(tb);
l->AddElement(c);
te = esd->GetZN1TowerEnergy();
- c->AddElement(zdc_make_shape("Tower 1", te[1],
+ c->AddElement(zdc_make_shape("Tower 1", tb, te[1],
"ALIC_1/ZDCC_1/ZNEU_1/ZNTX_1/ZN1_1"));
- c->AddElement(zdc_make_shape("Tower 2", te[2],
+ c->AddElement(zdc_make_shape("Tower 2", tb, te[2],
"ALIC_1/ZDCC_1/ZNEU_1/ZNTX_1/ZN1_2"));
- c->AddElement(zdc_make_shape("Tower 3", te[3],
+ c->AddElement(zdc_make_shape("Tower 3", tb, te[3],
"ALIC_1/ZDCC_1/ZNEU_1/ZNTX_2/ZN1_1"));
- c->AddElement(zdc_make_shape("Tower 4", te[4],
+ c->AddElement(zdc_make_shape("Tower 4", tb, te[4],
"ALIC_1/ZDCC_1/ZNEU_1/ZNTX_2/ZN1_2"));
// ZNA geometry
- c = new TEveElementList("ZNA");
+ tb = "ZNA";
+ c = new TEveElementList(tb);
l->AddElement(c);
te = esd->GetZN2TowerEnergy();
- c->AddElement(zdc_make_shape("Tower 1", te[1],
+ c->AddElement(zdc_make_shape("Tower 1", tb, te[1],
"ALIC_1/ZDCA_1/ZNEU_2/ZNTX_1/ZN1_1"));
- c->AddElement(zdc_make_shape("Tower 2", te[2],
+ c->AddElement(zdc_make_shape("Tower 2", tb, te[2],
"ALIC_1/ZDCA_1/ZNEU_2/ZNTX_1/ZN1_2"));
- c->AddElement(zdc_make_shape("Tower 3", te[3],
+ c->AddElement(zdc_make_shape("Tower 3", tb, te[3],
"ALIC_1/ZDCA_1/ZNEU_2/ZNTX_2/ZN1_1"));
- c->AddElement(zdc_make_shape("Tower 4", te[4],
+ c->AddElement(zdc_make_shape("Tower 4", tb, te[4],
"ALIC_1/ZDCA_1/ZNEU_2/ZNTX_2/ZN1_2"));
// ZPC geometry ------------------------------------
- c = new TEveElementList("ZPC");
+ tb = "ZPC";
+ c = new TEveElementList(tb);
l->AddElement(c);
te = esd->GetZP1TowerEnergy();
- c->AddElement(zdc_make_shape("Tower 1", te[1],
+ c->AddElement(zdc_make_shape("Tower 1", tb, te[1],
"ALIC_1/ZDCC_1/ZPRO_1/ZPTX_1/ZP1_1"));
- c->AddElement(zdc_make_shape("Tower 2", te[2],
+ c->AddElement(zdc_make_shape("Tower 2", tb, te[2],
"ALIC_1/ZDCC_1/ZPRO_1/ZPTX_2/ZP1_1"));
- c->AddElement(zdc_make_shape("Tower 3", te[3],
+ c->AddElement(zdc_make_shape("Tower 3", tb, te[3],
"ALIC_1/ZDCC_1/ZPRO_1/ZPTX_3/ZP1_1"));
- c->AddElement(zdc_make_shape("Tower 4", te[4],
+ c->AddElement(zdc_make_shape("Tower 4", tb, te[4],
"ALIC_1/ZDCC_1/ZPRO_1/ZPTX_4/ZP1_1"));
// ZPA geometry
- c = new TEveElementList("ZPA");
+ tb = "ZPA";
+ c = new TEveElementList(tb);
l->AddElement(c);
te = esd->GetZP2TowerEnergy();
- c->AddElement(zdc_make_shape("Tower 1", te[1],
+ c->AddElement(zdc_make_shape("Tower 1", tb, te[1],
"ALIC_1/ZDCA_1/ZPRO_2/ZPTX_1/ZP1_1"));
- c->AddElement(zdc_make_shape("Tower 2", te[2],
+ c->AddElement(zdc_make_shape("Tower 2", tb, te[2],
"ALIC_1/ZDCA_1/ZPRO_2/ZPTX_2/ZP1_1"));
- c->AddElement(zdc_make_shape("Tower 3", te[3],
+ c->AddElement(zdc_make_shape("Tower 3", tb, te[3],
"ALIC_1/ZDCA_1/ZPRO_2/ZPTX_3/ZP1_1"));
- c->AddElement(zdc_make_shape("Tower 4", te[4],
+ c->AddElement(zdc_make_shape("Tower 4", tb, te[4],
"ALIC_1/ZDCA_1/ZPRO_2/ZPTX_4/ZP1_1"));
+
+ // Centroids
+ /*
+ TEveStraightLineSet *ls = 0;
+
+ const Double32_t *cNA = esd->GetZNACentroid();
+ ls = zdc_make_cross("ZNA Centroid", "ZNA",
+ cNA[0], cNA[1], g_zdc_dist * g_zdc_scale,
+ g_zdc_cross, g_zdc_cross, g_zdc_cross);
+ l->AddElement(ls);
+
+ const Double32_t *cNC = esd->GetZNCCentroid();
+ ls = zdc_make_cross("ZNA Centroid", "ZNA",
+ cNC[0], cNC[1], -g_zdc_dist * g_zdc_scale,
+ g_zdc_cross, g_zdc_cross, g_zdc_cross);
+ l->AddElement(ls);
+ */
+
// End - refresh screen
gEve->Redraw3D();
}