]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EMCAL/EMCALrec/AliEMCALClusterizerNxN.h
Switching from CMAKE_SOURCE_DIR to AliRoot_SOURCE_DIR
[u/mrichter/AliRoot.git] / EMCAL / EMCALrec / AliEMCALClusterizerNxN.h
CommitLineData
ee08edde 1#ifndef ALIEMCALCLUSTERIZERNXN_H
2#define ALIEMCALCLUSTERIZERNXN_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id: AliEMCALClusterizerNxN.h 41181 2010-05-12 13:58:06Z gconesab $ */
7
8//_________________________________________________________________________
9// This class derives from AliEMCALClustrerizer but also keeps the API of AliEMCALClusterizerv1
10// Algorithm:
11// 1. peek the most energetic cell
12// 2. assign it as a center of the cluster and add cells surrounding it: 3x3, 5x5...
13// 3. remove the cells contributing to the cluster
14// 4. start from 1 for the remaining clusters
15// 5. cluster splitting (not implemented yet) - use the shape analysis to resolve the energy sharing
16// - for high energy clusters check the surrounding of the 3x3 clusters for extra energy
17// (merge 3x3 clusters and resolve the internal energy sharing - case for 2 clusters merged)
18
19#include "AliEMCALClusterizer.h"
20class AliEMCALRecPoint ;
21class AliEMCALDigit ;
22
23class AliEMCALClusterizerNxN : public AliEMCALClusterizer {
24
25public:
26
27 AliEMCALClusterizerNxN() ;
28 AliEMCALClusterizerNxN(AliEMCALGeometry* geometry);
29 AliEMCALClusterizerNxN(AliEMCALGeometry* geometry, AliEMCALCalibData * calib, AliCaloCalibPedestal * pedestal);
30
31 virtual ~AliEMCALClusterizerNxN() ;
32
33 virtual Int_t AreNeighbours(AliEMCALDigit * d1, AliEMCALDigit * d2, Bool_t & shared)const ;
34 // Checks if digits are in neighbour cells
35
65bec413 36 virtual void Digits2Clusters(Option_t *option); // Does the job
ee08edde 37
ee08edde 38 virtual const char * Version() const { return "clu-NxN" ; }
ee08edde 39
8a84b948 40 void SetNRowDiff(Int_t nd) { fNRowDiff = nd; }
41 void SetNColDiff(Int_t nd) { fNColDiff = nd; }
42 Int_t GetNRowDiff() const { return fNRowDiff; }
43 Int_t GetNColDiff() const { return fNColDiff; }
303ff65c 44 void SetEnergyGrad(Bool_t b) { fEnergyGrad= b; }
45 Bool_t GetEnergyGrad() const { return fEnergyGrad; }
8a84b948 46
ee08edde 47protected:
48
49 virtual void MakeClusters();
50
ee08edde 51private:
52 AliEMCALClusterizerNxN(const AliEMCALClusterizerNxN &); //copy ctor
53 AliEMCALClusterizerNxN & operator = (const AliEMCALClusterizerNxN &);
54
8a84b948 55 Int_t fNRowDiff; //how many neighbors to consider along row (phi)
56 Int_t fNColDiff; //how many neighbors to consider along col (eta)
303ff65c 57 Bool_t fEnergyGrad; //if true only cluster if neighboring cell has less energy
ee08edde 58
303ff65c 59 ClassDef(AliEMCALClusterizerNxN,4) // Clusterizer implementation version 1
ee08edde 60};
61
62#endif // AliEMCALCLUSTERIZERNXN_H