Change eventbackground creation for more than one task at the same time, change ...
[u/mrichter/AliRoot.git] / EVE / EveHLT / AliEveHOMERManager.h
CommitLineData
d810d0de 1// $Id$
2// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3
4/**************************************************************************
5 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
51346b82 7 * full copyright notice. *
d810d0de 8 **************************************************************************/
a15e6d7d 9
059c30e4 10//-*- Mode: C++ -*-
11#ifndef ALIEVEHOMERMANGER_H
12#define ALIEVEHOMERMANGER_H
13
14/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
15 * See cxx source for full Copyright notice */
16
d810d0de 17/** @file AliEveHOMERManager.h
059c30e4 18 @author Jochen Thaeder
51346b82 19 @date
059c30e4 20 @brief Manager for HOMER in offline
21*/
22
84aff7a4 23#include <TEveElement.h>
059c30e4 24
25#include "TString.h"
26#include "TDOMParser.h"
27#include "TXMLNode.h"
28#include "TList.h"
29
46eadbb4 30#include "AliEveHOMERSourceList.h"
059c30e4 31#include "AliHLTHOMERSourceDesc.h"
32#include "AliHLTHOMERBlockDesc.h"
33#include "AliHLTHOMERReader.h"
7279ee15 34#include "AliEveHOMERXMLHandler.h"
6612c5b3 35
36#include "AliTPCPreprocessorOnline.h"
37
38
059c30e4 39class AliHLTHOMERLibManager;
40
d810d0de 41class AliEveHOMERManager : public TEveElementList
059c30e4 42{
43public:
44
45 /*
46 * ---------------------------------------------------------------------------------
51346b82 47 * Constructor / Destructor
48 * ---------------------------------------------------------------------------------
059c30e4 49 */
50
46eadbb4 51 /** constructor */
51346b82 52 AliEveHOMERManager(TString xmlFile="" );
46eadbb4 53
059c30e4 54 /** destructor */
d810d0de 55 virtual ~AliEveHOMERManager();
059c30e4 56
57 /*
58 * ---------------------------------------------------------------------------------
59 * Source Handling - public
51346b82 60 * ---------------------------------------------------------------------------------
059c30e4 61 */
51346b82 62
059c30e4 63 /** Create Sources List from HOMER-Proxy */
64 Int_t CreateHOMERSourcesList();
65
46eadbb4 66 /** Set state of a source */
51346b82 67 void SetSourceState( AliHLTHOMERSourceDesc* source, Bool_t state);
059c30e4 68
46eadbb4 69 /** Get pointer to source List */
70 TList* GetSourceList() { return fSourceList; } // Get pointer to source List
059c30e4 71
72 /*
73 * ---------------------------------------------------------------------------------
74 * Connection Handling - public
51346b82 75 * ---------------------------------------------------------------------------------
059c30e4 76 */
51346b82 77
46eadbb4 78 /** Connect to HOMER sources, out of Readout List, which gets created when state has changed */
059c30e4 79 Int_t ConnectHOMER();
80
81 /** Disconnect from HOMER sources */
82 void DisconnectHOMER();
83
46eadbb4 84 /** Reconnect from HOMER sources */
059c30e4 85 Int_t ReconnectHOMER();
86
87 /*
88 * ---------------------------------------------------------------------------------
16718cdc 89 * Event Handling - public
51346b82 90 * ---------------------------------------------------------------------------------
059c30e4 91 */
92
46eadbb4 93 /** Loads the next Event, after being connected */
059c30e4 94 Int_t NextEvent();
51346b82 95
46eadbb4 96 /** Get event ID */
97 ULong_t GetEventID() { return fEventID; } // Get event ID
059c30e4 98
46eadbb4 99 /** Get pointer to block List */
100 TList* GetBlockList() { return fBlockList; } // Get pointer to block List
101
059c30e4 102 ///////////////////////////////////////////////////////////////////////////////////
103
104protected:
105
46eadbb4 106 AliHLTHOMERLibManager* fLibManager; //! Dynamic loader manager for the HOMER library
51346b82 107
46eadbb4 108 ///////////////////////////////////////////////////////////////////////////////////
059c30e4 109
110private:
111
46eadbb4 112 AliEveHOMERManager(const AliEveHOMERManager&); // Not implemented.
113 AliEveHOMERManager& operator=(const AliEveHOMERManager&); // Not implemented.
114
059c30e4 115 /*
116 * ---------------------------------------------------------------------------------
117 * Connection Handling - private
51346b82 118 * ---------------------------------------------------------------------------------
059c30e4 119 */
51346b82 120
46eadbb4 121 /** Create a readout list for Hostname and ports */
7279ee15 122 void CreateReadoutList( const char** sourceHostnames, UShort_t* sourcePorts, UInt_t &sourceCount);
059c30e4 123
46eadbb4 124 /** Checks if already connected to HOMER sources */
125 Bool_t IsConnected() { return fConnected; } // Checks if already connected to HOMER sources
126
7279ee15 127 /** Sets realm ( which can be ACR, GPN, HLT, KIP ) */
128 void SetRealm( TString s ) { fXMLHandler->SetRealm(s); } // Sets realm ( which can be ACR, GPN, HLT, KIP )
059c30e4 129
130 /* ---------------------------------------------------------------------------------
46eadbb4 131 * Event Handling - private
51346b82 132 * ---------------------------------------------------------------------------------
059c30e4 133 */
51346b82 134
059c30e4 135 /** Create a TList of blocks, which have been readout */
136 Int_t CreateBlockList();
137
138 /*
139 * ---------------------------------------------------------------------------------
140 * Block Handling - private
51346b82 141 * ---------------------------------------------------------------------------------
059c30e4 142 */
143
46eadbb4 144 /** Get Number of blocks in current event */
145 ULong_t GetNBlks() { return fNBlks; } // Get Number of blocks in current event
059c30e4 146
46eadbb4 147 /** Get pointer to block ndx in current event */
059c30e4 148 void* GetBlk( Int_t ndx );
149
46eadbb4 150 /** Get pointer to current block in current event */
151 void* GetBlk() { return GetBlk( fCurrentBlk ); } // Get pointer to current block in current event
059c30e4 152
46eadbb4 153 /** Get first block in current event */
154 void* GetFirstBlk() { return GetBlk( 0 ); } // Get first block in current event
059c30e4 155
46eadbb4 156 /** Get next block in current event */
157 void* GetNextBlk() { return GetBlk( ++fCurrentBlk ); } // Get next block in current event
059c30e4 158
46eadbb4 159 /** Get size of block ndx */
059c30e4 160 ULong_t GetBlkSize( Int_t ndx );
161
46eadbb4 162 /** Get size of current block */
163 ULong_t GetBlkSize() { return GetBlkSize( fCurrentBlk ); } // Get size of current block
164
165 /** Get origin of block ndx */
51346b82 166 TString GetBlkOrigin( Int_t ndx );
167
46eadbb4 168 /** Get origin of current block */
169 TString GetBlkOrigin(){ return GetBlkOrigin( fCurrentBlk ); } // Get origin of current block
059c30e4 170
46eadbb4 171 /** Get type of block ndx */
172 TString GetBlkType( Int_t ndx );
059c30e4 173
46eadbb4 174 /** Get type of current block */
175 TString GetBlkType() { return GetBlkType( fCurrentBlk ); } // Get type of current block
059c30e4 176
46eadbb4 177 /** Get specification of block ndx */
059c30e4 178 ULong_t GetBlkSpecification( Int_t ndx );
179
46eadbb4 180 /** Get specification of current block */
181 ULong_t GetBlkSpecification() { return GetBlkSpecification( fCurrentBlk ); } // Get specification of current block
059c30e4 182
46eadbb4 183 /** Checks if current Block should was requested */
059c30e4 184 Bool_t CheckIfRequested( AliHLTHOMERBlockDesc* block );
185
186 /*
187 * ---------------------------------------------------------------------------------
188 * Members - private
51346b82 189 * ---------------------------------------------------------------------------------
059c30e4 190 */
191
7279ee15 192 // == XML handler ==
193 AliEveHOMERXMLHandler* fXMLHandler; //! Handles HLT XML Config Files
059c30e4 194
195 // == sources ==
a15e6d7d 196 TList * fSourceList; //! List to HOMER sources
059c30e4 197
198 // == connection ==
a15e6d7d 199 AliHLTHOMERReader* fReader; //! Pointer to HOMER reader
059c30e4 200
201 // == blocks ==
a15e6d7d 202 TList * fBlockList; //! List to HOMER blocks
059c30e4 203
204 // == events ==
46eadbb4 205 ULong_t fNBlks; // Number of blockes in current event
a15e6d7d 206 ULong64_t fEventID; // EventID of current event
46eadbb4 207 ULong_t fCurrentBlk; // Current block in current event
51346b82 208
059c30e4 209 // == states ==
a15e6d7d 210 Bool_t fConnected; // Shows connection status
a15e6d7d 211 Bool_t fStateHasChanged; // Indicates, if a sources have changes, so that one has to reconnect.
059c30e4 212
46eadbb4 213 // == sources ==
214 AliEveHOMERSourceList* fSrcList; // List of HOMER Sources
6612c5b3 215
a15e6d7d 216 ClassDef(AliEveHOMERManager, 0); // Manage connections to HLT data-sources.
059c30e4 217};
218
219#endif