new classes for cosmic calibration
[u/mrichter/AliRoot.git] / HLT / PHOS / AliHLTPHOSClusterizer.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2  * See cxx source for full Copyright notice                               */
3   
4 /** @file   AliHLTPHOSClusterizer.h
5     @author Ã\98ystein Djuvsland
6     @date   
7     @brief  A temporary clusterizer for PHOS
8 */
9
10
11 #ifndef ALIHLTPHOSCLUSTERIZER_H
12 #define ALIHLTPHOSCLUSTERIZER_H
13
14
15
16 //#include "AliHLTPHOSProcessor.h"
17 #include "AliHLTPHOSBase.h" 
18
19
20 //#include "AliHLTPHOSCommonDefs.h"
21 //#include "AliHLTPHOSConstants.h"
22
23 //using namespace PhosHLTConst;
24
25 struct AliHLTPHOSClusterDataStruct;
26 struct AliHLTPHOSRecPointDataStruct;
27 struct AliHLTPHOSValidCellDataStruct;
28 struct AliHLTPHOSRecPointListDataStruct;
29 struct AliHLTPHOSRcuCellEnergyDataStruct;
30
31 //class AliHLTPHOSClusterizer: public AliHLTPHOSProcessor
32
33 class AliHLTPHOSClusterizer: public AliHLTPHOSBase
34 {
35   
36  public: 
37   
38   AliHLTPHOSClusterizer();
39   virtual ~AliHLTPHOSClusterizer();
40   //  AliHLTPHOSClusterizer(const AliHLTPHOSClusterizer &);
41   //AliHLTPHOSClusterizer & operator = (const AliHLTPHOSClusterizer &) {return *this;}
42    
43   void    SetThreshold(float threshold) {fThreshold = threshold;}
44   void    SetClusterThreshold(float clusterThreshold) {fClusterThreshold = clusterThreshold;}
45   
46   void    SetHighGainFactor(float highGain) {fHighGainFactor = highGain;}
47   void    SetLowGainFactor(float lowGain) {fLowGainFactor = lowGain;}
48   void    SetArraySize(int size) 
49   { 
50     fArraySize = size;
51     fMultiplicity = fArraySize * fArraySize;
52   }
53   float GetThreshold() {return fThreshold;}
54   float GetClusterThreshold() {return fClusterThreshold;}
55   float GetHighGainFactor() {return fHighGainFactor;}
56   float GetLowGainFactor() {return fLowGainFactor;}
57   float GetArraySize() {return fArraySize;}
58   float GetMultiplicity() {return fMultiplicity;}
59   
60   int   BuildCellEnergyArray(AliHLTPHOSRcuCellEnergyDataStruct *structPtr, AliHLTPHOSRecPointListDataStruct* recPointList);
61   int   CreateRecPointStructArray(AliHLTPHOSRecPointDataStruct* rectStructsPtr, AliHLTPHOSRecPointListDataStruct* list, int nPoints);
62   int   CalculateCenterOfGravity(AliHLTPHOSRecPointDataStruct* recPointPtr);
63   int   CalculateMoments(AliHLTPHOSRecPointDataStruct* recPointPtr, Bool_t axisOnly);
64   int   ClusterizeStruct(AliHLTPHOSRecPointDataStruct* recArrayPtr, AliHLTPHOSClusterDataStruct* clusterArrayPtr);
65   int   ResetCellEnergyArray();
66
67   
68  private:
69
70   AliHLTUInt8_t fPHOSModule;                                     /**<Number of the PHOSModule*/
71   Float_t fEnergyArray[N_XCOLUMNS_MOD][N_ZROWS_MOD];             /**<2D array of cell energies*/
72   Float_t fThreshold;                                            /**<Energy threshold*/
73   Float_t fClusterThreshold;                                     /**<Cluster threshold*/
74   Float_t fHighGainFactor;                                       /**<High gain factor*/
75   Float_t fLowGainFactor;                                        /**<Low gain factor*/
76   Int_t   fArraySize;                                            /**<Size of the array which the energies are summed*/
77   Int_t   fMultiplicity;                                         /**<Number of crystals the energies are summed for*/
78
79   ClassDef(AliHLTPHOSClusterizer, 1);
80 };
81
82 #endif