adding contructors and assignment operator for better usability; removing deprecated...
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCRawCluster.h
1 // $Id$
2 #ifndef ALIHLTTPCRAWCLUSTER_H
3 #define ALIHLTTPCRAWCLUSTER_H
4
5 #include "AliHLTTPCRootTypes.h"
6
7 /**
8  * @struct AliHLTTPCRawCluster
9  * Primitive data of a TPC cluster in raw coordinates. The plan is to store the
10  * data in a compressed format by limiting the resolution of the float values.
11  * @ingroup alihlt_tpc_datastructs
12  */
13 struct AliHLTTPCRawCluster {
14   AliHLTTPCRawCluster()
15     : fPadRow(0)
16     , fPad(0.)
17     , fTime(0.)
18     , fSigmaY2(0.)
19     , fSigmaZ2(0.)
20     , fCharge(0)
21     , fQMax(0)
22   {}
23
24   AliHLTTPCRawCluster(short PadRow,
25                       float Pad,
26                       float Time,
27                       float SigmaY2,
28                       float SigmaZ2,
29                       unsigned short Charge,
30                       unsigned short QMax
31                       )
32     : fPadRow(PadRow)
33     , fPad(Pad)
34     , fTime(Time)
35     , fSigmaY2(SigmaY2)
36     , fSigmaZ2(SigmaZ2)
37     , fCharge(Charge)
38     , fQMax(QMax)
39   {}
40
41   AliHLTTPCRawCluster(const AliHLTTPCRawCluster& other)
42     : fPadRow(other.fPadRow)
43     , fPad(other.fPad)
44     , fTime(other.fTime)
45     , fSigmaY2(other.fSigmaY2)
46     , fSigmaZ2(other.fSigmaZ2)
47     , fCharge(other.fCharge)
48     , fQMax(other.fQMax)
49   {}
50
51   AliHLTTPCRawCluster& operator=(const AliHLTTPCRawCluster& other) {
52     if (this==&other) return *this;
53     this->~AliHLTTPCRawCluster();
54     new (this) AliHLTTPCRawCluster(other);
55     return *this;
56   }
57
58   void Clear() {
59     this->~AliHLTTPCRawCluster();
60     new (this) AliHLTTPCRawCluster;
61   }
62
63   short fPadRow;
64   float fPad;
65   float fTime;
66   float fSigmaY2;
67   float fSigmaZ2;
68   unsigned short fCharge;
69   unsigned short fQMax;
70
71   Int_t   GetPadRow()  const {return fPadRow;}
72   Float_t GetPad()     const {return fPad;}
73   Float_t GetTime()    const {return fTime;}
74   Float_t GetSigmaY2() const {return fSigmaY2;}
75   Float_t GetSigmaZ2() const {return fSigmaZ2;}
76   Int_t   GetCharge()  const {return fCharge;}
77   Int_t   GetQMax()    const {return fQMax;}
78
79   void SetPadRow(Short_t padrow)  {fPadRow=padrow;}
80   void SetPad(Float_t pad)     {fPad=pad;}
81   void SetTime(Float_t time)    {fTime=time;}
82   void SetSigmaY2(Float_t sigmaY2) {fSigmaY2=sigmaY2;}
83   void SetSigmaZ2(Float_t sigmaZ2) {fSigmaZ2=sigmaZ2;}
84   void SetCharge(UShort_t charge)  {fCharge=charge;}
85   void SetQMax(UShort_t qmax)    {fQMax=qmax;}
86 };
87 typedef struct AliHLTTPCRawCluster AliHLTTPCRawCluster;
88
89 struct AliHLTTPCRawClusterData
90 {
91   UInt_t fVersion; // version number
92   UInt_t fCount;   // number of clusters
93 #if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
94   AliHLTTPCRawCluster  fClusters[1]; // array of clusters  
95 #else
96   AliHLTTPCRawCluster  fClusters[0]; // array of clusters 
97 #endif
98 };
99 typedef struct AliHLTTPCRawClusterData AliHLTTPCRawClusterData;
100
101 #endif