ALIROOT-5600 - skip non-participating detector modules
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTOUTHandlerDetectorDDL.h
1 //-*- Mode: C++ -*-
2 // $Id$
3
4 #ifndef ALIHLTOUTHANDLERDETECTORDDL_H
5 #define ALIHLTOUTHANDLERDETECTORDDL_H
6 //* This file is property of and copyright by the                          * 
7 //* ALICE Experiment at CERN, All rights reserved.                         *
8 //* See cxx source for full Copyright notice                               *
9
10 /// @file   AliHLTOUTHandlerDetectorDDL.h
11 /// @author Matthias Richter
12 /// @date   2008-09-09
13 /// @brief  Default HLTOUT handler returning equipment id from data type and
14 ///         bit pattern in spec.
15
16 #include "AliHLTOUTHandlerEquId.h"
17
18 /**
19  * @class AliHLTOUTHandlerDetectorDDL
20  * A default handler class for DDL raw data redirection handlers.
21  *
22  * This class implements an AliHLTOUTHandlerEquId which extracts the
23  * equipment Id from the bit pattern in the specification. All detectors
24  * with up to 32 DDL links follow this convention. The bit no in the
25  * data specification word corresponds to the DDL number within the
26  * sub-detector.
27  *
28  * DDL offsets for sub-detectors can be fetched by means of AliDAQ.
29  * The class must be initialized with the detector identification and the
30  * data type it should be used for. 
31  * @note The detector identification is according to AliDAQ. E.g. for ITS
32  * and MUON there are ITSSPD, ITSSDD, ITSSSD, and MUONTRK and MUONTRG
33  * respectively.
34  *
35  * @ingroup alihlt_aliroot_reconstruction
36  */
37 class AliHLTOUTHandlerDetectorDDL : public AliHLTOUTHandlerEquId {
38  public:
39   /** constructor 
40    * the class is initialized with the detector identification and the
41    * data type it should be used for. Note: the detector identification
42    * is according to AliDAQ. E.g. for ITS and MUON there are ITSSPD,
43    * ITSSDD, ITSSSD, and MUONTRK and MUONTRG respectively.
44    */
45   AliHLTOUTHandlerDetectorDDL(const char* detector, AliHLTComponentDataType dt);
46   /** standard destructor */
47   virtual ~AliHLTOUTHandlerDetectorDDL();
48
49   /**
50    * Process a data block.
51    * Derives the eqipment ID from the DDL offset of the detector and
52    * the DDL no within the detector which corresponds to a bit in the
53    * data specification. Only one bit is allowed to be set.
54    * @return equipment id the block should be used for.
55    */
56   virtual int ProcessData(AliHLTOUT* pData);
57
58  private:
59   /** standard constructor prohibited */
60   AliHLTOUTHandlerDetectorDDL();
61   /** copy constructor prohibited */
62   AliHLTOUTHandlerDetectorDDL(const AliHLTOUTHandlerDetectorDDL&);
63   /** assignment operator prohibited */
64   AliHLTOUTHandlerDetectorDDL& operator=(const AliHLTOUTHandlerDetectorDDL&);
65
66   int fDDLOffset; //!transient
67   int fNumberOfDDLs; //!transient
68   AliHLTComponentDataType fDt; //!transient
69
70   ClassDef(AliHLTOUTHandlerDetectorDDL, 0)
71 };
72 #endif