]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - EVE/alice-macros/acorde_raw.C
Removing obsolete macros which used the AliTPCtracker
[u/mrichter/AliRoot.git] / EVE / alice-macros / acorde_raw.C
... / ...
CommitLineData
1// $Id$
2// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3
4/**************************************************************************
5 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
7 * full copyright notice. *
8 **************************************************************************/
9#if !defined(__CINT__) || defined(__MAKECINT__)
10#include <TTree.h>
11#include <TString.h>
12#include <TGeoManager.h>
13#include <TGeoPhysicalNode.h>
14#include <TGeoMatrix.h>
15#include <TEveManager.h>
16#include <TEveElement.h>
17#include <TEveTrans.h>
18#include <TEveGeoShape.h>
19
20#include <AliEveEventManager.h>
21#include <AliRawReader.h>
22#include <AliACORDERawStream.h>
23#endif
24
25TString acorde_module_path(Int_t module);
26
27Color_t g_acorde_raw_color_on = kRed;
28Color_t g_acorde_raw_color_off = kBlue;
29
30UChar_t g_acorde_raw_transp_on = 30;
31UChar_t g_acorde_raw_transp_off = 60;
32
33void acorde_raw()
34{
35
36 // From Mario RC
37
38 AliEveEventManager::AssertGeometry();
39
40 AliRawReader * reader = AliEveEventManager::AssertRawReader();
41 AliACORDERawStream * stream = new AliACORDERawStream(reader);
42
43 stream->Reset();
44 stream->Next();
45
46 UInt_t dy[4];
47 dy[0] = stream->GetWord(0);
48 dy[1] = stream->GetWord(1);
49 dy[2] = stream->GetWord(2);
50 dy[3] = stream->GetWord(3);
51
52 printf ("ACORDE event 0x%08x 0x%08x 0x%08x 0x%08x\n", dy[0], dy[1], dy[2], dy[3]);
53
54 if (acorde_module_path(0).IsNull())
55 {
56 Warning("acorde_raw", "Missing / wrong ACORDE module geometry.");
57 return;
58 }
59
60 TEveElementList* acorde = new TEveElementList("ACORDE_Raw");
61
62 gEve->AddElement(acorde);
63
64 for (Int_t module=0; module < 60; module++)
65 {
66 TString path = acorde_module_path(module);
67
68 if ( ! gGeoManager->cd(path))
69 {
70 Warning("acorde_raw", "Module id=%d, path='%s' not found.", module, path.Data());
71 continue;
72 }
73
74 // From Matevz:
75 // Here check state and assign color, I do it partially for now.
76 Int_t word_idx = module / 30;
77 Int_t bit_idx = module % 30;
78 Bool_t val = (dy[word_idx] & (1 << bit_idx)) != 0;
79
80 TEveGeoShape* eg_shape = new TEveGeoShape(TString::Format("Module %d", module),
81 TString::Format("Module %d, %s", module, val ? "Fired" : "Not fired"));
82 eg_shape->SetMainColor (val ? g_acorde_raw_color_on : g_acorde_raw_color_off);
83 eg_shape->SetMainTransparency(val ? g_acorde_raw_transp_on : g_acorde_raw_transp_off);
84 eg_shape->SetPickable(kTRUE);
85 eg_shape->RefMainTrans().SetFrom(*gGeoManager->GetCurrentMatrix());
86 eg_shape->SetShape((TGeoShape*) gGeoManager->GetCurrentVolume()->GetShape()->Clone());
87
88 acorde->AddElement(eg_shape);
89 }
90
91 delete stream;
92 gEve->Redraw3D();
93}
94
95//==============================================================================
96//==============================================================================
97
98TString acorde_module_path(Int_t module)
99{
100 if (module < 0 || module > 59)
101 {
102 Error("acorde_module_path", "module %d out of range.", module);
103 return "";
104 }
105
106 TGeoPNEntry* pne = gGeoManager->GetAlignableEntry(Form("ACORDE/Array%d", module));
107 if (!pne) return "";
108
109 return Form("%s/ACORDESCINTILLATORMODULE_6", pne->GetTitle());
110
111}