]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/PHOS/AliHLTPHOSClusterizerComponent.h
completely re-worked TPC CA tracking code (Sergey/Ivan)
[u/mrichter/AliRoot.git] / HLT / PHOS / AliHLTPHOSClusterizerComponent.h
1
2 /**************************************************************************
3  * This file is property of and copyright by the ALICE HLT Project        * 
4  * All rights reserved.                                                   *
5  *                                                                        *
6  * Primary Authors: Oystein Djuvsland                                     *
7  *                                                                        *
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  **************************************************************************/
16
17 #ifndef ALIHLTPHOSCLUSTERIZERCOMPONENT_H
18 #define ALIHLTPHOSCLUSTERIZERCOMPONENT_H
19
20
21
22 /**
23  * Clusterizer component for PHOS HLT
24  *
25  * @file   AliHLTPHOSClusterizerComponent.h
26  * @author Oystein Djuvsland
27  * @date   
28  * @brief  A clusterizer component for PHOS HLT
29 */
30
31 // see below for class documentation
32 // or
33 // refer to README to build package
34 // or
35 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
36
37 #include "AliHLTPHOSProcessor.h"
38
39 class AliHLTPHOSClusterizer;
40 class AliHLTPHOSRcuCellEnergyDataStruct;
41 class AliHLTPHOSRecPointDataStruct;
42 class AliHLTPHOSRecPointContainerStruct;
43 class AliHLTPHOSRecPointListDataStruct;
44 class AliHLTPHOSDigitContainerDataStruct;
45
46 /**
47  * @class AliHLTPHOSClusterizerComponent
48  *
49  * Class for running clusterization for PHOS in HLT. It takes digits as input and
50  * gives reconstruction points as output. 
51  * 
52  * The component has the following component arguments:
53  * -clusterthreshold       The energy threshold for starting a new rec point
54  * -energythreshold        The energy threshold for including a digit in a
55  *                         rec point
56  * @ingroup alihlt_phos
57  */
58 class AliHLTPHOSClusterizerComponent: public AliHLTPHOSProcessor
59 {
60  public:
61
62   /** Constructor */
63   AliHLTPHOSClusterizerComponent();
64
65   /** Destructor */
66   virtual ~AliHLTPHOSClusterizerComponent();
67
68   /** interface function, see @ref AliHLTComponent for description */
69   const char* GetComponentID();
70
71   /** interface function, see @ref AliHLTComponent for description */
72   void GetInputDataTypes(std::vector<AliHLTComponentDataType>& list);
73
74   /** interface function, see @ref AliHLTComponent for description */
75   AliHLTComponentDataType GetOutputDataType();
76
77   /** interface function, see @ref AliHLTComponent for description */
78   void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier);
79
80   /** interface function, see @ref AliHLTComponent for description */
81   int DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
82                 AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size,
83                 std::vector<AliHLTComponentBlockData>& outputBlocks);
84
85   /** interface function, see @ref AliHLTComponent for description */
86   AliHLTComponent* Spawn();
87   
88 protected:
89
90   /** interface function, see @ref AliHLTComponent for description */
91   int DoInit(int argc, const char** argv);
92
93   /** interface function, see @ref AliHLTComponent for description */
94   int Deinit();
95
96  private:
97
98   /** All digits in the event */
99   AliHLTPHOSDigitContainerDataStruct *fAllDigitsPtr;            //! transient
100
101   /** Pointer to the clusterizer it self */
102   AliHLTPHOSClusterizer* fClusterizerPtr;                       //! transient
103
104   // using AliHLTPHOSProcessor::DoEvent;
105
106   /** Pointer to the output of the component */
107   AliHLTPHOSRecPointContainerStruct* fOutPtr;                   //! transient
108
109   /** Pointer to rec points used in clusterization */
110   AliHLTPHOSRecPointDataStruct* fRecPointStructArrayPtr;        //! transient
111
112   /** Number of digits in event */
113   Int_t fDigitCount;              
114
115   /** If one should consider crazyness or not */                              
116   Bool_t fNoCrazyness;                                          
117
118   /** interface function, see @ref AliHLTComponent for description */
119   static const AliHLTComponentDataType fgkInputDataTypes[];
120 };
121
122 #endif