2 // $Id: HOMERManager.C $
5 * @brief Sample macro for the use of the HOMERManager
9 * aliroot -l HOMERManager.C
12 * This macro illustrates the usage of the AliHLTHOMERManager in order
13 * to on-line read events outside the HLT.
15 * This macro can be run inside the
17 * <li>DAQ/DCS(ACR) network</li>
18 * <li>HLT network</li>
19 * <li>CERN GPN network</li>
22 * See AliHLTHOMERManager for detailed description.
24 * @author Jochen Thaeder
25 * @ingroup alihlt_tutorial
26 * @ingroup alihlt_homer
30 Int_t HOMERManager() {
34 // -- Create new hM object
35 AliHLTHOMERManager *hM = new AliHLTHOMERManager();
37 printf( "== INITIALIZE ==\n" );
39 iResult = hM->Initialize();
40 if (iResult) return iResult;
42 printf( "== CREATE SOURCE LIST ==\n" );
44 iResult = hM->CreateSourcesList();
45 if (iResult) return iResult;
47 printf( "== CONNECT HOMER ==\n" );
49 iResult = hM->ConnectHOMER();
50 if (iResult) return iResult;
52 printf( "== NEXT EVENT ==\n" );
54 iResult = hM->NextEvent();
55 if (iResult) return iResult;
57 printf( "== LOOP OVER BLOCKS ==\n" );
59 if ( hM->GetBlockList() == NULL )
62 if ( hM->GetBlockList()->IsEmpty() )
65 TIter next(hM->GetBlockList());
66 AliHLTHOMERBlockDesc* block = NULL;
68 AliESDEvent* esd = NULL;
70 while ((block = (AliHLTHOMERBlockDesc*)next())) {
72 //printf ( "Detector : %s\n" ,block->GetDetector().Data() );
73 //printf ( "Datatype : %s\n" ,block->GetDataType().Data() );
75 if ( block->IsTObject() ) {
76 TObject* object = block->GetTObject();
77 // printf("ClassName %s\n", block->GetClassName().Data() );
81 // +++++++++++++++++++++++++++++++++++++++++++++++++++++++
82 if ( ! block->GetDetector().CompareTo("HLT") ) {
85 if ( ! block->GetDataType().CompareTo("ALIESDV0") ) {
86 esd = static_cast<AliESDEvent*> ( block->GetTObject() );
89 printf( "Number of ESD Tracks : %d \n", esd->GetNumberOfTracks());
90 } //if ( ! block->GetDataType().CompareTo("ALIESDV0") ) {
91 } // if ( ! block->GetDetector().CompareTo("HLT") ) {
93 else if ( ! block->GetDetector().CompareTo("TPC") ) {
94 // -- Process TPC Clusters
95 if ( ! block->GetDataType().CompareTo("CLUSTERS") ) {
97 Int_t slice = block->GetSubDetector();
98 Int_t patch = block->GetSubSubDetector();
99 // Float_t phi = ( slice + 0.5 ) * TMath::Pi() / 9.0;
100 // Float_t cos = TMath::Cos( phi );
101 // Float_t sin = TMath::Sin( phi );
103 Int_t ddl = slice*6 + patch;
105 // cout << slice << " -- " << patch << " -- " << ddl << endl;
107 // AliHLTTPCClusterData *cd = reinterpret_cast<AliHLTTPCClusterData*> (block->GetData());
108 // UChar_t *data = reinterpret_cast<UChar_t*> (cd->fSpacePoints);
110 } // if ( ! block->GetDataType().CompareTo("CLUSTERS") ) {
111 } // else if ( ! block->GetDetector().CompareTo("TPC") ) {
113 } // while ((block = (AliHLTHOMERBlockDesc*)next())) {
115 // -- Destroy hM object