changed some histo ranges to save memory
[u/mrichter/AliRoot.git] / HLT / EMCAL / AliHLTEMCALClusterizerComponent.h
1 //-*- Mode: C++ -*-
2 // $Id$
3
4
5 /**************************************************************************
6  * This file is property of and copyright by the ALICE HLT Project        * 
7  * All rights reserved.                                                   *
8  *                                                                        *
9  * Primary Authors: Oystein Djuvsland                                     *
10  *                                                                        *
11  * Permission to use, copy, modify and distribute this software and its   *
12  * documentation strictly for non-commercial purposes is hereby granted   *
13  * without fee, provided that the above copyright notice appears in all   *
14  * copies and that both the copyright notice and this permission notice   *
15  * appear in the supporting documentation. The authors make no claims     *
16  * about the suitability of this software for any purpose. It is          * 
17  * provided "as is" without express or implied warranty.                  *
18  **************************************************************************/
19
20 #ifndef ALIHLTEMCALCLUSTERIZERCOMPONENT_H
21 #define ALIHLTEMCALCLUSTERIZERCOMPONENT_H
22
23
24
25 /**
26  * Clusterizer component for EMCAL HLT
27  *
28  * @file   AliHLTEMCALClusterizerComponent.h
29  * @author Oystein Djuvsland
30  * @date   
31  * @brief  A clusterizer component for EMCAL HLT
32 */
33
34 // see below for class documentation
35 // or
36 // refer to README to build package
37 // or
38 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
39
40 #include "AliHLTCaloClusterizerComponent.h"
41
42 #include <vector>
43
44 // class AliHLTEMCALClusterizer;
45 // class AliHLTEMCALRcuCellEnergyDataStruct;
46 // class AliHLTEMCALRecPointDataStruct;
47 // class AliHLTEMCALRecPointContainerStruct;
48 // class AliHLTEMCALRecPointListDataStruct;
49 // class AliHLTEMCALDigitContainerDataStruct;
50
51 /**
52  * @class AliHLTEMCALClusterizerComponent
53  *
54  * Class for running clusterization for EMCAL in HLT. It takes digits as input and
55  * gives reconstruction points as output. 
56  * 
57  * The component has the following component arguments:
58  * -clusterthreshold       The energy threshold for starting a new rec point
59  * -energythreshold        The energy threshold for including a digit in a
60  *                         rec point
61  * @ingroup alihlt_phos
62  */
63
64 /**
65  * @class AliHLTEMCALClusterizerComponent
66  *
67  * Class for running clusterization for EMCAL in HLT. 
68  *
69  * <h2>General properties:</h2>
70  *
71  * Component ID: \b PhosClusterizer <br>
72  * Library: \b libAliHLTEMCAL.so     <br>
73  * Input Data Types: @ref AliHLTEMCALDefinitions::fgkDigitDataType<br>
74  * Output Data Types: @ref AliHLTEMCALDefinitions::fgkRecPointDataType<br>
75  *
76  * <h2>Mandatory arguments:</h2>
77  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
78  * \li No mandatory arguments for component                           <br>
79  *
80  * <h2>Optional arguments:</h2>
81  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
82  * \li -digitthreshold      <i> value </i> <br>
83  *      threshold for a digit to be added to a rec point in GeV (default value: 0.03)
84  * \li -recpointthreshold <i> value </i> <br>
85  *      threshold for starting a new rec point  (default value: 0.2)
86  * \li -partitionmode
87  *      if we want to do clusterisation on the partition level (not available...) (defaul value: false)
88  *
89  * <h2>Configuration:</h2>
90  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
91  * \li No configuration arguments 
92  *
93  * <h2>Default CDB entries:</h2>
94  * \li No CDB entry yet, will come.
95  *
96  * <h2>Performance:</h2>
97  * Pretty good (~ 3 kHz), depends on amount of data...
98  *
99  * <h2>Memory consumption:</h2>
100  * Depends on the amount of data, but pretty godd
101  *
102  * <h2>Output size:</h2>
103  * Depends on the amount of data...
104  *
105  * More detailed description. (At some point...)
106  *
107  * @ingroup alihlt_phos
108  */ 
109
110 class AliHLTEMCALClusterizerComponent : public AliHLTCaloClusterizerComponent
111 //class AliHLTEMCALClusterizerComponent : public AliHLTEMCALProcessor
112 {
113   
114  public:
115
116   /** Constructor */
117   AliHLTEMCALClusterizerComponent();
118
119   /** Destructor */
120   virtual ~AliHLTEMCALClusterizerComponent();
121
122   /** interface function, see @ref AliHLTComponent for description */
123   const char* GetComponentID();
124
125   /** interface function, see @ref AliHLTComponent for description */
126   void GetInputDataTypes(std::vector<AliHLTComponentDataType>& list);
127
128   /** interface function, see @ref AliHLTComponent for description */
129   AliHLTComponentDataType GetOutputDataType();
130
131   /** interface function, see @ref AliHLTComponent for description */
132   void GetOutputDataSize ( unsigned long& constBase, double& inputMultiplier );
133
134   /** interface function, see @ref AliHLTComponent for description */
135   AliHLTComponent* Spawn();
136
137 protected:
138    
139    /** interface function, see @ref AliHLTComponent for description */
140     int DoInit ( int argc, const char** argv );
141    
142     /** interface function, see @ref AliHLTComponent for description */
143     virtual int DoDeinit();
144    
145    virtual int InitialiseGeometry();
146
147 private:
148   
149   /** Copy constructor,  not implemented */
150   AliHLTEMCALClusterizerComponent(const AliHLTEMCALClusterizerComponent &);
151   
152   /** Assignment operator, not implemented */
153   AliHLTEMCALClusterizerComponent & operator = (const AliHLTEMCALClusterizerComponent);
154
155   
156 };
157
158 #endif