2 /**************************************************************************
3 * This file is property of and copyright by the ALICE HLT Project *
4 * All rights reserved. *
6 * Primary Authors: Oystein Djuvsland *
8 * Permission to use, copy, modify and distribute this software and its *
9 * documentation strictly for non-commercial purposes is hereby granted *
10 * without fee, provided that the above copyright notice appears in all *
11 * copies and that both the copyright notice and this permission notice *
12 * appear in the supporting documentation. The authors make no claims *
13 * about the suitability of this software for any purpose. It is *
14 * provided "as is" without express or implied warranty. *
15 **************************************************************************/
17 #ifndef ALIHLTPHOSCLUSTERIZERCOMPONENT_H
18 #define ALIHLTPHOSCLUSTERIZERCOMPONENT_H
23 * Clusterizer component for PHOS HLT
25 * @file AliHLTPHOSClusterizerComponent.h
26 * @author Oystein Djuvsland
28 * @brief A clusterizer component for PHOS HLT
31 // see below for class documentation
33 // refer to README to build package
35 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
37 #include "AliHLTPHOSProcessor.h"
39 class AliHLTPHOSClusterizer;
41 class AliHLTPHOSRcuCellEnergyDataStruct;
42 //class AliHLTPHOSClusterDataStruct;
43 class AliHLTPHOSRecPointDataStruct;
44 class AliHLTPHOSRecPointContainerStruct;
45 class AliHLTPHOSRecPointListDataStruct;
46 class AliHLTPHOSDigitContainerDataStruct;
49 * @class AliHLTPHOSClusterizerComponent
51 * Class for running clusterization for PHOS in HLT. It takes digits as input and
52 * gives reconstruction points as output.
54 * The component has the following component arguments:
55 * -clusterthreshold The energy threshold for starting a new rec point
56 * -energythreshold The energy threshold for including a digit in a
58 * @ingroup alihlt_phos
60 class AliHLTPHOSClusterizerComponent: public AliHLTPHOSProcessor
65 AliHLTPHOSClusterizerComponent();
68 virtual ~AliHLTPHOSClusterizerComponent();
70 /** interface function, see @ref AliHLTComponent for description */
71 const char* GetComponentID();
73 /** interface function, see @ref AliHLTComponent for description */
74 void GetInputDataTypes(std::vector<AliHLTComponentDataType>& list);
76 /** interface function, see @ref AliHLTComponent for description */
77 AliHLTComponentDataType GetOutputDataType();
79 /** interface function, see @ref AliHLTComponent for description */
80 void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier);
82 /** interface function, see @ref AliHLTComponent for description */
83 int DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
84 AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size,
85 std::vector<AliHLTComponentBlockData>& outputBlocks);
87 /** interface function, see @ref AliHLTComponent for description */
88 AliHLTComponent* Spawn();
92 /** interface function, see @ref AliHLTComponent for description */
93 int DoInit(int argc, const char** argv);
95 /** interface function, see @ref AliHLTComponent for description */
100 /** All digits in the event */
101 AliHLTPHOSDigitContainerDataStruct *fAllDigitsPtr; //! transient
103 /** Pointer to the clusterizer it self */
104 AliHLTPHOSClusterizer* fClusterizerPtr; //! transient
106 using AliHLTPHOSProcessor::DoEvent;
108 /** Pointer to the output of the component */
109 AliHLTPHOSRecPointContainerStruct* fOutPtr; //! transient
111 /** Pointer to rec points used in clusterization */
112 AliHLTPHOSRecPointDataStruct* fRecPointStructArrayPtr; //! transient
114 /** Number of digits in event */
117 /** If one should consider crazyness or not */
120 /** interface function, see @ref AliHLTComponent for description */
121 static const AliHLTComponentDataType fgkInputDataTypes[];