ROOT logo
//-*- Mode: C++ -*-
// $Id: HOMERManager.C  $
/**
 * @file HOMERManager.C
 * @brief Sample macro for the use of the HOMERManager
 *
 * Usage:
 * <pre>
 *   aliroot -l HOMERManager.C 
 * </pre>
 *
 * 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
 * <ul>
 *    <li>DAQ/DCS(ACR) network</li>
 *    <li>HLT network</li>
 *    <li>CERN GPN network</li>
 * </ul>
 * 
 * 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<AliESDEvent*> ( 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<AliHLTTPCClusterData*> (block->GetData());
	//	UChar_t *data            = reinterpret_cast<UChar_t*> (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;
}
 HOMERManager.C:1
 HOMERManager.C:2
 HOMERManager.C:3
 HOMERManager.C:4
 HOMERManager.C:5
 HOMERManager.C:6
 HOMERManager.C:7
 HOMERManager.C:8
 HOMERManager.C:9
 HOMERManager.C:10
 HOMERManager.C:11
 HOMERManager.C:12
 HOMERManager.C:13
 HOMERManager.C:14
 HOMERManager.C:15
 HOMERManager.C:16
 HOMERManager.C:17
 HOMERManager.C:18
 HOMERManager.C:19
 HOMERManager.C:20
 HOMERManager.C:21
 HOMERManager.C:22
 HOMERManager.C:23
 HOMERManager.C:24
 HOMERManager.C:25
 HOMERManager.C:26
 HOMERManager.C:27
 HOMERManager.C:28
 HOMERManager.C:29
 HOMERManager.C:30
 HOMERManager.C:31
 HOMERManager.C:32
 HOMERManager.C:33
 HOMERManager.C:34
 HOMERManager.C:35
 HOMERManager.C:36
 HOMERManager.C:37
 HOMERManager.C:38
 HOMERManager.C:39
 HOMERManager.C:40
 HOMERManager.C:41
 HOMERManager.C:42
 HOMERManager.C:43
 HOMERManager.C:44
 HOMERManager.C:45
 HOMERManager.C:46
 HOMERManager.C:47
 HOMERManager.C:48
 HOMERManager.C:49
 HOMERManager.C:50
 HOMERManager.C:51
 HOMERManager.C:52
 HOMERManager.C:53
 HOMERManager.C:54
 HOMERManager.C:55
 HOMERManager.C:56
 HOMERManager.C:57
 HOMERManager.C:58
 HOMERManager.C:59
 HOMERManager.C:60
 HOMERManager.C:61
 HOMERManager.C:62
 HOMERManager.C:63
 HOMERManager.C:64
 HOMERManager.C:65
 HOMERManager.C:66
 HOMERManager.C:67
 HOMERManager.C:68
 HOMERManager.C:69
 HOMERManager.C:70
 HOMERManager.C:71
 HOMERManager.C:72
 HOMERManager.C:73
 HOMERManager.C:74
 HOMERManager.C:75
 HOMERManager.C:76
 HOMERManager.C:77
 HOMERManager.C:78
 HOMERManager.C:79
 HOMERManager.C:80
 HOMERManager.C:81
 HOMERManager.C:82
 HOMERManager.C:83
 HOMERManager.C:84
 HOMERManager.C:85
 HOMERManager.C:86
 HOMERManager.C:87
 HOMERManager.C:88
 HOMERManager.C:89
 HOMERManager.C:90
 HOMERManager.C:91
 HOMERManager.C:92
 HOMERManager.C:93
 HOMERManager.C:94
 HOMERManager.C:95
 HOMERManager.C:96
 HOMERManager.C:97
 HOMERManager.C:98
 HOMERManager.C:99
 HOMERManager.C:100
 HOMERManager.C:101
 HOMERManager.C:102
 HOMERManager.C:103
 HOMERManager.C:104
 HOMERManager.C:105
 HOMERManager.C:106
 HOMERManager.C:107
 HOMERManager.C:108
 HOMERManager.C:109
 HOMERManager.C:110
 HOMERManager.C:111
 HOMERManager.C:112
 HOMERManager.C:113
 HOMERManager.C:114
 HOMERManager.C:115
 HOMERManager.C:116
 HOMERManager.C:117
 HOMERManager.C:118
 HOMERManager.C:119
 HOMERManager.C:120
 HOMERManager.C:121
 HOMERManager.C:122