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

//-*-C++-*-
//_________________________________________________________________________
// Base Class for reconstructed space points 
// usually coming from the clusterisation algorithms
// run on the digits
//
//*-- Author : Yves Schutz  SUBATECH 
//////////////////////////////////////////////////////////////////////////////


// --- ROOT system ---

// --- Standard library ---

// --- AliRoot header files ---

#include "AliRecPoint.h"
#include "AliGeometry.h"
#include "AliDigitNew.h"

ClassImp(AliRecPoint)


//_______________________________________________________________________
AliRecPoint::AliRecPoint():
  fAmp(0),
  fGeom(0),
  fIndexInList(-1), // to be set when the point is already stored
  fLocPos(0,0,0),
  fLocPosM(0),
  fMaxDigit(100),
  fMulDigit(0),
  fMaxTrack(5),
  fMulTrack(0),
  fDigitsList(0),
  fTracksList(0)
{
  //
  // default ctor  
  //
}

//_______________________________________________________________________
AliRecPoint::AliRecPoint(const char * ):
  fAmp(0),
  fGeom(0),
  fIndexInList(-1), // to be set when the point is already stored
  fLocPos(0,0,0),
  fLocPosM(new TMatrixF(3,3)),
  fMaxDigit(100),
  fMulDigit(0),
  fMaxTrack(5),
  fMulTrack(0),
  fDigitsList(new int[fMaxDigit]),
  fTracksList(new int[fMaxTrack])
{
  //
  // Standard ctor  
  //
}

//_______________________________________________________________________
AliRecPoint::AliRecPoint(const AliRecPoint& recp):
  TObject(recp),
  fAmp(recp.fAmp),
  fGeom(recp.fGeom),
  fIndexInList(-1), // to be set when the point is already stored
  fLocPos(recp.fLocPos),
  fLocPosM(new TMatrixF(*(recp.fLocPosM))),
  fMaxDigit(recp.fMaxDigit),
  fMulDigit(recp.fMulDigit),
  fMaxTrack(recp.fMaxTrack),
  fMulTrack(recp.fMulTrack),
  fDigitsList(new Int_t[fMulDigit]),
  fTracksList(new Int_t[fMulTrack])
{
  //
  // Copy constructor
  //
  memcpy(fDigitsList,recp.fDigitsList,sizeof(Int_t)*fMulDigit);
  memcpy(fTracksList,recp.fTracksList,sizeof(Int_t)*fMulTrack);
}

//_______________________________________________________________________
AliRecPoint& AliRecPoint::operator=(const AliRecPoint& recp)
{
  //
  // Assignement constructor
  //
  if(this!=&recp) {
    TObject::operator=(recp);
    fAmp=recp.fAmp;
    fGeom=recp.fGeom;
    fIndexInList=-1; // to be set when the point is already stored
    fLocPos=recp.fLocPos;
    delete fLocPosM;
    fLocPosM=recp.fLocPosM;
    fMaxDigit=recp.fMaxDigit;
    fMulDigit=recp.fMulDigit;
    fMaxTrack=recp.fMaxTrack;
    fMulTrack=recp.fMulTrack;
    delete [] fDigitsList;
    fDigitsList=new Int_t[fMulDigit];
    delete [] fTracksList;
    fTracksList=new Int_t[fMulTrack];

    memcpy(fDigitsList,recp.fDigitsList,sizeof(Int_t)*fMulDigit);
    memcpy(fTracksList,recp.fTracksList,sizeof(Int_t)*fMulTrack);
  }
  return *this;
}

//_______________________________________________________________________
AliRecPoint::~AliRecPoint()
{
  // dtor
  
  delete fLocPosM ; 
  delete [] fDigitsList ; 
  delete [] fTracksList ;  
  
}
  
//_______________________________________________________________________
void AliRecPoint::AddDigit(AliDigitNew & digit)
{
  // adds a digit to the digits list
  // and accumulates the total amplitude and the multiplicity 
  
  
  if ( fMulDigit >= fMaxDigit ) { // increase the size of the list 
    int * tempo = new int[fMaxDigit*2]; 
    
    Int_t index ; 
    
    for ( index = 0 ; index < fMulDigit ; index++ )
      tempo[index] = fDigitsList[index] ; 
    
    delete [] fDigitsList ; 
    fDigitsList = tempo ; 
  }
  
  fDigitsList[fMulDigit] = digit.GetIndexInList()  ; 
  fMulDigit++ ; 
  fAmp += digit.GetAmp() ; 
}

//_______________________________________________________________________
// void AliRecPoint::AddTrack(AliTrack & track)
// {
//   // adds a digit to the digits list
//   // and accumulates the total amplitude and the multiplicity 


//   if ( fMulTrack >= fMaxTrack ) { // increase the size of the list 
//     int * tempo = new int[fMaxTrack*=2] ; 
//     Int_t index ; 
//     for ( index = 0 ; index < fMulTrack ; index++ )
//       tempo[index] = fTracksList[index] ; 
//     delete fTracksList ; 
//     fTracksList = tempo ; 
//   }

//   fTracksList[fMulTrack++]=  (int) &Track  ; 
// }

//_______________________________________________________________________
void AliRecPoint::Copy(TObject& recp) const
{
  //
  // Copy *this onto pts
  //
  // Copy all first
  if((TObject*)this != &recp) {
    ((TObject*) this)->Copy(recp);
    (dynamic_cast<AliRecPoint&>(recp)).fAmp = fAmp;
    (dynamic_cast<AliRecPoint&>(recp)).fGeom = fGeom;
    (dynamic_cast<AliRecPoint&>(recp)).fIndexInList = fIndexInList;
    (dynamic_cast<AliRecPoint&>(recp)).fLocPos = fLocPos;
    (dynamic_cast<AliRecPoint&>(recp)).fLocPosM = new TMatrixF(*fLocPosM);
    (dynamic_cast<AliRecPoint&>(recp)).fMaxDigit = fMaxDigit;
    (dynamic_cast<AliRecPoint&>(recp)).fMulDigit = fMulDigit;
    (dynamic_cast<AliRecPoint&>(recp)).fMaxTrack = fMaxTrack;
    (dynamic_cast<AliRecPoint&>(recp)).fMulTrack = fMulTrack;
    
    // Duplicate pointed objects
    (dynamic_cast<AliRecPoint&>(recp)).fDigitsList = new Int_t[fMulDigit];
    memcpy((dynamic_cast<AliRecPoint&>(recp)).fDigitsList,fDigitsList,fMulDigit*sizeof(Int_t));
    (dynamic_cast<AliRecPoint&>(recp)).fTracksList = new Int_t[fMulTrack];
    memcpy((dynamic_cast<AliRecPoint&>(recp)).fTracksList,fTracksList,fMulTrack*sizeof(Int_t));
  }
}

//_______________________________________________________________________
void AliRecPoint::GetCovarianceMatrix(TMatrixF & mat) const
{
  // returns the covariant matrix for the local position
  
  mat = *fLocPosM ; 

}

//____________________________________________________________________________
void AliRecPoint::GetLocalPosition(TVector3 & pos) const
{
  // returns the position of the cluster in the local reference system of the sub-detector

  pos = fLocPos;

 
}

//____________________________________________________________________________
void AliRecPoint::GetGlobalPosition(TVector3 & gpos, TMatrixF & gmat) const
{
  // returns the position of the cluster in the global reference system of ALICE
  // and the uncertainty on this position
  

  fGeom->GetGlobal(this, gpos, gmat) ;
 
}


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