added libHLTsim and libHLTrec
[u/mrichter/AliRoot.git] / HLT / sim / AliHLTSimulation.h
1 //-*- Mode: C++ -*-
2 // @(#) $Id$
3
4 #ifndef ALIHLTSIMULATION_H
5 #define ALIHLTSIMULATION_H
6 /* This file is property of and copyright by the ALICE HLT Project        * 
7  * ALICE Experiment at CERN, All rights reserved.                         *
8  * See cxx source for full Copyright notice                               */
9
10 /** @file   AliHLTSimulation.h
11     @author Matthias Richter
12     @date   
13     @brief  Binding class for HLT simulation in AliRoot
14
15 // see below for class documentation
16 // or
17 // refer to README to build package
18 // or
19 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
20                                                                           */
21 /**
22  * @defgroup alihlt_simulation HLT simulation in AliRoot
23  * This section describes the the simulation of the HLT in AliRoot.
24  */
25
26 #include "TObject.h"
27 #include "TString.h"
28 class AliRunLoader;
29 class AliHLTSystem;
30
31 /**
32  * @class AliHLTSimulation
33  * Base class of HLT data processing simulations.
34  */
35 class AliHLTSimulation : public TObject {
36  public:
37   /** create an instance of the class */
38   static AliHLTSimulation* CreateInstance();
39
40   /** delete an instance */
41   static int DeleteInstance(AliHLTSimulation* pSim);
42
43   /** init simulation */
44   int Init(AliRunLoader* pRunLoader, const char* options);
45
46   /** run simulation with an instance of the run loader */
47   int Run(AliRunLoader* pRunLoader);
48
49  private:
50   /** standard constructor */
51   AliHLTSimulation();
52   /** copy constructor prohibited */
53   AliHLTSimulation(const AliHLTSimulation&);
54   /** assignment operator prohibited */
55   AliHLTSimulation& operator=(const AliHLTSimulation&);
56   /** standard destructor */
57   ~AliHLTSimulation();
58
59   /* current options */
60   TString fOptions;                                                   //!transient
61
62   /*  HLT steering object */
63   AliHLTSystem* fpSystem;                                             //!transient
64
65   ClassDef(AliHLTSimulation, 0)
66 };
67
68 #define ALIHLTSIMULATION_LIBRARY             "libHLTsim.so"
69 #define ALIHLTSIMULATION_LIBRARY_VERSION     0
70 #define ALIHLTSIMULATION_CREATE_INSTANCE     "AliHLTSimulationCreateInstance"
71 #define ALIHLTSIMULATION_DELETE_INSTANCE     "AliHLTSimulationDeleteInstance"
72 #define ALIHLTSIMULATION_INIT                "AliHLTSimulationInit"
73 #define ALIHLTSIMULATION_RUN                 "AliHLTSimulationRun"
74 #define ALIHLTSIMULATION_GET_LIBRARY_VERSION "AliHLTSimulationGetLibraryVersion"
75
76 #ifdef __cplusplus
77 extern "C" {
78 #endif
79   typedef AliHLTSimulation* (*AliHLTSimulationCreateInstance_t)();
80   typedef int (*AliHLTSimulationDeleteInstance_t)(AliHLTSimulation* pSim);
81   typedef int (*AliHLTSimulationInit_t)(AliHLTSimulation* pSim, AliRunLoader* pRunLoader, const char* options);
82   typedef int (*AliHLTSimulationRun_t)(AliHLTSimulation* pSim, AliRunLoader* pRunLoader);
83   typedef int (*AliHLTSimulationGetLibraryVersion_t)();
84
85   /**
86    * Create an instance of the AliHLTSimulation class
87    */
88   AliHLTSimulation* AliHLTSimulationCreateInstance();
89   /**
90    * Delete an instance of the AliHLTSimulation class
91    */
92   int AliHLTSimulationDeleteInstance(AliHLTSimulation* pSim);
93   /**
94    * Set options for an instance
95    */
96   int AliHLTSimulationInit(AliHLTSimulation* pSim, AliRunLoader* pRunLoader, const char* options);
97   /**
98    * Run simulation for an instance and run loader
99    */
100   int AliHLTSimulationRun(AliHLTSimulation* pSim, AliRunLoader* pRunLoader);
101   /**
102    * Get version no of the library/class interface
103    */
104   int AliHLTSimulationGetLibraryVersion();
105 #ifdef __cplusplus
106 }
107 #endif
108
109 #endif