]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/PHOS/AliHLTPHOSClusterizerComponent.h
1) Cosmetics, pluss 2) first iteration in phasing out
[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   /** Copy constructor */  
69   AliHLTPHOSClusterizerComponent(const AliHLTPHOSClusterizerComponent &) : 
70     AliHLTPHOSProcessor(),
71     fAllDigitsPtr(0),
72     fClusterizerPtr(0),
73     fRecPointStructArrayPtr(0),
74     fDigitCount(0),
75     fModuleClusterizationMode(0),
76     fNoCrazyness(0)
77   {
78     //Copy constructor not implemented
79   }
80   
81   /** Assignment */
82   AliHLTPHOSClusterizerComponent & operator = (const AliHLTPHOSClusterizerComponent)
83   {
84     //Assignment
85     return *this; 
86   }
87
88   /** interface function, see @ref AliHLTComponent for description */
89   const char* GetComponentID();
90
91   /** interface function, see @ref AliHLTComponent for description */
92   void GetInputDataTypes(std::vector<AliHLTComponentDataType>& list);
93
94   /** interface function, see @ref AliHLTComponent for description */
95   AliHLTComponentDataType GetOutputDataType();
96
97   /** interface function, see @ref AliHLTComponent for description */
98   void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier);
99
100   /** interface function, see @ref AliHLTComponent for description */
101   
102   using  AliHLTPHOSProcessor::DoEvent;
103   int DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
104                 AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size,
105                 std::vector<AliHLTComponentBlockData>& outputBlocks);
106   // Int_t DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
107   /** interface function, see @ref AliHLTComponent for description */
108   AliHLTComponent* Spawn();
109   
110 protected:
111
112   /** interface function, see @ref AliHLTComponent for description */
113   int DoInit(int argc, const char** argv);
114
115   /** interface function, see @ref AliHLTComponent for description */
116   int Deinit();
117
118  private:
119
120   /** All digits in the event */
121   AliHLTPHOSDigitContainerDataStruct *fAllDigitsPtr;            //! transient
122
123   /** Pointer to the clusterizer it self */
124   AliHLTPHOSClusterizer* fClusterizerPtr;                       //! transient
125
126   /** Pointer to rec points used in clusterization */
127   AliHLTPHOSRecPointDataStruct* fRecPointStructArrayPtr;        //! transient
128
129   /** Number of digits in event */
130   Int_t fDigitCount;              
131
132   /** If the clusterizer is doing clusterization of the whole module */
133   Bool_t fModuleClusterizationMode;                             //COMMENT
134
135   /** If one should consider crazyness or not */                              
136   Bool_t fNoCrazyness;                                          //COMMENT
137
138   /** interface function, see @ref AliHLTComponent for description */
139   static const AliHLTComponentDataType fgkInputDataTypes[];     //COMMENT
140 };
141
142 #endif