]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/ITS/AliHLTITSClusterFinderComponent.h
- a fast HLT version of the SSD clusterfinder created. The speed on pp mc is ~20kHz...
[u/mrichter/AliRoot.git] / HLT / ITS / AliHLTITSClusterFinderComponent.h
CommitLineData
6e34b293 1//-*- Mode: C++ -*-
2// $Id$
6b7742a2 3#ifndef ALIHLTITSCLUSTERFINDERCOMPONENT_H
4#define ALIHLTITSCLUSTERFINDERCOMPONENT_H
5f2721d5 5
6//* This file is property of and copyright by the ALICE HLT Project *
7//* ALICE Experiment at CERN, All rights reserved. *
8//* See cxx source for full Copyright notice *
9
6b7742a2 10/** @file AliHLTITSClusterFinderComponent.cxx
5f2721d5 11 @author Gaute Øvrebekk <st05886@alf.uib.no>
12 @date
13 @brief Component to run the offline clusterfinder.
14*/
15
16#include "AliHLTProcessor.h"
17#include "AliRawReaderMemory.h"
5f2721d5 18#include "AliITSDetTypeRec.h"
5f2721d5 19#include "AliITSgeom.h"
20#include "AliITSInitGeometry.h"
d293cef8 21#include "TClonesArray.h"
5f2721d5 22
3f61e9ce 23class AliHLTITSClusterFinderSPD;
24
25
5f2721d5 26/**
6b7742a2 27 * @class AliHLTITSClusterFinderComponent
28 * HLT Component to run the ITS offline clusterfinders.
21de9ddd 29 *
30 * <h2>General properties:</h2>
31 *
6b7742a2 32 * Component ID: \b ITSClusterFinderSPD or ITSClusterFinderSDD or ITSClusterFinderSSD <br>
21de9ddd 33 * Library: \b libAliHLTITS.so <br>
34 * Input Data Types: <br>
6b7742a2 35 * kAliHLTDataTypeDDLRaw|kAliHLTDataOriginITSSPD or kAliHLTDataTypeDDLRaw|kAliHLTDataOriginITSSDD or kAliHLTDataTypeDDLRaw|kAliHLTDataOriginITSSD <br>
21de9ddd 36 *
37 * Output Data Types: <br>
6b7742a2 38 * kAliHLTDataTypeClusters|kAliHLTDataOriginITSSPD or kAliHLTDataTypeClusters|kAliHLTDataOriginITSSDD or kAliHLTDataTypeClusters|kAliHLTDataOriginITSSSD <br>
21de9ddd 39 *
40 * <h2>Mandatory arguments:</h2>
41 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
42 *
43 * <h2>Optional arguments:</h2>
44 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
45 *
46 * <h2>Configuration:</h2>
47 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
48 * \li -config1 <i> teststring </i> <br>
49 * a configuration argument with one parameter
50 * \li -config2 <br>
51 * a configuration argument without parameters
52 *
53 * <h2>Default CDB entries:</h2>
54 * TODO
55 *
56 * <h2>Performance:</h2>
57 * TODO
58 *
59 * <h2>Memory consumption:</h2>
60 * TODO
61 *
62 * <h2>Output size:</h2>
63 * TODO
5f2721d5 64 *
65 * @ingroup alihlt_its_components
66 */
6b7742a2 67class AliHLTITSClusterFinderComponent : public AliHLTProcessor
5f2721d5 68{
69 public:
6b7742a2 70 /**
71 * Defines for selecting clusterfinder for SPD, SDD or SSD.
72 */
73 enum {
74 kClusterFinderSPD,
75 kClusterFinderSDD,
76 kClusterFinderSSD
77 };
5f2721d5 78 /*
79 * ---------------------------------------------------------------------------------
80 * Constructor / Destructor
81 * ---------------------------------------------------------------------------------
82 */
83
6b7742a2 84 /** constructor
85 * @param mode input type see e.g. @ref kClusterFinderSPD
86 */
87 AliHLTITSClusterFinderComponent(int mode);
5f2721d5 88
89 /** destructor */
6b7742a2 90 virtual ~AliHLTITSClusterFinderComponent();
5f2721d5 91
92 /*
93 * ---------------------------------------------------------------------------------
94 * Public functions to implement AliHLTComponent's interface.
95 * These functions are required for the registration process
96 * ---------------------------------------------------------------------------------
97 */
98
99 /** interface function, see @ref AliHLTComponent for description */
100 const char* GetComponentID();
101
102 /** interface function, see @ref AliHLTComponent for description */
103 void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
104
105 /** interface function, see @ref AliHLTComponent for description */
106 AliHLTComponentDataType GetOutputDataType();
107
108 /** interface function, see @ref AliHLTComponent for description */
109 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
110
111 /** interface function, see @ref AliHLTComponent for description */
112 AliHLTComponent* Spawn();
113
114 protected:
115
116 /*
117 * ---------------------------------------------------------------------------------
118 * Protected functions to implement AliHLTComponent's interface.
119 * These functions provide initialization as well as the actual processing
120 * capabilities of the component.
121 * ---------------------------------------------------------------------------------
122 */
123
124 /** Initialization */
125 Int_t DoInit( int argc, const char** argv );
126
127 /** DeInitialization */
128 Int_t DoDeinit();
129
5f2721d5 130 /** EventLoop */
131 //Int_t DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
132 // AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr
133 // ,AliHLTUInt32_t& size, AliHLTComponentBlockList& outputBlocks);
134
135 Int_t DoEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& /*trigData*/);
6b7742a2 136
137 int Reconfigure(const char* cdbEntry, const char* chainId);
5f2721d5 138
139 using AliHLTProcessor::DoEvent;
140
141 ///////////////////////////////////////////////////////////////////////////////////
142
6b7742a2 143 private:
144 /** standard constructor prohibited */
145 AliHLTITSClusterFinderComponent();
5f2721d5 146 /** copy constructor prohibited */
6b7742a2 147 AliHLTITSClusterFinderComponent(const AliHLTITSClusterFinderComponent&);
5f2721d5 148 /** assignment operator prohibited */
6b7742a2 149 AliHLTITSClusterFinderComponent& operator=(const AliHLTITSClusterFinderComponent&);
150 /**
151 * Configure the component.
152 * Parse a string for the configuration arguments and set the component
153 * properties.
154 */
155 int Configure(const char* arguments);
5f2721d5 156 /*
157 * ---------------------------------------------------------------------------------
158 * Members - private
159 * ---------------------------------------------------------------------------------
160 */
161
6b7742a2 162 /**
163 * switch to indicated the ClusterFinder
164 * use fModeSwitch = 0 for SPD
165 * use fModeSwitch = 1 for SDD
166 * use fModeSwitch = 2 for SSD
167 */
168 Int_t fModeSwitch;
169
170 Int_t fNModules; // total number of modules
171 Int_t fId; // ddl offset
172 Int_t fNddl; // number of ddl's
173
d293cef8 174 TClonesArray** fClusters; //!transient
175
5f2721d5 176 /** the reader object for data decoding */
177 AliRawReaderMemory* fRawReader; //!transient
178
179 AliITSDetTypeRec* fDettype; //!transient
180
5f2721d5 181 AliITSgeom* fgeom; //!transient
182
183 AliITSInitGeometry* fgeomInit; //!transient
6e34b293 184
3f61e9ce 185 AliHLTITSClusterFinderSPD *fSPD;
186
187 double fStatTime;
188 double fStatTimeAll;
189 double fStatTimeC;
190 double fStatTimeAllC;
191 int fStatNEv;
192
6b7742a2 193 ClassDef(AliHLTITSClusterFinderComponent, 0)
5f2721d5 194
195 };
196#endif