]>
Commit | Line | Data |
---|---|---|
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; | |
42 | class AliHLTCaloRecPointHeaderStruct; | |
43 | class AliHLTCaloRecPointDataStruct; | |
7c80a370 | 44 | class AliHLTCaloDigitDataStruct; |
ea367f6a | 45 | class AliHLTCaloClusterHeaderStruct; |
46 | class AliHLTCaloClusterDataStruct; | |
7c80a370 | 47 | class AliHLTCaloGeometry; |
c1e4a18c | 48 | class AliHLTCaloRecoParamHandler; |
ea367f6a | 49 | |
73d6f579 | 50 | class 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 | 62 | class AliHLTCaloClusterAnalyser : public AliHLTLogging |
ea367f6a | 63 | { |
64 | public: | |
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 | 186 | private: |
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 */ | |
237 | AliHLTCaloClusterAnalyser & operator = ( const AliHLTCaloClusterAnalyser &); // not implemented | |
238 | ||
ea367f6a | 239 | }; |
240 | ||
241 | #endif |