ALIROOT-5600 - skip non-participating detector modules
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTOUTHandlerDetectorDDL.h
CommitLineData
7c4d1228 1//-*- Mode: C++ -*-
2// $Id$
3
4#ifndef ALIHLTOUTHANDLERDETECTORDDL_H
5#define ALIHLTOUTHANDLERDETECTORDDL_H
2dfe97e6 6//* This file is property of and copyright by the *
7c4d1228 7//* ALICE Experiment at CERN, All rights reserved. *
8//* See cxx source for full Copyright notice *
9
2dfe97e6 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.
7c4d1228 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 */
37class 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