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.                  * 
 **************************************************************************/

/* $Id$ */

//_________________________________________________________________________//
//                                                                         //
//  TOF digit: member variables                                            //
//  fSector  : TOF sector                                                  //
//  fPlate   : TOF plate                                                   //
//  fStrip   : strips number                                               //
//  fPadx    : pad number along x                                          //
//  fPadz    : pad number along z                                          //
//  fTdc     : TDC                                                         //
//  fAdc     : ADC                                                         //
//                                                                         //
//  Getters, setters and member functions  defined here                    //
//                                                                         //
// -- Authors: F. Pierella, A. Seganti, D. Vicinanza                       //
//_________________________________________________________________________//

 
#include "Riostream.h"

#include "AliTOFdigit.h"
#include "AliTOFGeometry.h"

using std::endl;
using std::cout;
ClassImp(AliTOFdigit)

//______________________________________________________________________________
AliTOFdigit::AliTOFdigit()
  :AliDigit(),
   fSector(-1),
   fPlate(-1),
   fStrip(-1),
   fPadx(-1),
   fPadz(-1),
   fTdc(0),
   fTdcND(0),
   fAdc(0),
   fToT(0)
{
}
//______________________________________________________________________________
AliTOFdigit::AliTOFdigit(Int_t *tracks, Int_t *vol, Int_t *digit)
  :AliDigit(tracks),
   fSector(vol[0]),
   fPlate(vol[1]),
   fStrip(vol[2]),
   fPadx(vol[3]),
   fPadz(vol[4]),
   fTdc(digit[0]),
   fTdcND(digit[3]),
   fAdc(digit[1]),
   fToT(digit[2])
{
//
// Constructor of digit object
//
}

//____________________________________________________________________________
AliTOFdigit::AliTOFdigit(const AliTOFdigit & digit)
  :AliDigit(digit),
   fSector(digit.fSector),
   fPlate(digit.fPlate),
   fStrip(digit.fStrip),
   fPadx(digit.fPadx),
   fPadz(digit.fPadz),
   fTdc(digit.fTdc),
   fTdcND(digit.fTdcND),
   fAdc(digit.fAdc),
   fToT(digit.fToT)
{
  // 
  // copy ctor for AliTOFdigit object
  //

  Int_t i ;
  for ( i = 0; i < 3 ; i++)
    fTracks[i]  = digit.fTracks[i] ;

}

//______________________________________________________________________________
AliTOFdigit::AliTOFdigit(Int_t sector, Int_t plate, Int_t strip, Int_t padx,
			 Int_t padz, Int_t tdc, Int_t adc):
   fSector(sector),
   fPlate(plate),
   fStrip(strip),
   fPadx(padx),
   fPadz(padz),
   fTdc(tdc),
   fTdcND(0),
   fAdc(adc),
   fToT(0)
{
//
// Constructor for sdigit
//
}
   
//______________________________________________________________________________
void AliTOFdigit::GetLocation(Int_t *loc) const
{
//
// Get the cohordinates of the digit
// in terms of Sector - Plate - Strip - Pad
//

   loc[0] = fSector;
   loc[1] = fPlate;
   loc[2] = fStrip;
   loc[3] = fPadx;
   loc[4] = fPadz;
}

//______________________________________________________________________________
Int_t AliTOFdigit::GetTotPad() const
{
//
// Get the "total" index of the pad inside a Sector
// starting from the digits data.
//

  Int_t before=0;

  switch(fPlate){ 
  case 0:
    //before = 0;
    break;
  case 1:
    before = AliTOFGeometry::NStripC();
    break;
  case 2:
    before = AliTOFGeometry::NStripC() +   AliTOFGeometry::NStripB();
    break;
  case 3:
    before = AliTOFGeometry::NStripC() +   AliTOFGeometry::NStripB() + AliTOFGeometry::NStripA();
    break;
  case 4:
    before = AliTOFGeometry::NStripC() + 2*AliTOFGeometry::NStripB() + AliTOFGeometry::NStripA();
    break;
  }
  
  Int_t pad = AliTOFGeometry::NpadZ()*fPadx + fPadz;
  Int_t strip  = fStrip + before;
  Int_t padTot = AliTOFGeometry::NpadXStrip()*strip + pad;

  return padTot;
}

//______________________________________________________________________________
void AliTOFdigit::AddTrack(Int_t track)
{
//
// Add a new and different track to the digit 
//
  if (track==fTracks[0] || track==fTracks[1] || track==fTracks[2]) return;
   if (fTracks[1]==-1)
      fTracks[1] = track;
   else if (fTracks[2]==-1)
      fTracks[2] = track;
   else
     printf("W-AliTOFdigit::AddTrack: Too many tracks (>3) that contribute to the same TOF digit\n");

}

// Overloading of Streaming, Sum and Comparison operators

//______________________________________________________________________________
Bool_t AliTOFdigit::operator==(AliTOFdigit const &digit) const
{
//
// Overloading of Comparison operator
//   
 if (fSector==digit.fSector &&
     fPlate==digit.fPlate &&
     fStrip==digit.fStrip &&
     fPadx==digit.fPadx &&
     fPadz==digit.fPadz &&
     fTdc==digit.fTdc &&
     fTdcND==digit.fTdcND &&
     fAdc==digit.fAdc &&
     fToT==digit.fToT ) return kTRUE;
     else return kFALSE;
}

//______________________________________________________________________________
AliTOFdigit AliTOFdigit::operator+(const AliTOFdigit &digit)
{
//
// Overloading of Sum operator
// Note: Some convolution 
// between the two digit variables has to be inserted
//
if  (fSector==digit.fSector &&
     fPlate==digit.fPlate &&
     fStrip==digit.fStrip &&
     fPadx==digit.fPadx &&
     fPadz==digit.fPadz) {
                            // convolution to be inserted here
                             fTdc+=digit.fTdc;
                             fAdc+=digit.fAdc;
                           } else
                AliTOFdigit(fSector,fPlate,fStrip,fPadx,fPadz,fTdc,fAdc);
  return *this;
}

//______________________________________________________________________________
ostream& operator << (ostream & out, const AliTOFdigit &digit)
{
  //
  // Output streamer: output of the digit data
  //

  out << "Sector " << digit.fSector << ", Plate " << digit.fPlate << ", Strip " << digit.fStrip << endl;
  out << "Padx" << digit.fPadx << ", Padz " << digit.fPadz << endl;
  out << "TDC " << digit.fTdc << ", ADC "<< digit.fAdc << endl;

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