]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/PHOS/AliHLTPHOSClusterizerComponent.h
Script to make defauilt reco param
[u/mrichter/AliRoot.git] / HLT / PHOS / AliHLTPHOSClusterizerComponent.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 ALIHLTPHOSCLUSTERIZERCOMPONENT_H
21 #define ALIHLTPHOSCLUSTERIZERCOMPONENT_H
22
23
24
25 /**
26  * Clusterizer component for PHOS HLT
27  *
28  * @file   AliHLTPHOSClusterizerComponent.h
29  * @author Oystein Djuvsland
30  * @date   
31  * @brief  A clusterizer component for PHOS 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 "AliHLTPHOSProcessor.h"
41
42 class AliHLTPHOSClusterizer;
43 class AliHLTPHOSRcuCellEnergyDataStruct;
44 class AliHLTPHOSRecPointDataStruct;
45 class AliHLTPHOSRecPointContainerStruct;
46 class AliHLTPHOSRecPointListDataStruct;
47 class AliHLTPHOSDigitContainerDataStruct;
48
49 /**
50  * @class AliHLTPHOSClusterizerComponent
51  *
52  * Class for running clusterization for PHOS in HLT. It takes digits as input and
53  * gives reconstruction points as output. 
54  * 
55  * The component has the following component arguments:
56  * -clusterthreshold       The energy threshold for starting a new rec point
57  * -energythreshold        The energy threshold for including a digit in a
58  *                         rec point
59  * @ingroup alihlt_phos
60  */
61 class AliHLTPHOSClusterizerComponent: public AliHLTPHOSProcessor
62 {
63  public:
64
65   /** Constructor */
66   AliHLTPHOSClusterizerComponent();
67
68   /** Destructor */
69   virtual ~AliHLTPHOSClusterizerComponent();
70
71   /** Copy constructor */  
72   AliHLTPHOSClusterizerComponent(const AliHLTPHOSClusterizerComponent &) : 
73     AliHLTPHOSProcessor(),
74     fAllDigitsPtr(0),
75     fClusterizerPtr(0),
76     fRecPointStructArrayPtr(0),
77     fDigitCount(0),
78     fModuleClusterizationMode(0),
79     fNoCrazyness(0)
80   {
81     //Copy constructor not implemented
82   }
83   
84   /** Assignment */
85   AliHLTPHOSClusterizerComponent & operator = (const AliHLTPHOSClusterizerComponent)
86   {
87     //Assignment
88     return *this; 
89   }
90
91   /** interface function, see @ref AliHLTComponent for description */
92   const char* GetComponentID();
93
94   /** interface function, see @ref AliHLTComponent for description */
95   void GetInputDataTypes(std::vector<AliHLTComponentDataType>& list);
96
97   /** interface function, see @ref AliHLTComponent for description */
98   AliHLTComponentDataType GetOutputDataType();
99
100   /** interface function, see @ref AliHLTComponent for description */
101   void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier);
102
103   /** interface function, see @ref AliHLTComponent for description */
104   
105   using  AliHLTPHOSProcessor::DoEvent;
106   int DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
107                 AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size,
108                 std::vector<AliHLTComponentBlockData>& outputBlocks);
109   // Int_t DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
110   /** interface function, see @ref AliHLTComponent for description */
111   AliHLTComponent* Spawn();
112   
113 protected:
114
115   /** interface function, see @ref AliHLTComponent for description */
116   int DoInit(int argc, const char** argv);
117
118   /** interface function, see @ref AliHLTComponent for description */
119   int Deinit();
120
121  private:
122
123   /** All digits in the event */
124   AliHLTPHOSDigitContainerDataStruct *fAllDigitsPtr;            //! transient
125
126   /** Pointer to the clusterizer it self */
127   AliHLTPHOSClusterizer* fClusterizerPtr;                       //! transient
128
129   /** Pointer to rec points used in clusterization */
130   AliHLTPHOSRecPointDataStruct* fRecPointStructArrayPtr;        //! transient
131
132   /** Number of digits in event */
133   Int_t fDigitCount;              
134
135   /** If the clusterizer is doing clusterization of the whole module */
136   Bool_t fModuleClusterizationMode;                             //COMMENT
137
138   /** If one should consider crazyness or not */                              
139   Bool_t fNoCrazyness;                                          //COMMENT
140
141   /** interface function, see @ref AliHLTComponent for description */
142   static const AliHLTComponentDataType fgkInputDataTypes[];     //COMMENT
143 };
144
145 #endif