ROOT logo
////////////////////////////////////////////////////////////////////////////
//                                                                        //
//  TRD PID/Track summary info for performance                            //
//                                                                        //
//  Authors:                                                              //
//    Alexandru Bercuci <A.Bercuci@gsi.de>                                //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

#include "AliTRDpidInfo.h"
#include "AliTRDgeometry.h"

#include "string.h"

ClassImp(AliTRDpidInfo)
ClassImp(AliTRDpidInfo::AliTRDpidData)

//________________________________________________________________________
AliTRDpidInfo::AliTRDpidData::AliTRDpidData() : fPLbin(0xff) 
{
  memset(fdEdx, 0, 8*sizeof(Float_t));
}

//________________________________________________________________________
AliTRDpidInfo::AliTRDpidInfo()
  :TObject()
  ,fPID(-1)
  ,fNtracklets(0)
  ,fData(0x0)
{
  // Constructor of data array
  fData = new AliTRDpidData[AliTRDgeometry::kNlayer];
}

//________________________________________________________________________
AliTRDpidInfo::AliTRDpidInfo(Int_t idx)
  :TObject()
  ,fPID(idx)
  ,fNtracklets(0)
  ,fData(0x0)
{
  // Constructor of data array
  fData = new AliTRDpidData[AliTRDgeometry::kNlayer];
}

//________________________________________________________________________
AliTRDpidInfo::~AliTRDpidInfo()
{
  // Destructor
  if(fData) delete [] fData;
}

//________________________________________________________________________
AliTRDpidInfo::AliTRDpidData const* AliTRDpidInfo::GetDataInLayer(Int_t ily) const
{
// Extract PID raw signals for layer "ily"
  if(!fData) return NULL;
  if(ily<0 || ily>=AliTRDgeometry::kNlayer) return NULL;

  AliTRDpidData *data(NULL);
  for(Int_t itrklt=fNtracklets; itrklt--;){
    if(!(data=&fData[itrklt])) return NULL;
    if(data->Layer()==ily) return data;
  }
  return NULL;
}

//________________________________________________________________________
void AliTRDpidInfo::PushBack(Int_t ly, Int_t p, const Float_t *dedx)
{
// Add PID data to the end of the array 
  fData[fNtracklets].fPLbin= (ly<<4) | (p&0xf);
  memcpy(fData[fNtracklets].fdEdx, dedx, 8*sizeof(Float_t));
  fNtracklets++;
}

//________________________________________________________________________
void AliTRDpidInfo::Reset()
{
// Reset content

  if(!fNtracklets) return;
  while(fNtracklets--){
    fData[fNtracklets].fPLbin = 0xff;
    memset(fData[fNtracklets].fdEdx, 0, 8*sizeof(Float_t));
  }
  fNtracklets=0;
  fPID=-1;
}

 AliTRDpidInfo.cxx:1
 AliTRDpidInfo.cxx:2
 AliTRDpidInfo.cxx:3
 AliTRDpidInfo.cxx:4
 AliTRDpidInfo.cxx:5
 AliTRDpidInfo.cxx:6
 AliTRDpidInfo.cxx:7
 AliTRDpidInfo.cxx:8
 AliTRDpidInfo.cxx:9
 AliTRDpidInfo.cxx:10
 AliTRDpidInfo.cxx:11
 AliTRDpidInfo.cxx:12
 AliTRDpidInfo.cxx:13
 AliTRDpidInfo.cxx:14
 AliTRDpidInfo.cxx:15
 AliTRDpidInfo.cxx:16
 AliTRDpidInfo.cxx:17
 AliTRDpidInfo.cxx:18
 AliTRDpidInfo.cxx:19
 AliTRDpidInfo.cxx:20
 AliTRDpidInfo.cxx:21
 AliTRDpidInfo.cxx:22
 AliTRDpidInfo.cxx:23
 AliTRDpidInfo.cxx:24
 AliTRDpidInfo.cxx:25
 AliTRDpidInfo.cxx:26
 AliTRDpidInfo.cxx:27
 AliTRDpidInfo.cxx:28
 AliTRDpidInfo.cxx:29
 AliTRDpidInfo.cxx:30
 AliTRDpidInfo.cxx:31
 AliTRDpidInfo.cxx:32
 AliTRDpidInfo.cxx:33
 AliTRDpidInfo.cxx:34
 AliTRDpidInfo.cxx:35
 AliTRDpidInfo.cxx:36
 AliTRDpidInfo.cxx:37
 AliTRDpidInfo.cxx:38
 AliTRDpidInfo.cxx:39
 AliTRDpidInfo.cxx:40
 AliTRDpidInfo.cxx:41
 AliTRDpidInfo.cxx:42
 AliTRDpidInfo.cxx:43
 AliTRDpidInfo.cxx:44
 AliTRDpidInfo.cxx:45
 AliTRDpidInfo.cxx:46
 AliTRDpidInfo.cxx:47
 AliTRDpidInfo.cxx:48
 AliTRDpidInfo.cxx:49
 AliTRDpidInfo.cxx:50
 AliTRDpidInfo.cxx:51
 AliTRDpidInfo.cxx:52
 AliTRDpidInfo.cxx:53
 AliTRDpidInfo.cxx:54
 AliTRDpidInfo.cxx:55
 AliTRDpidInfo.cxx:56
 AliTRDpidInfo.cxx:57
 AliTRDpidInfo.cxx:58
 AliTRDpidInfo.cxx:59
 AliTRDpidInfo.cxx:60
 AliTRDpidInfo.cxx:61
 AliTRDpidInfo.cxx:62
 AliTRDpidInfo.cxx:63
 AliTRDpidInfo.cxx:64
 AliTRDpidInfo.cxx:65
 AliTRDpidInfo.cxx:66
 AliTRDpidInfo.cxx:67
 AliTRDpidInfo.cxx:68
 AliTRDpidInfo.cxx:69
 AliTRDpidInfo.cxx:70
 AliTRDpidInfo.cxx:71
 AliTRDpidInfo.cxx:72
 AliTRDpidInfo.cxx:73
 AliTRDpidInfo.cxx:74
 AliTRDpidInfo.cxx:75
 AliTRDpidInfo.cxx:76
 AliTRDpidInfo.cxx:77
 AliTRDpidInfo.cxx:78
 AliTRDpidInfo.cxx:79
 AliTRDpidInfo.cxx:80
 AliTRDpidInfo.cxx:81
 AliTRDpidInfo.cxx:82
 AliTRDpidInfo.cxx:83
 AliTRDpidInfo.cxx:84
 AliTRDpidInfo.cxx:85
 AliTRDpidInfo.cxx:86
 AliTRDpidInfo.cxx:87
 AliTRDpidInfo.cxx:88
 AliTRDpidInfo.cxx:89
 AliTRDpidInfo.cxx:90