#if !defined(__CINT__) || defined(__MAKECINT__)
-//***************** ROOT ******************************************
+//****************** ROOT ******************************************
#include "TTimer.h"
#include "TRandom.h"
#include "TVirtualPad.h"
#include "TCanvas.h"
#include "TColor.h"
-//******************* ROOT/EVE ****************************************
+//****************** ROOT/EVE **************************************
#include "TEveManager.h"
#include "TEvePointSet.h"
#include "TEveTrack.h"
#include "TEveProjectionManager.h"
#include "TEveGeoShape.h"
-//******************** AliRoot ***************************************
+//****************** AliRoot ***************************************
#include "AliESDEvent.h"
#include "AliCDBManager.h"
#include "AliRawReaderMemory.h"
#include "AliTPCRawStream.h"
#include "AliGeomManager.h"
-//********************* AliRoot/EVE **************************************
+
+//****************** AliRoot/EVE ***********************************
#include "AliHLTHOMERManager.h"
#include "AliEveHOMERManager.h"
#include "AliEveTPCLoader.h"
#include "AliEveMacroExecutor.h"
#include "AliEveMacro.h"
#include "AliEveTrack.h"
-//***********************AliRoot/HLT ************************************
+
+//****************** AliRoot/HLT ***********************************
#include "AliHLTHOMERBlockDesc.h"
#include "AliHLTHOMERReader.h"
-
#include <AliHLTMUONUtils.h>
#include "AliHLTMUONDataBlockReader.h"
#include "AliHLTTriggerDecision.h"
-
#include "AliHLTGlobalTriggerDecision.h"
-
#include "tracking-ca/AliHLTTPCCATrackParam.h"
-//*********************AliRoot/MUON **************************************
+//****************** AliRoot/MUON **********************************
#include "AliMUONCalibrationData.h"
#include "AliMUONVCalibParam.h"
#include "AliMUONGeometryTransformer.h"
#include "AliMpSegmentation.h"
#include "AliMpTriggerCrate.h"
#include "AliMpLocalBoard.h"
-//***********************************************************
+//****************** AliRoot/TRD ***********************************
+#include "AliHLTTRDCluster.h"
+#include "AliTRDcluster.h"
+
+//****************** Macros ****************************************
#include "hlt_structs.C"
#include "hlt_alieve_init.C"
#include "geom_gentle_hlt.C"
#include "alice-macros/esd_tracks.C"
-//**************************AliRoot TRD *********************
-#include "AliHLTTRDCluster.h"
-#include "AliTRDcluster.h"
-
-
-
-//***********************************************************
#endif
class TEveTrackList;
class AliHLTHOMERBlockDesc;
class TEveViewer;
+
// -----------------------------------------------------------------
// -- Geometry / Scenes --
// -----------------------------------------------------------------
Bool_t gCenterProjectionsAtPrimaryVertex = kFALSE;
-Int_t gHistoCount = 0;
-
// -----------------------------------------------------------------
// -- Members --
// -----------------------------------------------------------------
// -- Cluster members
TEvePointSet* gPHOSClusters = 0;
TEvePointSet* gTPCClusters = 0;
-TEvePointSet* gTRDClusters = 0;
-TEvePointSetArray* gTRDColClusters = 0;
TEvePointSet* gSPDClusters = 0;
TEvePointSet* gMUONClusters = 0;
+TEvePointSet* gTRDClusters = 0;
+TEvePointSetArray* gTRDColClusters = 0;
// -- Text output members
TEveText* gHLTText = 0;
TCanvas* gTRDCanvas = 0;
TCanvas* gCanvas = 0;
-// -- TRD event counter
+// -- TRD --
+
+Int_t gTRDHistoCount = 0;
Int_t gTRDEvents = 0;
Int_t gTRDBins = 12;
Int_t processMUONClusters( AliHLTHOMERBlockDesc* block);
+Int_t processISPDClusters(AliHLTHOMERBlockDesc* block);
// #################################################################
// #################################################################
Int_t initializeEveViewer( Bool_t TPCMode, Bool_t MUONMode, Bool_t TRDMode) {
//==============================================================================
- // Geometry, scenes, projections and viewers
+ // -- Geometry, scenes, projections and viewers
//==============================================================================
TEveBrowser *browser = gEve->GetBrowser();
// -- Disable extra geometry
// ---------------------------
- if ( ! MUONMode ) {
+ if (!MUONMode)
gShowMUON = gShowMUONRPhi = gShowMUONRhoZ = kFALSE;
- }
-
-
+
// -- Load Geometry
// ------------------
TEveUtil::LoadMacro("geom_gentle_hlt.C");
gGeomGentleRhoZ = geom_gentle_rhoz(); gGeomGentleRhoZ->IncDenyDestroy();
gGeomGentleTRD = geom_gentle_trd();
- if (gShowMUON) {
+ if (gShowMUON)
gGeomGentleMUON = geom_gentle_muon(kFALSE);
- }
-
-
- // Scenes
-
+
+ // -- Scenes
+ // -----------
gRPhiGeomScene = gEve->SpawnNewScene("RPhi Geometry",
"Scene holding projected geometry for the RPhi view.");
gRhoZGeomScene = gEve->SpawnNewScene("RhoZ Geometry",
gRhoZEventScene = gEve->SpawnNewScene("RhoZ Event Data",
"Scene holding projected geometry for the RhoZ view.");
-
- // Projection managers
+ // -- Projection managers
+ // ------------------------
gRPhiMgr = new TEveProjectionManager();
gRPhiMgr->SetProjection(TEveProjection::kPT_RPhi);
if (gShowTRD) gRhoZMgr->ImportElements(gGeomGentleTRD, gRhoZGeomScene);
if (gShowMUONRhoZ) gRhoZMgr->ImportElements(gGeomGentleMUON, gRhoZGeomScene);
- // Viewers
-
+ // -- Viewers
+ // ------------
- TEveWindowSlot *slot = 0;
- TEveWindowPack *pack = 0;
-
- slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
- pack = slot->MakePack();
+ TEveWindowSlot *slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
+ TEveWindowPack *pack = slot->MakePack();
pack->SetElementName("Multi View");
pack->SetHorizontal();
pack->SetShowTitleBar(kFALSE);
gRhoZView->AddScene(gRhoZGeomScene);
gRhoZView->AddScene(gRhoZEventScene);
-
- // List of Viewers
+ // -- List of Viewers
+ // --------------------
TEveViewerList *viewerlist = new TEveViewerList();
viewerlist->AddElement(gEve->GetDefaultViewer());
viewerlist->SwitchColorSet();
//==============================================================================
- // Macros / QA histograms
+ // -- Macros / QA histograms
//==============================================================================
// -- Registration of per-event macros
# endif
// Histograms
-if(TRDMode){
- slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
- slot->StartEmbedding();
-
- gTRDCanvas = new TCanvas("c2","c2", 600, 400);
- gTRDCanvas->Divide(3,2);
- slot->StopEmbedding("TRD histograms");
-}
- else if(TPCMode){
- ;
- }
+ if(TRDMode){
+ slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
+ slot->StartEmbedding();
+
+ gTRDCanvas = new TCanvas("canvasTRD","canvasTRD", 600, 400);
+ gTRDCanvas->Divide(3,2);
+ slot->StopEmbedding("TRD histograms");
+ }
+ else if(TPCMode){
+ ;
+ }
//==============================================================================
- // Additional GUI components
+ // -- Additional GUI components
//==============================================================================
slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
gStyle->SetPalette(1, 0);
gEve->DisableRedraw();
+ //==============================================================================
// -- Reset
- // ----------
- if ( gTPCClusters ) gTPCClusters->Reset();
+ //==============================================================================
+
+ if ( gTRDCanvas ) {
+ gTRDCanvas->Clear();
+ gTRDCanvas->Divide(3,2);
+ }
+
+ if ( gTPCTrack ) gTPCTrack->DestroyElements();
+
+ if ( gTPCClusters ) gTPCClusters->Reset();
if ( gMUONClusters ) gMUONClusters->Reset();
- if ( gTRDClusters ) gTRDClusters->Reset();
+ if ( gPHOSClusters ) gPHOSClusters->Reset();
+ if ( gTRDClusters ) gTRDClusters->Reset();
if ( gTRDColClusters ) {
for (Int_t ii = 1; ii <= gTRDBins; ++ii)
gTRDColClusters->GetBin(ii)->Reset();
}
+ gTRDHistoCount = 0;
- if ( gTRDCanvas ) gTRDCanvas->Clear();
- if ( gPHOSClusters ) gPHOSClusters->Reset();
- if ( gTPCTrack ) gTPCTrack->DestroyElements();
-
- if ( gTRDCanvas ) {
- gTRDCanvas->Clear();
- gTRDCanvas->Divide(3,2);
- }
- gHistoCount = 0;
+ //==============================================================================
+ // -- Process Blocks
+ //==============================================================================
if ( gHomerManager->GetBlockList() == NULL) {
printf ("No BlockList ... ");
// ------------------------------------------
while ((block = (AliHLTHOMERBlockDesc*)next())) {
-#if 0
+#if DEBUG
printf( "------------------- xxxxxxxxxxxxxxx ----------------------\n");
printf( "Detector : %s\n", block->GetDetector().Data() );
printf( "Datatype : %s\n", block->GetDataType().Data() );
printf( "------------------- xxxxxxxxxxxxxxx ----------------------\n");
#endif
- // -- CHECK SOURCE
- // -----------------------------------------------------
-
// ++ HLT BLOCK
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
if ( ! block->GetDetector().CompareTo("HLT") ) {
gEve->AddElement(gTPCTrack);
}
iResult = processEsdTracks(block, gTPCTrack);
+ gTPCTrack->ElementChanged();
}
// -- Process ROOTObj
else if ( ! block->GetDataType().CompareTo("ROOTTOBJ") ) {
if(!gHLTText){
- gHLTText = new TEveText();
+ //gHLTText = new TEveText();
//gHLTText->BBoxZero(5, -5, -5, 0);
//gHLTText->SetExtrude(25);
//gHLTText->AssertBBoxExtents(25,25,25);
- gEve->AddElement(gHLTText);
+ //gEve->AddElement(gHLTText);
}
processROOTTOBJ( block, gHLTText );
}
gEve->AddElement(gTPCClusters);
}
iResult = processTPCClusters( block , gTPCClusters);
+ gTPCClusters->ElementChanged();
}
+
} // else if ( ! block->GetDetector().CompareTo("TPC") ) {
// ++ TRD BLOCK
gTRDClusters = new TEvePointSet("TRD Clusters");
gTRDClusters->SetMainColor(kBlue);
gTRDClusters->SetMarkerStyle((Style_t)kFullDotSmall);
- // gEve->AddElement(gTRDClusters);
+ gEve->AddElement(gTRDClusters);
}
- // gTRDClusters->ElementChanged();
if(!gTRDColClusters){
-
gTRDColClusters = new TEvePointSetArray("TRD Clusters Colorized");
gTRDColClusters->SetMainColor(kRed);
gTRDColClusters->SetMarkerStyle(4); // antialiased circle
gTRDColClusters->SetMarkerSize(0.8);
gTRDColClusters->InitBins("Cluster Charge", gTRDBins, 0., gTRDBins*100.);
- TColor::SetPalette(1, 0); // Spectrum palette
+ //TColor::SetPalette(1, 0); // Spectrum palette
const Int_t nCol = TColor::GetNumberOfColors();
for (Int_t ii = 0; ii < gTRDBins+1; ++ii)
gTRDColClusters->GetBin(ii)->SetMainColor(TColor::GetColorPalette(ii * nCol / (gTRDBins+2)));
-
+
gEve->AddElement(gTRDColClusters);
}
iResult = processTRDClusters( block, gTRDClusters, gTRDColClusters );
-
- // gTRDClusters->ElementChanged();
+ gTRDClusters->ElementChanged();
gTRDColClusters->ElementChanged();
}
// -- Process TRD Histograms
else if ( block->GetDataType().CompareTo("ROOTHIST") == 0 ) {
iResult = processTRDHistograms( block, gTRDCanvas );
+ if ( gTRDCanvas) gTRDCanvas->Update();
}
} // else if ( ! block->GetDetector().CompareTo("TRD") ) {
-
-
// ++ MUON BLOCK
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ else if ( ! block->GetDetector().CompareTo("MUON") && gShowMUON ) {
- else if ( ! block->GetDetector().CompareTo("MUON") ) {
- if (gShowMUON) {
- // -- MUON
- //-----------------------------------------------------
+ // -- Process MUON Clusters
if ( (block->GetDataType().CompareTo("RECHITS") == 0) || (block->GetDataType().CompareTo("TRIGRECS") == 0) ) {
-
+
if ( !gMUONClusters ) {
gMUONClusters = new TEvePointSet("MUON RecHits");
gMUONClusters->SetMainColor(kBlue);
gEve->AddElement(gMUONClusters);
}
- // ** Process Clusters
processMUONClusters( block );
+ gMUONClusters->ElementChanged();
- gMUONClusters->ElementChanged();
-
- }//MUON Clusters
- }
- }
-
-
-
+ }
+ } // else if ( ! block->GetDetector().CompareTo("MUON") && gShowMUON ) {
+
// ++ SPD BLOCK
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
else if ( ! block->GetDetector().CompareTo("ISPD") ){
if ( block->GetDataType().CompareTo("CLUSTERS") == 0 ) {
- //processISPDClusters( block );
+ processISPDClusters( block );
}
} // else if ( ! block->GetDetector().CompareTo("ISPD") ){
-
-
+
+
// -- ITS
- else if ( ! block->GetDetector().CompareTo("ITS") ){
+ else if ( ! block->GetDetector().CompareTo("ITS") ){
if ( block->GetDataType().CompareTo("ROOTHIST") == 0 ) {
iResult = 0;
//iResult = processITSHist( block );
}
} // else if ( ! block->GetDetector().CompareTo("ISPD") ){
-
+
// ---------------------------------------------------------
} // while ((block = (AliHLTHOMERBlockDesc*)next())) {
if ( gTPCClusters ) gTPCClusters->ResetBBox();
if ( gTRDClusters ) gTRDClusters->ResetBBox();
- // if ( gTRDColClusters ) gTRDColClusters->ResetBBox();
if ( gPHOSClusters ) gPHOSClusters->ResetBBox();
if ( gMUONClusters ) gMUONClusters->ResetBBox();
if ( gSPDClusters ) gSPDClusters->ResetBBox();
- if ( gTPCTrack ) gTPCTrack->ElementChanged();
- if ( gTRDCanvas) gTRDCanvas->Update();
// -- Set EventID in Window Title
// --------------------------------------------
// --------------------------------------------
// XXX Primary vertex ... to be retrieved from the ESD
- Double_t x[3] = { 0, 0, 0 };
-
+ Double_t x[3] = { 0, 0, 0 };
+
TEveElement* top = gEve->GetCurrentEvent();
-
+
if (gRPhiMgr && top) {
gRPhiEventScene->DestroyElements();
if (gCenterProjectionsAtPrimaryVertex)
return iResult;
}
-
-// -----------------------------------------------------------------
-void loopEvent() {
-
- eventTimer.SetCommand("nextEvent()");
- eventTimer.Start(6000);
-}
-
-// -----------------------------------------------------------------
-void stopLoopEvent() {
- eventTimer.Stop();
-}
-
-// -----------------------------------------------------------------
-void loopEventFast() {
- eventTimerFast.SetCommand("nextEvent()");
- eventTimerFast.Start(500);
-}
-
-// -----------------------------------------------------------------
-void stopLoopEventFast() {
- eventTimerFast.Stop();
-}
-
-
// -----------------------------------------------------------------
Int_t processITSHist(AliHLTHOMERBlockDesc* block) {
TH2F* hist = dynamic_cast<TH2F*> (block->GetTObject());
}
// -----------------------------------------------------------------
-Int_t processISPDClusters(AliHLTHOMERBlockDesc* block) {
- cout<<"ISPD dump:"<<endl;
- TObject *ob = block->GetTObject();
- ob->Dump();
+Int_t processISPDClusters(AliHLTHOMERBlockDesc* /*block*/) {
return 0;
}
Int_t processTPCClusters(AliHLTHOMERBlockDesc* block, TEvePointSet* cont) {
Int_t slice = block->GetSubDetector();
- //Int_t patch = block->GetSubSubDetector();
Float_t phi = ( slice + 0.5 ) * TMath::Pi() / 9.0;
Float_t cos = TMath::Cos( phi );
Float_t sin = TMath::Sin( phi );
return 0;
}
-
-//****************************************************************************
-
+// -----------------------------------------------------------------
Int_t processMUONClusters(AliHLTHOMERBlockDesc* block) {
-
+
Int_t iResult = 0;
unsigned long size = block->GetSize();
- int * buffer ;
+ Int_t * buffer ;
- buffer = (int *)block->GetData();
+ buffer = (Int_t *)block->GetData();
// cout<<"block size : "<<size<<", buffer : "<<buffer<<", DataType : "<<block->GetDataType()<<endl;
// // for(int idata=0;idata<int(size);idata++)
Int_t iResult = 0;
- Int_t sm = block->GetSubDetector();
+ Int_t sm = block->GetSubDetector();
if ( sm == 6 ) sm = 7;
-
+
Float_t phi = ( sm + 0.5 ) * TMath::Pi() / 9.0;
Float_t cos = TMath::Cos( phi );
Float_t sin = TMath::Sin( phi );
- AliHLTTRDCluster* ptrData = reinterpret_cast<AliHLTTRDCluster*> (block->GetData());
+ Byte_t* ptrData = reinterpret_cast<Byte_t*>(block->GetData());
UInt_t ptrSize = block->GetSize();
for (UInt_t size = 0; size+sizeof(AliHLTTRDCluster) <= ptrSize; size+=sizeof(AliHLTTRDCluster) ) {
trdCluster->GetQ() );
cont->SetNextPoint(cos*trdCluster->GetX() - sin*trdCluster->GetY(),
- sin*trdCluster->GetX() + cos*trdCluster->GetY(), trdCluster->GetZ());
-
+ sin*trdCluster->GetX() + cos*trdCluster->GetY(), trdCluster->GetZ());
}
return iResult;
if ( ! block->GetClassName().CompareTo("TH1D")) {
TH1D* histo = reinterpret_cast<TH1D*>(block->GetTObject());
- // list->Add(hist->Clone());
-
- ++gHistoCount;
+ ++gTRDHistoCount;
- TVirtualPad* pad = canvas->cd(gHistoCount);
+ TVirtualPad* pad = canvas->cd(gTRDHistoCount);
histo->Draw();
pad->SetGridy();
pad->SetGridx();
}
else if ( ! block->GetClassName().CompareTo("TH2F")) {
TH2F *hista = reinterpret_cast<TH2F*>(block->GetTObject());
- // list->Add(hist->Clone());
-
- ++gHistoCount;
+ ++gTRDHistoCount;
- TVirtualPad* pad = canvas->cd(gHistoCount);
+ TVirtualPad* pad = canvas->cd(gTRDHistoCount);
if (gTRDEvents > 0)
hista->Scale(1./gTRDEvents);
return iResult;
}
+//****************************************************************************
+
+// -----------------------------------------------------------------
+void loopEvent() {
+ eventTimer.SetCommand("nextEvent()");
+ eventTimer.Start(6000);
+}
+
+// -----------------------------------------------------------------
+void stopLoopEvent() {
+ eventTimer.Stop();
+}
+
+
+// -----------------------------------------------------------------
+void loopEventFast() {
+ eventTimerFast.SetCommand("nextEvent()");
+ eventTimerFast.Start(500);
+}
+
+// -----------------------------------------------------------------
+void stopLoopEventFast() {
+ eventTimerFast.Stop();
+}
+
// -----------------------------------------------------------------
void EventLoopFast() {
gEventLoopStarted = kFALSE;
}
}
-
-
-//****************************************************************************