4e84126a36a04fc27979ca4c325b7d93737e6973
[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 #include "AliHLTReconstructorBase.h"
29 class AliRunLoader;
30 class AliHLTSystem;
31 class AliRawReader;
32
33 /**
34  * @class AliHLTSimulation
35  * Base class of HLT data processing simulations.
36  */
37 class AliHLTSimulation : public TObject, public AliHLTReconstructorBase {
38  public:
39   /** create an instance of the class */
40   static AliHLTSimulation* CreateInstance();
41
42   /** delete an instance */
43   static int DeleteInstance(AliHLTSimulation* pSim);
44
45   /** init simulation */
46   int Init(AliRunLoader* pRunLoader, const char* options);
47
48   /** run simulation with an instance of the run loader */
49   int Run(AliRunLoader* pRunLoader);
50
51  private:
52   /** standard constructor */
53   AliHLTSimulation();
54   /** copy constructor prohibited */
55   AliHLTSimulation(const AliHLTSimulation&);
56   /** assignment operator prohibited */
57   AliHLTSimulation& operator=(const AliHLTSimulation&);
58   /** standard destructor */
59   ~AliHLTSimulation();
60
61   /* current options */
62   TString fOptions;                                                   //!transient
63
64   /* RAW reader instance for chains which need RAW data as input */
65   AliRawReader* fpRawReader;                                            //!transient
66
67   ClassDef(AliHLTSimulation, 2)
68 };
69
70 #define ALIHLTSIMULATION_LIBRARY             "libHLTsim.so"
71 #define ALIHLTSIMULATION_LIBRARY_VERSION     0
72 #define ALIHLTSIMULATION_CREATE_INSTANCE     "AliHLTSimulationCreateInstance"
73 #define ALIHLTSIMULATION_DELETE_INSTANCE     "AliHLTSimulationDeleteInstance"
74 #define ALIHLTSIMULATION_INIT                "AliHLTSimulationInit"
75 #define ALIHLTSIMULATION_RUN                 "AliHLTSimulationRun"
76 #define ALIHLTSIMULATION_GET_LIBRARY_VERSION "AliHLTSimulationGetLibraryVersion"
77
78 #ifdef __cplusplus
79 extern "C" {
80 #endif
81   typedef AliHLTSimulation* (*AliHLTSimulationCreateInstance_t)();
82   typedef int (*AliHLTSimulationDeleteInstance_t)(AliHLTSimulation* pSim);
83   typedef int (*AliHLTSimulationInit_t)(AliHLTSimulation* pSim, AliRunLoader* pRunLoader, const char* options);
84   typedef int (*AliHLTSimulationRun_t)(AliHLTSimulation* pSim, AliRunLoader* pRunLoader);
85   typedef int (*AliHLTSimulationGetLibraryVersion_t)();
86
87   /**
88    * Create an instance of the AliHLTSimulation class
89    */
90   AliHLTSimulation* AliHLTSimulationCreateInstance();
91   /**
92    * Delete an instance of the AliHLTSimulation class
93    */
94   int AliHLTSimulationDeleteInstance(AliHLTSimulation* pSim);
95   /**
96    * Set options for an instance
97    */
98   int AliHLTSimulationInit(AliHLTSimulation* pSim, AliRunLoader* pRunLoader, const char* options);
99   /**
100    * Run simulation for an instance and run loader
101    */
102   int AliHLTSimulationRun(AliHLTSimulation* pSim, AliRunLoader* pRunLoader);
103   /**
104    * Get version no of the library/class interface
105    */
106   int AliHLTSimulationGetLibraryVersion();
107 #ifdef __cplusplus
108 }
109 #endif
110
111 #endif