-// $Id: geom_acorde.C 23412 2008-01-18 21:04:54Z mtadel $
+// $Id$
// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
/**************************************************************************
* See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
* full copyright notice. *
**************************************************************************/
+#if !defined(__CINT__) || defined(__MAKECINT__)
+#include <TTree.h>
+#include <TString.h>
+#include <TGeoManager.h>
+#include <TGeoPhysicalNode.h>
+#include <TGeoMatrix.h>
+#include <TEveManager.h>
+#include <TEveElement.h>
+#include <TEveTrans.h>
+#include <TEveGeoShape.h>
+
+#include <AliEveEventManager.h>
+#include <AliRawReader.h>
+#include <AliACORDERawStream.h>
+#endif
TString acorde_module_path(Int_t module);
+Color_t g_acorde_raw_color_on = kRed;
+Color_t g_acorde_raw_color_off = kBlue;
+
+UChar_t g_acorde_raw_transp_on = 30;
+UChar_t g_acorde_raw_transp_off = 60;
void acorde_raw()
{
- // AliEveEventManager::AssertGeometry();
- gEve->GetGeometry("geometry.root");
+
+ // From Mario RC
+
+ AliEveEventManager::AssertGeometry();
AliRawReader * reader = AliEveEventManager::AssertRawReader();
AliACORDERawStream * stream = new AliACORDERawStream(reader);
printf ("ACORDE event 0x%08x 0x%08x 0x%08x 0x%08x\n", dy[0], dy[1], dy[2], dy[3]);
- TEveElementList* acorde = new TEveElementList("ACORDE Raw");
+ if (acorde_module_path(0).IsNull())
+ {
+ Warning("acorde_raw", "Missing / wrong ACORDE module geometry.");
+ return;
+ }
- gEve->AddElement(acorde);
+ TEveElementList* acorde = new TEveElementList("ACORDE_Raw");
- Int_t shape_offset = TEveGeoShape::Class()->GetDataMemberOffset("fShape");
+ gEve->AddElement(acorde);
- for (Int_t module=0; module < 60; ++module)
+ for (Int_t module=0; module < 60; module++)
{
TString path = acorde_module_path(module);
- // printf("%2d - %s\n", i, path.Data());
if ( ! gGeoManager->cd(path))
{
- Warning("acorde_raw", "Module id=%d, path='%s' not found.\n", module, path.Data());
+ Warning("acorde_raw", "Module id=%d, path='%s' not found.", module, path.Data());
continue;
}
- TEveGeoShape* eg_shape = new TEveGeoShape(Form("Module %d", module));
-
- eg_shape->RefMainTrans().SetFrom(* gGeoManager->GetCurrentMatrix());
-
- // @@NEWROOT@@ Temporary hack.
- // Hack to set shape pointer, no interface available in TEveGeoShape.
- * (TGeoShape**) (((char*)eg_shape) + shape_offset) = gGeoManager->GetCurrentVolume()->GetShape();
-
// From Matevz:
- // Here check ctate and assign color, I do it partially for now.
+ // Here check state and assign color, I do it partially for now.
Int_t word_idx = module / 30;
Int_t bit_idx = module % 30;
- Bool_t val = (dy[word_idx] & (1 << bit_idx)) != 0;
- //printf("Module %2d: word_idx = %d, bit_idx = %2d => val = %d\n",
- // module, word_idx, bit_idx, val);
- if (val)
- eg_shape->SetMainColor((Color_t) 2);
- else
- eg_shape->SetMainColor((Color_t) 4);
- eg_shape->StampColorSelection();
+ Bool_t val = (dy[word_idx] & (1 << bit_idx)) != 0;
+
+ TEveGeoShape* eg_shape = new TEveGeoShape(TString::Format("Module %d", module),
+ TString::Format("Module %d, %s", module, val ? "Fired" : "Not fired"));
+ eg_shape->SetMainColor (val ? g_acorde_raw_color_on : g_acorde_raw_color_off);
+ eg_shape->SetMainTransparency(val ? g_acorde_raw_transp_on : g_acorde_raw_transp_off);
+ eg_shape->SetPickable(kTRUE);
+ eg_shape->RefMainTrans().SetFrom(*gGeoManager->GetCurrentMatrix());
+ eg_shape->SetShape((TGeoShape*) gGeoManager->GetCurrentVolume()->GetShape()->Clone());
acorde->AddElement(eg_shape);
}
+ delete stream;
gEve->Redraw3D();
}
return "";
}
- TGeoPNEntry* pne = gGeoManager->GetAlignableEntry(Form("ACORDE/Array%d", module + 1));
- if(!pne) return "missing_pne";
+ TGeoPNEntry* pne = gGeoManager->GetAlignableEntry(Form("ACORDE/Array%d", module));
+ if (!pne) return "";
+
+ return Form("%s/ACORDESCINTILLATORMODULE_6", pne->GetTitle());
- return Form("%s/ACORDE2_5", pne->GetTitle());
}