Fixing error codes so that components return negative codes according to HLT convention.
[u/mrichter/AliRoot.git] / HLT / MUON / OfflineInterface / AliHLTMUONRecHitsSource.h
index d86f2a1c0581cf97c8103a989a37801ea73ac8c0..c509a16bbf99d6eda44be8d568dc181f33da87b0 100644 (file)
@@ -1,29 +1,64 @@
 #ifndef ALIHLTMUONRECHITSSOURCE_H
 #define ALIHLTMUONRECHITSSOURCE_H
-/* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
+/**************************************************************************
+ * This file is property of and copyright by the ALICE HLT Project        * 
+ * All rights reserved.                                                   *
+ *                                                                        *
+ * Primary Authors:                                                       *
+ *   Artur Szostak <artursz@iafrica.com>                                  *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          * 
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
 
 /* $Id$ */
 
-/**
- * @file   AliHLTMUONRecHitsSource.h
- * @author Artur Szostak <artursz@iafrica.com>
- * @date   
- * @brief  Class for generating reconstructed hits data blocks from AliRoot data.
- */
+///
+/// @file   AliHLTMUONRecHitsSource.h
+/// @author Artur Szostak <artursz@iafrica.com>
+/// @date   
+/// @brief  Class for generating reconstructed hits data blocks from AliRoot data.
+///
 
 #include "AliHLTOfflineDataSource.h"
 
-class AliMUONSimData;
-class AliMUONRecData;
-class AliRunLoader;
-class AliLoader;
+class AliMUONMCDataInterface;
+class AliMUONDataInterface;
 
 /**
  * AliHLTMUONRecHitsSource is a HLT-AliRoot data source object which generates
  * and serves AliHLTMUONRecHitsBlockStruct type data blocks to the HLT system.
  * This is meant as a debugging utility which can optionally generate the data
- * blocks from simulate GEANT hits or MUON offline reconstructed hits.
+ * blocks from simulated GEANT hits or MUON offline reconstructed hits.
+ *
+ * Command line flags:
+ *  -simdata
+ *      Specify this option to publish GEANT hits.
+ *  -recdata
+ *      Specify this option to publish offline reconstructed raw clusters.
+ *  -plane left|right|all
+ *      Specifies if data from the left (x < 0), right (x >= 0) or the whole XY
+ *      plane should be published.
+ *  -chamber <number>|<number>-<number>[,<number>|<number>-<number>]...
+ *      Selects the chambers from which to publish data. Valid chamber numbers
+ *      in the range [1..10]. The string after '-chamber' is a comma separated
+ *      list of numbers or ranges. Some examples of strings:
+ *      1  1-2  1,2,3  1,3-5,7 etc...
+ *  -firstevent <number>
+ *      Indicates the first event number to fetch from AliRoot. The default is to
+ *      start from zero and increment the event number after every GetEvent call.
+ *      This mode causes the component to ignore the event number passed to it by
+ *      the system and rather use an internal counter. This mode can be overriden
+ *      with the -event_number_literal flag.
+ *  -event_number_literal
+ *      This flag indicates to use the event numbers as literal indices into the
+ *      AliRoot trees. This option will cause the component to ignore the -firstevent
+ *      flag.
  */
 class AliHLTMUONRecHitsSource : public AliHLTOfflineDataSource
 {
@@ -32,14 +67,6 @@ public:
        AliHLTMUONRecHitsSource();
        virtual ~AliHLTMUONRecHitsSource();
        
-       virtual int GetEvent(
-                       const AliHLTComponentEventData& evtData,
-                       AliHLTComponentTriggerData& trigData,
-                       AliHLTUInt8_t* outputPtr, 
-                       AliHLTUInt32_t& size,
-                       vector<AliHLTComponentBlockData>& outputBlocks
-               );
-       
        virtual const char* GetComponentID();
 
        virtual AliHLTComponentDataType GetOutputDataType();
@@ -53,8 +80,25 @@ protected:
        virtual int DoInit(int argc, const char** argv);
        virtual int DoDeinit();
        
+       virtual int GetEvent(
+                       const AliHLTComponentEventData& evtData,
+                       AliHLTComponentTriggerData& trigData,
+                       AliHLTUInt8_t* outputPtr, 
+                       AliHLTUInt32_t& size,
+                       vector<AliHLTComponentBlockData>& outputBlocks
+               );
+       
+       using AliHLTOfflineDataSource::GetEvent;
+       
 private:
 
+       // Prevent copying of these objects.
+       AliHLTMUONRecHitsSource(const AliHLTMUONRecHitsSource& /*object*/);
+       AliHLTMUONRecHitsSource& operator = (const AliHLTMUONRecHitsSource& /*object*/);
+       
+       AliMUONMCDataInterface* fMCDataInterface; // access to MUON MC-related data
+       AliMUONDataInterface* fDataInterface; // access to MUON data
+
        enum SelectionType
        {
                kLeftPlane,  // everything from x < 0
@@ -62,14 +106,23 @@ private:
                kWholePlane  // for all x
        };
        
+       /**
+        * Parses a string with the following format:
+        *   <number>|<number>-<number>[,<number>|<number>-<number>]...
+        * For example: 1  1,2,3  1-2   1,2-4,5  etc...
+        * Flags in the fServeChamber will be set to 'true' for all appropriate
+        * values parsed.
+        * @param str  The string to parse.
+        * @return  Zero on success and EINVAL if there is a parse error.
+        */
        int ParseChamberString(const char* str);
 
-       AliMUONSimData* fSimData; //! MUON module interface to simulated data.
-       AliMUONRecData* fRecData; //! MUON module interface to reconstructed data.
-       AliRunLoader* fRunLoader; //! A pointer to the AliRunLoader instance.
-       AliLoader* fLoader; //! Pointer to the MUON loader instance.
        SelectionType fSelection; //! Indicates if we should publish from the left, right or whole XY plane.
        bool fServeChamber[10]; //! Flag to indicate if hits from a given chamber should be published.
+       
+       Int_t fCurrentEventIndex;  //! The current event index that is loaded.
+                                  //  -1 indicates that we should rather use the event
+                                  // numbers as given by the system.
 
        ClassDef(AliHLTMUONRecHitsSource, 0); // dHLT data source for reconstructed hit data blocks.
 };