]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/TRD/info/AliTRDpidInfo.cxx
new classes for TRD trending and alarm management
[u/mrichter/AliRoot.git] / PWG1 / TRD / info / AliTRDpidInfo.cxx
1 #include "AliTRDpidInfo.h"
2 #include "AliTRDgeometry.h"
3
4 #include "string.h"
5
6 ClassImp(AliTRDpidInfo)
7 ClassImp(AliTRDpidInfo::AliTRDpidData)
8
9 //________________________________________________________________________
10 AliTRDpidInfo::AliTRDpidData::AliTRDpidData() : fPLbin(0xff) 
11 {
12   memset(fdEdx, 0, 8*sizeof(Float_t));
13 }
14
15 //________________________________________________________________________
16 AliTRDpidInfo::AliTRDpidInfo()
17   :TObject()
18   ,fPID(-1)
19   ,fNtracklets(0)
20   ,fData(0x0)
21 {
22   // Constructor of data array
23   fData = new AliTRDpidData[AliTRDgeometry::kNlayer];
24 }
25
26 //________________________________________________________________________
27 AliTRDpidInfo::AliTRDpidInfo(Int_t idx)
28   :TObject()
29   ,fPID(idx)
30   ,fNtracklets(0)
31   ,fData(0x0)
32 {
33   // Constructor of data array
34   fData = new AliTRDpidData[AliTRDgeometry::kNlayer];
35 }
36
37 //________________________________________________________________________
38 AliTRDpidInfo::~AliTRDpidInfo()
39 {
40   // Destructor
41   if(fData) delete [] fData;
42 }
43
44 //________________________________________________________________________
45 AliTRDpidInfo::AliTRDpidData const* AliTRDpidInfo::GetDataInLayer(Int_t ily) const
46 {
47   if(!fData) return NULL;
48   if(ily<0 || ily>=AliTRDgeometry::kNlayer) return NULL;
49
50   AliTRDpidData *data(NULL);
51   for(Int_t itrklt=fNtracklets; itrklt--;){
52     if(!(data=&fData[itrklt])) return NULL;
53     if(data->Layer()==ily) return data;
54   }
55   return NULL;
56 }
57
58 //________________________________________________________________________
59 void AliTRDpidInfo::PushBack(Int_t ly, Int_t p, const Float_t *dedx)
60 {
61 // Add PID data to the end of the array 
62   fData[fNtracklets].fPLbin= (ly<<4) | (p&0xf);
63   memcpy(fData[fNtracklets].fdEdx, dedx, 8*sizeof(Float_t));
64   fNtracklets++;
65 }
66
67 //________________________________________________________________________
68 void AliTRDpidInfo::Reset()
69 {
70 // Reset content
71
72   if(!fNtracklets) return;
73   while(fNtracklets--){
74     fData[fNtracklets].fPLbin = 0xff;
75     memset(fData[fNtracklets].fdEdx, 0, 8*sizeof(Float_t));
76   }
77   fNtracklets=0;
78   fPID=-1;
79 }
80