2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
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 **************************************************************************/
10 TString acorde_module_path(Int_t module);
12 Color_t g_acorde_raw_color_on = kRed;
13 Color_t g_acorde_raw_color_off = kBlue;
15 UChar_t g_acorde_raw_transp_on = 30;
16 UChar_t g_acorde_raw_transp_off = 60;
23 AliEveEventManager::AssertGeometry();
25 AliRawReader * reader = AliEveEventManager::AssertRawReader();
26 AliACORDERawStream * stream = new AliACORDERawStream(reader);
32 dy[0] = stream->GetWord(0);
33 dy[1] = stream->GetWord(1);
34 dy[2] = stream->GetWord(2);
35 dy[3] = stream->GetWord(3);
37 printf ("ACORDE event 0x%08x 0x%08x 0x%08x 0x%08x\n", dy[0], dy[1], dy[2], dy[3]);
39 if (acorde_module_path(0).IsNull())
41 Warning("acorde_raw", "Missing / wrong ACORDE module geometry.");
45 TEveElementList* acorde = new TEveElementList("ACORDE_Raw");
47 gEve->AddElement(acorde);
49 for (Int_t module=0; module < 60; module++)
51 TString path = acorde_module_path(module);
53 if ( ! gGeoManager->cd(path))
55 Warning("acorde_raw", "Module id=%d, path='%s' not found.", module, path.Data());
60 // Here check state and assign color, I do it partially for now.
61 Int_t word_idx = module / 30;
62 Int_t bit_idx = module % 30;
63 Bool_t val = (dy[word_idx] & (1 << bit_idx)) != 0;
65 TEveGeoShape* eg_shape = new TEveGeoShape(TString::Format("Module %d", module),
66 TString::Format("Module %d, %s", module, val ? "Fired" : "Not fired"));
67 eg_shape->SetMainColor (val ? g_acorde_raw_color_on : g_acorde_raw_color_off);
68 eg_shape->SetMainTransparency(val ? g_acorde_raw_transp_on : g_acorde_raw_transp_off);
69 eg_shape->SetPickable(kTRUE);
70 eg_shape->RefMainTrans().SetFrom(*gGeoManager->GetCurrentMatrix());
71 eg_shape->SetShape((TGeoShape*) gGeoManager->GetCurrentVolume()->GetShape()->Clone());
73 acorde->AddElement(eg_shape);
80 //==============================================================================
81 //==============================================================================
83 TString acorde_module_path(Int_t module)
85 if (module < 0 || module > 59)
87 Error("acorde_module_path", "module %d out of range.", module);
91 TGeoPNEntry* pne = gGeoManager->GetAlignableEntry(Form("ACORDE/Array%d", module));
94 return Form("%s/ACORDESCINTILLATORMODULE_6", pne->GetTitle());