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; |
42 | class AliHLTCaloRecPointHeaderStruct; |
43 | class AliHLTCaloRecPointDataStruct; |
44 | class AliHLTCaloClusterHeaderStruct; |
45 | class AliHLTCaloClusterDataStruct; |
46 | class 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 |
57 | class AliHLTCaloClusterAnalyser |
58 | { |
59 | public: |
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 | |
183 | private: |
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 |