]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/CALO/AliHLTCaloClusterAnalyser.h
Bug fix: AliHLTTPCRawSpacePointContainer
[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
7c80a370 22#include "AliHLTLogging.h"
ea367f6a 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;
7c80a370 44class AliHLTCaloDigitDataStruct;
ea367f6a 45class AliHLTCaloClusterHeaderStruct;
46class AliHLTCaloClusterDataStruct;
7c80a370 47class AliHLTCaloGeometry;
c1e4a18c 48class AliHLTCaloRecoParamHandler;
ea367f6a 49
73d6f579 50class TH1F; //DEBUG
51
52
ea367f6a 53/**
54 * @class AliHLTCaloClusterAnalyser
55 * ClusterAnalyser for CALO HLT. Algorithms for center of gravity
56 * and moment calculations are based on classes from the CALO
57 * offline analysis directory
58 *
59 * @ingroup alihlt_calo
60 */
61//class AliHLTCaloClusterAnalyser : public AliHLTCaloBase
7c80a370 62class AliHLTCaloClusterAnalyser : public AliHLTLogging
ea367f6a 63{
64public:
65
66 /** Constructor */
67 AliHLTCaloClusterAnalyser();
68
69 /** Destructor */
70 virtual ~AliHLTCaloClusterAnalyser();
71
ea367f6a 72 /**
73 * Set the rec point data buffer
74 * @param recPointDataPtr is a pointer to the rec points
75 */
7c80a370 76 void SetRecPointArray(AliHLTCaloRecPointDataStruct **recPointDataPtr, Int_t nRecPoints);
ea367f6a 77
78 /**
79 * Set the calo cluster output buffer
80 * @param caloClusterDataPtr is a pointer to the calo cluster buffer
81 */
7c80a370 82 void SetCaloClusterData(AliHLTCaloClusterDataStruct *caloClusterDataPtr);
ea367f6a 83
84 /**
85 * Calculates the center of gravity for the reconstruction points in the container
86 * @return
87 */
88 Int_t CalculateCenterOfGravity();
89
90 /**
91 * Calculates the moments for the reconstruction points in the container
92 * @return
93 */
94 Int_t CalculateRecPointMoments();
95
96 /**
97 * Calculates the moments for a certain cluster
98 * @return
99 */
100 Int_t CalculateClusterMoments(AliHLTCaloRecPointDataStruct *recPointPtr, AliHLTCaloClusterDataStruct* clusterPtr);
101
102 /**
103 * Deconvolute the clusters in an AliHLTCaloRecPointContainerStruct
104 * @return
105 */
106 Int_t DeconvoluteClusters();
107
108 /**
109 * Convert the rec points into calo clusters
110 * @return
111 */
7c80a370 112 Int_t CreateClusters(Int_t nRecPoints, UInt_t availableSize, UInt_t& totSize);
ea367f6a 113
114 /**
115 * Fit a cluster
116 * param recPointPtr is a pointer to the rec point to fit
117 * @return
118 */
119 Int_t FitCluster(AliHLTCaloRecPointDataStruct* /*recPointPtr*/) { return 0; }
120
121 /**
122 * Get the distance to the nearest CPV rec point
123 * param recPointPtr is the pointer to the emc rec point
124 * @return the distance
125 */
126 Float_t GetCPVDistance(AliHLTCaloRecPointDataStruct* /*recPointPtr*/) { return 0; };
127
128 /**
129 * Do partice identification
130 * param clusterPtr is the pointer to the emc cluster
131 * @return
132 */
133 Int_t DoParticleIdentification(AliHLTCaloClusterDataStruct* /*clusterPtr*/) { return 0; }
134
135 /**
136 * Get the distance to the neares bad channel
137 * param clusterPtr is a pointer to the calo cluster
138 * @return the distance
139 */
140 Float_t GetDistanceToBadChannel(AliHLTCaloClusterDataStruct* /*clusterPtr*/) { return 0; }
141
142 /**
143 * Set do cluster fit
144 */
145 void SetDoClusterFit() { fDoClusterFit = true; }
146
147 /**
148 * Set have cpv info
149 */
150 void SetHaveCPVInfo() { fHaveCPVInfo = true; }
151
152 /**
153 * Set do PID
154 */
155 void SetDoPID() { fDoPID = true; }
156
157 /**
158 * Set have distance to bad channel
159 */
160 void SetHaveDistanceToBadChannel() { fHaveDistanceToBadChannel = true; }
161
7c80a370 162 /**
163 * Set the geometry object (different for EMCAL and PHOS)
164 */
165 void SetGeometry(AliHLTCaloGeometry *geometry) { fGeometry = geometry; }
166
167 /**
168 * Set pointer to the digits
169 */
f92543f5 170 void SetDigitDataArray(AliHLTCaloDigitDataStruct **digits);
7c80a370 171
73d6f579 172 /**
173 * Set the cluster type
174 */
175 void SetClusterType(Char_t clusterType) { fClusterType = clusterType; }
7c80a370 176
c1e4a18c 177 /**
178 * Set the reconstruction parameters handler
179 */
180 void SetRecoParamHandler(AliHLTCaloRecoParamHandler *recoParams) { fRecoParamsPtr = recoParams; }
181
38a3b2ad 182 /** Set cut on single cell clusters */
183 void SetCutOnSingleCellClusters(Bool_t doCut, Float_t energyCut) {fCutOnSingleCellClusters = doCut; fSingleCellEnergyCut = energyCut; }
c1e4a18c 184
38a3b2ad 185
ea367f6a 186private:
187
188 /** Used for calculation of center of gravity */
189 Float_t fLogWeight; //COMMENT
190
191 /** Pointer to the rec points */
7c80a370 192 AliHLTCaloRecPointDataStruct **fRecPointArray; //! transient
193
194 /** Pointer to the digits */
f92543f5 195 AliHLTCaloDigitDataStruct **fDigitDataArray; //! transient
ea367f6a 196
197 /** Number of rec points */
198 Int_t fNRecPoints; //COMMENT
199
200 /** Pointer to the cluster buffer */
201 AliHLTCaloClusterDataStruct *fCaloClusterDataPtr; //! transient
202
203 /** Pointer to the cluster header */
204 AliHLTCaloClusterHeaderStruct *fCaloClusterHeaderPtr; //! transient
205
ea367f6a 206 /** Should we do cluster fitting? */
207 Bool_t fDoClusterFit; //COMMENT
208
209 /** Do we have CPV info? */
210 Bool_t fHaveCPVInfo; //COMMENT
211
212 /** Should we do PID? */
213 Bool_t fDoPID; //COMMENT
214
215 /** Do we have distance to bad channel? */
216 Bool_t fHaveDistanceToBadChannel; //COMMENT
217
7c80a370 218 /** The geometry object */
73d6f579 219 AliHLTCaloGeometry* fGeometry; //! transient
220
221 /** The cluster type */
222 Char_t fClusterType; //COMMENT
c1e4a18c 223
224 /** Handler to get the hold of reconstruction parameters */
225 AliHLTCaloRecoParamHandler *fRecoParamsPtr; //COMMENT
38a3b2ad 226
227 /** Should we cut out single celled high energy clusters? */
228 Bool_t fCutOnSingleCellClusters; //COMMENT
229
230 /** If we cut on single celled clusters, what is our energy cut? */
231 Float_t fSingleCellEnergyCut; //COMMENT
98baf84d 232
233 /** Copy constructor not implemented */
234 AliHLTCaloClusterAnalyser ( const AliHLTCaloClusterAnalyser &); // not implemented
235
236 /** Assignment */
237AliHLTCaloClusterAnalyser & operator = ( const AliHLTCaloClusterAnalyser &); // not implemented
238
ea367f6a 239};
240
241#endif