]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/alice-macros/acorde_raw.C
Make macro compilable
[u/mrichter/AliRoot.git] / EVE / alice-macros / acorde_raw.C
index 5d5683ed8e07d621237486c66dd4e088fbe815ac..679d0e72acc020a01e4f883ee797b8937dd9accc 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: geom_acorde.C 23412 2008-01-18 21:04:54Z mtadel $
+// $Id$
 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
 
 /**************************************************************************
@@ -6,14 +6,36 @@
  * 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);
@@ -29,47 +51,44 @@ void acorde_raw()
 
   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();
 }
 
@@ -84,8 +103,9 @@ TString acorde_module_path(Int_t module)
     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());
 }