Last commit, completing addition of AliHLTCaloClusterizer, AliHLTCaloDigitMaker,...
[u/mrichter/AliRoot.git] / HLT / CALO / AliHLTCaloClusterAnalyser.h
CommitLineData
ea367f6a 1//-*- Mode: C++ -*-
2// $Id: AliHLTCaloClusterAnalyser.h 35107 2009-09-30 01:45:06Z phille $
3
4 /**************************************************************************
5 * This file is property of and copyright by the ALICE HLT Project *
6 * All rights reserved. *
7 * *
8 * Primary Authors: Oystein Djuvsland *
9 * *
10 * Permission to use, copy, modify and distribute this software and its *
11 * documentation strictly for non-commercial purposes is hereby granted *
12 * without fee, provided that the above copyright notice appears in all *
13 * copies and that both the copyright notice and this permission notice *
14 * appear in the supporting documentation. The authors make no claims *
15 * about the suitability of this software for any purpose. It is *
16 * provided "as is" without express or implied warranty. *
17 **************************************************************************/
18
19#ifndef ALIHLTCALOCLUSTERANALYSER_H
20#define ALIHLTCALOCLUSTERANALYSER_H
21
22#include "Rtypes.h"
23
24/**
25 * Class calculates properties of rec points
26 *
27 * @file AliHLTCaloClusterAnalyser.h
28 * @author Oystein Djuvsland
29 * @date
30 * @brief Cluster analyser for CALO HLT
31 */
32
33// see header file for class documentation
34// or
35// refer to README to build package
36// or
37// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
38
39//#include "AliHLTCaloBase.h"
40
41//class AliHLTCaloPhysicsAnalyzer;
42class AliHLTCaloRecPointHeaderStruct;
43class AliHLTCaloRecPointDataStruct;
44class AliHLTCaloClusterHeaderStruct;
45class AliHLTCaloClusterDataStruct;
46class AliPHOSGeoUtils;
47
48/**
49 * @class AliHLTCaloClusterAnalyser
50 * ClusterAnalyser for CALO HLT. Algorithms for center of gravity
51 * and moment calculations are based on classes from the CALO
52 * offline analysis directory
53 *
54 * @ingroup alihlt_calo
55 */
56//class AliHLTCaloClusterAnalyser : public AliHLTCaloBase
57class AliHLTCaloClusterAnalyser
58{
59public:
60
61 /** Constructor */
62 AliHLTCaloClusterAnalyser();
63
64 /** Destructor */
65 virtual ~AliHLTCaloClusterAnalyser();
66
67 /** Copy constructor */
68 AliHLTCaloClusterAnalyser(const AliHLTCaloClusterAnalyser &) :
69 // AliHLTCaloBase(),
70 fLogWeight(0),
71 fRecPointDataPtr(0),
72 fNRecPoints(0),
73 fCaloClusterDataPtr(0),
74 fCaloClusterHeaderPtr(0),
75 fPHOSGeometry(0),
76 //fAnalyzerPtr(0),
77 fDoClusterFit(false),
78 fHaveCPVInfo(false),
79 fDoPID(false),
80 fHaveDistanceToBadChannel(false)
81
82 {
83 //Copy constructor not implemented
84 }
85
86 /** Assignment */
87 AliHLTCaloClusterAnalyser & operator = (const AliHLTCaloClusterAnalyser)
88 {
89 //Assignment
90 return *this;
91 }
92
93 /**
94 * Set the rec point data buffer
95 * @param recPointDataPtr is a pointer to the rec points
96 */
97 void SetRecPointDataPtr(AliHLTCaloRecPointHeaderStruct *recPointDataPtr);
98
99 /**
100 * Set the calo cluster output buffer
101 * @param caloClusterDataPtr is a pointer to the calo cluster buffer
102 */
103 void SetCaloClusterDataPtr(AliHLTCaloClusterDataStruct *caloClusterDataPtr);
104
105 /**
106 * Calculates the center of gravity for the reconstruction points in the container
107 * @return
108 */
109 Int_t CalculateCenterOfGravity();
110
111 /**
112 * Calculates the moments for the reconstruction points in the container
113 * @return
114 */
115 Int_t CalculateRecPointMoments();
116
117 /**
118 * Calculates the moments for a certain cluster
119 * @return
120 */
121 Int_t CalculateClusterMoments(AliHLTCaloRecPointDataStruct *recPointPtr, AliHLTCaloClusterDataStruct* clusterPtr);
122
123 /**
124 * Deconvolute the clusters in an AliHLTCaloRecPointContainerStruct
125 * @return
126 */
127 Int_t DeconvoluteClusters();
128
129 /**
130 * Convert the rec points into calo clusters
131 * @return
132 */
133 Int_t CreateClusters(UInt_t availableSize, UInt_t& totSize);
134
135 /**
136 * Fit a cluster
137 * param recPointPtr is a pointer to the rec point to fit
138 * @return
139 */
140 Int_t FitCluster(AliHLTCaloRecPointDataStruct* /*recPointPtr*/) { return 0; }
141
142 /**
143 * Get the distance to the nearest CPV rec point
144 * param recPointPtr is the pointer to the emc rec point
145 * @return the distance
146 */
147 Float_t GetCPVDistance(AliHLTCaloRecPointDataStruct* /*recPointPtr*/) { return 0; };
148
149 /**
150 * Do partice identification
151 * param clusterPtr is the pointer to the emc cluster
152 * @return
153 */
154 Int_t DoParticleIdentification(AliHLTCaloClusterDataStruct* /*clusterPtr*/) { return 0; }
155
156 /**
157 * Get the distance to the neares bad channel
158 * param clusterPtr is a pointer to the calo cluster
159 * @return the distance
160 */
161 Float_t GetDistanceToBadChannel(AliHLTCaloClusterDataStruct* /*clusterPtr*/) { return 0; }
162
163 /**
164 * Set do cluster fit
165 */
166 void SetDoClusterFit() { fDoClusterFit = true; }
167
168 /**
169 * Set have cpv info
170 */
171 void SetHaveCPVInfo() { fHaveCPVInfo = true; }
172
173 /**
174 * Set do PID
175 */
176 void SetDoPID() { fDoPID = true; }
177
178 /**
179 * Set have distance to bad channel
180 */
181 void SetHaveDistanceToBadChannel() { fHaveDistanceToBadChannel = true; }
182
183private:
184
185 /** Used for calculation of center of gravity */
186 Float_t fLogWeight; //COMMENT
187
188 /** Pointer to the rec points */
189 AliHLTCaloRecPointDataStruct *fRecPointDataPtr; //! transient
190
191 /** Number of rec points */
192 Int_t fNRecPoints; //COMMENT
193
194 /** Pointer to the cluster buffer */
195 AliHLTCaloClusterDataStruct *fCaloClusterDataPtr; //! transient
196
197 /** Pointer to the cluster header */
198 AliHLTCaloClusterHeaderStruct *fCaloClusterHeaderPtr; //! transient
199
200 /** Instance of the PHOS geometry */
201 AliPHOSGeoUtils *fPHOSGeometry; //! transient
202
203 //TODO: should not use PhysicsAnalyzer for global coord!
204 /** */
205 // AliHLTCaloPhysicsAnalyzer *fAnalyzerPtr; //! transient
206
207 /** Should we do cluster fitting? */
208 Bool_t fDoClusterFit; //COMMENT
209
210 /** Do we have CPV info? */
211 Bool_t fHaveCPVInfo; //COMMENT
212
213 /** Should we do PID? */
214 Bool_t fDoPID; //COMMENT
215
216 /** Do we have distance to bad channel? */
217 Bool_t fHaveDistanceToBadChannel; //COMMENT
218
219
220};
221
222#endif