]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliAODCaloCluster.h
i)Restructuring of the GRP preprocessor ii)Adding the storage of raw data tag files...
[u/mrichter/AliRoot.git] / STEER / AliAODCaloCluster.h
1 #ifndef AliAODCaloCluster_H
2 #define AliAODCaloCluster_H
3 /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //-------------------------------------------------------------------------
9 //     AOD calorimeter cluster class (for PHOS and EMCAL)
10 //     Author: Markus Oldenburg, CERN, 
11 //             Gustavo Conesa, INFN
12 //-------------------------------------------------------------------------
13
14 #include "AliAODCluster.h"
15
16 #include <TRefArray.h>
17 #include <TArrayS.h>
18
19 class AliAODCaloCluster : public AliAODCluster {
20
21  public:
22   
23   AliAODCaloCluster();
24   AliAODCaloCluster(Int_t id,
25                     UInt_t nLabel,
26                     Int_t *label,
27                     Double_t energy,
28                     Double_t x[3],
29                     Double_t pid[9],
30                     Char_t ttype=kUndef,
31                     UInt_t selectInfo=0);
32   
33   AliAODCaloCluster(Int_t id,
34                     UInt_t nLabel,
35                     Int_t *label,
36                     Float_t energy,
37                     Float_t x[3],
38                     Float_t pid[9],
39                     Char_t ttype=kUndef,
40                     UInt_t selectInfo=0);
41   
42   virtual ~AliAODCaloCluster();
43   AliAODCaloCluster(const AliAODCaloCluster& clus); 
44   AliAODCaloCluster& operator=(const AliAODCaloCluster& clus);
45
46   
47   // getters
48   Double_t GetDistToBadChannel() const { return fDistToBadChannel; }
49   Double_t GetDispersion() const { return fDispersion; }
50   Double_t GetM20() const { return fM20; }
51   Double_t GetM01() const { return fM01; }
52   Double_t GetM02() const { return fM02; }
53   Double_t GetM11() const { return fM11; }
54   Double_t GetEmcCpvDistance() const { return fEmcCpvDistance; }
55   UShort_t GetNExMax() const { return fNExMax; }
56
57   Int_t    GetNTracksMatched() const { return fTracksMatched.GetEntriesFast(); }
58   TObject *GetTrackMatched(Int_t i) const { return fTracksMatched.At(i); }
59   Int_t    GetNCellNumbers() const { return fCellNumber.GetSize(); }
60   UShort_t GetCellNumber(Int_t i) const { return fCellNumber.At(i); }
61
62   // setters
63   void SetDistToBadChannel(Double_t dist) { fDistToBadChannel = dist; }
64   void SetDispersion(Double_t disp) { fDispersion = disp; }
65   void SetM20(Double_t m20) { fM20 = m20; }
66   void SetM01(Double_t m01) { fM01 = m01; }
67   void SetM02(Double_t m02) { fM02 = m02; }
68   void SetM11(Double_t m11) { fM11 = m11; }
69   void SetEmcCpvDistance(Double_t emcCpvDist) { fEmcCpvDistance = emcCpvDist; }
70   void SetNExMax(UShort_t nExMax) { fNExMax = nExMax; }
71
72   void SetCaloCluster(Double_t dist = -999., 
73                       Double_t disp = -1., 
74                       Double_t m20 = 0., 
75                       Double_t m01 = 0., 
76                       Double_t m02 = 0., 
77                       Double_t m11 = 0., 
78                       Double_t emcCpvDist = -999., 
79                       UShort_t nExMax = 0) 
80   {
81     fDistToBadChannel = dist;
82     fDispersion = disp;
83     fM20 = m20;
84     fM01 = m01;
85     fM02 = m02;
86     fM11 = m11;
87     fEmcCpvDistance = emcCpvDist;
88     fNExMax = nExMax;
89   }
90
91   void AddTrackMatched(TObject *trk) { fTracksMatched.Add(trk); }
92   void RemoveTrackMatched(TObject *trk) { fTracksMatched.Remove(trk); }
93   Bool_t HasTrackMatched(TObject *trk) const;
94
95  private :
96
97   Double32_t   fDistToBadChannel; // Distance to nearest bad channel
98   Double32_t   fDispersion;       // cluster dispersion, for shape analysis
99   Double32_t   fM20;              // 2-nd moment along the main eigen axis
100   Double32_t   fM01;              // 
101   Double32_t   fM02;              // 2-nd moment along the second eigen axis
102   Double32_t   fM11;              // 2-nd mixed moment Mxy
103   Double32_t   fEmcCpvDistance;   // the distance from PHOS EMC rec.point to the closest CPV rec.point
104   UShort_t     fNExMax;           // number of (Ex-)maxima before unfolding
105
106   TRefArray    fTracksMatched;    // references to tracks close to cluster. First entry is the most likely match.
107   TArrayS      fCellNumber;       // fired calorimeter cell numbers
108
109   ClassDef(AliAODCaloCluster,1);
110 };
111
112 #endif