The DumpEvent methods should be protected, not private, because classes need to inher...
[u/mrichter/AliRoot.git] / HLT / MUON / OfflineInterface / AliHLTMUONRecHitsSource.h
CommitLineData
3dd14e20 1#ifndef ALIHLTMUONRECHITSSOURCE_H
2#define ALIHLTMUONRECHITSSOURCE_H
bef07620 3/**************************************************************************
4 * This file is property of and copyright by the ALICE HLT Project *
5 * All rights reserved. *
6 * *
7 * Primary Authors: *
8 * Artur Szostak <artursz@iafrica.com> *
9 * *
10 * Permission to use, copy, modify and distribute this software and its *
11 * documentation strictly for non-commercial purposes is hereby granted *
12 * without fee, provided that the above copyright notice appears in all *
13 * copies and that both the copyright notice and this permission notice *
14 * appear in the supporting documentation. The authors make no claims *
15 * about the suitability of this software for any purpose. It is *
16 * provided "as is" without express or implied warranty. *
17 **************************************************************************/
3dd14e20 18
19/* $Id$ */
20
21/**
22 * @file AliHLTMUONRecHitsSource.h
23 * @author Artur Szostak <artursz@iafrica.com>
24 * @date
25 * @brief Class for generating reconstructed hits data blocks from AliRoot data.
26 */
27
28#include "AliHLTOfflineDataSource.h"
29
8d33d1c2 30class AliMUONMCDataInterface;
31class AliMUONDataInterface;
3dd14e20 32
33/**
34 * AliHLTMUONRecHitsSource is a HLT-AliRoot data source object which generates
35 * and serves AliHLTMUONRecHitsBlockStruct type data blocks to the HLT system.
36 * This is meant as a debugging utility which can optionally generate the data
159b743b 37 * blocks from simulated GEANT hits or MUON offline reconstructed hits.
38 *
39 * Command line flags:
40 * -simdata
41 * Specify this option to publish GEANT hits.
42 * -recdata
43 * Specify this option to publish offline reconstructed raw clusters.
44 * -plane left|right|all
45 * Specifies if data from the left (x < 0), right (x >= 0) or the whole XY
46 * plane should be published.
47 * -chamber <number>|<number>-<number>[,<number>|<number>-<number>]...
48 * Selects the chambers from which to publish data. Valid chamber numbers
49 * in the range [1..10]. The string after '-chamber' is a comma separated
50 * list of numbers or ranges. Some examples of strings:
51 * 1 1-2 1,2,3 1,3-5,7 etc...
c06fe66f 52 * -firstevent <number>
53 * Indicates the first event number to fetch from AliRoot. The default is to
54 * start from zero and increment the event number after every GetEvent call.
55 * This mode causes the component to ignore the event number passed to it by
56 * the system and rather use an internal counter. This mode can be overriden
57 * with the -event_number_literal flag.
58 * -event_number_literal
59 * This flag indicates to use the event numbers as literal indices into the
60 * AliRoot trees. This option will cause the component to ignore the -firstevent
61 * flag.
3dd14e20 62 */
63class AliHLTMUONRecHitsSource : public AliHLTOfflineDataSource
64{
65public:
66
67 AliHLTMUONRecHitsSource();
68 virtual ~AliHLTMUONRecHitsSource();
69
70 virtual int GetEvent(
71 const AliHLTComponentEventData& evtData,
72 AliHLTComponentTriggerData& trigData,
73 AliHLTUInt8_t* outputPtr,
74 AliHLTUInt32_t& size,
75 vector<AliHLTComponentBlockData>& outputBlocks
76 );
77
78 virtual const char* GetComponentID();
79
80 virtual AliHLTComponentDataType GetOutputDataType();
81
82 virtual void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier);
83
84 virtual AliHLTComponent* Spawn();
85
86protected:
87
88 virtual int DoInit(int argc, const char** argv);
89 virtual int DoDeinit();
90
91private:
92
baff881d 93 // Prevent copying of these objects.
94 AliHLTMUONRecHitsSource(const AliHLTMUONRecHitsSource& /*object*/);
95 AliHLTMUONRecHitsSource& operator = (const AliHLTMUONRecHitsSource& /*object*/);
96
97 AliMUONMCDataInterface* fMCDataInterface; // access to MUON MC-related data
98 AliMUONDataInterface* fDataInterface; // access to MUON data
8d33d1c2 99
5df25c2a 100 enum SelectionType
101 {
102 kLeftPlane, // everything from x < 0
103 kRightPlane, // everything from x >= 0
104 kWholePlane // for all x
105 };
106
159b743b 107 /**
108 * Parses a string with the following format:
109 * <number>|<number>-<number>[,<number>|<number>-<number>]...
110 * For example: 1 1,2,3 1-2 1,2-4,5 etc...
111 * Flags in the fServeChamber will be set to 'true' for all appropriate
112 * values parsed.
113 * @param str The string to parse.
114 * @return Zero on success and EINVAL if there is a parse error.
115 */
5df25c2a 116 int ParseChamberString(const char* str);
117
5df25c2a 118 SelectionType fSelection; //! Indicates if we should publish from the left, right or whole XY plane.
119 bool fServeChamber[10]; //! Flag to indicate if hits from a given chamber should be published.
c06fe66f 120
121 Int_t fCurrentEvent; //! The current event index that is loaded.
122 // -1 indicates that we should rather use the event
123 // numbers as given by the system.
3dd14e20 124
125 ClassDef(AliHLTMUONRecHitsSource, 0); // dHLT data source for reconstructed hit data blocks.
126};
127
128#endif // ALIHLTMUONRECHITSSOURCE_H