]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/BASE/AliHLTOUTHandlerChain.h
CMake: removing qpythia from the depedencies
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTOUTHandlerChain.h
CommitLineData
7131ea63 1//-*- Mode: C++ -*-
2// $Id$
3
4#ifndef ALIHLTOUTHANDLERCHAIN_H
5#define ALIHLTOUTHANDLERCHAIN_H
2dfe97e6 6//* This file is property of and copyright by the *
7131ea63 7//* ALICE Experiment at CERN, All rights reserved. *
8//* See cxx source for full Copyright notice *
9
2dfe97e6 10/// @file AliHLTOUTHandlerChain.h
11/// @author Matthias Richter
12/// @date 24.06.2008
13/// @brief HLTOUT handler of type kChain.
14///
7131ea63 15
16#include "AliHLTOUTHandler.h"
17#include "TString.h"
18
19class AliHLTSystem;
7131ea63 20class AliHLTConfiguration;
21class AliHLTConfigurationHandler;
22
23/**
24 * @class AliHLTOUTHandlerChain
25 * The default HLTOUT handler for type kChain.
26 *
27 * The handler implements the kChain processing of HLTOUT data.
28 * The ids of the chains to be run during processing are provided
29 * as parameter to the constructor. The AliHLTModuleAgent
30 * can just create a new instance and specify the chains in order
31 * to define the HLTOUT handling of type kChain for a certain data
32 * block. The same instance can be returned for multiple data blocks.
33 * The handler will run once on all data blocks.
34 *
35 * The AliHLTOUTPublisherComponent must be used as data source in order
36 * to publish the data blocks from HLTOUT into the chain. The component
37 * publishes all data blocks selected for the handler. Additional
38 * filter rules can be applied.
39 *
40 * <h2>Chain configuration</h2>
41 * The tasks in the chain to be run can be defined either by
42 * the AliHLTModuleAgent in conjunction with all other configurations or
43 * by an implementation of CreateConfigurations().
44 *
45 * The handler is controlled by arguments passed to the constructor, the
46 * syntax is equal to the AliHLTSystem (see AliHLTSystem::ScanOptions).
47 *
48 * <h2>Usage example:</h2>
49 * An agent implementation for some sample histograms. Asumes a chain to
50 * be registered with name 'SAMPLE-my-histo-converter'
51 * <pre>
52 * AliHLTOUTHandler* AliHLTMyAgent::GetOutputHandler(AliHLTComponentDataType dt,
53 * AliHLTUInt32_t spec)
54 * {
55 * // afterburner for some histograms
56 * if (dt==kAliHLTDataTypeHistogram|kAliHLTDataOriginSample) {
57 * return new AliHLTOUTHandlerChain("chains=SAMPLE-my-histo-converter");
58 * }
59 *
60 * return NULL;
61 * }
62 * </pre>
63 *
64 * <h2>Data output</h2>
65 * The chain can produce output data as usual. All produced data blocks are
66 * added to the HLTOUT. This means a chain can e.g. produce ESD data blocks
67 * out of the HLT output by applying a converter component as an afterburner.
68 * The produced output of the chain is automatically subject to HLTOUT
69 * standard processing.
70 *
71 * HLTOUT processing sequence:
72 * - first handlers of type kChain
73 * - handlers of type kEsd
74 * - handlers of type kProprietary
75 *
76 * @ingroup alihlt_aliroot_reconstruction
77 */
78class AliHLTOUTHandlerChain : public AliHLTOUTHandler {
79 public:
80 /** constructor */
81 AliHLTOUTHandlerChain(const char* arguments);
82 /** standard destructor */
83 virtual ~AliHLTOUTHandlerChain();
84
85 /**
86 * Process a data block.
ed85c027 87 * The handler runs a normal HLT chain for processing of the selected blocks.
88 * The input of the chain is provided by the AliHLTOUTPublisher component.
7131ea63 89 * @return equipment id the block should be used for.
90 */
91 virtual int ProcessData(AliHLTOUT* pData);
92 protected:
93 /**
94 * Create configurations.
95 * The configurations of the chain to be run can be defined either by
96 * the AliHLTModuleAgent in conjunction with all other configurations or
97 * by an implementation of the function.
98 */
99 virtual int CreateConfigurations(AliHLTConfigurationHandler* handler);
100
101 private:
102 /** standard constructor prohibited */
103 AliHLTOUTHandlerChain();
104 /** copy constructor prohibited */
105 AliHLTOUTHandlerChain(const AliHLTOUTHandlerChain&);
106 /** assignment operator prohibited */
107 AliHLTOUTHandlerChain& operator=(const AliHLTOUTHandlerChain&);
108
109 /**
110 * Create and init AliHLTSystem.
111 * Read the arguments and create the AliHLTOUTTask as data dump.
112 */
113 int InitSystem();
114
115 TString fChains; //! transient
116 TString fOptions; //! transient
117
118 AliHLTSystem* fpSystem; //!transient
19b5c321 119 bool fbHaveOutput; //!transient
7131ea63 120
19b5c321 121 ClassDef(AliHLTOUTHandlerChain, 1)
7131ea63 122};
123#endif