// Author: Jochen Thaeder <thaeder@kip.uni-heidelberg.de> *
// for The ALICE HLT Project. *
+//-*- Mode: C++ -*-
+
/** @file AliEveHOMERManager.cxx
@author Jochen Thaeder
@date
#define __ROOT__
#define USE_ALILOG
#define LINUX
+
+#define EVE_DEBUG 1
// -- -- -- -- -- -- --
#include "AliHLTHOMERLibManager.h"
#include "AliHLTHOMERSourceDesc.h"
AliEveHOMERManager::AliEveHOMERManager( TString xmlFile ) :
TEveElementList("AliEveHOMERManager"),
fLibManager(new AliHLTHOMERLibManager),
- fXMLFile(xmlFile),
- fXMLParser(NULL),
- fRootNode(NULL),
+ fXMLHandler( new AliEveHOMERXMLHandler( xmlFile ) ),
fSourceList(NULL),
fReader(NULL),
- fRealm("GPN"),
fBlockList(NULL),
fNBlks(0),
fEventID(0),
// Right now, a xml file ( SCC1 ) is used to get the
// configuration, this will/ has to change to a proxy
// running on dedicated nodes.
+
}
//##################################################################################
fReader = NULL;
}
- if ( fXMLParser )
- delete fXMLParser;
- fXMLParser = NULL;
+ if ( fXMLHandler != NULL )
+ delete fXMLHandler;
+ fXMLHandler = NULL;
if ( fSourceList != NULL )
delete fSourceList;
if ( fTPCPre != NULL )
delete fTPCPre;
fTPCPre = NULL;
+
}
/*
* ---------------------------------------------------------------------------------
- * Source Handling
+ * Source Handling
* ---------------------------------------------------------------------------------
*/
Int_t AliEveHOMERManager::CreateHOMERSourcesList() {
// Create Sources List from HOMER-Proxy
- // -- Initialize XML parser
- if ( fXMLParser != NULL )
- delete fXMLParser;
- fXMLParser = NULL;
-
- fXMLParser = new TDOMParser();
- fXMLParser->SetValidate( kFALSE );
-
- Int_t iResult = fXMLParser->ParseFile( fXMLFile );
- if ( iResult < 0 ) {
- iResult = 1;
- AliError( Form("Parsing file with error: %s", fXMLParser->GetParseCodeMessage( fXMLParser->GetParseCode() )) );
- return iResult;
- }
+ Int_t iResult = 0;
// -- Initialize sources list
DestroyElements();
fSourceList = new TList();
fSourceList->SetOwner( kTRUE );
- // -- Set ROOT node
- fRootNode = fXMLParser->GetXMLDocument()->GetRootNode();
-
- TXMLNode * node = NULL;
- TXMLNode * prevNode = fRootNode->GetChildren();
-
- // -- Loop over all nodes
- while ( ( node = prevNode->GetNextNode() ) ) {
- prevNode = node;
-
- // -- Find only "Process" nodes, otherwise continue to next node
- if ( strcmp( node->GetNodeName(), "Proc" ) != 0 )
- continue;
-
- // -- Get Attributes of current node
- TList *attrList = node->GetAttributes();
- TXMLAttr *attr = 0;
- TIter next(attrList);
-
- while ( ( attr = (TXMLAttr*)next() ) ) {
-
- // -- Find "ID" attribute, otherwise continue to next attribute
- if ( strcmp( attr->GetName(), "ID" ) != 0 )
- continue;
-
- TString nodeId( attr->GetValue() );
-
- // -- Find only TDS processes
- TObjArray * nodeIdTok = nodeId.Tokenize("_");
-
- for ( Int_t ii=0 ; ii < nodeIdTok->GetEntries() ; ii++ ) {
- if ( ! ( (TObjString*) nodeIdTok->At(ii) )->GetString().CompareTo("TDS") ) {
- iResult = GetTDSAttributes( node->GetChildren() );
- if ( iResult ) {
- AliError( Form("Error processing TDS process : %s", nodeId.Data()) );
- }
- }
- }
- } // while ( ( attr = (TXMLAttr*)next() ) ) {
-
- } // while ( ( node = prevNode->GetNextNode() ) ) {
-
- // -- New SourceList has been created --> All Sources are new --> State has changed
- fStateHasChanged = kTRUE;
+ iResult = fXMLHandler->FillSourceList( fSourceList );
if ( iResult ) {
AliWarning( Form("There have been errors, while creating the sources list.") );
}
else {
AliInfo( Form("New sources list created.") );
+
+ // -- New SourceList has been created --> All Sources are new --> State has changed
+ fStateHasChanged = kTRUE;
if ( fSrcList )
delete fSrcList;
// -- Create new AliEVE sources list
- fSrcList = new AliEveHOMERSourceList("HOMER Sources");
+ fSrcList = new AliEveHOMERSourceList("HLT Sources");
fSrcList->SetManager(this);
AddElement(fSrcList);
return;
}
-//##################################################################################
-Int_t AliEveHOMERManager::GetTDSAttributes( TXMLNode * xmlNode ) {
- // Get Information out of a TDS process in XML file
- // * param xmlNode Pointer to childs of TDS node
- // * return 0 on sucess, > 0 on errorsee header file for class documentation
-
- Int_t iResult = 0;
-
- TXMLNode * attrNode = NULL;
- TXMLNode * prevNode = xmlNode;
-
- TString xmlHostname = 0;
- TString xmlPort = 0;
-
- TString hostname = 0;
- Int_t port = 0;
-
- // -- Get hostname and port from TDS node out of XML
- while ( ( attrNode = prevNode->GetNextNode() ) ) {
- prevNode = attrNode;
-
- // -- Get port out of the commandline
- if ( strcmp( attrNode->GetNodeName(), "Cmd" ) == 0 ) {
- TString cmd( attrNode->GetText() );
-
- TObjArray * cmdTok = cmd.Tokenize(" ");
- xmlPort = ((TObjString*) cmdTok->At(2))->GetString();
- }
- // -- Get hostname
- else if ( strcmp( attrNode->GetNodeName(), "Node" ) == 0 )
- xmlHostname = attrNode->GetText();
-
- } // while ( ( attrNode = prevNode->GetNextNode() ) ) {
-
- // -- Resolve hostname and port information
- iResult = ResolveHostPortInformation ( xmlHostname, xmlPort, hostname, port );
- if ( iResult == 1 ) {
- AliError( Form("Error resolving hostname : %s", xmlHostname.Data()) );
- return iResult;
- }
- else if ( iResult == 2 ) {AliInfo( Form("Connection established") );
- AliError( Form("Error resolving port : %s", xmlPort.Data()) );
- return iResult;
- }
-
- // -- Reset loop to TDS node
- prevNode = xmlNode;
-
- // -- Get Sources out of XML, resolve sources, add to sources List
- while ( ( attrNode = prevNode->GetNextNode() ) ) {
- prevNode = attrNode;
-
- // Find only "Parent" tags, otherwise continue to next tag
- if ( strcmp( attrNode->GetNodeName(), "Parent" ) != 0 )
- continue;
-
- TString xmlParent = attrNode->GetText();
-
- AliHLTHOMERSourceDesc * source = new AliHLTHOMERSourceDesc( hostname, port );
-
- if ( ResolveSourceInformation( xmlParent, source ) ) {
- iResult = 3;
- AliError( Form("Error resolving source : %s", xmlParent.Data()) );
-
- delete source;
- }
- else {
- fSourceList->Add( source );
- AliInfo( Form("New Source added : %s", xmlParent.Data()) );
- }
-
- } // while ( ( attrNode = prevNode->GetNextNode() ) ) {
-
- return iResult;
-}
-
-//##################################################################################
-Int_t AliEveHOMERManager::ResolveHostPortInformation ( TString xmlHostname, TString xmlPort, TString &hostname, Int_t &port ) {
- // Resolve Information of hostname and port for source which has to be used by HOMER
- // ( due to port mapping inside the HLT )
- // * param xmlHostname Hostname out of the XML
- // * param xmlPort Port out of the XML
- // * param hostname Return of the hostname
- // * param port Return of the port
- // * return 0 on sucess, 1 if hostname couldn't be resolved, 2 if port couldn't be resolved,
-
- Int_t iResult = 1;
- TString nodeName = 0;
- TXMLNode * node = NULL;
- TXMLNode * prevNode = fRootNode->GetChildren();
-
- // *** Resolve hostname
-
- while ( ( node = prevNode->GetNextNode() ) && iResult == 1 ) {
- prevNode = node;
-
- // -- Find only "Node" nodes, otherwise continue
- if ( strcmp( node->GetNodeName(), "Node" ) != 0 )
- continue;
-
- // -- Get Attributes of current node
- TList *attrList = node->GetAttributes();
- TXMLAttr *attr = 0;
- TIter next(attrList);
-
- TString nodeId = 0;
-
- // Get "nodeID" and "nodeName" of this "Node" node
- while ( ( attr = (TXMLAttr*)next() ) ) {
- if ( strcmp( attr->GetName(), "ID" ) == 0 )
- nodeId = attr->GetValue();
- else if ( strcmp( attr->GetName(), "hostname" ) == 0 )
- nodeName = attr->GetValue();
- }
-
- // -- if this is not the correct nodeID continue
- if ( nodeId != xmlHostname )
- continue;
-
- // -- Set hostname
- if ( ! fRealm.CompareTo( "ACR" ) )
- hostname = "alihlt-dcs0.cern.ch";
- else if ( ! fRealm.CompareTo( "GPN" ) )
- hostname = "alihlt-vobox0.cern.ch";
- else
- hostname = nodeName;
-
- iResult = 0;
-
- break;
- } // while ( ( node = prevNode->GetNextNode() ) ) {
-
- if ( iResult ) {
- AliError( Form("Error resolving hostname : %s", xmlHostname.Data()) );
- return iResult;
- }
-
- // *** Resolve port
-
- if ( xmlPort.IsDigit() ) {
-
- if ( nodeName.CompareTo("feptriggerdet") ==0 ){
- if ( xmlPort.CompareTo("49152") == 0 ){
- port = 58140;
- } else if ( xmlPort.CompareTo("49153") == 0 ){
- port = 58141;
- }
- } else if ( nodeName.CompareTo("fepfmdaccorde") == 0 ){
- if ( xmlPort.CompareTo("49152") == 0 ){
- port = 58144;
- } else if ( xmlPort.CompareTo("49153") == 0 ){
- port = 58145;
- }
- } else if ( nodeName.CompareTo("feptpcao15") == 0 ){
- if ( xmlPort.CompareTo("49152") == 0 ){
- port = 50340;
- } else if ( xmlPort.CompareTo("49153") == 0 ){
- port = 50341;
- }
- } else if ( nodeName.CompareTo("fepphos2") == 0 ){
- if ( xmlPort.CompareTo("49152") == 0 ){
- port = 58656;
- } else if ( xmlPort.CompareTo("58656") == 0 ){
- port = 58656;
- }
- } else if ( nodeName.CompareTo("fepphos3") == 0 ){
- if ( xmlPort.CompareTo("49152") == 0 ){
- port = 58660;
- } else if ( xmlPort.CompareTo("58660") == 0 ){
- port = 58660;
- }
- } else if ( nodeName.CompareTo("fepphos4") == 0 ){
- if ( xmlPort.CompareTo("49152") == 0 ){
- port = 58664;
- } else if ( xmlPort.CompareTo("58664") == 0 ){
- port = 58664;
- }
- } else if ( nodeName.CompareTo("alihlt-vobox0") == 0 ){
- port = xmlPort.Atoi();
- }
- }
- else {
- AliError( Form("Error resolving port : %s", xmlPort.Data()) );
- iResult = 2;
- }
-
- // *** Summary
-
- if ( !iResult ) {
- AliInfo( Form("%s:%i resolved out of %s:%s", hostname.Data(), port, xmlHostname.Data(), xmlPort.Data()) );
- }
-
- return iResult;
-}
-
-//##################################################################################
-Int_t AliEveHOMERManager::ResolveSourceInformation( TString xmlParent, AliHLTHOMERSourceDesc *source ) {
- // Resolve information of source
- // * param xmlParent ParentString out of the XML
- // * param source Return the filled AliHLTHOMERSourceDesc object
- // * return 0 on sucess, 1 on errorsee header file for class documentation
-
- Int_t iResult = 0;
-
- if ( ! xmlParent.Contains( "_" ) ) {
- AliError( Form("Source %s could not be resolved", xmlParent.Data() ) );
- iResult = 1;
-
- return iResult;
- }
-
- TObjArray * parentTokens = xmlParent.Tokenize("_");
-
- Int_t nEntries = parentTokens->GetEntries();
-
- TString detector = ((TObjString*) parentTokens->At(0) )->GetString();
- TString subDetector = "";
- TString subSubDetector = "";
- TString dataType = "";
- ULong_t specification = 0;
-
- TString name = ((TObjString*) parentTokens->At(1) )->GetString();
- TString objName = "";
-
- if ( nEntries == 3 )
- subDetector = ((TObjString*) parentTokens->At(2) )->GetString();
- else if ( nEntries == 4 ) {
- subDetector = ((TObjString*) parentTokens->At(2) )->GetString();
- subSubDetector = ((TObjString*) parentTokens->At(3) )->GetString();
- }
-
- // -- Corecct TPC subdetector, because in we have somtimes "A","C"
- if ( ! detector.CompareTo("TPC") ) {
- if ( subDetector.BeginsWith('A') ) {
- subDetector.Remove( TString::kLeading, 'A' );
- }
- else if ( subDetector.BeginsWith('C') ) {
- subDetector.Remove( TString::kLeading, 'C' );
- Int_t tmp = subDetector.Atoi() + 18;
- subDetector = "";
- subDetector += tmp;
- }
- }
-
- // -- Correct for MUON
- if ( ! detector.CompareTo("DIMU") ) {
- detector = "MUON";
-
- if ( ! subDetector.CompareTo("TRG") )
- subDetector = "1";
- else if ( ! subDetector.CompareTo("TRK") )
- subDetector = "2";
- }
-
- // -- Remove Leading '0' in sub detector and subsubdetector
- subDetector.Remove( TString::kLeading, '0' );
- subSubDetector.Remove( TString::kLeading, '0' );
-
- // -- Set Object Names
-
- // **** General ****
- if ( name == "RP" || name == "FP" || name == "Relay" ) {
- objName = "";
- dataType = "DDL_RAW";
- specification = 0;
- }
-
- // **** TPC ****
- else if ( detector == "TPC" ) {
-
- if ( name == "CalibPedestal" ) {
- objName = "AliTPCCalibPedestal";
- dataType = "HIS_CAL";
- specification = 0;
- }
- else if ( name == "CalibPulser" ) {
- objName = "AliTPCCalibPulser";
- dataType = "HIS_CAL";
- specification = 0;
- }
- else if ( name == "CF" || name == "RelayCF" ) {
- objName = "AliHLTTPCClusterDataFormat";
- dataType = "CLUSTERS";
- specification = 0;
- }
- else if ( name == "ESDConv" ) {
- objName = "TTree";
- dataType = "ESD_TREE";
- specification = 0;
- }
- else if ( name == "KryptonCF" ) {
- objName = "TObjArray";
- dataType = "KRPTHIST";
- specification = 0;
- }
- else {
- // not defined yet ...
- AliError( Form("Parent Process not defined yet : %s .", name.Data()) );
- iResult = 1;
- }
-
- } // if ( detector == "TPC" ) {
-
- // **** TRD ****
- else if ( detector == "TRD" ) {
-
- if ( name == "foo" ) {
- objName = "bar";
- dataType = "FOO_BAR";
- specification = 0;
- }
- } // else if ( detector == "TRD" ) {
-
- // **** PHOS ****
- else if ( detector == "PHOS" ) {
-
- } // else if ( detector == "PHOS" ) {
-
- // **** DIMU ****
- else if ( detector == "MUON" ) {
- Int_t UpdateSourcesFromSourcesList( );
- } // else if ( detector == "MUON" ) {
-
- // -- Fill object
- source->SetSourceName( name, objName );
- source->SetSourceType( specification, dataType );
- source->SetDetectors( detector, subDetector, subSubDetector );
-
- // AliInfo( Form("Set Source %s , Type %s, ClassName %s .", name.Data(), dataType.Data(), objName.Data()) );
- // AliInfo( Form(" Detector %s , SubDetector : %s, SubSubDetector %s .",
- // detector.Data(), subDetector.Data(), subSubDetector.Data()) );
-
- return iResult;
-}
-
/*
* ---------------------------------------------------------------------------------
* Connection Handling
// Connect to HOMER sources, out of Readout List, which gets created when state has changed
// * return 0 on sucess, "HOMER" errors on error
-
Int_t iResult = 0;
fStateHasChanged = fSrcList->GetSelectedSources();
delete[] sourceHostnames;
delete[] sourcePorts;
-
- // -- Get next event
- if ( ! iResult )
- NextEvent();
-
return iResult;
}
return iResult;
}
-
//##################################################################################
void AliEveHOMERManager::CreateReadoutList( const char** sourceHostnames, UShort_t *sourcePorts, UInt_t &sourceCount ){
// Create a readout list for Hostname and ports
// * return 0 on sucess, "HOMER" errors on error
Int_t iResult = 0;
+ Int_t iRetryCount = 0;
if ( !fReader || ! IsConnected() ) {
AliWarning( Form( "Not connected yet." ) );
return 1;
}
+ // fReader->SetEventRequestAdvanceTime( 20000000 /*timeout in us*/ );
+
// -- Read next event data and error handling for HOMER (error codes and empty blocks)
while( 1 ) {
- iResult = fReader->ReadNextEvent( 20000000 /*timeout in us*/);
+
+ iResult = fReader->ReadNextEvent( 40000000 /*timeout in us*/);
if ( iResult == 111 || iResult == 32 || iResult == 6 ) {
Int_t ndx = fReader->GetErrorConnectionNdx();
AliError( Form("Error, No Connection to source %d: %s (%d)",
ndx, strerror(iResult), iResult) );
- fConnected = kFALSE;
return 2;
}
else if ( iResult == 110 ) {
Int_t ndx = fReader->GetErrorConnectionNdx();
AliError( Form("Timout occured, reading event from source %d: %s (%d)",
ndx, strerror(iResult), iResult) );
- fConnected = kFALSE;
return 3;
}
else if ( iResult == 56) {
Int_t ndx = fReader->GetErrorConnectionNdx();
- AliError( Form("Retry: Error reading event from source %d: %s (%d)",
- ndx, strerror(iResult), iResult) );
- fConnected = kFALSE;
- continue;
+
+ ++iRetryCount;
+
+ if ( iRetryCount >= 20 ) {
+ AliError( Form("Retry Failed: Error reading event from source %d: %s (%d)",
+ ndx, strerror(iResult), iResult) );
+ return 4;
+ }
+ else {
+ AliError( Form("Retry: Error reading event from source %d: %s (%d)",
+ ndx, strerror(iResult), iResult) );
+ continue;
+ }
}
else if ( iResult ) {
Int_t ndx = fReader->GetErrorConnectionNdx();
AliInfo( Form("Event 0x%016LX (%Lu) with %lu blocks", fEventID, fEventID, fNBlks) );
-#if 0
-
+#if EVE_DEBUG
// Loop for Debug only
for ( ULong_t i = 0; i < fNBlks; i++ ) {
Char_t tmp1[9], tmp2[5];
AliInfo( Form("Block %lu length: %lu - type: %s - origin: %s",
i, fReader->GetBlockDataLength( i ), tmp1, tmp2) );
} // end for ( ULong_t i = 0; i < fNBlks; i++ ) {
-
#endif
// -- Create BlockList
if ( CheckIfRequested( block ) )
fBlockList->Add( block );
else {
- delete block;
- block = NULL;
+ //The Following 2 line commented out and the previous is added.
+ // delete block;
+ // block = NULL;
+ fBlockList->Add( block );
}
iter = GetNextBlk();
}
//##################################################################################
-TString AliEveHOMERManager:: GetBlkType( Int_t ndx ) {
+TString AliEveHOMERManager::GetBlkType( Int_t ndx ) {
// Get type of block ndx
// * param ndx Block index
// * return type of block
}
//##################################################################################
-ULong_t AliEveHOMERManager:: GetBlkSpecification( Int_t ndx ) {
+ULong_t AliEveHOMERManager::GetBlkSpecification( Int_t ndx ) {
// Get specification of block ndx
// * param ndx Block index
// * return specification of block
// -- Read all sources and check if they should be read out
TIter next( fSourceList );
while ( ( source = (AliHLTHOMERSourceDesc*)next() ) ) {
-
+
if ( ! source->IsSelected() )
continue;
- if ( source->GetDetector().CompareTo( block->GetDetector() ) )
- continue;
+ if ( !( block->GetDetector().CompareTo( "*** " ) && block->GetDetector().CompareTo( "***" ) ) ) {
+ // if not any detector
+ if ( source->GetDetector().CompareTo( block->GetDetector() ) )
+ continue;
+ }
- if ( source->GetDataType().CompareTo( block->GetDataType() ) )
- continue;
+ if ( ! ( block->GetDataType().CompareTo( "******* " ) && block->GetDataType().CompareTo( "******* " ) ) ) {
+ if ( source->GetDataType().CompareTo( block->GetDataType() ) )
+ continue;
+ }
if ( ! block->HasSubDetectorRange() ) {
-
if ( source->GetSubDetector().Atoi() != block->GetSubDetector().Atoi() )
continue;
} // if ( ! block->HasSubDetectorRange ) {
requested = kTRUE;
+ break;
} // while ( ( source = (AliHLTHOMERSourceDesc*)next() ) ) {
+
+#if EVE_DEBUG
- if ( requested) {
- AliInfo( Form("Block requested : %s - %s : %s/%s -> %s ", block->GetDetector().Data(), block->GetDataType().Data(),
- block->GetSubDetector().Data(), block->GetSubSubDetector().Data(), block->GetClassName().Data() ) );
+ if ( block->GetDataType().CompareTo("CLUSTERS") ) {
+ if ( requested ) {
+ AliError( Form("Block requested : %s - %s : %s/%s -> %s ", block->GetDetector().Data(), block->GetDataType().Data(),
+ block->GetSubDetector().Data(), block->GetSubSubDetector().Data(), block->GetClassName().Data() ) );
}
- else
- AliInfo( Form("Block NOT requested : %s - %s : %s/%s -> %s ", block->GetDetector().Data(), block->GetDataType().Data(), block->GetSubDetector().Data(), block->GetSubSubDetector().Data(), block->GetClassName().Data() ) );
+ else {
+ AliError( Form("Block NOT requested : %s - %s : %s/%s -> %s ", block->GetDetector().Data(), block->GetDataType().Data(),
+ block->GetSubDetector().Data(), block->GetSubSubDetector().Data(), block->GetClassName().Data() ) );
+ }
+
+ }
+#endif
return requested;
}
#include "AliHLTHOMERSourceDesc.h"
#include "AliHLTHOMERBlockDesc.h"
#include "AliHLTHOMERReader.h"
+#include "AliEveHOMERXMLHandler.h"
#include "AliTPCPreprocessorOnline.h"
AliEveHOMERManager(const AliEveHOMERManager&); // Not implemented.
AliEveHOMERManager& operator=(const AliEveHOMERManager&); // Not implemented.
- /*
- * ---------------------------------------------------------------------------------
- * Source Handling - private
- * ---------------------------------------------------------------------------------
- */
-
- /** Get Information out of a TDS process in XML file */
- Int_t GetTDSAttributes( TXMLNode * xmlNode );
-
- /** Resolve Information of hostname and port for source which has to be used by HOMER */
- Int_t ResolveHostPortInformation( TString xmlHostname, TString xmlPort, TString &hostname, Int_t &port );
-
- /** Resolve information of source */
- Int_t ResolveSourceInformation( TString xmlParent, AliHLTHOMERSourceDesc * source );
-
/*
* ---------------------------------------------------------------------------------
* Connection Handling - private
*/
/** Create a readout list for Hostname and ports */
- void CreateReadoutList( const char** socurceHostnames, UShort_t* sourcePorts, UInt_t &sourceCount);
+ void CreateReadoutList( const char** sourceHostnames, UShort_t* sourcePorts, UInt_t &sourceCount);
/** Checks if already connected to HOMER sources */
Bool_t IsConnected() { return fConnected; } // Checks if already connected to HOMER sources
- /** Sets realm ( which can be ACR, GPN, HLT ) */
- void SetRealm( TString s ) { fRealm = s; } // Sets realm ( which can be ACR, GPN, HLT
+ /** Sets realm ( which can be ACR, GPN, HLT, KIP ) */
+ void SetRealm( TString s ) { fXMLHandler->SetRealm(s); } // Sets realm ( which can be ACR, GPN, HLT, KIP )
/* ---------------------------------------------------------------------------------
* Event Handling - private
* ---------------------------------------------------------------------------------
*/
- // == XML parser ==
- TString fXMLFile; // XML input file
- TDOMParser* fXMLParser; //! XML parser into DOM model
- TXMLNode * fRootNode; //! Root node of parsed config file
+ // == XML handler ==
+ AliEveHOMERXMLHandler* fXMLHandler; //! Handles HLT XML Config Files
// == sources ==
TList * fSourceList; //! List to HOMER sources
// == connection ==
AliHLTHOMERReader* fReader; //! Pointer to HOMER reader
- TString fRealm; // Indicates the realm where AliEve can connect to ( HLT, GPN, ACR );
// == blocks ==
TList * fBlockList; //! List to HOMER blocks
#include <TVirtualPad.h>
#include <TColor.h>
+#include <TROOT.h>
#include <TGLabel.h>
#include <TGButton.h>
UInt_t options, Pixel_t back) :
TGedFrame(p, width, height, options | kVerticalFrame, back),
fM(0),
- fButt(0)
- // Initialize widget pointers to 0
-{
+ fButtonConnect(0),
+ fButtonNextEvent(0),
+ fButtonEventLoop(0),
+ fEventLoopStarted(kFALSE) {
+
MakeTitle("AliEveHOMERManager");
// Create widgets
// AddFrame(fXYZZ, new TGLayoutHints(...));
// fXYZZ->Connect("SignalName()", "AliEveHOMERManagerEditor", this, "DoXYZZ()");
- fButt = new TGTextButton(this, " Connect to HLT ");
- AddFrame(fButt); //, new TGLayoutHints(...));
- fButt->Connect("Clicked()", "AliEveHOMERManagerEditor", this, "DoButt()");
+ fButtonConnect = new TGTextButton(this, " Connect to HLT ");
+ AddFrame(fButtonConnect); //, new TGLayoutHints(...));
+ fButtonConnect->Connect("Clicked()", "AliEveHOMERManagerEditor", this, "ConnectToHLT()");
+
+ fButtonNextEvent = new TGTextButton(this, " NextEvent ");
+ AddFrame(fButtonNextEvent); //, new TGLayoutHints(...));
+ fButtonNextEvent->Connect("Clicked()", "AliEveHOMERManagerEditor", this, "NextEvent()");
+
+ fButtonEventLoop = new TGTextButton(this, " not yet used ");
+ AddFrame(fButtonEventLoop); //, new TGLayoutHints(...));
+ fButtonEventLoop->Connect("Clicked()", "AliEveHOMERManagerEditor", this, "EventLoop()");
}
// Update();
// }
-void AliEveHOMERManagerEditor::DoButt()
+void AliEveHOMERManagerEditor::ConnectToHLT()
{
// Connects to HOMER sources -> to HLT.
fM->ConnectHOMER();
}
+
+void AliEveHOMERManagerEditor::NextEvent()
+{
+ // call next event from macro
+ gROOT->ProcessLineFast("nextEvent();");
+
+}
+
+void AliEveHOMERManagerEditor::EventLoop()
+{
+ // Start/stop event loop
+
+ fM->ConnectHOMER();
+}
class AliEveHOMERManagerEditor : public TGedFrame
{
public:
- AliEveHOMERManagerEditor(const TGWindow* p=0, Int_t width=170, Int_t height=30, UInt_t options = kChildFrame, Pixel_t back=GetDefaultFrameBackground());
+ AliEveHOMERManagerEditor(const TGWindow* p=0, Int_t width=170, Int_t height=30,
+ UInt_t options = kChildFrame, Pixel_t back=GetDefaultFrameBackground());
virtual ~AliEveHOMERManagerEditor() {}
virtual void SetModel(TObject* obj);
// Declare callback/slot methods
- void DoButt();
+ void ConnectToHLT();
+ void NextEvent();
+ void EventLoop();
+
protected:
AliEveHOMERManager *fM; // Model object.
- TGTextButton *fButt; // Button to connect to HOMER.
+ TGTextButton *fButtonConnect; // Button to connect to HOMER.
+ TGTextButton *fButtonNextEvent; // Button to call next Event
+ TGTextButton *fButtonEventLoop; // Button to start/stop event loop
private:
AliEveHOMERManagerEditor(const AliEveHOMERManagerEditor&); // Not implemented
AliEveHOMERManagerEditor& operator=(const AliEveHOMERManagerEditor&); // Not implemented
+ Bool_t fEventLoopStarted;
+
ClassDef(AliEveHOMERManagerEditor, 0); // Editor for AliEveHOMERManager
};
--- /dev/null
+// $Id$
+// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
+// Author: Jochen Thaeder <thaeder@kip.uni-heidelberg.de> *
+// for The ALICE HLT Project. *
+
+//-*- Mode: C++ -*-
+
+/** @file AliEveHOMERSrcObject.cxx
+ @author Jochen Thaeder
+ @date
+ @brief Src Object for Src Mapping
+*/
+
+#if __GNUC__>= 3
+ using namespace std;
+#endif
+
+#define use_aliroot
+#define use_root
+#define ROWHOUGHPARAMS
+#define use_reconstruction
+#define use_newio
+#define ROOTVERSION "unchecked"
+#define ALIROOTVERSION "unchecked"
+#define __ROOT__
+#define USE_ALILOG
+#define LINUX
+
+#include "AliEveHOMERSrcObject.h"
+
+//______________________________________________________________________________
+//
+// Translate HLT data-sources.
+
+ClassImp(AliEveHOMERSrcObject)
+
+/*
+ * ---------------------------------------------------------------------------------
+ * Constructor / Destructor
+ * ---------------------------------------------------------------------------------
+ */
+
+//##################################################################################
+AliEveHOMERSrcObject::AliEveHOMERSrcObject( TString dataType, TString className, ULong_t specification ) :
+ fDataType(dataType),
+ fClassName(className),
+ fSpecification(specification) {
+ // This Class is a mapping object, which should allow, to
+ // add new sources out of the HLT.
+ // This should be only needed by AliEveHOMERSrcTranslator
+
+ printf ("%s - %s - %lu\n", fDataType.Data(),fClassName.Data(), fSpecification);
+
+}
+
+//##################################################################################
+AliEveHOMERSrcObject::~AliEveHOMERSrcObject() {
+ // The destructor
+
+}
+
--- /dev/null
+// $Id$
+// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
+
+/**************************************************************************
+ * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
+ * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
+ * full copyright notice. *
+ **************************************************************************/
+
+//-*- Mode: C++ -*-
+#ifndef ALIEVEHOMERSRCOBJECT_H
+#define ALIEVEHOMERSRCOBJECT_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+/** @file AliEveHOMERSrcObject.h
+ @author Jochen Thaeder
+ @date
+ @brief Src Object for Src Mapping
+*/
+
+#include "TString.h"
+#include "TObject.h"
+
+class AliEveHOMERSrcObject : public TObject
+{
+ public:
+
+ /*
+ * ---------------------------------------------------------------------------------
+ * Constructor / Destructor
+ * ---------------------------------------------------------------------------------
+ */
+
+ /** constructor */
+ AliEveHOMERSrcObject( TString dataType, TString className, ULong_t specification );
+
+ /** destructor */
+ virtual ~AliEveHOMERSrcObject();
+
+ /*
+ * ---------------------------------------------------------------------------------
+ * Getter - public
+ * ---------------------------------------------------------------------------------
+ */
+
+ /** Returns the HLT dataType */
+ TString GetDataType() { return fDataType; } // Returns the HLT dataType
+
+ /** Returns the HLT className */
+ TString GetClassName() { return fClassName; } // Returns the HLT className
+
+ /** Returns the HLT specification in HLT */
+ ULong_t GetSpecification() { return fSpecification; } // Returns the HLT specification in HLT
+
+ ///////////////////////////////////////////////////////////////////////////////////
+
+private:
+
+ AliEveHOMERSrcObject(const AliEveHOMERSrcObject&); // Not implemented.
+ AliEveHOMERSrcObject& operator=(const AliEveHOMERSrcObject&); // Not implemented.
+
+ /*
+ * ---------------------------------------------------------------------------------
+ * Members - private
+ * ---------------------------------------------------------------------------------
+ */
+
+ TString fDataType; // Contains the HLT DataType
+ TString fClassName; // Contains the Classname in HLT
+ ULong_t fSpecification; // Contains the HLT Specification
+
+ ClassDef(AliEveHOMERSrcObject, 0); // Object for mapping of HLT data-sources.
+};
+
+#endif
+
+
--- /dev/null
+// $Id$
+// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
+// Author: Jochen Thaeder <thaeder@kip.uni-heidelberg.de> *
+// for The ALICE HLT Project. *
+
+//-*- Mode: C++ -*-
+
+/** @file AliEveHOMERSrcTranslator.cxx
+ @author Jochen Thaeder
+ @date
+ @brief Src Translator of HomerManger
+*/
+
+#if __GNUC__>= 3
+ using namespace std;
+#endif
+
+#define use_aliroot
+#define use_root
+#define ROWHOUGHPARAMS
+#define use_reconstruction
+#define use_newio
+#define ROOTVERSION "unchecked"
+#define ALIROOTVERSION "unchecked"
+#define __ROOT__
+#define USE_ALILOG
+#define LINUX
+
+#define EVE_DEBUG 1
+// -- -- -- -- -- -- --
+#include "AliEveHOMERSource.h"
+#include "AliEveHOMERSrcTranslator.h"
+#include "AliEveHOMERSrcObject.h"
+// -- -- -- -- -- -- --
+#include "TString.h"
+#include <TApplication.h>
+#include "Riostream.h"
+#include "TXMLAttr.h"
+#include "TCollection.h"
+#include "TList.h"
+#include "TObjString.h"
+#include "TObjArray.h"
+// -- -- -- -- -- -- --
+#include "AliLog.h"
+
+//______________________________________________________________________________
+//
+// Translate HLT data-sources.
+
+ClassImp(AliEveHOMERSrcTranslator)
+
+/*
+ * ---------------------------------------------------------------------------------
+ * Constructor / Destructor
+ * ---------------------------------------------------------------------------------
+ */
+
+//##################################################################################
+ AliEveHOMERSrcTranslator::AliEveHOMERSrcTranslator( TString realm ) :
+ fBasePortMap(NULL),
+ fObjectMap(NULL),
+ fRealm(realm)
+{
+ // This Class should handle the translation of
+ // internal hostnames and ports to the ones used by
+ // HOMER according to realm, where AliEVE is running in.
+
+ SetupPortMap();
+ SetupObjectMap();
+}
+
+//##################################################################################
+AliEveHOMERSrcTranslator::~AliEveHOMERSrcTranslator() {
+ // The destructor
+
+ if ( fBasePortMap )
+ delete fBasePortMap;
+ fBasePortMap = NULL;
+}
+
+/*
+ * ---------------------------------------------------------------------------------
+ * Translation - public
+ * ---------------------------------------------------------------------------------
+ */
+
+//##################################################################################
+Int_t AliEveHOMERSrcTranslator::Translate( TString xmlNodename, TString xmlPort,
+ TString &hostname, Int_t &port ) {
+ // Translate hostname and port for source which has to be used by HOMER
+ // ( due to port mapping inside the HLT )
+ // * param xmlNodename Nodename out of the XML
+ // * param xmlPort Port out of the XML
+ // * param hostname Return of the hostname
+ // * param port Return of the port
+ // * return 0 on sucess, 1 if port couldn't be resolved,
+
+ Int_t iResult = 0;
+
+ // *** Resolve hostname
+ hostname = ResolveHostname( xmlNodename );
+
+ // *** Resolve port
+ port = ResolvePort( xmlPort, xmlNodename );
+
+ if ( port == -1 ) {
+ AliError( Form("Error resolving port : %s", xmlPort.Data()) );
+ iResult = 1;
+ }
+
+ // *** Summary
+#if EVE_DEBUG
+ if ( !iResult ) {
+ AliInfo( Form("%s:%i resolved out of %s:%s", hostname.Data(), port, xmlNodename.Data(), xmlPort.Data()) );
+ }
+#endif
+
+ return iResult;
+}
+
+//##################################################################################
+void AliEveHOMERSrcTranslator::ApplyDetectorCorrections( TString &detector, TString &subDetector) {
+ // Apply corrections for differnt detectors and subdetectors */
+
+ // -- Correct TPC subdetector, because in we have somtimes "A","C"
+ if ( ! detector.CompareTo("TPC") ) {
+ if ( subDetector.BeginsWith('A') ) {
+ subDetector.Remove( TString::kLeading, 'A' );
+ }
+ else if ( subDetector.BeginsWith('C') ) {
+ subDetector.Remove( TString::kLeading, 'C' );
+ Int_t tmp = subDetector.Atoi() + 18;
+ subDetector = "";
+ subDetector += tmp;
+ }
+ }
+
+ // -- Correct for MUON
+ if ( ! detector.CompareTo("DIMU") ) {
+ detector = "MUON";
+
+ if ( ! subDetector.CompareTo("TRG") )
+ subDetector = "1";
+ else if ( ! subDetector.CompareTo("TRK") )
+ subDetector = "2";
+ }
+}
+
+//##################################################################################
+Int_t AliEveHOMERSrcTranslator::FillSourceDesc( AliHLTHOMERSourceDesc* source, TString name ) {
+ // Fill SourceDesc with object Information
+
+ Int_t iResult = 0;
+
+ TString detector = source->GetDetector();
+
+ if ( ! fObjectMap->FindObject( detector ) ) {
+ AliError( Form("Error mapping for detector not known : %s", detector.Data()) );
+ AliError( Form("Error mapping for NAME : %s", name.Data()) );
+ iResult = 1;
+
+ return iResult;
+ }
+
+
+ TMap * objectMap = (TMap*) fObjectMap->GetValue( detector );
+
+
+
+ if ( ! objectMap->FindObject( name ) ) {
+ cout << "DET..." << detector.Data() << endl;
+
+ source->SetSourceName( name, "" );
+ source->SetSourceType( 0, "*******" );
+ }
+ else {
+ AliEveHOMERSrcObject* srcObject = (AliEveHOMERSrcObject*) objectMap->FindObject( name );
+ source->SetSourceName( name, srcObject->GetClassName() );
+ source->SetSourceType( srcObject->GetSpecification(), srcObject->GetDataType() );
+ }
+
+ return iResult;
+}
+
+/*
+ * ---------------------------------------------------------------------------------
+ * Source Resolving - private
+ * ---------------------------------------------------------------------------------
+ */
+
+//##################################################################################
+TString AliEveHOMERSrcTranslator::ResolveHostname( TString nodename ){
+ // resolves the hostname, out of the XML nodename, and the realm set
+
+ TString hostname = 0;
+
+ // -- Set hostname according to realm
+ if ( ! fRealm.CompareTo( "ACR" ) )
+ hostname = "alihlt-dcs0.cern.ch";
+ else if ( ! fRealm.CompareTo( "GPN" ) )
+ hostname = "alihlt-vobox0.cern.ch";
+ else if ( ! fRealm.CompareTo( "KIP" ) )
+ hostname = "alihlt-gw0.kip.uni-heidelberg.de";
+ else
+ hostname = nodename;
+
+ return hostname;
+}
+
+//##################################################################################
+Int_t AliEveHOMERSrcTranslator::ResolvePort( TString srcPort, TString nodename ) {
+ // resolves the port, out of the XML port, and the realm set
+ Int_t port = -1;
+
+ if ( ! srcPort.IsDigit() )
+ return port;
+
+ if ( srcPort.Atoi() < kNodeBasePort )
+ return port;
+
+ if ( ! fBasePortMap->FindObject( nodename ) )
+ return port;
+
+ port = srcPort.Atoi();
+
+ if ( ! fRealm.CompareTo( "HLT" ) )
+ return port;
+
+ Int_t offset = port - kNodeBasePort;
+
+ port = ( ( (TObjString*) fBasePortMap->GetValue(nodename) )->GetString() ).Atoi();
+ port += offset;
+
+ return port;
+}
+
+/*
+ * ---------------------------------------------------------------------------------
+ * Setup - private
+ * ---------------------------------------------------------------------------------
+ */
+
+//##################################################################################
+void AliEveHOMERSrcTranslator::SetupPortMap () {
+ // Setup hostname to port mapping
+
+ fBasePortMap = new TMap();
+ //fBasePortMap->SetOwnerKeyValue();
+
+ fBasePortMap->Add( new TObjString("cntpca000"), new TObjString("49408"));
+ fBasePortMap->Add( new TObjString("feptpcao00"), new TObjString("49436"));
+ fBasePortMap->Add( new TObjString("feptpcai00"), new TObjString("49440"));
+ fBasePortMap->Add( new TObjString("feptpcao01"), new TObjString("49444"));
+ fBasePortMap->Add( new TObjString("feptpcao02"), new TObjString("49564"));
+ fBasePortMap->Add( new TObjString("feptpcai02"), new TObjString("49568"));
+ fBasePortMap->Add( new TObjString("feptpcao03"), new TObjString("49572"));
+ fBasePortMap->Add( new TObjString("cntpca040"), new TObjString("49664"));
+ fBasePortMap->Add( new TObjString("feptpcao04"), new TObjString("49692"));
+ fBasePortMap->Add( new TObjString("feptpcai04"), new TObjString("49696"));
+ fBasePortMap->Add( new TObjString("feptpcao05"), new TObjString("49700"));
+ fBasePortMap->Add( new TObjString("feptpcao06"), new TObjString("49820"));
+ fBasePortMap->Add( new TObjString("feptpcai06"), new TObjString("49824"));
+ fBasePortMap->Add( new TObjString("feptpcao07"), new TObjString("49828"));
+ fBasePortMap->Add( new TObjString("cntpca080"), new TObjString("49920"));
+ fBasePortMap->Add( new TObjString("feptpcao08"), new TObjString("49948"));
+ fBasePortMap->Add( new TObjString("feptpcai08"), new TObjString("49952"));
+ fBasePortMap->Add( new TObjString("feptpcao09"), new TObjString("49956"));
+ fBasePortMap->Add( new TObjString("feptpcao10"), new TObjString("50076"));
+ fBasePortMap->Add( new TObjString("feptpcai10"), new TObjString("50080"));
+ fBasePortMap->Add( new TObjString("feptpcao11"), new TObjString("50084"));
+ fBasePortMap->Add( new TObjString("cntpca120"), new TObjString("50176"));
+ fBasePortMap->Add( new TObjString("feptpcao12"), new TObjString("50204"));
+ fBasePortMap->Add( new TObjString("feptpcai12"), new TObjString("50208"));
+ fBasePortMap->Add( new TObjString("feptpcao13"), new TObjString("50212"));
+ fBasePortMap->Add( new TObjString("feptpcao14"), new TObjString("50332"));
+ fBasePortMap->Add( new TObjString("feptpcai14"), new TObjString("50336"));
+ fBasePortMap->Add( new TObjString("feptpcao15"), new TObjString("50340"));
+ fBasePortMap->Add( new TObjString("cntpca160"), new TObjString("50432"));
+ fBasePortMap->Add( new TObjString("feptpcao16"), new TObjString("50460"));
+ fBasePortMap->Add( new TObjString("feptpcai16"), new TObjString("50464"));
+ fBasePortMap->Add( new TObjString("feptpcao17"), new TObjString("50468"));
+ fBasePortMap->Add( new TObjString("cntrd0"), new TObjString("54144"));
+ fBasePortMap->Add( new TObjString("feptrd00"), new TObjString("54168"));
+ fBasePortMap->Add( new TObjString("feptrd04"), new TObjString("54172"));
+ fBasePortMap->Add( new TObjString("feptrd08"), new TObjString("54176"));
+ fBasePortMap->Add( new TObjString("feptrd10"), new TObjString("54180"));
+ fBasePortMap->Add( new TObjString("feptrd14"), new TObjString("54184"));
+ fBasePortMap->Add( new TObjString("feptpcco16"), new TObjString("54428"));
+ fBasePortMap->Add( new TObjString("feptpcci16"), new TObjString("54432"));
+ fBasePortMap->Add( new TObjString("feptpcco17"), new TObjString("54436"));
+ fBasePortMap->Add( new TObjString("feptpcco14"), new TObjString("54556"));
+ fBasePortMap->Add( new TObjString("feptpcci14"), new TObjString("54560"));
+ fBasePortMap->Add( new TObjString("feptpcco15"), new TObjString("54564"));
+ fBasePortMap->Add( new TObjString("cntpcc120"), new TObjString("54656"));
+ fBasePortMap->Add( new TObjString("feptpcco12"), new TObjString("54684"));
+ fBasePortMap->Add( new TObjString("feptpcci12"), new TObjString("54688"));
+ fBasePortMap->Add( new TObjString("feptpcco13"), new TObjString("54692"));
+ fBasePortMap->Add( new TObjString("feptpcco10"), new TObjString("54812"));
+ fBasePortMap->Add( new TObjString("feptpcci10"), new TObjString("54816"));
+ fBasePortMap->Add( new TObjString("feptpcco11"), new TObjString("54820"));
+ fBasePortMap->Add( new TObjString("cntpcc080"), new TObjString("54912"));
+ fBasePortMap->Add( new TObjString("feptpcco08"), new TObjString("54940"));
+ fBasePortMap->Add( new TObjString("feptpcci08"), new TObjString("54944"));
+ fBasePortMap->Add( new TObjString("feptpcco09"), new TObjString("54948"));
+ fBasePortMap->Add( new TObjString("feptpcco06"), new TObjString("55068"));
+ fBasePortMap->Add( new TObjString("feptpcci06"), new TObjString("55072"));
+ fBasePortMap->Add( new TObjString("feptpcco07"), new TObjString("55076"));
+ fBasePortMap->Add( new TObjString("cntpcc040"), new TObjString("55168"));
+ fBasePortMap->Add( new TObjString("feptpcco04"), new TObjString("55196"));
+ fBasePortMap->Add( new TObjString("feptpcci04"), new TObjString("55200"));
+ fBasePortMap->Add( new TObjString("feptpcco05"), new TObjString("55204"));
+ fBasePortMap->Add( new TObjString("feptpcco02"), new TObjString("55324"));
+ fBasePortMap->Add( new TObjString("feptpcci02"), new TObjString("55328"));
+ fBasePortMap->Add( new TObjString("feptpcco03"), new TObjString("55332"));
+ fBasePortMap->Add( new TObjString("cntpcc000"), new TObjString("55424"));
+ fBasePortMap->Add( new TObjString("feptpcco00"), new TObjString("55452"));
+ fBasePortMap->Add( new TObjString("feptpcci00"), new TObjString("55456"));
+ fBasePortMap->Add( new TObjString("feptpcco01"), new TObjString("55460"));
+ fBasePortMap->Add( new TObjString("cnspd0"), new TObjString("57728"));
+ fBasePortMap->Add( new TObjString("fepspd0"), new TObjString("57752"));
+ fBasePortMap->Add( new TObjString("fepspd1"), new TObjString("57756"));
+ fBasePortMap->Add( new TObjString("fepspd2"), new TObjString("57760"));
+ fBasePortMap->Add( new TObjString("fepspd3"), new TObjString("57764"));
+ fBasePortMap->Add( new TObjString("fepspd4"), new TObjString("57768"));
+ fBasePortMap->Add( new TObjString("cnssd0"), new TObjString("57856"));
+ fBasePortMap->Add( new TObjString("fepssd0"), new TObjString("57880"));
+ fBasePortMap->Add( new TObjString("fepssd1"), new TObjString("57884"));
+ fBasePortMap->Add( new TObjString("fepssd2"), new TObjString("57888"));
+ fBasePortMap->Add( new TObjString("fepssd3"), new TObjString("57892"));
+ fBasePortMap->Add( new TObjString("fepphos4"), new TObjString("57896"));
+ fBasePortMap->Add( new TObjString("fepsdd5"), new TObjString("57896"));
+ fBasePortMap->Add( new TObjString("fephmpid0"), new TObjString("58008"));
+ fBasePortMap->Add( new TObjString("fepsdd0"), new TObjString("58008"));
+ fBasePortMap->Add( new TObjString("fephmpid1"), new TObjString("58012"));
+ fBasePortMap->Add( new TObjString("fepsdd1"), new TObjString("58012"));
+ fBasePortMap->Add( new TObjString("fephmpid2"), new TObjString("58016"));
+ fBasePortMap->Add( new TObjString("fepsdd2"), new TObjString("58016"));
+ fBasePortMap->Add( new TObjString("fephmpid3"), new TObjString("58020"));
+ fBasePortMap->Add( new TObjString("fepsdd3"), new TObjString("58020"));
+ fBasePortMap->Add( new TObjString("fepphos1"), new TObjString("58024"));
+ fBasePortMap->Add( new TObjString("fepsdd4"), new TObjString("58024"));
+ fBasePortMap->Add( new TObjString("feptriggerdet"), new TObjString("58140"));
+ fBasePortMap->Add( new TObjString("fepfmdaccorde"), new TObjString("58144"));
+ fBasePortMap->Add( new TObjString("fephltout0"), new TObjString("58400"));
+ fBasePortMap->Add( new TObjString("fephltout1"), new TObjString("58404"));
+ fBasePortMap->Add( new TObjString("cnphos0"), new TObjString("58624"));
+ fBasePortMap->Add( new TObjString("fepphos2"), new TObjString("58656"));
+ fBasePortMap->Add( new TObjString("fepphos3"), new TObjString("58660"));
+ fBasePortMap->Add( new TObjString("cndimutrg0"), new TObjString("58752"));
+ fBasePortMap->Add( new TObjString("fepdimutrg"), new TObjString("58784"));
+ fBasePortMap->Add( new TObjString("cndimutrk0"), new TObjString("58880"));
+ fBasePortMap->Add( new TObjString("fepdimutrk1"), new TObjString("58904"));
+ fBasePortMap->Add( new TObjString("fepdimutrk2"), new TObjString("58908"));
+ fBasePortMap->Add( new TObjString("fepdimutrk3"), new TObjString("58912"));
+ fBasePortMap->Add( new TObjString("fepdimutrk4"), new TObjString("58916"));
+ fBasePortMap->Add( new TObjString("fepdimutrk5"), new TObjString("58920"));
+
+
+// fBasePortMap->Add( new TObjString("feptpcao00"), new TObjString("49436"));
+// fBasePortMap->Add( new TObjString("feptpcai00"), new TObjString("49440"));
+// fBasePortMap->Add( new TObjString("feptpcao01"), new TObjString("49444"));
+// fBasePortMap->Add( new TObjString("feptpcao02"), new TObjString("49564"));
+// fBasePortMap->Add( new TObjString("feptpcai02"), new TObjString("49568"));
+// fBasePortMap->Add( new TObjString("feptpcao03"), new TObjString("49572"));
+// fBasePortMap->Add( new TObjString("feptpcao04"), new TObjString("49692"));
+// fBasePortMap->Add( new TObjString("feptpcai04"), new TObjString("49696"));
+// fBasePortMap->Add( new TObjString("feptpcao05"), new TObjString("49700"));
+// fBasePortMap->Add( new TObjString("feptpcao06"), new TObjString("49820"));
+// fBasePortMap->Add( new TObjString("feptpcai06"), new TObjString("49824"));
+// fBasePortMap->Add( new TObjString("feptpcao07"), new TObjString("49828"));
+// fBasePortMap->Add( new TObjString("feptpcao08"), new TObjString("49948"));
+// fBasePortMap->Add( new TObjString("feptpcai08"), new TObjString("49952"));
+// fBasePortMap->Add( new TObjString("feptpcao09"), new TObjString("49956"));
+// fBasePortMap->Add( new TObjString("feptpcao10"), new TObjString("50076"));
+// fBasePortMap->Add( new TObjString("feptpcai10"), new TObjString("50080"));
+// fBasePortMap->Add( new TObjString("feptpcao11"), new TObjString("50084"));
+// fBasePortMap->Add( new TObjString("feptpcao12"), new TObjString("50204"));
+// fBasePortMap->Add( new TObjString("feptpcai12"), new TObjString("50208"));
+// fBasePortMap->Add( new TObjString("feptpcao13"), new TObjString("50212"));
+// fBasePortMap->Add( new TObjString("feptpcao14"), new TObjString("50332"));
+// fBasePortMap->Add( new TObjString("feptpcai14"), new TObjString("50336"));
+// fBasePortMap->Add( new TObjString("feptpcao15"), new TObjString("50340"));
+// fBasePortMap->Add( new TObjString("feptpcao16"), new TObjString("50460"));
+// fBasePortMap->Add( new TObjString("feptpcai16"), new TObjString("50464"));
+// fBasePortMap->Add( new TObjString("feptpcao17"), new TObjString("50468"));
+// fBasePortMap->Add( new TObjString("feptrd00"), new TObjString("54168"));
+// fBasePortMap->Add( new TObjString("feptrd04"), new TObjString("54172"));
+// fBasePortMap->Add( new TObjString("feptrd08"), new TObjString("54176"));
+// fBasePortMap->Add( new TObjString("feptrd10"), new TObjString("54180"));
+// fBasePortMap->Add( new TObjString("feptrd14"), new TObjString("54184"));
+// fBasePortMap->Add( new TObjString("feptpcco16"), new TObjString("54428"));
+// fBasePortMap->Add( new TObjString("feptpcci16"), new TObjString("54432"));
+// fBasePortMap->Add( new TObjString("feptpcco17"), new TObjString("54436"));
+// fBasePortMap->Add( new TObjString("feptpcco14"), new TObjString("54556"));
+// fBasePortMap->Add( new TObjString("feptpcci14"), new TObjString("54560"));
+// fBasePortMap->Add( new TObjString("feptpcco15"), new TObjString("54564"));
+// fBasePortMap->Add( new TObjString("feptpcco12"), new TObjString("54684"));
+// fBasePortMap->Add( new TObjString("feptpcci12"), new TObjString("54688"));
+// fBasePortMap->Add( new TObjString("feptpcco13"), new TObjString("54692"));
+// fBasePortMap->Add( new TObjString("feptpcco10"), new TObjString("54812"));
+// fBasePortMap->Add( new TObjString("feptpcci10"), new TObjString("54816"));
+// fBasePortMap->Add( new TObjString("feptpcco11"), new TObjString("54820"));
+// fBasePortMap->Add( new TObjString("feptpcco08"), new TObjString("54940"));
+// fBasePortMap->Add( new TObjString("feptpcci08"), new TObjString("54944"));
+// fBasePortMap->Add( new TObjString("feptpcco09"), new TObjString("54948"));
+// fBasePortMap->Add( new TObjString("feptpcco06"), new TObjString("55068"));
+// fBasePortMap->Add( new TObjString("feptpcci06"), new TObjString("55072"));
+// fBasePortMap->Add( new TObjString("feptpcco07"), new TObjString("55076"));
+// fBasePortMap->Add( new TObjString("feptpcco04"), new TObjString("55196"));
+// fBasePortMap->Add( new TObjString("feptpcci04"), new TObjString("55200"));
+// fBasePortMap->Add( new TObjString("feptpcco05"), new TObjString("55204"));
+// fBasePortMap->Add( new TObjString("feptpcco02"), new TObjString("55324"));
+// fBasePortMap->Add( new TObjString("feptpcci02"), new TObjString("55328"));
+// fBasePortMap->Add( new TObjString("feptpcco03"), new TObjString("55332"));
+// fBasePortMap->Add( new TObjString("feptpcco00"), new TObjString("55452"));
+// fBasePortMap->Add( new TObjString("feptpcci00"), new TObjString("55456"));
+// fBasePortMap->Add( new TObjString("feptpcco01"), new TObjString("55460"));
+// fBasePortMap->Add( new TObjString("fepspd0"), new TObjString("57752"));
+// fBasePortMap->Add( new TObjString("fepspd1"), new TObjString("57756"));
+// fBasePortMap->Add( new TObjString("fepspd2"), new TObjString("57760"));
+// fBasePortMap->Add( new TObjString("fepspd3"), new TObjString("57764"));
+// fBasePortMap->Add( new TObjString("fepspd4"), new TObjString("57768"));
+// fBasePortMap->Add( new TObjString("fepssd0"), new TObjString("57880"));
+// fBasePortMap->Add( new TObjString("fepssd1"), new TObjString("57884"));
+// fBasePortMap->Add( new TObjString("fepssd2"), new TObjString("57888"));
+// fBasePortMap->Add( new TObjString("fepssd3"), new TObjString("57892"));
+// fBasePortMap->Add( new TObjString("feptriggerdet"), new TObjString("58140"));
+// fBasePortMap->Add( new TObjString("fepfmdaccorde"), new TObjString("58144"));
+// fBasePortMap->Add( new TObjString("fephmpid0"), new TObjString("58264"));
+// fBasePortMap->Add( new TObjString("fephmpid1"), new TObjString("58268"));
+// fBasePortMap->Add( new TObjString("fephmpid2"), new TObjString("58272"));
+// fBasePortMap->Add( new TObjString("fephmpid3"), new TObjString("58276"));
+// fBasePortMap->Add( new TObjString("fephltout0"), new TObjString("58400"));
+// fBasePortMap->Add( new TObjString("fephltout1"), new TObjString("58404"));
+// fBasePortMap->Add( new TObjString("fepphos2"), new TObjString("58656"));
+// fBasePortMap->Add( new TObjString("fepphos3"), new TObjString("58660"));
+// fBasePortMap->Add( new TObjString("fepphos4"), new TObjString("58664"));
+// fBasePortMap->Add( new TObjString("fepdimutrg"), new TObjString("58784"));
+// fBasePortMap->Add( new TObjString("fepdimutrk1"), new TObjString("58904"));
+// fBasePortMap->Add( new TObjString("fepdimutrk2"), new TObjString("58908"));
+// fBasePortMap->Add( new TObjString("fepdimutrk3"), new TObjString("58912"));
+// fBasePortMap->Add( new TObjString("fepdimutrk4"), new TObjString("58916"));
+// fBasePortMap->Add( new TObjString("fepdimutrk5"), new TObjString("58920"));
+
+}
+
+//##################################################################################
+void AliEveHOMERSrcTranslator::SetupObjectMap () {
+ // Setup hostname to port mapping
+
+ fObjectMap = new TMap();
+ // fObjectMap->SetOwnerKeyValue();
+
+ SetupObjectMapTPC();
+ SetupObjectMapTRD();
+ SetupObjectMapPHOS();
+ SetupObjectMapDIMUON();
+}
+
+//##################################################################################
+void AliEveHOMERSrcTranslator::SetupObjectMapTPC() {
+ //Setup the Object mapping for TPC
+
+ TMap* objectMap = new TMap();
+ fObjectMap->Add( new TObjString("TPC"), objectMap );
+
+ SetupObjectMapCommon( objectMap );
+
+ objectMap->Add( new TObjString("CF"), new AliEveHOMERSrcObject( "AliHLTTPCClusterDataFormat", "CLUSTERS", 0 ) );
+ objectMap->Add( new TObjString("RelayCF"), new AliEveHOMERSrcObject( "AliHLTTPCClusterDataFormat", "CLUSTERS", 0 ) );
+ objectMap->Add( new TObjString("CalibPedestal"), new AliEveHOMERSrcObject( "AliTPCCalibPedestal", "HIS_CAL", 0 ) );
+ objectMap->Add( new TObjString("CalibPulser"), new AliEveHOMERSrcObject( "AliTPCCalibPulser", "HIS_CAL", 0 ) );
+ objectMap->Add( new TObjString("ESDConv"), new AliEveHOMERSrcObject( "TTree", "ESD_TREE", 0 ) );
+ objectMap->Add( new TObjString("ESDCM"), new AliEveHOMERSrcObject( "TTree", "ESD_TREE", 0 ) );
+ objectMap->Add( new TObjString("ESDCA"), new AliEveHOMERSrcObject( "TTree", "ESD_TREE", 0 ) );
+ objectMap->Add( new TObjString("RelayESD"), new AliEveHOMERSrcObject( "TTree", "ESD_TREE", 0 ) );
+ objectMap->Add( new TObjString("KRCF"), new AliEveHOMERSrcObject( "TH1F", "ROOTHIST", 0 ) );
+ objectMap->Add( new TObjString("RelayKR"), new AliEveHOMERSrcObject( "TH1F", "ROOTHIST", 0 ) );
+ objectMap->Add( new TObjString("CLHI"), new AliEveHOMERSrcObject( "TH1F", "ROOTHIST", 0 ) );
+ objectMap->Add( new TObjString("RelayCLHI"), new AliEveHOMERSrcObject( "TH1F", "ROOTHIST", 0 ) );
+ objectMap->Add( new TObjString("NM"), new AliEveHOMERSrcObject( "TH1F", "ROOTHIST", 0 ) );
+ objectMap->Add( new TObjString("HH"), new AliEveHOMERSrcObject( "TH1F", "ROOTHIST", 0 ) );
+
+}
+
+//##################################################################################
+void AliEveHOMERSrcTranslator::SetupObjectMapTRD(){
+ //Setup the Object mapping for TRD
+
+ TMap* objectMap = new TMap();
+ fObjectMap->Add( new TObjString("TRD"), objectMap );
+
+ SetupObjectMapCommon( objectMap );
+
+}
+
+//##################################################################################
+void AliEveHOMERSrcTranslator::SetupObjectMapPHOS(){
+ //Setup the Object mapping for PHOS
+
+ TMap* objectMap = new TMap();
+ fObjectMap->Add( new TObjString("PHOS"), objectMap );
+
+ SetupObjectMapCommon( objectMap );
+
+
+}
+
+//##################################################################################
+void AliEveHOMERSrcTranslator::SetupObjectMapDIMUON(){
+ //Setup the Object mapping for DIMUON
+
+ TMap* objectMap = new TMap();
+ fObjectMap->Add( new TObjString("MUON"), objectMap );
+
+ objectMap->Add( new TObjString("RECHITS"), new AliEveHOMERSrcObject( "", "RECHITS", 0 ) );
+ objectMap->Add( new TObjString("TRIGRECS"), new AliEveHOMERSrcObject( "", "TRIGRECS", 0 ) );
+ objectMap->Add( new TObjString("DECIDSIN"), new AliEveHOMERSrcObject( "", "DECIDSIN", 0 ) );
+ objectMap->Add( new TObjString("DECIDPAR"), new AliEveHOMERSrcObject( "", "DECIDPAR", 0 ) );
+ objectMap->Add( new TObjString("MANTRACK"), new AliEveHOMERSrcObject( "", "MANTRACK", 0 ) );
+
+
+ SetupObjectMapCommon( objectMap );
+
+
+}
+
+//##################################################################################
+void AliEveHOMERSrcTranslator::SetupObjectMapCommon( TMap* objectMap) {
+ // Setup the common Object mappings
+
+ objectMap->Add( new TObjString("RP"), new AliEveHOMERSrcObject( "", "DDL_RAW", 0 ) );
+ objectMap->Add( new TObjString("FP"), new AliEveHOMERSrcObject( "", "DDL_RAW", 0 ) );
+ objectMap->Add( new TObjString("Relay"), new AliEveHOMERSrcObject( "", "DDL_RAW", 0 ) );
+}
+
+
+
--- /dev/null
+//-*- Mode: C++ -*-
+// $Id$
+// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
+
+/**************************************************************************
+ * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
+ * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
+ * full copyright notice. *
+ **************************************************************************/
+
+#ifndef ALIEVEHOMERSRCTRANSLATOR_H
+#define ALIEVEHOMERSRCTRANSLATOR_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+/** @file AliEveHOMERSrcTranslator.h
+ @author Jochen Thaeder
+ @date
+ @brief Src Translator of HomerManger
+*/
+
+#include "TString.h"
+#include "TDOMParser.h"
+#include "TXMLNode.h"
+#include "TList.h"
+
+#include "AliEveHOMERSourceList.h"
+#include "AliHLTHOMERSourceDesc.h"
+
+#include "TMap.h"
+
+class AliEveHOMERSrcTranslator : public TObject
+{
+public:
+
+ /*
+ * ---------------------------------------------------------------------------------
+ * Constructor / Destructor
+ * ---------------------------------------------------------------------------------
+ */
+
+ /** constructor */
+ AliEveHOMERSrcTranslator( TString realm );
+
+ /** destructor */
+ virtual ~AliEveHOMERSrcTranslator();
+
+ /*
+ * ---------------------------------------------------------------------------------
+ * Setter - public
+ * ---------------------------------------------------------------------------------
+ */
+
+ /** Sets realm ( which can be ACR, GPN, HLT, KIP ) */
+ void SetRealm( TString s ) { fRealm = s; } // Sets realm ( which can be ACR, GPN, HLT, KIP )
+
+ /*
+ * ---------------------------------------------------------------------------------
+ * Translation - public
+ * ---------------------------------------------------------------------------------
+ */
+
+ /** Resolve Information of nodename and port for source which has to be used by HOMER */
+ Int_t Translate( TString Nodename, TString xmlPort, TString &hostname, Int_t &port );
+
+ /** Apply corrections for differnt detectors and subdetectors */
+ void ApplyDetectorCorrections( TString &detector, TString &subDetector);
+
+ /** Fill SourceDesc with object Information */
+ Int_t FillSourceDesc( AliHLTHOMERSourceDesc* source, TString name );
+
+ ///////////////////////////////////////////////////////////////////////////////////
+
+private:
+
+ AliEveHOMERSrcTranslator(const AliEveHOMERSrcTranslator&); // Not implemented.
+ AliEveHOMERSrcTranslator& operator=(const AliEveHOMERSrcTranslator&); // Not implemented.
+
+ /*
+ * ---------------------------------------------------------------------------------
+ * Source Resolving - private
+ * ---------------------------------------------------------------------------------
+ */
+
+ /** Resolve hostname out of XML and realm */
+ TString ResolveHostname( TString nodename );
+
+ /** Resolve port out of XML and realm */
+ Int_t ResolvePort( TString srcPort, TString srcHostname );
+
+ /*
+ * ---------------------------------------------------------------------------------
+ * Setup - private
+ * ---------------------------------------------------------------------------------
+ */
+
+ /** Setup the BasePort mapping */
+ void SetupPortMap();
+
+ /** Setup the Object mapping */
+ void SetupObjectMap();
+
+ /** Setup the Object mapping for TPC */
+ void SetupObjectMapTPC();
+
+ /** Setup the Object mapping for TRD */
+ void SetupObjectMapTRD();
+
+ /** Setup the Object mapping for PHOS */
+ void SetupObjectMapPHOS();
+
+ /** Setup the Object mapping for DIMUON */
+ void SetupObjectMapDIMUON();
+
+ /** Setup the common Object mappings */
+ void SetupObjectMapCommon( TMap* objectMap );
+
+ /*
+ * ---------------------------------------------------------------------------------
+ * Members - private
+ * ---------------------------------------------------------------------------------
+ */
+
+ TMap* fBasePortMap; //! Map of BasePorts on the gateways
+
+ TMap* fObjectMap; //! Map of Objects and DataTypes
+
+ TString fRealm; // Indicates the realm where AliEve can connect to ( HLT, GPN, ACR, KIP );
+
+ /*
+ * ---------------------------------------------------------------------------------
+ * Constants - private
+ * ---------------------------------------------------------------------------------
+ */
+
+ static const Int_t kNodeBasePort = 49152; // BasePort of TCP ports on the nodes
+
+ ClassDef(AliEveHOMERSrcTranslator, 0); // Translate HLT data-sources.
+};
+
+#endif
--- /dev/null
+// $Id:
+// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
+// Author: Jochen Thaeder <thaeder@kip.uni-heidelberg.de> *
+// for The ALICE HLT Project. *
+
+//-*- Mode: C++ -*-
+
+/** @file AliEveHOMERXMLHandler.cxx
+ @author Jochen Thaeder
+ @date
+ @brief Src Translator of HomerManger
+*/
+
+#if __GNUC__>= 3
+ using namespace std;
+#endif
+
+#define use_aliroot
+#define use_root
+#define ROWHOUGHPARAMS
+#define use_reconstruction
+#define use_newio
+#define ROOTVERSION "unchecked"
+#define ALIROOTVERSION "unchecked"
+#define __ROOT__
+#define USE_ALILOG
+#define LINUX
+
+#define EVE_DEBUG 1
+// -- -- -- -- -- -- --
+#include "AliEveHOMERSource.h"
+#include "AliEveHOMERXMLHandler.h"
+// -- -- -- -- -- -- --
+#include "TString.h"
+#include <TApplication.h>
+#include "Riostream.h"
+#include "TXMLAttr.h"
+#include "TCollection.h"
+#include "TList.h"
+#include "TObjString.h"
+#include "TObjArray.h"
+// -- -- -- -- -- -- --
+#include "AliLog.h"
+
+
+
+//______________________________________________________________________________
+//
+// Manage connections to HLT data-sources.
+
+ClassImp(AliEveHOMERXMLHandler)
+
+/*
+ * ---------------------------------------------------------------------------------
+ * Constructor / Destructor
+ * ---------------------------------------------------------------------------------
+ */
+
+//##################################################################################
+ AliEveHOMERXMLHandler::AliEveHOMERXMLHandler( TString xmlFile ) :
+ fXMLFile(xmlFile),
+ fXMLParser(NULL),
+ fRootNode(NULL),
+ fSrcTranslator(NULL),
+ fSourceList(NULL)
+{
+ // This Class should handle the HLT XML config file.
+ // host the XML parser, and do all searching in the
+ // XML File
+
+ Initialize();
+}
+
+//##################################################################################
+AliEveHOMERXMLHandler::~AliEveHOMERXMLHandler() {
+ // The destructor
+
+ if ( fXMLParser )
+ delete fXMLParser;
+ fXMLParser = NULL;
+
+ if ( fSrcTranslator != NULL )
+ delete fSrcTranslator;
+ fSrcTranslator = NULL;
+
+}
+
+//##################################################################################
+Int_t AliEveHOMERXMLHandler::Initialize() {
+ // Initialize the XML Parser, set the root node
+
+ Int_t iResult = 0 ;
+
+ // -- Initialize XML parser
+ if ( fXMLParser != NULL )
+ delete fXMLParser;
+ fXMLParser = NULL;
+
+ fXMLParser = new TDOMParser();
+ fXMLParser->SetValidate( kFALSE );
+
+ iResult = fXMLParser->ParseFile( fXMLFile );
+ if ( iResult < 0 ) {
+ iResult = 1;
+ AliError( Form("Parsing file with error: %s", fXMLParser->GetParseCodeMessage( fXMLParser->GetParseCode() )) );
+ return iResult;
+ }
+
+ // -- Set root node
+ fRootNode = fXMLParser->GetXMLDocument()->GetRootNode();
+
+ // -- Initialize Src Translator
+ fSrcTranslator = new AliEveHOMERSrcTranslator( "GPN" );
+
+ return iResult;
+}
+
+//##################################################################################
+Int_t AliEveHOMERXMLHandler::FillSourceList(TList *srcList) {
+ // Files the source list of HOMER sources
+
+ fSourceList = srcList;
+
+ Int_t iResult = 0;
+
+ TXMLNode * node = NULL;
+ TXMLNode * prevNode = fRootNode->GetChildren();
+
+ // -- Loop over all nodes
+ while ( ( node = prevNode->GetNextNode() ) ) {
+ prevNode = node;
+
+ // -- Find only "Process" nodes, otherwise continue to next node
+ if ( strcmp( node->GetNodeName(), "Proc" ) != 0 )
+ continue;
+
+ // -- Get Attributes of current node
+ TList *attrList = node->GetAttributes();
+ TXMLAttr *attr = 0;
+ TIter next(attrList);
+
+ while ( ( attr = (TXMLAttr*)next() ) ) {
+
+ // -- Find "ID" attribute, otherwise continue to next attribute
+ if ( strcmp( attr->GetName(), "ID" ) != 0 )
+ continue;
+
+ TString nodeId( attr->GetValue() );
+
+ // -- Find only TDS processes
+ TObjArray * nodeIdTok = nodeId.Tokenize("_");
+
+ for ( Int_t ii=0 ; ii < nodeIdTok->GetEntries() ; ii++ ) {
+
+ if ( ! ( (TObjString*) nodeIdTok->At(ii) )->GetString().CompareTo("TDS") ) {
+
+ iResult = AddSourceTDS( node->GetChildren() );
+ if ( iResult ) {
+ AliError( Form("Error processing TDS process : %s", nodeId.Data()) );
+ }
+
+ }
+
+ } // for ( Int_t ii=0 ; ii < nodeIdTok->GetEntries() ; ii++ ) {
+
+ } // while ( ( attr = (TXMLAttr*)next() ) ) {
+
+ } // while ( ( node = prevNode->GetNextNode() ) ) {
+
+ return iResult;
+}
+
+//##################################################################################
+Int_t AliEveHOMERXMLHandler::AddSourceTDS( TXMLNode * xmlNode ) {
+ // Get Information out of a TDS process in XML file
+ // * param xmlNode Pointer to childs of TDS node
+ // * return 0 on sucess, > 0 on errorsee header file for class documentation
+
+ Int_t iResult = 0;
+
+ TXMLNode * attrNode = NULL;
+ TXMLNode * prevNode = xmlNode;
+
+ TString xmlHostname = 0;
+ TString xmlPort = 0;
+
+ TString hostname = 0;
+ Int_t port = 0;
+
+ // -- Get hostname and port from TDS node out of XML
+ while ( ( attrNode = prevNode->GetNextNode() ) ) {
+ prevNode = attrNode;
+
+ // -- Get port out of the commandline
+ if ( strcmp( attrNode->GetNodeName(), "Cmd" ) == 0 ) {
+ TString cmd( attrNode->GetText() );
+
+ TObjArray * cmdTok = cmd.Tokenize(" ");
+ xmlPort = ((TObjString*) cmdTok->At(2))->GetString();
+ }
+ // -- Get hostname
+ else if ( strcmp( attrNode->GetNodeName(), "Node" ) == 0 )
+ xmlHostname = attrNode->GetText();
+
+ } // while ( ( attrNode = prevNode->GetNextNode() ) ) {
+
+ TString xmlNodename = GetNodename( xmlHostname );
+
+ // -- Resolve hostname and port information --
+ iResult = fSrcTranslator->Translate( xmlNodename, xmlPort, hostname, port );
+ if ( iResult ) {
+ if ( iResult == 1 )
+ { AliError( Form("Error resolving hostname : %s", xmlHostname.Data()) ); }
+ else if ( iResult == 2 )
+ { AliError( Form("Error resolving port : %s", xmlPort.Data()) ); }
+ return iResult;
+ }
+
+ // -- Reset loop to TDS node
+ prevNode = xmlNode;
+
+ // -- Get Sources out of XML, resolve sources, add to sources List
+ while ( ( attrNode = prevNode->GetNextNode() ) ) {
+ prevNode = attrNode;
+
+ // Find only "Parent" tags, otherwise continue to next tag
+ if ( strcmp( attrNode->GetNodeName(), "Parent" ) != 0 )
+ continue;
+
+ TString xmlParent = attrNode->GetText();
+
+ AliHLTHOMERSourceDesc * source = new AliHLTHOMERSourceDesc( hostname, port );
+
+ if ( FillSourceInformation( xmlParent, source ) ) {
+ AliError( Form("Error resolving source : %s", xmlParent.Data()) );
+ iResult = 3;
+ delete source;
+ }
+ else {
+ fSourceList->Add( source );
+#if EVE_DEBUG
+ AliInfo( Form("New Source added : %s", xmlParent.Data()) );
+#endif
+ }
+
+ } // while ( ( attrNode = prevNode->GetNextNode() ) ) {
+
+ return iResult;
+}
+
+//##################################################################################
+Int_t AliEveHOMERXMLHandler::FillSourceInformation( TString xmlParent, AliHLTHOMERSourceDesc *source ) {
+ // Resolve information of source
+ // * param xmlParent ParentString out of the XML
+ // * param source Return the filled AliHLTHOMERSourceDesc object
+ // * return 0 on sucess, 1 on errorsee header file for class documentation
+
+ Int_t iResult = 0;
+
+ if ( ! xmlParent.Contains( "_" ) ) {
+ AliError( Form("Source %s could not be resolved", xmlParent.Data() ) );
+ iResult = 1;
+
+ return iResult;
+ }
+
+ // -- Get detector / subDetector / subSubDetector
+ TObjArray * parentTokens = xmlParent.Tokenize("_");
+ Int_t nParentTokens = parentTokens->GetEntries();
+
+ TString detector = ((TObjString*) parentTokens->At(0) )->GetString();
+ TString subDetector = "";
+ TString subSubDetector = "";
+ TString name = ((TObjString*) parentTokens->At(1) )->GetString();
+
+ if ( nParentTokens == 3 )
+ subDetector = ((TObjString*) parentTokens->At(2) )->GetString();
+ else if ( nParentTokens == 4 ) {
+ subDetector = ((TObjString*) parentTokens->At(2) )->GetString();
+ subSubDetector = ((TObjString*) parentTokens->At(3) )->GetString();
+ }
+
+ // -- Apply detector corrections
+ fSrcTranslator->ApplyDetectorCorrections( detector, subDetector );
+
+ // -- Remove Leading '0' in sub detector and subsubdetector
+ subDetector.Remove( TString::kLeading, '0' );
+ subSubDetector.Remove( TString::kLeading, '0' );
+
+ // -- Set detector / subDetector / subSubDetector
+ source->SetDetectors( detector, subDetector, subSubDetector );
+
+ // -- Fill dataType / specification / className
+ iResult = fSrcTranslator->FillSourceDesc( source, name );
+
+#if EVE_DEBUG
+ AliInfo( Form("Set Source %s , Type %s, ClassName %s .", name.Data(),
+ source->GetDataType().Data(), source->GetClassName().Data()) );
+ AliInfo( Form(" Detector %s , SubDetector : %s, SubSubDetector %s .",
+ detector.Data(), subDetector.Data(), subSubDetector.Data()) );
+#endif
+
+ return iResult;
+}
+
+//##################################################################################
+TString AliEveHOMERXMLHandler::GetNodename( TString xmlHostname ) {
+ // Get xml nodename out of xml hostname
+
+ TString nodename = 0;
+
+ TXMLNode * node = NULL;
+ TXMLNode * prevNode = fRootNode->GetChildren();
+
+ while ( node = prevNode->GetNextNode() ) {
+ prevNode = node;
+
+ // -- Find only "Node" nodes, otherwise continue
+ if ( strcmp( node->GetNodeName(), "Node" ) != 0 )
+ continue;
+
+ // -- Get Attributes of current node
+ TList *attrList = node->GetAttributes();
+ TXMLAttr *attr = 0;
+ TIter next(attrList);
+
+ TString nodeId = 0;
+
+ // Get "nodeID" and "nodeName" of this "Node" node
+ while ( ( attr = (TXMLAttr*)next() ) ) {
+ if ( strcmp( attr->GetName(), "ID" ) == 0 )
+ nodeId = attr->GetValue();
+ else if ( strcmp( attr->GetName(), "hostname" ) == 0 )
+ nodename = attr->GetValue();
+ }
+
+ // -- if this is not the correct "nodeID" continue
+ if ( nodeId != xmlHostname )
+ continue;
+
+ break;
+
+ } // while ( node = prevNode->GetNextNode() ) {
+
+ return nodename;
+}
--- /dev/null
+// $Id:
+// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
+
+/**************************************************************************
+ * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
+ * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
+ * full copyright notice. *
+ **************************************************************************/
+
+//-*- Mode: C++ -*-
+#ifndef ALIEVEHOMERXMLHANDLER_H
+#define ALIEVEHOMERXMLHANDLER_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+/** @file AliEveHOMERXMLHandler.h
+ @author Jochen Thaeder
+ @date
+ @brief XML Handler for HomerManger
+*/
+
+#include "TString.h"
+#include "TDOMParser.h"
+#include "TXMLNode.h"
+#include "TList.h"
+
+#include "AliEveHOMERSrcTranslator.h"
+#include "AliHLTHOMERSourceDesc.h"
+
+
+class AliEveHOMERXMLHandler : public TObject
+{
+public:
+
+ /*
+ * ---------------------------------------------------------------------------------
+ * Constructor / Destructor
+ * ---------------------------------------------------------------------------------
+ */
+
+ /** constructor */
+ AliEveHOMERXMLHandler( TString xmlFile );
+
+ /** destructor */
+ virtual ~AliEveHOMERXMLHandler();
+
+ /*
+ * ---------------------------------------------------------------------------------
+ * Source List - public
+ * ---------------------------------------------------------------------------------
+ */
+
+ /** Fill's source list, with entries */
+ Int_t FillSourceList(TList *srcList);
+
+ /** Sets realm ( which can be ACR, GPN, HLT, KIP ) */
+ void SetRealm( TString s ) { fSrcTranslator->SetRealm(s); } // Sets realm ( which can be ACR, GPN, HLT, KIP )
+
+
+ ///////////////////////////////////////////////////////////////////////////////////
+
+private:
+
+ AliEveHOMERXMLHandler(const AliEveHOMERXMLHandler&); // Not implemented.
+ AliEveHOMERXMLHandler& operator=(const AliEveHOMERXMLHandler&); // Not implemented.
+
+ /*
+ * ---------------------------------------------------------------------------------
+ * Source Resolving - private
+ * ---------------------------------------------------------------------------------
+ */
+
+ /** Initialize the XML Handler, create the SrcTranslator */
+ Int_t Initialize();
+
+ /** Get Information out of a TDS process in XML file */
+ Int_t AddSourceTDS( TXMLNode * xmlNode );
+
+ /** Get xml nodename out of xml hostname */
+ TString GetNodename( TString xmlHostname );
+
+ /** Resolve information of source */
+ Int_t FillSourceInformation( TString xmlParent, AliHLTHOMERSourceDesc * source );
+
+ /*
+ * ---------------------------------------------------------------------------------
+ * Members - private
+ * ---------------------------------------------------------------------------------
+ */
+
+ // == XML parser ==
+ TString fXMLFile; // XML input file
+ TDOMParser* fXMLParser; //! XML parser into DOM model
+ TXMLNode* fRootNode; //! Root node of parsed config file
+
+ // == Source Translator ==
+ AliEveHOMERSrcTranslator* fSrcTranslator; //! Translates HOMER sources to real hostname,port
+
+ // == Sources List ==
+ TList* fSourceList; //! List to HOMER sources
+
+ ClassDef(AliEveHOMERXMLHandler, 0); // Handles HLT xml sources.
+};
+
+#endif
#pragma link C++ class AliEveHOMERManagerEditor+;
#pragma link C++ class AliEveHOMERSource+;
#pragma link C++ class AliEveHOMERSourceList+;
-
#pragma link C++ class AliEveHOMERSourceMap+;
+
+#pragma link C++ class AliEveHOMERSrcTranslator+;
+#pragma link C++ class AliEveHOMERSrcObject+;
+
+#pragma link C++ class AliEveHOMERXMLHandler+;
--- /dev/null
+int ReadESDTree(TString fileName = "ESD_TPC.root")
+{
+ TFile *esdFile = TFile::Open(fileName.Data());
+ AliESDEvent *esdEvent = new AliESDEvent();
+ TTree *tr = (TTree*)esdFile->Get("esdTree");
+ esdEvent->ReadFromTree(tr);
+ tr->StartViewer();
+
+ return 0;
+}
#include "AliEveMUONData.h"
#include "AliEveMUONChamber.h"
+#include "AliCDBManager.h"
#include "TEveGeoShapeExtract.h"
#include "TEveGeoNode.h"
TFile f("$ALICE_ROOT/EVE/alice-data/gentle_geo.root");
TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) f.Get("Gentle");
TEveGeoShape* gsre = TEveGeoShape::ImportShapeExtract(gse, 0);
+ gEve->AddGlobalElement(gsre);
f.Close();
TEveElement* elTRD = gsre->FindChild("TRD+TOF");
return gsre;
}
+//#if 0
+
Int_t MUON_geom()
{
+ gStyle->SetPalette(1, 0);
+ gEve->DisableRedraw();
- AliEveMUONChamber* mucha[14];
+ AliCDBManager *cdb = AliCDBManager::Instance();
+ cdb->SetDefaultStorage("local://$ALICE_ROOT");
+ cdb->SetRun(0);
+ AliEveMUONData *g_muon_data = new AliEveMUONData;
- AliEveMUONData * g_muon_data = new AliEveMUONData;
+ TEveElementList* l = new TEveElementList("MUONChambers");
+ l->SetTitle("MUON chambers");
+ l->SetMainColor(2);
+ gEve->AddGlobalElement(l);
- gStyle->SetPalette(1, 0);
+ for (Int_t ic = 0; ic < 14; ic++)
+ {
+ AliEveMUONChamber* mucha = new AliEveMUONChamber(ic);
- gEve->DisableRedraw();
+ mucha->SetFrameColor(2);
+ mucha->SetChamberID(ic);
- TEveElementList* mul = new TEveElementList("MUONChambers");
- TEveElementList* muChData = new TEveElementList("MUONChamberData");
- mul->SetTitle("MUON chambers");
- mul->SetMainColor(3);
- gEve->AddGlobalElement(mul);
- gEve->AddElement(muChData);
-
- for (Int_t ic = 0; ic < 14; ic++){
-
- mucha[ic] = new AliEveMUONChamber(ic);
-
- mucha[ic]->SetFrameColor(3);
- mucha[ic]->SetChamberID(ic);
-
- mucha[ic]->SetDataSource(g_muon_data);
-
- gEve->AddElement(mucha[ic], mul);
-
+ mucha->SetDataSource(g_muon_data);
+
+ gEve->AddElement(mucha, l);
}
gEve->Redraw3D(kTRUE);
gEve->EnableRedraw();
+
+
return true;
}
+
+//#endif
* See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
* full copyright notice. *
**************************************************************************/
+
#include <Rtypes.h>
#include "TEveElement.h"
#include "TPolyMarker3D.h"
Float_t fSigmaY2; //error (former width) of the clusters
Float_t fSigmaZ2; //error (former width) of the clusters
UInt_t fCharge;
+ UInt_t fMaxQ; // QMax of cluster
Bool_t fUsed; // only used in AliHLTTPCDisplay
Int_t fTrackN; // only used in AliHLTTPCDisplay
};
//
// nextEvent() will get next event from HOMER.
-#include "TTimer.h"
-#include "TRandom.h"
-#include "TVirtualPad.h"
class AliRawReaderMemory;
-
class AliEveHOMERManager;
class AliHLTHOMERBlockDesc;
class AliEveTPCSector3D;
class AliEveITSDigitsInfo;
+//***********************************************************
+#include "TTimer.h"
+#include "TRandom.h"
+#include "TVirtualPad.h"
#include "TGLViewer.h"
#include "TThread.h"
#include "TGFileBrowser.h"
#include "TStyle.h"
#include "TList.h"
#include "TDirectory.h"
-
+//***********************************************************
#include "TEveManager.h"
#include "TEvePointSet.h"
#include "TEveTrack.h"
#include "TEveVSDStructs.h"
#include "TEveTrackPropagator.h"
+#include "TEvePointSet.h"
+#include "TEveScene.h"
#include "TEveElement.h"
-
+// #include "TEveElementList.h"
+#include "TEveEventManager.h"
+//***********************************************************
#include "AliESDEvent.h"
#include "AliCDBManager.h"
#include "AliRawReaderMemory.h"
-
+#include "AliTPCRawStream.h"
+#include "AliGeomManager.h"
+//***********************************************************
#include "AliEveHOMERManager.h"
-#include "AliEveTPCLoader.h"
+#include "AliEveTPCLoader.h"
#include "AliEveTPCData.h"
#include "AliEveITSDigitsInfo.h"
#include "AliEveITSModule.h"
-
+//***********************************************************
#include "AliHLTHOMERBlockDesc.h"
-#include "AliTPCRawStream.h"
-
+#include "AliHLTHOMERReader.h"
//***********************************************************
-#include "DIMUONRawReader.C"
-
-#include "TEvePointSet.h"
-#include "TEveScene.h"
-#include "AliEveMUONData.h"
-#include "AliEveMUONChamber.h"
-#include "AliEveMUONChamberData.h"
-
-#include "AliGeomManager.h"
-
-#include "AliMpCDB.h"
-#include "AliMpDDLStore.h"
-#include "AliMpDetElement.h"
-#include "AliMpDEIterator.h"
-#include "AliMpVSegmentation.h"
-#include "AliMUONGeometryTransformer.h"
-#include "AliMpSegmentation.h"
-#include "AliMUONCalibrationData.h"
-#include "AliMUONVCalibParam.h"
-#include "TEveEventManager.h"
-#include "AliMpTriggerCrate.h"
-#include "AliMpLocalBoard.h"
-#include "AliMUONGeometryDetElement.h"
-
+#include "hlt_structs.C"
+#include "TFile.h"
//***********************************************************
+#include <AliHLTMUONUtils.h>
+#include "AliHLTMUONDataBlockReader.h"
+#include "tracking-ca/AliHLTTPCCATrackParam.h"
// -- globals --
-
+
AliEveTPCLoader* gTPCLoader = 0;
AliEveTPCData* gTPCData = 0;
TEvePointSet* gTPCClusters = 0;
AliRawReaderMemory* gMemReader = 0;
AliEveHOMERManager* gHomerManager = 0;
+TEvePointSet* gMUONClusters = 0;
+Double_t gSolenoidField = 5;
//***********************************************************
-map <UInt_t,AliHLTMUONTrackerMappingData> gDimuTrackerMapping;
-vector<UInt_t> gDimuTrackerDataList;
-vector<AliHLTMUONTriggerPointData> gDimuTriggerDataList;
-AliHLTMUONTriggerMappingData gDimuTriggerMapping[2];
-Bool_t gMUONRawData = false;
-
-
Int_t globMaxPoint = 0 ;
//***********************************************************
TGLViewer::ECameraType camera = TGLViewer::kCameraPerspXOZ;
//****************************************************************************
-Int_t nextEvent(Int_t ADCCut = 6);
+Int_t nextEvent();
//****************************************************************************
Int_t processSPDRawData( AliHLTHOMERBlockDesc* block );
Int_t processTPCClusters( AliHLTHOMERBlockDesc* block );
Int_t processTPCTracks( AliHLTHOMERBlockDesc* block );
-//****************************************************************************
-Int_t initDiMuonMapping();
-Int_t initTrackerMapping() ;
-Int_t processDiMuonRawData( AliHLTHOMERBlockDesc* block );
-Int_t drawDiMuonRawData(Int_t);
+Int_t processMUONClusters( AliHLTHOMERBlockDesc* block );
//****************************************************************************
TEveTrack* makeESDTrack( TEveTrackPropagator* rnrStyle,
AliExternalTrackParam* tp = 0 );
//****************************************************************************
-void homer_display(Int_t run = 0) {
+void homer_display( Int_t run = 0) {
AliCDBManager::Instance()->SetRun(run);
AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");
gMemReader = new AliRawReaderMemory(0, 0);
gStyle->SetPalette(1, 0);
+ gEve->DisableRedraw();
// -- Create HOMER Manager
gHomerManager = new AliEveHOMERManager("/local/home/hlt/AliEVE-Config.xml");
- // -- Set Realm ( can be "GPN","ACR","HLT" )
+ // -- Set Realm ( can be "GPN","ACR","HLT","KIP" )
gHomerManager->SetRealm("ACR");
gEve->AddToListTree(gHomerManager, kTRUE);
// -- TPC Loader
gTPCLoader = new AliEveTPCLoader;
gTPCLoader->SetDoubleSR(kTRUE);
- gTPCLoader->SetInitParams(40, 900, 10, 100); // Sector params (mint, maxt, thr, maxval)
+ gTPCLoader->SetInitParams(40, 900, 2, 100); // Sector params (mint, maxt, thr, maxval)
// -- TPC Data
gTPCData = gTPCLoader->GetData();
gTPCData->SetLoadThreshold(0);
gTPCData->SetAutoPedestal(kFALSE); // For zero suppressed data.
- // -- Load MUON mapping
- initDiMuonMapping();
-
gEve->AddElement(gTPCLoader);
+
+ gEve->Redraw3D(0,1); // (0, 1)
+ gEve->EnableRedraw();
}
//****************************************************************************
-Int_t nextEvent(Int_t ADCCut) {
+Int_t nextEvent() {
Int_t iResult = 0;
+ gStyle->SetPalette(1, 0);
+ gEve->DisableRedraw();
+
// ** Get Next Event from HOMER
if ( gHomerManager->NextEvent() )
return ++iResult;
gITSDigits = NULL;
}
- if(gDimuTrackerDataList.size()>0)
- gDimuTrackerDataList.clear();
-
- if(gDimuTriggerDataList.size()>0)
- gDimuTriggerDataList.clear();
-
- for(Int_t ipoint=0;ipoint<globMaxPoint;ipoint++)
- point3d[ipoint].SetPoint(0,0.0,0.0,0.0);
+ if ( gMUONClusters ) gMUONClusters->Reset();
// ----------------------------------- foo A
// TList* hListKR = new TList;
// TList* hListCF = new TList;
- gDirectory = 0;
// ----------------------------------- foo A
TIter next(gHomerManager->GetBlockList());
AliHLTHOMERBlockDesc* block = 0;
while ((block = (AliHLTHOMERBlockDesc*)next())) {
+
+// printf ( "Det : %s\n" ,block->GetDetector().Data() );
+// printf ( "Datatype : %s\n" ,block->GetDataType().Data() );
- printf ( "Det : %s\n" ,block->GetDetector().Data() );
- printf ( "Datatype : %s\n" ,block->GetDataType().Data() );
- // +++ CLUSTERS BLOCK
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- if ( block->GetDataType().CompareTo("CLUSTERS") == 0 ) {
-
- // ** Initialize TPC Clusters
- if ( !gTPCClusters ) {
- gTPCClusters = new TEvePointSet("TPC Clusters");
- gTPCClusters->SetMainColor(kRed);
- gTPCClusters->SetMarkerStyle((Style_t)kFullDotSmall);
- gEve->AddElement(gTPCClusters);
- }
-
- // ** Process Clusters
- processTPCClusters( block );
- gTPCClusters->ElementChanged();
+ // -- TPC
+ // -----------------------------------------------------
+
+ if ( ! block->GetDetector().CompareTo("TPC") ){
+
+ // +++ CLUSTERS BLOCK
+ // +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+ if ( block->GetDataType().CompareTo("CLUSTERS") == 0 ) {
+ if ( !gTPCClusters ) {
+ gTPCClusters = new TEvePointSet("TPC Clusters");
+ gTPCClusters->SetMainColor(kRed);
+ gTPCClusters->SetMarkerStyle((Style_t)kFullDotSmall);
+ gEve->AddElement(gTPCClusters);
+ }
+
+ // ** Process Clusters
+ processTPCClusters( block );
+
+ gTPCClusters->ElementChanged();
+
+ }else if ( block->GetDataType().CompareTo("ESD_TREE") == 0 ) {
// +++ ESD BLOCK
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- } else if ( block->GetDataType().CompareTo("ESD_TREE") == 0 ) {
-
- // ** Initialize TPC Tracks
- if ( !gTPCTrack ) {
- gTPCTrack = new TEveTrackList("TPC Tracks");
- gTPCTrack->SetMainColor(kBlue);
- gEve->AddElement(gTPCTrack);
+ // ** Initialize TPC Tracks
+ if ( !gTPCTrack ) {
+ gTPCTrack = new TEveTrackList("TPC Tracks");
+ gTPCTrack->SetMainColor(kBlue);
+
+ gEve->AddElement(gTPCTrack);
- TEveTrackPropagator* rnrStyle = gTPCTrack->GetPropagator();
- rnrStyle->SetMagField( 0 );
- rnrStyle->SetFitDecay( 1 );
+ TEveTrackPropagator* rnrStyle = gTPCTrack->GetPropagator();
+ rnrStyle->SetMagField( 0 );
+ rnrStyle->SetFitDecay( 1 );
+ }
+ cout<<"SIZE : "<<block->GetSize()<<endl;
+ // ** Proces Tracks
+ processTPCTracks( block );
+ }else if ( block->GetDataType().CompareTo("DDL_RAW") == 0 ) {
+ processTPCRawData( block );
}
-
- // ** Proces Tracks
- processTPCTracks( block );
- // +++ RAW DATA BLOCK
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- } else if ( block->GetDataType().CompareTo("DDL_RAW") == 0 ) {
+ } else if ( ! block->GetDetector().CompareTo("MUON") ) {
+
+ // -- MUON
+ //-----------------------------------------------------
+ if ( (block->GetDataType().CompareTo("RECHITS") == 0) || (block->GetDataType().CompareTo("TRIGRECS") == 0) ) {
+
+// printf ( "Inside : Datatype : %s\n" ,block->GetDataType().Data() );
+// printf ( "Inside : DataSize : %d\n" ,block->GetSize() );
+ if ( !gMUONClusters ) {
+ gMUONClusters = new TEvePointSet("MUON RecHits");
+ gMUONClusters->SetMainColor(kBlue);
+ gMUONClusters->SetMarkerStyle(20);
+ gEve->AddElement(gMUONClusters);
+ }
+
+ // ** Process Clusters
+ processMUONClusters( block );
+
+ gMUONClusters->ElementChanged();
+
+ }//MUON Clusters
- // -- TPC
- // -----------------------------------------------------
- if ( ! block->GetDetector().CompareTo("TPC") )
- processTPCRawData( block );
+
+ } else if ( ! block->GetDetector().CompareTo("SPD") ) {
// -- SPD
// -----------------------------------------------------
- else if ( ! block->GetDetector().CompareTo("SPD") ) {
- // !!!!!! TODO add also other ITS detectors
+ if ( block->GetDataType().CompareTo("DDL_RAW") == 0 ) {
// ** Initialize SPD Digits
if ( !gITSDigits ) {
gITSDigits = new AliEveITSDigitsInfo();
}
-
+
processSPDRawData( block );
}
- // -- MUON
- // -----------------------------------------------------
- else if ( ! block->GetDetector().CompareTo("MUON") ) {
+ }else{
- if( processDiMuonRawData ( block ) )
- gMUONRawData = true;
- }
-
- // +++ KRYPTON HISTOGRAM BLOCK
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- } else if (block->GetDataType().CompareTo("KRPTHIST") == 0) {
-
-
-
-
- // ++ else
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- } else {
-
-
- printf ("This is nothing");
+ printf ("Detector \"%s\" has not been recognized",block->GetDetector().Data());
}
}
-
+
if ( gTPCLoader ) gTPCLoader->UpdateSectors( kTRUE );
if ( gTPCClusters ) gTPCClusters->ResetBBox();
if ( gTPCTrack ) gTPCTrack->MakeTracks();
if ( gITSDigits ) drawSPDRawData();
- if ( gMUONRawData ) drawDiMuonRawData ( ADCCut ) ;
-
- gEve->Redraw3D(0,1); // (0, 1)
- gMUONRawData = false;
+ if ( gMUONClusters ) gMUONClusters->ResetBBox();
+
+ gEve->Redraw3D(0,1); // (0, 1)
+ gEve->EnableRedraw();
+
return iResult;
}
-
//****************************************************************************
-Int_t processSPDRawData(AliHLTHOMERBlockDesc* block) {
- Int_t iResult = 0;
-
- Int_t partition = block->GetSubDetector().Atoi();
- Int_t eqId = partition;
-
- gMemReader->SetMemory( reinterpret_cast<UChar_t*> ( block->GetData() ), block->GetSize() );
- gMemReader->SetEquipmentID( eqId );
- gMemReader->Reset();
-
- gITSDigits->ReadRaw( gMemReader, 3);
-
- return iResult;
+//****************************************************************************
+//****************************************************************************
+void loopEvent() {
+ event_timer.SetCommand("nextEvent()");
+ event_timer.Start(6000);
}
//****************************************************************************
-Int_t drawSPDRawData() {
-
- Int_t iResult = 0;
-
- TString sSector;
- TString bsSector="Sector";
- TString sStave;
- TString bsStave="Stave";
-
- Int_t ndx=0;
- Int_t sector, stave, module;
-
- gEve->DisableRedraw();
-
- // ** first layer **
-
- TEveElementList* layer1 = new TEveElementList( "SPD0" );
- layer1->SetTitle( "SPDs' first layer" );
- layer1->SetMainColor(2);
- gEve->AddElement( layer1 );
-
- for ( sector=0; sector<10; sector++ ) {
- sSector = bsSector;
- sSector += sector;
-
- TEveElementList* relSector = new TEveElementList( sSector.Data() );
- relSector->SetMainColor(2);
- gEve->AddElement( relSector, layer1 );
-
- for ( stave=0; stave<2; stave++ ) {
- sStave = bsStave;
- sStave += stave;
-
- TEveElementList* relStave = new TEveElementList( sStave.Data() );
- relStave->SetMainColor(2);
- gEve->AddElement( relStave, relSector );
-
- for ( module=0; module<4; module++ ) {
-
- if ( gITSDigits->GetDigits( ndx, 0 ) &&
- gITSDigits->GetDigits( ndx, 0 )->GetEntriesFast() > 0) {
-
- AliEveITSModule* moduleITS = new AliEveITSModule( ndx, gITSDigits );
- gEve->AddElement( moduleITS, relStave );
- }
-
- ++ndx;
-
- } // for ( module=0; module<4; module++ ) {
- } // for ( stave=0; stave<2; stave++ ) {
- } // for ( sector=0; sector<10; sector++ ) {
-
- // ** second layer **
-
- TEveElementList* layer2 = new TEveElementList( "SPD1" );
- layer2->SetTitle( "SPDs' second layer" );
- layer2->SetMainColor(2);
- gEve->AddElement(layer2);
-
- for ( sector=0; sector<10; sector++ ) {
- sSector = bsSector;
- sSector += sector;
-
- TEveElementList* relSector = new TEveElementList( sSector.Data() );
- relSector->SetMainColor(2);
- gEve->AddElement(relSector, layer2 );
-
- for ( stave=0; stave<4; stave++ ) {
- sStave = bsStave;
- sStave += stave;
-
- TEveElementList* relStave = new TEveElementList( sStave.Data() );
- relStave->SetMainColor(2);
- gEve->AddElement( relStave, relSector );
-
- for ( module=0; module<4; module++) {
-
- if ( gITSDigits->GetDigits( ndx, 0 ) &&
- gITSDigits->GetDigits( ndx, 0 )->GetEntriesFast() > 0) {
-
- AliEveITSModule* moduleITS = new AliEveITSModule( ndx, gITSDigits );
- gEve->AddElement( moduleITS, relStave );
- }
-
- ++ndx;
- } // for ( module=0; module<4; module++) {
- } // for ( stave=0; stave<2; stave++ ) {
- } //for ( sector=0; sector<10; sector++ ) {
-
- gEve->EnableRedraw();
-
- return iResult;
+void stopLoopEvent() {
+ event_timer.Stop();
}
-
//****************************************************************************
Int_t processTPCRawData(AliHLTHOMERBlockDesc* block) {
if ( patch >= 2) eqId += 4 * sector + 70;
else eqId += 2 * sector;
- printf("%d %d %d -- %p %lu\n", sector, patch, eqId, block->GetData(), block->GetSize());
+ printf("sector : %d %d %d -- %p %lu\n", sector, patch, eqId, block->GetData(), block->GetSize());
gMemReader->SetMemory( reinterpret_cast<UChar_t*> ( block->GetData() ), block->GetSize() );
gMemReader->SetEquipmentID( eqId );
Int_t slice = block->GetSubDetector().Atoi();
Int_t patch = block->GetSubSubDetector().Atoi();
- Float_t phi = ( slice + 0.5 ) * TMath::Pi() / 9.0;
+ Float_t phi = ( slice + 0.5 ) * TMath::Pi() / 9.0;
Float_t cos = TMath::Cos( phi );
Float_t sin = TMath::Sin( phi );
AliESDtrack* esdTrack,
AliExternalTrackParam* trackParam ) {
// Helper function
-
+
Double_t pbuf[3], vbuf[3];
TEveRecTrack rt;
+ TEvePathMark startPoint(TEvePathMark::kReference);
+ TEvePathMark midPoint(TEvePathMark::kReference);
+ TEvePathMark mid1Point(TEvePathMark::kReference);
+ TEvePathMark endPoint(TEvePathMark::kReference);
+ TEvePathMark decPoint(TEvePathMark::kDecay);
+
+ /*printf("ESD track: %f, %f, %f, %f, %f, %f, %f",
+ esdTrack->GetAlpha(),
+ esdTrack->GetX(),
+ esdTrack->GetY(),
+ esdTrack->GetZ(),
+ esdTrack->GetSnp(),
+ esdTrack->GetTgl(),
+ esdTrack->GetSigned1Pt()
+ );
+ */
+ cout<<"TPCPoints::"<<esdTrack->GetTPCPoints(0)<<" "<<esdTrack->GetTPCPoints(1)<<" "<<esdTrack->GetTPCPoints(2)<<" "<<esdTrack->GetTPCPoints(3)<<endl;
if ( trackParam == 0 )
trackParam = esdTrack;
rt.fIndex = idx;
rt.fStatus = (Int_t) esdTrack->GetStatus();
rt.fSign = (Int_t) trackParam->GetSign();
- trackParam->GetXYZ(vbuf);
- rt.fV.Set(vbuf);
-
- { // get momentum manually because trackParam->GetPxPyPz doesn't works for straight lines
- Double_t pt= TMath::Abs(trackParam->GetSigned1Pt());
- pt = (pt>kAlmost0) ?1./pt :100.;
+ Double_t x0 = trackParam->GetX();
+ Double_t dx = esdTrack->GetTPCPoints(2) - x0;
- Double_t cA=TMath::Cos(trackParam->GetAlpha()), sA=TMath::Sin(trackParam->GetAlpha());
+ for( Double_t x1=x0; x1<x0+dx; x1+=(dx)*.1 ){//SG
+ AliExternalTrackParam startParam = *trackParam;
+ AliHLTTPCCATrackParam t;
+ t.SetExtParam(startParam, gSolenoidField );
+ if( !t.TransportToX(x1) ) continue;
+ t.GetExtParam( startParam, startParam.GetAlpha(), gSolenoidField );
+ if( TMath::Abs(startParam.GetSnp())>.99 ) continue;
- Double_t sT=trackParam->GetSnp();
- if( sT>=kAlmost1 ){ sT = kAlmost1; }
- else if( sT<-kAlmost1 ){ sT = -kAlmost1; }
- Double_t cT = TMath::Sqrt(TMath::Abs(1 - sT*sT));
+ startParam.GetXYZ(vbuf);
+
+ { // get momentum manually because trackParam->GetPxPyPz doesn't works for straight lines
- pbuf[0] = pt*(cT*cA - sT*sA);
- pbuf[1] = pt*(sT*cA + cT*sA);
- pbuf[2] = pt*trackParam->GetTgl();
- }
+ Double_t pt= TMath::Abs(startParam.GetSigned1Pt());
+ pt = (pt>kAlmost0) ?1./pt :100.;
+
+ Double_t cA=TMath::Cos(startParam.GetAlpha()), sA=TMath::Sin(startParam.GetAlpha());
+
+ Double_t sT=startParam.GetSnp();
+ if( sT>kAlmost1 ){ sT = kAlmost1; }
+ else if( sT<-kAlmost1 ){ sT = -kAlmost1; }
+ Double_t cT = TMath::Sqrt(TMath::Abs(1 - sT*sT));
+
+ pbuf[0] = pt*(cT*cA - sT*sA);
+ pbuf[1] = pt*(sT*cA + cT*sA);
+ pbuf[2] = pt*startParam.GetTgl();
+ }
+ break;
+ }
+
+ rt.fV.Set(vbuf);
rt.fP.Set(pbuf);
+ startPoint.fV.Set(vbuf);
+ startPoint.fP.Set(pbuf);
Double_t ep = esdTrack->GetP(), mc = esdTrack->GetMass();
rt.fBeta = ep/TMath::Sqrt(ep*ep + mc*mc);
TEveTrack* track = new TEveTrack(&rt, rnrStyle);
- AliExternalTrackParam endParam = *trackParam;
- if( endParam.PropagateTo(esdTrack->GetTPCPoints(2), 0.) ){ // 5 kG
+ cout<<"startPoint = "<<vbuf[0]<<" "<<vbuf[1]<<" "<<vbuf[2]<<" "<<pbuf[0]<<" "<<pbuf[1]<<" "<<pbuf[2]<<endl;
- TEvePathMark *startPoint = new TEvePathMark(TEvePathMark::kReference);
- TEvePathMark *endPoint = new TEvePathMark(TEvePathMark::kDecay);
- startPoint->fV.Set(vbuf);
- startPoint->fP.Set(pbuf);
+
+ for( ; TMath::Abs(dx)>=1.; dx*=.9 ){
+ AliExternalTrackParam endParam = *trackParam;
+ //if( !endParam.PropagateTo(x0+dx, gSolenoidField) ) continue;
+ AliHLTTPCCATrackParam t;
+ t.SetExtParam(endParam, gSolenoidField );
+ if( !t.TransportToX(x0+dx) ) continue;
+ t.GetExtParam( endParam, endParam.GetAlpha(), gSolenoidField );
- endParam.GetXYZ(vbuf);
- endPoint->fV.Set(vbuf);
- cout<<"endPoint = "<<vbuf[0]<<" "<<vbuf[1]<<" "<<vbuf[2]<<endl;
-
+ if( TMath::Abs(endParam.GetSnp())>.99 ) continue;
+
{ // get momentum manually because trackParam->GetPxPyPz doesn't works for straight lines
Double_t pt= TMath::Abs(endParam.GetSigned1Pt());
else if( sT<-kAlmost1 ){ sT = -kAlmost1; }
Double_t cT = TMath::Sqrt(TMath::Abs(1 - sT*sT));
- pbuf[0] = pt*(cT*cA - sT*sA);
- pbuf[1] = pt*(sT*cA + cT*sA);
+ endParam.GetXYZ(vbuf);
+ pbuf[0] = pt*(cT*cA - sT*sA);
+ pbuf[1] = pt*(sT*cA + cT*sA);
pbuf[2] = pt*endParam.GetTgl();
}
+ break;
+ }
+ endPoint.fV.Set(vbuf);
+ endPoint.fP.Set(pbuf);
+ decPoint.fV.Set(vbuf);
+ decPoint.fP.Set(pbuf);
+
+ cout<<"endPoint = "<<vbuf[0]<<" "<<vbuf[1]<<" "<<vbuf[2]<<" "<<pbuf[0]<<" "<<pbuf[1]<<" "<<pbuf[2]<<endl;
+
+ dx*=.6;
+ for( ; TMath::Abs(dx)>=.5; dx*=.8 ){
+ AliExternalTrackParam endParam = *trackParam;
+ //if( !endParam.PropagateTo(x0+dx, gSolenoidField) ) continue;
+ AliHLTTPCCATrackParam t;
+ t.SetExtParam(endParam, gSolenoidField );
+ if( !t.TransportToX(x0+dx) ) continue;
+ t.GetExtParam( endParam, endParam.GetAlpha(), gSolenoidField );
+ if( TMath::Abs(endParam.GetSnp())>.99 ) continue;
+
+ { // get momentum manually because trackParam->GetPxPyPz doesn't works for straight lines
- endPoint->fP.Set(pbuf);
+ Double_t pt= TMath::Abs(endParam.GetSigned1Pt());
+ pt = (pt>kAlmost0) ?1./pt :100.;
+
+ Double_t cA=TMath::Cos(endParam.GetAlpha()), sA=TMath::Sin(endParam.GetAlpha());
+
+ Double_t sT=endParam.GetSnp();
+ if( sT>=kAlmost1 ){ sT = kAlmost1; }
+ else if( sT<-kAlmost1 ){ sT = -kAlmost1; }
+ Double_t cT = TMath::Sqrt(TMath::Abs(1 - sT*sT));
+
+ endParam.GetXYZ(vbuf);
+ pbuf[0] = pt*(cT*cA - sT*sA);
+ pbuf[1] = pt*(sT*cA + cT*sA);
+ pbuf[2] = pt*endParam.GetTgl();
+ }
+ break;
+ }
+
+ mid1Point.fV.Set(vbuf);
+ mid1Point.fP.Set(pbuf);
+
+ //cout<<"midPoint = "<<vbuf[0]<<" "<<vbuf[1]<<" "<<vbuf[2]<<" "<<pbuf[0]<<" "<<pbuf[1]<<" "<<pbuf[2]<<endl;
+
+ dx*=.5;
+ for( ; TMath::Abs(dx)>=.5; dx*=.8 ){
+ AliExternalTrackParam endParam = *trackParam;
+ //if( !endParam.PropagateTo(x0+dx, gSolenoidField) ) continue;
+ AliHLTTPCCATrackParam t;
+ t.SetExtParam(endParam, gSolenoidField );
+ if( !t.TransportToX(x0+dx) ) continue;
+ t.GetExtParam( endParam, endParam.GetAlpha(), gSolenoidField );
+ if( TMath::Abs(endParam.GetSnp())>.99 ) continue;
- track->AddPathMark( startPoint );
- track->AddPathMark( endPoint );
+ { // get momentum manually because trackParam->GetPxPyPz doesn't works for straight lines
+
+ Double_t pt= TMath::Abs(endParam.GetSigned1Pt());
+ pt = (pt>kAlmost0) ?1./pt :100.;
+
+ Double_t cA=TMath::Cos(endParam.GetAlpha()), sA=TMath::Sin(endParam.GetAlpha());
+
+ Double_t sT=endParam.GetSnp();
+ if( sT>=kAlmost1 ){ sT = kAlmost1; }
+ else if( sT<-kAlmost1 ){ sT = -kAlmost1; }
+ Double_t cT = TMath::Sqrt(TMath::Abs(1 - sT*sT));
+
+ endParam.GetXYZ(vbuf);
+ pbuf[0] = pt*(cT*cA - sT*sA);
+ pbuf[1] = pt*(sT*cA + cT*sA);
+ pbuf[2] = pt*endParam.GetTgl();
+ }
+ break;
}
+
+ midPoint.fV.Set(vbuf);
+ midPoint.fP.Set(pbuf);
+
+ track->AddPathMark( startPoint );
+ track->AddPathMark( midPoint );
+ track->AddPathMark( mid1Point );
+ track->AddPathMark( endPoint );
+ track->AddPathMark( decPoint );
+
//PH The line below is replaced waiting for a fix in Root
//PH which permits to use variable siza arguments in CINT
//PH on some platforms (alphalinuxgcc, solariscc5, etc.)
TTree *tr = (TTree*) block->GetTObject();
- AliESDEvent* esd = new AliESDEvent;
- esd->ReadFromTree(tr);
- tr->GetEntry(0);
+// ofstream fout("ESD_TPC.dat",ios::binary);
+// fout.write((char*)block->GetData(),block->GetSize());
+// fout.close();
+ TFile f("ESD_TPC.root","recreate");
+ tr->Write();
+ f.Close();
+
+ TFile* esdFile = TFile::Open("ESD_TPC.root");
+
+ AliESDEvent* esd = new AliESDEvent();
+ TTree* tree = (TTree*) esdFile->Get("esdTree");
+ esd->ReadFromTree(tree);
+ //tr->SetBranchAddress("ESD", &esd);
+ // if(tr->GetBranch("ESD"))
+ // return 0;
+
+ tree->GetEntry(0);
TEveTrackPropagator* rnrStyle = gTPCTrack->GetPropagator();
rnrStyle->SetMagField( 0.1*esd->GetMagneticField() );
+ gSolenoidField = esd->GetMagneticField();
cout << "Number of tracks found :" << esd->GetNumberOfTracks() << endl;
+ Double_t pin[3];
+
for (Int_t ii=0; ii< esd->GetNumberOfTracks(); ii++) {
AliESDtrack *esdTrack = esd->GetTrack(ii);
AliExternalTrackParam *trackParam = esdTrack;
-
+ cout<<"\nESD track N"<<ii<<":"<<endl;
+ trackParam->Print();
+
TEveTrack* track = makeESDTrack( rnrStyle, ii, esdTrack, trackParam );
-
- track->SetAttLineAttMarker(gTPCTrack);
-
- gEve->AddElement(track, gTPCTrack);
- }
+ esdTrack->GetPxPyPz(pin);
+
+ //cout<<"pt : "<<sqrt(pin[0]*pin[0] + pin[1]*pin[1])<<endl;
+ track->SetAttLineAttMarker(gTPCTrack);
+ gEve->AddElement(track, gTPCTrack);
+ }
- // delete esd;
+ delete esd;
return 0;
}
-//****************************************************************************
-Int_t initTrackerMapping()
-{
- gDimuTrackerMapping.clear();
-
- if (! AliMpCDB::LoadDDLStore(true)){
- cerr<<__FILE__<<": Failed to Load DDLStore specified for CDBPath "
- <<AliCDBManager::Instance()->GetDefaultStorage()<<endl;
- return kFALSE;
- }
-
- AliMpSegmentation *mpSegFactory = AliMpSegmentation::Instance();
- AliGeomManager::LoadGeometry();
- AliMUONGeometryTransformer* chamberGeometryTransformer = new AliMUONGeometryTransformer();
-
- if(! chamberGeometryTransformer->LoadGeometryData()){
- cerr<<__FILE__<<": Failed to Load Geomerty Data "<<endl;
- return kFALSE;
- }
- AliMUONCalibrationData cd((AliCDBManager::Instance())->GetRun());
- AliHLTMUONTrackerMappingData md;
-
- cout<<"Loading Mapping for Dimuon Tracking Chambers.....be patient..."<<endl;
-
- for(Int_t iCh = 0; iCh < 10; iCh++){
-
- AliMpDEIterator it;
- for ( it.First(iCh); ! it.IsDone(); it.Next() ) {
-
- Int_t detElemId = it.CurrentDEId();
-
- for(Int_t iCath = 0 ; iCath <= 1 ; iCath++){
-
- AliMp::CathodType cath;
+//****************************************************************************
+Int_t processSPDRawData(AliHLTHOMERBlockDesc* block) {
+ Int_t iResult = 0;
- if(iCath == 0)
- cath = AliMp::kCath0 ;
- else
- cath = AliMp::kCath1 ;
-
- const AliMpVSegmentation* seg = mpSegFactory->GetMpSegmentation(detElemId, cath);
- AliMp::PlaneType plane = seg->PlaneType();
- Int_t maxIX = seg->MaxPadIndexX();
- Int_t maxIY = seg->MaxPadIndexY();
- UInt_t idManuChannel;
- Int_t buspatchId, manuId, channelId;
- Double_t realX, realY, realZ;
- Double_t localX, localY, localZ;
-
- //Pad Info of a segment
- for(Int_t iX = 0; iX<= maxIX ; iX++){
- for(Int_t iY = 0; iY<= maxIY ; iY++){
- if(seg->HasPad(AliMpIntPair(iX,iY))){
- AliMpPad pad = seg->PadByIndices(AliMpIntPair(iX,iY),kFALSE);
-
-
- // Getting Manu id
- manuId = pad.GetLocation().GetFirst();
- manuId &= 0x7FF; // 11 bits
-
- // Getting channel id
- channelId = pad.GetLocation().GetSecond();
- channelId &= 0x3F; // 6 bits
-
- buspatchId = AliMpDDLStore::Instance()->GetBusPatchId(detElemId,manuId);
-
- idManuChannel &= 0x0;
- idManuChannel = (idManuChannel|buspatchId)<<11;
- idManuChannel = (idManuChannel|manuId)<<6 ;
- idManuChannel |= channelId ;
-
- localX = pad.Position().X();
- localY = pad.Position().Y();
- localZ = 0.0;
-
- chamberGeometryTransformer->Local2Global(detElemId,localX,localY,localZ,
- realX,realY,realZ);
- md.fDetElemId = detElemId;
- md.fIX = iX ;
- md.fIY = iY ;
- md.fCath = cath ;
- md.fRealX = realX ;
- md.fRealY = realY;
- md.fRealZ = realZ;
- md.fPed = (cd.Pedestals(detElemId,manuId))->ValueAsFloat(channelId);
-
- gDimuTrackerMapping[idManuChannel] = md;
-
- }// HasPad condn
- }// iY loop
- }// iX loop
-
- }// iPlane
+ Int_t partition = block->GetSubDetector().Atoi();
+ Int_t eqId = partition;
- } // detElemId loop
+ gMemReader->SetMemory( reinterpret_cast<UChar_t*> ( block->GetData() ), block->GetSize() );
+ gMemReader->SetEquipmentID( eqId );
+ gMemReader->Reset();
- }// ichamber loop
+ gITSDigits->ReadRaw( gMemReader, 3);
- return 0;
+ return iResult;
}
-//****************************************************************************
-Int_t initTrackerMappingPed()
-{
- cout<<"Loading Pedestal for Dimuon..."<<endl;
- Int_t linenum = 0;
-
- char line[90];
- int buspatch,manu,channel;
- float mean,sigma;
- int idManuChannel;
-
- FILE *fin[2] ;
- fin[0] = fopen("/local/home/hlt/pedestal/MUONTRKda_ped_25948.St1.ped","r");
- fin[1] = fopen("/local/home/hlt/pedestal/MUONTRKda_ped_25948.St2.ped","r");
-
- while(feof(fin[0])==0){
- fgets(line,100,fin[0]);
- sscanf(line,"%d\t%d\t%d\t%f\t%f\n",&buspatch,&manu,&channel,&mean,&sigma);
- if(linenum>12){
-// printf("%d\t%d\t%d\t%f\t%f\n",buspatch,manu,channel,mean,sigma);
-
- idManuChannel &= 0x0;
- idManuChannel = (idManuChannel|buspatch)<<11;
- idManuChannel = (idManuChannel|manu)<<6 ;
- idManuChannel |= channel ;
-
-// data.fBuspatchId = UInt_t(buspatch) ;
-// data.fManuId = UInt_t(manu) ;
-// data.fChannelId = UInt_t(channel) ;
-// data.fADC = UShort_t(mean);
-
-// lookuptable[idManuChannel] = data;
- gDimuTrackerMapping[idManuChannel].fPed = mean;
- gDimuTrackerMapping[idManuChannel].fSigma = sigma;
-
- }
- linenum++;
- }
-
- linenum = 0;
+//****************************************************************************
+Int_t drawSPDRawData() {
- while(feof(fin[1])==0){
- fgets(line,100,fin[1]);
- sscanf(line,"%d\t%d\t%d\t%f\t%f\n",&buspatch,&manu,&channel,&mean,&sigma);
- if(linenum>12){
-// printf("%d\t%d\t%d\t%f\t%f\n",buspatch,manu,channel,mean,sigma);
+ Int_t iResult = 0;
- idManuChannel &= 0x0;
- idManuChannel = (idManuChannel|buspatch)<<11;
- idManuChannel = (idManuChannel|manu)<<6 ;
- idManuChannel |= channel ;
+ TString sSector;
+ TString bsSector="Sector";
+ TString sStave;
+ TString bsStave="Stave";
-// data.fBuspatchId = UInt_t(buspatch) ;
-// data.fManuId = UInt_t(manu) ;
-// data.fChannelId = UInt_t(channel) ;
-// data.fADC = UShort_t(mean);
-
-// lookuptable[idManuChannel] = data;
+ Int_t ndx=0;
+ Int_t sector, stave, module;
- gDimuTrackerMapping[idManuChannel].fPed = mean;
- gDimuTrackerMapping[idManuChannel].fSigma = sigma;
- }
- linenum++;
+ //gEve->DisableRedraw();
- }
+ // ** first layer **
- return 0;
-}
-//****************************************************************************
-Int_t initTriggerMapping()
-{
-
- for (Int_t d = 0; d < 2; d++)
- for (Int_t i = 0; i < 8; i++)
- for (Int_t j = 0; j < 16; j++)
- for (Int_t k = 0; k < 4; k++)
- for (Int_t n = 0; n < 2; n++)
- for (Int_t m = 0; m < 16; m++){
- gDimuTriggerMapping[d].fLut[i][j][k][n][m].fDetElemId = 0;
- gDimuTriggerMapping[d].fLut[i][j][k][n][m].fX = 0;
- gDimuTriggerMapping[d].fLut[i][j][k][n][m].fY = 0;
- gDimuTriggerMapping[d].fLut[i][j][k][n][m].fZ = 0;
- }
-
-
- AliCDBManager* cdbManager = AliCDBManager::Instance();
- cdbManager->SetRun((AliCDBManager::Instance())->GetRun());
-
- AliGeomManager::LoadGeometry();
-
- AliMUONGeometryTransformer transformer;
- if (! transformer.LoadGeometryData()){
- cerr << "ERROR: Could not load geometry into transformer." << endl;
- return false;
- }
-
- if (! AliMpCDB::LoadDDLStore()){
- cerr << "ERROR: Could not load DDL mapping." << endl;
- return false;
- }
+ TEveElementList* layer1 = new TEveElementList( "SPD0" );
+ layer1->SetTitle( "SPDs' first layer" );
+ layer1->SetMainColor(2);
+ gEve->AddElement( layer1 );
- AliMpSegmentation* segmentation = AliMpSegmentation::Instance();
- if (segmentation == NULL){
- cerr << "ERROR: AliMpSegmentation::Instance() was NULL." << endl;
- return false;
- }
-
-
- AliMpDDLStore* ddlStore = AliMpDDLStore::Instance();
- if (ddlStore == NULL){
- cerr << "ERROR: AliMpDDLStore::Instance() was NULL." << endl;
- return false;
- }
-
- cout << "Loading Mapping for Dimuon Trigger Chambers....." << endl;
-
- AliMpDEIterator detElemIter;
- for (Int_t iDDL = 20; iDDL <= 21; iDDL++){
+ for ( sector=0; sector<10; sector++ ) {
+ sSector = bsSector;
+ sSector += sector;
- for (Int_t iReg = 0; iReg < 8; iReg++){
+ TEveElementList* relSector = new TEveElementList( sSector.Data() );
+ relSector->SetMainColor(2);
+ gEve->AddElement( relSector, layer1 );
- AliMpTriggerCrate* crate = ddlStore->GetTriggerCrate(iDDL, iReg);
+ for ( stave=0; stave<2; stave++ ) {
+ sStave = bsStave;
+ sStave += stave;
- if (crate == NULL){
- cerr << "ERROR: Could not get crate for regional header = " << iReg
- << ", and DDL ID = " << iDDL << endl;
- continue;
- }
-
- for (Int_t iLocBoard = 0; iLocBoard < 16; iLocBoard++){
- Int_t boardId = crate->GetLocalBoardId(iLocBoard);
- if (boardId == 0) continue;
-
- AliMpLocalBoard* localBoard = ddlStore->GetLocalBoard(boardId);
- if (localBoard == NULL){
- cerr << "ERROR: Could not get loacl board: " << boardId << endl;
- continue;
- }
+ TEveElementList* relStave = new TEveElementList( sStave.Data() );
+ relStave->SetMainColor(2);
+ gEve->AddElement( relStave, relSector );
- // skip copy cards
- if (! localBoard->IsNotified()) continue;
+ for ( module=0; module<4; module++ ) {
- for (Int_t iChamber = 0; iChamber < 4; iChamber++){
-
- Int_t detElemId = ddlStore->GetDEfromLocalBoard(boardId, iChamber);
+ if ( gITSDigits->GetDigits( ndx, 0 ) &&
+ gITSDigits->GetDigits( ndx, 0 )->GetEntriesFast() > 0) {
- const AliMUONGeometryDetElement* detElemTransform = transformer.GetDetElement(detElemId);
- if (detElemTransform == NULL){
- cerr << "ERROR: Got NULL pointer for geometry transformer for detection element ID = "
- << detElemId << endl;
- continue;
- }
-
- for (Int_t iCathode = 0; iCathode <= 1; iCathode++){
- const AliMpVSegmentation* seg = segmentation->GetMpSegmentation
- (detElemId, AliMp::GetCathodType(iCathode));
-
- for (Int_t bitxy = 0; bitxy < 16; bitxy++){
- Int_t offset = 0;
- if (iCathode && localBoard->GetSwitch(6)) offset = -8;
-
- AliMpPad pad = seg->PadByLocation(AliMpIntPair(boardId, bitxy+offset), kFALSE);
-
- if (! pad.IsValid()){
- // There is no pad associated with the given local board and bit pattern.
- continue;
- }
-
- // Get the global coodinates of the pad.
- Float_t lx = pad.Position().X();
- Float_t ly = pad.Position().Y();
- Float_t gx, gy, gz;
- detElemTransform->Local2Global(lx, ly, 0, gx, gy, gz);
-
- // Fill the LUT
- gDimuTriggerMapping[(iDDL%20)].fLut[iReg][iLocBoard][iChamber][iCathode][bitxy].fDetElemId = detElemId;
- gDimuTriggerMapping[(iDDL%20)].fLut[iReg][iLocBoard][iChamber][iCathode][bitxy].fX = gx;
- gDimuTriggerMapping[(iDDL%20)].fLut[iReg][iLocBoard][iChamber][iCathode][bitxy].fY = gy;
- gDimuTriggerMapping[(iDDL%20)].fLut[iReg][iLocBoard][iChamber][iCathode][bitxy].fZ = gz;
-
- }// ibitxy loop
- }// cathode loop
- }// chamber loop
- }// local board loop
- }// regional card loop
- }// ddl loop
-
-
- return true;
-}
-//****************************************************************************
-Int_t initDiMuonMapping()
-{
- initTrackerMapping();
- initTrackerMappingPed();
- initTriggerMapping();
-
- return 0;
-}
-//****************************************************************************
-
-int ReadRawData(int iEvent = 0)
-{
- cout<<"Executing for Event : "<<iEvent<<endl;
-
- TString rawDataPath = "$HOME/MUON_RawData";
+ AliEveITSModule* moduleITS = new AliEveITSModule( ndx, gITSDigits );
+ gEve->AddElement( moduleITS, relStave );
+ }
- bool MakeTrackDDLStream(int*& rawData, int* rawDataSize, TString rawDataPath, int iEvent, int iDDL);
-
- int *buffer;
- int bufferSize;
+ ++ndx;
- AliMUONTrackerDDLDecoder<DiMuonTrackerCustomHandler> trackerDDLDecoder;
- DiMuonTrackerCustomHandler& handler =
- reinterpret_cast<DiMuonTrackerCustomHandler&>(trackerDDLDecoder.GetHandler());
-
- for(Int_t iDDL=1;iDDL<=20;iDDL++){
+ } // for ( module=0; module<4; module++ ) {
+ } // for ( stave=0; stave<2; stave++ ) {
+ } // for ( sector=0; sector<10; sector++ ) {
- if(!MakeTrackDDLStream(buffer,&bufferSize,rawDataPath,iEvent,iDDL)){
- printf("Cannot Read DDL Stream, Check the Event number in RawData Directory or DDL number \n");
- continue ;
- }
-
- // for(int i=0;i<int(bufferSize/sizeof(int));i++)
- // printf("rawData[%d] : %-8x :: %15d\n",i,buffer[i],buffer[i]);
-
- handler.ResetDataCounter();
- if(!trackerDDLDecoder.Decode(buffer, UInt_t(bufferSize))){
- cerr<<"Cannot decode. "<<endl;
- continue ;
+ // ** second layer **
- }
+ TEveElementList* layer2 = new TEveElementList( "SPD1" );
+ layer2->SetTitle( "SPDs' second layer" );
+ layer2->SetMainColor(2);
+ gEve->AddElement(layer2);
+
+ for ( sector=0; sector<10; sector++ ) {
+ sSector = bsSector;
+ sSector += sector;
- for(Int_t i=0;i<handler.GetDataSize();i++){
- if(handler.GetData(i).fADC > 5){
- gDimuTrackerMapping[handler.GetData(i).fDataId].fADC =
- Int_t(handler.GetData(i).fADC) ;//-
-// Int_t(gDimuTrackerMapping[handler.GetData(i).fDataId].fPed + 4*gDimuTrackerMapping[handler.GetData(i).fDataId].fSigma);
-
-// cout<<"detElem : "<<gDimuTrackerMapping[handler.GetData(i).fDataId].fDetElemId
-// <<", iX : "<<gDimuTrackerMapping[handler.GetData(i).fDataId].fIX
-// <<", iY : "<<gDimuTrackerMapping[handler.GetData(i).fDataId].fIY
-// <<", realX : "<<gDimuTrackerMapping[handler.GetData(i).fDataId].fRealX
-// <<", realY : "<<gDimuTrackerMapping[handler.GetData(i).fDataId].fRealY
-// <<", realZ : "<<gDimuTrackerMapping[handler.GetData(i).fDataId].fRealZ
-// <<", plane : "<<gDimuTrackerMapping[handler.GetData(i).fDataId].fCath
-// <<", ADC : "<<gDimuTrackerMapping[handler.GetData(i).fDataId].fADC
-// <<endl;
-
- gDimuTrackerDataList.push_back(handler.GetData(i).fDataId);
- }//fADC > refADC value
-
- }
+ TEveElementList* relSector = new TEveElementList( sSector.Data() );
+ relSector->SetMainColor(2);
+ gEve->AddElement(relSector, layer2 );
- delete []buffer ;
- }// DDL loop
+ for ( stave=0; stave<4; stave++ ) {
+ sStave = bsStave;
+ sStave += stave;
- cout<<"Tracker Data size : "<<gDimuTrackerDataList.size()<<endl;
- return kTRUE;
-}
+ TEveElementList* relStave = new TEveElementList( sStave.Data() );
+ relStave->SetMainColor(2);
+ gEve->AddElement( relStave, relSector );
-//****************************************************************************
+ for ( module=0; module<4; module++) {
-bool MakeTrackDDLStream(int*& rawData, int* rawDataSize, TString rawDataPath, int iEvent, int iDDL)
-{
- char rawDataFile[500];
- sprintf(rawDataFile,"%s/raw%d/MUONTRK_%d.ddl",gSystem->ExpandPathName(rawDataPath.Data()),iEvent,0xA00 + iDDL - 1);
+ if ( gITSDigits->GetDigits( ndx, 0 ) &&
+ gITSDigits->GetDigits( ndx, 0 )->GetEntriesFast() > 0) {
-
- FILE *fin = fopen(rawDataFile,"r");
- if(fin == NULL){
- printf("Failed to open file %s\n",rawDataFile);
- return false;
- }else{
-// printf("Opening file %s\n",rawDataFile);
-
- int ddlHeader[8];
- int rawDDLSize;
-
- if(feof(fin)==0){
- fread((char *) & ddlHeader,(size_t)4*8,1,fin);
- rawDDLSize = ddlHeader[0]/sizeof(int) - 8;
-// rawDDLSize = ddlHeader[0]/sizeof(int) - 8 - 2 ; // temporary solution
- //rewind(fin);
-
-// cout<<"rawDDLSize : "<<rawDDLSize<<endl;
-// for(int i=0;i<8;i++)
-// printf("ddlHeader[%d] : %d\n",i,ddlHeader[i]);
-
- if(ddlHeader[0]>10){ // 10 is temporary inprinciple 8 should be enough
- int* buffer = new int[rawDDLSize];
- fread(buffer,sizeof(int), rawDDLSize,fin);
- if(UInt_t(buffer[0])==0xFC0000FC){
- rawData = buffer;
- *rawDataSize = rawDDLSize*sizeof(int) ;
- //cout<<"buffer : "<<buffer<<endl;
- }else{
- fclose(fin);
- return false;
+ AliEveITSModule* moduleITS = new AliEveITSModule( ndx, gITSDigits );
+ gEve->AddElement( moduleITS, relStave );
}
- }else{
- fclose(fin);
- return false;
- }
- }
-
- }//
-
- fclose(fin);
- return true;
-}
-
-//****************************************************************************
-Int_t ReadPort( AliHLTHOMERBlockDesc* block )
-{
- int *buffer;
- int bufferSize;
-
- AliMUONTrackerDDLDecoder<DiMuonTrackerCustomHandler> trackerDDLDecoder;
- DiMuonTrackerCustomHandler& handler =
- reinterpret_cast<DiMuonTrackerCustomHandler&>(trackerDDLDecoder.GetHandler());
-
- DiMuonTriggerDDLDecoder triggerDecoder;
-
- unsigned long size = block->GetSize();
- bufferSize = UInt_t(int(size/sizeof(int))-10);
- buffer = reinterpret_cast<int *>(block->GetData());
- buffer += 8;
-
- // if(buffer[0]==0xFC0000FC){
- // for(int i=0;i<int(bufferSize);i++)
- // printf("rawData[%d] : %-8x :: %15d\n",i,buffer[i],buffer[i]);
- // }
+
+ ++ndx;
+ } // for ( module=0; module<4; module++) {
+ } // for ( stave=0; stave<2; stave++ ) {
+ } //for ( sector=0; sector<10; sector++ ) {
- if(buffer[0]!=int(0xFC0000FC)){
-
-// for(int i=0;i<int(bufferSize);i++)
-// printf("rawData[%d] : %-8x :: %15d\n",i,buffer[i],buffer[i]);
-
- triggerDecoder.ResetDataCounter();
- triggerDecoder.SetTriggerMappingData(&gDimuTriggerMapping[0]);
- if(!triggerDecoder.Decode(buffer)){
- cerr<<"Cannot decode DiMuon Trigger RawData "<<endl;
- //return kFALSE;
- }
-
- for(Int_t i=0;i<triggerDecoder.GetDataSize();i++)
- gDimuTriggerDataList.push_back(triggerDecoder.GetData(i));
+ gEve->EnableRedraw();
-
- }else{
-
- handler.ResetDataCounter();
- if(!trackerDDLDecoder.Decode(buffer,UInt_t(bufferSize*sizeof(int)))){
- cerr<<"Cannot decode DiMuon Tracker RawData "<<endl;
- //return kFALSE;
- }
-
- for(Int_t i=0;i<handler.GetDataSize();i++){
- if(handler.GetData(i).fADC > 0){
-
- gDimuTrackerMapping[handler.GetData(i).fDataId].fADC =
- Int_t(handler.GetData(i).fADC) -
- Int_t(gDimuTrackerMapping[handler.GetData(i).fDataId].fPed);// + 4*gDimuTrackerMapping[handler.GetData(i).fDataId].fSigma);
-
- if(gDimuTrackerMapping[handler.GetData(i).fDataId].fADC > 0)
- gDimuTrackerDataList.push_back(handler.GetData(i).fDataId);
-
-
- }// adc cut
- }// tracker dataSize
- }// if trigger/tracker data
-
-
- return true;
+ return iResult;
}
-//****************************************************************************
-Int_t processDiMuonRawData( AliHLTHOMERBlockDesc* block )
-{
- if(!ReadRawData(0))
- return false;
-// if(!ReadPort(block))
-// return false;
-
- return true ;
-}
//****************************************************************************
-Int_t drawDiMuonRawData(Int_t ADCCut)
-{
-
- cout<<"Trying to read RawData "<<endl;
-
-
- char ChamberName[50];
- TEveElement *eveMuonEventElmt = gEve->GetCurrentEvent()->FindChild("MUONChamberData");
- TEveElement *eveMuonGeomElmt = gEve->GetGlobalScene()->FindChild("MUONChambers");
-
- eveMuonEventElmt->DestroyElements();
-
- AliEveMUONChamber* mch = 0;
- int ipoint = 0 ;
-
-
- for(Int_t ichamber = 0 ; ichamber < 14; ichamber++){
-
- if(ichamber<10)
- sprintf(ChamberName,"Chamber 0%d (trac)",ichamber);
- else
- sprintf(ChamberName,"Chamber %2d (trig)",ichamber);
-
- mch = (AliEveMUONChamber*)(eveMuonGeomElmt->FindChild(ChamberName));
-
-// cout<<"ichamber : "<<ichamber<<", mch : "<<mch<<endl;
- mch->GetChamberData()->DropData();
- }
-
-
- // -- DrawTracker RawData
- Int_t dataId,ich, busPatchId, manuId ;
-
- cout<<"Total number of Tracker data : "<<Int_t(gDimuTrackerDataList.size())<<endl;
-
- for(Int_t idata = 0 ; idata < Int_t(gDimuTrackerDataList.size()); idata++){
+Int_t processMUONClusters(AliHLTHOMERBlockDesc* block) {
+ Int_t iResult = 0;
- dataId = gDimuTrackerDataList.at(idata);
- cout<<"ADC : "<<gDimuTrackerMapping[dataId].fADC<<endl;
- if(gDimuTrackerMapping[dataId].fADC > ADCCut){
+ unsigned long size = block->GetSize();
+ int * buffer ;
- if(Int_t(gDimuTrackerMapping[dataId].fDetElemId)<100 or Int_t(gDimuTrackerMapping[dataId].fDetElemId) > 1025 )
- continue ;
-
- ich = Int_t(gDimuTrackerMapping[dataId].fDetElemId/100) - 1;
- sprintf(ChamberName,"Chamber 0%d (trac)",ich);
+ // for(int idata=0;idata<int(size);idata++)
+ // printf("\tbuffer[%d] : %d\n",idata,buffer[idata]);
- mch = (AliEveMUONChamber*)(eveMuonGeomElmt->FindChild(ChamberName));
+ buffer = (int *)block->GetData();
- //if(ich==0) continue ;
-
- manuId = (dataId>>6) & 0x7FF ;
- busPatchId = (dataId>>17) & 0xFFF ;
+ if(block->GetDataType().CompareTo("RECHITS") == 0){
+
+ AliHLTMUONRecHitsBlockReader trackblock((char*)buffer, size);
+ const AliHLTMUONRecHitStruct* hit = trackblock.GetArray();
- if(busPatchId==728 and manuId==1122) continue ;
-
- cout<<"ich : "<<ich<<", idata : "<<idata
- <<", detElemId : "<<gDimuTrackerMapping[dataId].fDetElemId
- <<" bus : "<<busPatchId
- <<" manu : "<<manuId
- <<" iX : "<<gDimuTrackerMapping[dataId].fIX
- <<" iY : "<<gDimuTrackerMapping[dataId].fIY
- <<" realX : "<<gDimuTrackerMapping[dataId].fRealX
- <<" realY : "<<gDimuTrackerMapping[dataId].fRealY
- <<" realZ : "<<gDimuTrackerMapping[dataId].fRealZ
- <<" ADC : "<<gDimuTrackerMapping[dataId].fADC
- <<endl;
+ for(AliHLTUInt32_t ientry = 0; ientry < trackblock.Nentries(); ientry++){
+// cout << setw(13) << left << hit->fX << setw(0);
+// cout << setw(13) << left << hit->fY << setw(0);
+// cout << hit->fZ << setw(0) << endl;
+ gMUONClusters->SetNextPoint(hit->fX,hit->fY,hit->fZ);
+ hit++;
+
+ }// track hit loop
+ }else{// if rechits
- if(gDimuTrackerMapping[dataId].fCath == 0)
- mch->GetChamberData()->RegisterDigit(gDimuTrackerMapping[dataId].fDetElemId,
- 0,
- gDimuTrackerMapping[dataId].fIX,
- gDimuTrackerMapping[dataId].fIY,
- gDimuTrackerMapping[dataId].fADC);
- mch->GetChamberData()->RegisterHit(gDimuTrackerMapping[dataId].fDetElemId,
- gDimuTrackerMapping[dataId].fRealX,
- gDimuTrackerMapping[dataId].fRealY,
- gDimuTrackerMapping[dataId].fRealZ);
-
- TEvePointSet* ps = new TEvePointSet(Form("Point-%d-Ch-0%d",ipoint,ich),1);
- ps->SetPoint(0,
- gDimuTrackerMapping[dataId].fRealX,
- gDimuTrackerMapping[dataId].fRealY,
- gDimuTrackerMapping[dataId].fRealZ);
+// if(!strcmp((BlockType(ULong64_t(reader->GetBlockDataType(i)))).Data(),"TRIGRECS")){
+
+ AliHLTMUONTriggerRecordsBlockReader trigblock(buffer, size);
+ const AliHLTMUONTriggerRecordStruct* trigrec = trigblock.GetArray();
+ for(AliHLTUInt32_t ientry = 0; ientry < trigblock.Nentries(); ientry++){
+
+ const AliHLTMUONRecHitStruct* hit = &trigrec->fHit[0];
+ for(AliHLTUInt32_t ch = 0; ch < 4; ch++)
+ {
+// cout << setw(10) << left << ch + 11 << setw(0);
+// cout << setw(13) << left << hit->fX << setw(0);
+// cout << setw(13) << left << hit->fY << setw(0);
+// cout << hit->fZ << setw(0) << endl;
+ gMUONClusters->SetNextPoint(hit->fX,hit->fY,hit->fZ);
+ hit++;
+ }// trig chamber loop
+
+ }//trig hit loop
+ }// if trigrecs
- //point3d[ipoint].SetElementName();
- //point3d[ipoint].SetRnrState(kFALSE);
- //point3d[ipoint].SetMarkerSize(15);
- //point3d[ipoint].SetMarkerColor(4);
- //point3d[ipoint].SetMarkerStyle(4);
- //gEve->AddElement(&point3d[ipoint],eveMuonEventElmt);
-
- ps->SetMarkerSize(15);
- ps->SetMarkerColor(4);
- ps->SetMarkerStyle(4);
-
- eveMuonEventElmt->AddElement(ps);
- ipoint++;
-
- }// ADC Cut
- }//foor loop
+// //delete[] buffer;
+// }//nof Block received
+// }// if any event found
- // -- DrawTrigger RawData
-// cout<<"Total number of Trigger data : "<<Int_t(gDimuTriggerDataList.size())<<endl;
-// AliHLTMUONTriggerPointData data;
-// for(Int_t idata = 0 ; idata < Int_t(gDimuTriggerDataList.size()); idata++){
-
-// data = gDimuTriggerDataList.at(idata) ;
-
-// if(Int_t(data.fDetElemId)<1100 or Int_t(data.fDetElemId) > 1417 )
-// continue ;
-
-// ich = Int_t(data.fDetElemId/100) - 1;
-// sprintf(ChamberName,"Chamber %2d (trig)",ich);
-
-// mch = (AliEveMUONChamber*)(eveMuonGeomElmt->FindChild(ChamberName));
-
-
-// cout<<"ich : "<<ich<<", idata : "<<idata
-// <<", detElemId : "<<data.fDetElemId
-// <<" realX : "<<data.fX
-// <<" realY : "<<data.fY
-// <<" realZ : "<<data.fZ
-// <<endl;
-
-// mch->GetChamberData()->RegisterHit(data.fDetElemId,data.fX,data.fY,data.fZ);
-
-
-// point3d[ipoint].SetPoint(0,data.fX,data.fY,data.fZ);
-
-
-// sprintf(ChamberName,"Point-%d-Ch-0%d",ipoint,ich);
-// point3d[ipoint].SetName(ChamberName);
-// point3d[ipoint].SetRnrState(kFALSE);
-// point3d[ipoint].SetMarkerSize(15);
-// point3d[ipoint].SetMarkerColor(4);
-// point3d[ipoint].SetMarkerStyle(4);
-
-// gEve->AddElement(&point3d[ipoint],eveMuonEventElmt);
-// ipoint++;
-
-// }// data loop
-
-
- globMaxPoint = ipoint ;
-
+
+// delete reader;
- return 0;
-}
-//****************************************************************************
-void loopEvent() {
- event_timer.SetCommand("nextEvent()");
- event_timer.Start(60);
+ return iResult;
}
-//****************************************************************************
-void stopLoopEvent() {
- event_timer.Stop();
-}
+//****************************************************************************
**************************************************************************/
{
+ cout<<"Loading HLT libraries..."<<endl;
+ gSystem->Load("libHLTbase");
+ gSystem->Load("libAliHLTUtil");
+ gSystem->Load("libHLTinterface");
+ gSystem->Load("libAliHLTMUON");
+ gSystem->Load("libAliHLTTPC");
+
cout << "Setting include path ..." << endl;
TString includePath = "-I${ALICE_ROOT}/include ";
includePath += "-I${ALICE_ROOT}/EVE ";
includePath += "-I${ALICE_ROOT}/RAW ";
includePath += "-I${ALICE_ROOT}/MUON ";
includePath += "-I${ALICE_ROOT}/MUON/mapping ";
+ includePath += "-I${ALICE_ROOT}/HLT/MUON ";
+ includePath += "-I${ALICE_ROOT}/HLT/TPCLib/tracking-ca";
gSystem->SetIncludePath(includePath.Data());
}
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<SimpleChainConfig1 ID="HOMER-TEST" verbosity="0x39">
-
-
- <!-- ============================================================== -->
- <!-- ========================= NODELIST ========================= -->
- <!-- ============================================================== -->
-
- <Node ID="master" hostname="alihlt-vobox0"/>
- <Node ID="kifa" hostname="kifa"/>
-
- <!-- ========================= Global TDS ========================= -->
-
- <Proc ID="TDS_1" type="snk">
- <Cmd>TCPDumpSubscriber -port 51000</Cmd>
- <Parent>TPC_CalibPedestal_A15</Parent>
- <Node>master</Node>
- <Shm blocksize="4k" blockcount="1" type="bigphysarea"/>
- </Proc>
-
- <Proc ID="TDS_2" type="snk">
- <Cmd>TCPDumpSubscriber -port 51001</Cmd>
- <Parent>TPC_RP_A15_02</Parent>
- <Parent>TPC_RP_A15_03</Parent>
- <Parent>TPC_RP_A15_04</Parent>
- <Parent>TPC_RP_A15_05</Parent>
- <Node>master</Node>
- <Shm blocksize="4k" blockcount="1" type="bigphysarea"/>
- </Proc>
-
-</SimpleChainConfig1>
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<SimpleChainConfig1 ID="HOMER-TEST" verbosity="0x39">
-
-
- <!-- ============================================================== -->
- <!-- ========================= NODELIST ========================= -->
- <!-- ============================================================== -->
-
- <Node ID="fepphos2" hostname="alihlt-vobox0"/>
- <Node ID="fepphos3" hostname="alihlt-vobox0"/>
- <Node ID="fepphos4" hostname="alihlt-vobox0"/>
- <Node ID="kifa" hostname="kifa"/>
-
- <!-- ========================= Global TDS ========================= -->
-
- <Proc ID="TDS_1" type="snk">
- <Cmd>TCPDumpSubscriber -port 58656</Cmd>
- <Parent>TPC_CF</Parent>
- <Node>fepphos2</Node>
- <Shm blocksize="4k" blockcount="1" type="bigphysarea"/>
- </Proc>
-
- <Proc ID="TDS_2" type="snk">
- <Cmd>TCPDumpSubscriber -port 58660</Cmd>
- <Parent>TPC_FP</Parent>
- <Node>fepphos3</Node>
- <Shm blocksize="4k" blockcount="1" type="bigphysarea"/>
- </Proc>
-
-</SimpleChainConfig1>
-AliEveHOMERManager* homerM = 0;
-
-void test_sources()
-{
- homerM = new AliEveHOMERManager("./sampleConfig.xml");
-
- gEve->AddToListTree(homerM, kTRUE);
-
- homerM->CreateHOMERSourcesList();
-
- AliEveHOMERSourceList* srcL = new AliEveHOMERSourceList("Sources");
- srcL->SetManager(homerM);
- homerM->AddElement(srcL);
-
- srcL->CreateByType();
-
- /*
- TList* srcList = homerM->GetSourceList();
-
- AliEveHOMERSourceMap* smd = AliEveHOMERSourceMap::Create(AliEveHOMERSourceMap::kSG_ByDet);
- smd->FillMap(srcList, 1);
- printf(" **** ByDet XXX ****\n");
- smd->PrintXXX();
-
- AliEveHOMERSourceMap* smt = AliEveHOMERSourceMap::Create(AliEveHOMERSourceMap::kSG_ByType);
- smt->FillMap(srcList, 1);
- printf(" **** ByType XXX ****\n");
- smt->PrintXXX();
-
- */
-}