Adding options to publish data from certain chambers and half planes.
[u/mrichter/AliRoot.git] / HLT / MUON / OfflineInterface / AliHLTMUONRecHitsSource.h
1 #ifndef ALIHLTMUONRECHITSSOURCE_H
2 #define ALIHLTMUONRECHITSSOURCE_H
3 /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 /**
9  * @file   AliHLTMUONRecHitsSource.h
10  * @author Artur Szostak <artursz@iafrica.com>
11  * @date   
12  * @brief  Class for generating reconstructed hits data blocks from AliRoot data.
13  */
14
15 #include "AliHLTOfflineDataSource.h"
16
17 class AliMUONSimData;
18 class AliMUONRecData;
19 class AliRunLoader;
20 class AliLoader;
21
22 /**
23  * AliHLTMUONRecHitsSource is a HLT-AliRoot data source object which generates
24  * and serves AliHLTMUONRecHitsBlockStruct type data blocks to the HLT system.
25  * This is meant as a debugging utility which can optionally generate the data
26  * blocks from simulate GEANT hits or MUON offline reconstructed hits.
27  */
28 class AliHLTMUONRecHitsSource : public AliHLTOfflineDataSource
29 {
30 public:
31
32         AliHLTMUONRecHitsSource();
33         virtual ~AliHLTMUONRecHitsSource();
34         
35         virtual int GetEvent(
36                         const AliHLTComponentEventData& evtData,
37                         AliHLTComponentTriggerData& trigData,
38                         AliHLTUInt8_t* outputPtr, 
39                         AliHLTUInt32_t& size,
40                         vector<AliHLTComponentBlockData>& outputBlocks
41                 );
42         
43         virtual const char* GetComponentID();
44
45         virtual AliHLTComponentDataType GetOutputDataType();
46
47         virtual void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier);
48
49         virtual AliHLTComponent* Spawn();
50
51 protected:
52
53         virtual int DoInit(int argc, const char** argv);
54         virtual int DoDeinit();
55         
56 private:
57
58         enum SelectionType
59         {
60                 kLeftPlane,  // everything from x < 0
61                 kRightPlane, // everything from x >= 0
62                 kWholePlane  // for all x
63         };
64         
65         int ParseChamberString(const char* str);
66
67         AliMUONSimData* fSimData; //! MUON module interface to simulated data.
68         AliMUONRecData* fRecData; //! MUON module interface to reconstructed data.
69         AliRunLoader* fRunLoader; //! A pointer to the AliRunLoader instance.
70         AliLoader* fLoader; //! Pointer to the MUON loader instance.
71         SelectionType fSelection; //! Indicates if we should publish from the left, right or whole XY plane.
72         bool fServeChamber[10]; //! Flag to indicate if hits from a given chamber should be published.
73
74         ClassDef(AliHLTMUONRecHitsSource, 0); // dHLT data source for reconstructed hit data blocks.
75 };
76
77 #endif // ALIHLTMUONRECHITSSOURCE_H