ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/*
$Log$
Revision 1.2  2007/03/28 10:50:33  decaro
Rounding off problem in rawData coding/decoding: solved

Revision 1.1  2007/02/20 15:57:00  decaro
Raw data update: to read the TOF raw data defined in UNPACKED mode

Revision 0.1  2006/12/15 A.De Caro
   Introuction
*/

//////////////////////////////////////////////////////
//                                                  //
//  This class provides the TOF raw data object     //
//                                                  //
//////////////////////////////////////////////////////

#include "AliLog.h"

#include "AliTOFGeometry.h"
#include "AliTOFrawData.h"

ClassImp(AliTOFrawData)

//_____________________________________________________________________________
AliTOFrawData::AliTOFrawData() :
  TObject(),
  fACQflag(-1),
  fPSbit(-1),
  fTRM(-1),
  fTRMchain(-1),
  fTDC(-1),
  fTDCchannel(-1),
  fLeading(-1),
  fTrailing(-1),
  fToT(-1),
  fTime(-1),
  fError(-1),
  fDeltaBC(-1),
  fL0L1Latency(-1)
{

  // default ctr

}

//_____________________________________________________________________________
AliTOFrawData::AliTOFrawData(Int_t a, Int_t b, Int_t c, Int_t d, Int_t e,
			     Int_t f, Int_t g, Int_t h, Int_t l) :
  TObject(),
  fACQflag(h),
  fPSbit(g),
  fTRM(a),
  fTRMchain(b),
  fTDC(c),
  fTDCchannel(d),
  fLeading(-1),
  fTrailing(-1),
  fToT(f),
  fTime(e),
  fError(l),
  fDeltaBC(0),
  fL0L1Latency(0)
{

// ctr

}

//_____________________________________________________________________________
AliTOFrawData::AliTOFrawData(Int_t a, Int_t b, Int_t c, Int_t d, Int_t e,
			     Int_t f, Int_t ee, Int_t ff, Int_t g, Int_t h, Int_t l, Int_t deltaBC, Int_t l0l1) :
  TObject(),
  fACQflag(h),
  fPSbit(g),
  fTRM(a),
  fTRMchain(b),
  fTDC(c),
  fTDCchannel(d),
  fLeading(ee),
  fTrailing(ff),
  fToT(f),
  fTime(e),
  fError(l),
  fDeltaBC(deltaBC),
  fL0L1Latency(l0l1)
{

  // ctr
  if (fTime==-1) fTime = fLeading;
}

//_____________________________________________________________________________
AliTOFrawData::AliTOFrawData(const AliTOFrawData& r) :
  TObject(),
  fACQflag(-1),
  fPSbit(-1),
  fTRM(-1),
  fTRMchain(-1),
  fTDC(-1),
  fTDCchannel(-1),
  fLeading(-1),
  fTrailing(-1),
  fToT(-1),
  fTime(-1),
  fError(-1),
  fDeltaBC(-1),
  fL0L1Latency(-1)
{

  // dummy copy constructor

  fACQflag    = r.fACQflag;
  fPSbit      = r.fPSbit;
  fTRM        = r.fTRM;
  fTRMchain   = r.fTRMchain;
  fTDC        = r.fTDC;
  fTDCchannel = r.fTDCchannel;
  fLeading    = r.fLeading;
  fTrailing   = r.fTrailing;
  fToT        = r.fToT;
  fTime       = r.fTime;
  fError      = r.fError;
  fDeltaBC      = r.fDeltaBC;
  fL0L1Latency      = r.fL0L1Latency;

}

//_____________________________________________________________________________
AliTOFrawData& AliTOFrawData::operator=(const AliTOFrawData& r)
{

  // Assignment operator

  if (this == &r)
    return *this;

  TObject::operator=(r);
  fACQflag    = r.fACQflag;
  fPSbit      = r.fPSbit;
  fTRM        = r.fTRM;
  fTRMchain   = r.fTRMchain;
  fTDC        = r.fTDC;
  fTDCchannel = r.fTDCchannel;
  fLeading    = r.fLeading;
  fTrailing   = r.fTrailing;
  fToT        = r.fToT;
  fTime       = r.fTime;
  fError      = r.fError;
  fDeltaBC    = r.fDeltaBC;
  fL0L1Latency= r.fL0L1Latency;
  return *this;

}

//_____________________________________________________________________________
void AliTOFrawData::Update(Int_t tof, Int_t tot, Int_t leading, Int_t trailing, Int_t psBit, Int_t acq, Int_t errorFlag)
{
  //
  // To update a raw data object:
  //  if there is just a leading edge measurement,
  //  this method adds the trailing edge measurement
  //  to evaluate the time-of-flight and time-over-threshold measurements
  //

  AliDebug(2,Form(" %d %d %d %d %d %d",tof, tot, leading, psBit, acq, errorFlag));

  if (fLeading!=-1 /*&& fTime==-1*/ && fToT==-1 && trailing!=-1) { // adc

    fTrailing = trailing;
    fTime = fLeading;
    fToT = Int_t((trailing - fLeading)*AliTOFGeometry::TdcBinWidth()/AliTOFGeometry::ToTBinWidth());
    
  }

}

//_____________________________________________________________________________
Int_t AliTOFrawData::GetTOT() const
{
  //
  // Return the TOT measurement
  //

  Int_t dummyToT = 0;
  if (fLeading!=-1 && fToT==-1) dummyToT = 0;
  else dummyToT = fToT;

  return dummyToT;

}
 AliTOFrawData.cxx:1
 AliTOFrawData.cxx:2
 AliTOFrawData.cxx:3
 AliTOFrawData.cxx:4
 AliTOFrawData.cxx:5
 AliTOFrawData.cxx:6
 AliTOFrawData.cxx:7
 AliTOFrawData.cxx:8
 AliTOFrawData.cxx:9
 AliTOFrawData.cxx:10
 AliTOFrawData.cxx:11
 AliTOFrawData.cxx:12
 AliTOFrawData.cxx:13
 AliTOFrawData.cxx:14
 AliTOFrawData.cxx:15
 AliTOFrawData.cxx:16
 AliTOFrawData.cxx:17
 AliTOFrawData.cxx:18
 AliTOFrawData.cxx:19
 AliTOFrawData.cxx:20
 AliTOFrawData.cxx:21
 AliTOFrawData.cxx:22
 AliTOFrawData.cxx:23
 AliTOFrawData.cxx:24
 AliTOFrawData.cxx:25
 AliTOFrawData.cxx:26
 AliTOFrawData.cxx:27
 AliTOFrawData.cxx:28
 AliTOFrawData.cxx:29
 AliTOFrawData.cxx:30
 AliTOFrawData.cxx:31
 AliTOFrawData.cxx:32
 AliTOFrawData.cxx:33
 AliTOFrawData.cxx:34
 AliTOFrawData.cxx:35
 AliTOFrawData.cxx:36
 AliTOFrawData.cxx:37
 AliTOFrawData.cxx:38
 AliTOFrawData.cxx:39
 AliTOFrawData.cxx:40
 AliTOFrawData.cxx:41
 AliTOFrawData.cxx:42
 AliTOFrawData.cxx:43
 AliTOFrawData.cxx:44
 AliTOFrawData.cxx:45
 AliTOFrawData.cxx:46
 AliTOFrawData.cxx:47
 AliTOFrawData.cxx:48
 AliTOFrawData.cxx:49
 AliTOFrawData.cxx:50
 AliTOFrawData.cxx:51
 AliTOFrawData.cxx:52
 AliTOFrawData.cxx:53
 AliTOFrawData.cxx:54
 AliTOFrawData.cxx:55
 AliTOFrawData.cxx:56
 AliTOFrawData.cxx:57
 AliTOFrawData.cxx:58
 AliTOFrawData.cxx:59
 AliTOFrawData.cxx:60
 AliTOFrawData.cxx:61
 AliTOFrawData.cxx:62
 AliTOFrawData.cxx:63
 AliTOFrawData.cxx:64
 AliTOFrawData.cxx:65
 AliTOFrawData.cxx:66
 AliTOFrawData.cxx:67
 AliTOFrawData.cxx:68
 AliTOFrawData.cxx:69
 AliTOFrawData.cxx:70
 AliTOFrawData.cxx:71
 AliTOFrawData.cxx:72
 AliTOFrawData.cxx:73
 AliTOFrawData.cxx:74
 AliTOFrawData.cxx:75
 AliTOFrawData.cxx:76
 AliTOFrawData.cxx:77
 AliTOFrawData.cxx:78
 AliTOFrawData.cxx:79
 AliTOFrawData.cxx:80
 AliTOFrawData.cxx:81
 AliTOFrawData.cxx:82
 AliTOFrawData.cxx:83
 AliTOFrawData.cxx:84
 AliTOFrawData.cxx:85
 AliTOFrawData.cxx:86
 AliTOFrawData.cxx:87
 AliTOFrawData.cxx:88
 AliTOFrawData.cxx:89
 AliTOFrawData.cxx:90
 AliTOFrawData.cxx:91
 AliTOFrawData.cxx:92
 AliTOFrawData.cxx:93
 AliTOFrawData.cxx:94
 AliTOFrawData.cxx:95
 AliTOFrawData.cxx:96
 AliTOFrawData.cxx:97
 AliTOFrawData.cxx:98
 AliTOFrawData.cxx:99
 AliTOFrawData.cxx:100
 AliTOFrawData.cxx:101
 AliTOFrawData.cxx:102
 AliTOFrawData.cxx:103
 AliTOFrawData.cxx:104
 AliTOFrawData.cxx:105
 AliTOFrawData.cxx:106
 AliTOFrawData.cxx:107
 AliTOFrawData.cxx:108
 AliTOFrawData.cxx:109
 AliTOFrawData.cxx:110
 AliTOFrawData.cxx:111
 AliTOFrawData.cxx:112
 AliTOFrawData.cxx:113
 AliTOFrawData.cxx:114
 AliTOFrawData.cxx:115
 AliTOFrawData.cxx:116
 AliTOFrawData.cxx:117
 AliTOFrawData.cxx:118
 AliTOFrawData.cxx:119
 AliTOFrawData.cxx:120
 AliTOFrawData.cxx:121
 AliTOFrawData.cxx:122
 AliTOFrawData.cxx:123
 AliTOFrawData.cxx:124
 AliTOFrawData.cxx:125
 AliTOFrawData.cxx:126
 AliTOFrawData.cxx:127
 AliTOFrawData.cxx:128
 AliTOFrawData.cxx:129
 AliTOFrawData.cxx:130
 AliTOFrawData.cxx:131
 AliTOFrawData.cxx:132
 AliTOFrawData.cxx:133
 AliTOFrawData.cxx:134
 AliTOFrawData.cxx:135
 AliTOFrawData.cxx:136
 AliTOFrawData.cxx:137
 AliTOFrawData.cxx:138
 AliTOFrawData.cxx:139
 AliTOFrawData.cxx:140
 AliTOFrawData.cxx:141
 AliTOFrawData.cxx:142
 AliTOFrawData.cxx:143
 AliTOFrawData.cxx:144
 AliTOFrawData.cxx:145
 AliTOFrawData.cxx:146
 AliTOFrawData.cxx:147
 AliTOFrawData.cxx:148
 AliTOFrawData.cxx:149
 AliTOFrawData.cxx:150
 AliTOFrawData.cxx:151
 AliTOFrawData.cxx:152
 AliTOFrawData.cxx:153
 AliTOFrawData.cxx:154
 AliTOFrawData.cxx:155
 AliTOFrawData.cxx:156
 AliTOFrawData.cxx:157
 AliTOFrawData.cxx:158
 AliTOFrawData.cxx:159
 AliTOFrawData.cxx:160
 AliTOFrawData.cxx:161
 AliTOFrawData.cxx:162
 AliTOFrawData.cxx:163
 AliTOFrawData.cxx:164
 AliTOFrawData.cxx:165
 AliTOFrawData.cxx:166
 AliTOFrawData.cxx:167
 AliTOFrawData.cxx:168
 AliTOFrawData.cxx:169
 AliTOFrawData.cxx:170
 AliTOFrawData.cxx:171
 AliTOFrawData.cxx:172
 AliTOFrawData.cxx:173
 AliTOFrawData.cxx:174
 AliTOFrawData.cxx:175
 AliTOFrawData.cxx:176
 AliTOFrawData.cxx:177
 AliTOFrawData.cxx:178
 AliTOFrawData.cxx:179
 AliTOFrawData.cxx:180
 AliTOFrawData.cxx:181
 AliTOFrawData.cxx:182
 AliTOFrawData.cxx:183
 AliTOFrawData.cxx:184
 AliTOFrawData.cxx:185
 AliTOFrawData.cxx:186
 AliTOFrawData.cxx:187
 AliTOFrawData.cxx:188
 AliTOFrawData.cxx:189
 AliTOFrawData.cxx:190
 AliTOFrawData.cxx:191
 AliTOFrawData.cxx:192
 AliTOFrawData.cxx:193
 AliTOFrawData.cxx:194
 AliTOFrawData.cxx:195
 AliTOFrawData.cxx:196
 AliTOFrawData.cxx:197
 AliTOFrawData.cxx:198
 AliTOFrawData.cxx:199
 AliTOFrawData.cxx:200
 AliTOFrawData.cxx:201
 AliTOFrawData.cxx:202
 AliTOFrawData.cxx:203
 AliTOFrawData.cxx:204
 AliTOFrawData.cxx:205
 AliTOFrawData.cxx:206
 AliTOFrawData.cxx:207