//-*- Mode: C++ -*-
// $Id: HOMERManager.C $
/**
* @file HOMERManager.C
* @brief Sample macro for the use of the HOMERManager
*
* Usage:
*
* aliroot -l HOMERManager.C
*
*
* This macro illustrates the usage of the AliHLTHOMERManager in order
* to on-line read events outside the HLT.
*
* This macro can be run inside the
*
* - DAQ/DCS(ACR) network
* - HLT network
* - CERN GPN network
*
*
* See AliHLTHOMERManager for detailed description.
*
* @author Jochen Thaeder
* @ingroup alihlt_tutorial
* @ingroup alihlt_homer
*/
Int_t HOMERManager() {
Int_t iResult = 0;
// -- Create new hM object
AliHLTHOMERManager *hM = new AliHLTHOMERManager();
printf( "== INITIALIZE ==\n" );
iResult = hM->Initialize();
if (iResult) return iResult;
printf( "== CREATE SOURCE LIST ==\n" );
iResult = hM->CreateSourcesList();
if (iResult) return iResult;
printf( "== CONNECT HOMER ==\n" );
iResult = hM->ConnectHOMER();
if (iResult) return iResult;
printf( "== NEXT EVENT ==\n" );
iResult = hM->NextEvent();
if (iResult) return iResult;
printf( "== LOOP OVER BLOCKS ==\n" );
if ( hM->GetBlockList() == NULL )
return -1;
if ( hM->GetBlockList()->IsEmpty() )
return -2;
TIter next(hM->GetBlockList());
AliHLTHOMERBlockDesc* block = NULL;
AliESDEvent* esd = NULL;
while ((block = (AliHLTHOMERBlockDesc*)next())) {
//printf ( "Detector : %s\n" ,block->GetDetector().Data() );
//printf ( "Datatype : %s\n" ,block->GetDataType().Data() );
if ( block->IsTObject() ) {
TObject* object = block->GetTObject();
// printf("ClassName %s\n", block->GetClassName().Data() );
}
// ++ HLT BLOCK
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
if ( ! block->GetDetector().CompareTo("HLT") ) {
// -- ESDTREE
if ( ! block->GetDataType().CompareTo("ALIESDV0") ) {
esd = static_cast ( block->GetTObject() );
esd->GetStdContent();
printf( "Number of ESD Tracks : %d \n", esd->GetNumberOfTracks());
} //if ( ! block->GetDataType().CompareTo("ALIESDV0") ) {
} // if ( ! block->GetDetector().CompareTo("HLT") ) {
else if ( ! block->GetDetector().CompareTo("TPC") ) {
// -- Process TPC Clusters
if ( ! block->GetDataType().CompareTo("CLUSTERS") ) {
Int_t slice = block->GetSubDetector();
Int_t patch = block->GetSubSubDetector();
// Float_t phi = ( slice + 0.5 ) * TMath::Pi() / 9.0;
// Float_t cos = TMath::Cos( phi );
// Float_t sin = TMath::Sin( phi );
Int_t ddl = slice*6 + patch;
// cout << slice << " -- " << patch << " -- " << ddl << endl;
// AliHLTTPCClusterData *cd = reinterpret_cast (block->GetData());
// UChar_t *data = reinterpret_cast (cd->fSpacePoints);
} // if ( ! block->GetDataType().CompareTo("CLUSTERS") ) {
} // else if ( ! block->GetDetector().CompareTo("TPC") ) {
} // while ((block = (AliHLTHOMERBlockDesc*)next())) {
// -- Destroy hM object
if (hM)
delete hM;
hM = NULL;
return iResult;
}