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

/* History of cvs commits:
 *
 * $Log$
 * Revision 1.30  2006/08/28 10:01:56  kharlov
 * Effective C++ warnings fixed (Timur Pocheptsov)
 *
 * Revision 1.29  2005/05/28 14:19:05  schutz
 * Compilation warnings fixed by T.P.
 *
 */

//_________________________________________________________________________
//  Track segment in PHOS
//  Can be : 1 EmcRecPoint
//           1 EmcRecPoint + 1 CPV
//           1 EmcRecPoint + 1 CPV + 1 charged track
//                  
//*-- Author:  Dmitri Peressounko (RRC KI & SUBATECH)

// --- ROOT system ---
 

// --- Standard library ---

// --- AliRoot header files ---
#include "AliPHOSEmcRecPoint.h" 
#include "AliPHOSTrackSegment.h" 
#include "AliESDtrack.h" 
#include "AliLog.h" 

ClassImp(AliPHOSTrackSegment)

//____________________________________________________________________________
AliPHOSTrackSegment::AliPHOSTrackSegment()
			: fEmcRecPoint(0),
			  fIndexInList(0),
			  fCpvRecPoint(0),
			  fTrack(0)
{
  //def ctor
  fDcpv[0]=999. ;
  fDcpv[1]=999. ;
}

//____________________________________________________________________________
AliPHOSTrackSegment::AliPHOSTrackSegment( AliPHOSEmcRecPoint * emc , 
					  AliPHOSRecPoint * cpvrp1)
			: fEmcRecPoint(0),
			  fIndexInList(0),
			  fCpvRecPoint(0),
			  fTrack(0)
{
  // ctor

  if( emc )   
    fEmcRecPoint =  emc->GetIndexInList() ;
  else 
    fEmcRecPoint = -1 ;

  if( cpvrp1 )  
    fCpvRecPoint = cpvrp1->GetIndexInList() ;
 else 
    fCpvRecPoint = -1 ;

  fTrack = -1 ; 

  fIndexInList = -1 ;
  fDcpv[0]=999. ;
  fDcpv[1]=999. ;
}

//____________________________________________________________________________
AliPHOSTrackSegment::AliPHOSTrackSegment( AliPHOSEmcRecPoint * emc , 
					  AliPHOSRecPoint * cpvrp1, 
					  Int_t track)
			: fEmcRecPoint(0),
			  fIndexInList(0),
			  fCpvRecPoint(0),
			  fTrack(0)
{
  // ctor

  if( emc )   
    fEmcRecPoint =  emc->GetIndexInList() ;
  else 
    fEmcRecPoint = -1 ;

  if( cpvrp1 )  
    fCpvRecPoint = cpvrp1->GetIndexInList() ;
 else 
    fCpvRecPoint = -1 ;
  
  fTrack = track ; 

  fIndexInList = -1 ;
  fDcpv[0]=999. ;
  fDcpv[1]=999. ;
}

//____________________________________________________________________________
AliPHOSTrackSegment::AliPHOSTrackSegment( AliPHOSEmcRecPoint * emc , 
					  AliPHOSRecPoint * cpvrp1, 
					  Int_t track, Float_t dx,Float_t dz)
			: fEmcRecPoint(0),
			  fIndexInList(0),
			  fCpvRecPoint(0),
			  fTrack(0)
{
  // ctor

  if( emc )   
    fEmcRecPoint =  emc->GetIndexInList() ;
  else 
    fEmcRecPoint = -1 ;

  if( cpvrp1 )  
    fCpvRecPoint = cpvrp1->GetIndexInList() ;
 else 
    fCpvRecPoint = -1 ;
  
  fTrack = track ; 

  fIndexInList = -1 ;

  fDcpv[0] = dx ;
  fDcpv[1] = dz ;
}

//____________________________________________________________________________
AliPHOSTrackSegment::AliPHOSTrackSegment( const AliPHOSTrackSegment & ts) 
  : TObject(ts),
    fEmcRecPoint(0),
    fIndexInList(0),
    fCpvRecPoint(0),
    fTrack(0)
{
  // Copy ctor

  ( (AliPHOSTrackSegment &)ts ).Copy(*this) ; 
}


//____________________________________________________________________________
AliPHOSTrackSegment & AliPHOSTrackSegment::operator = (const AliPHOSTrackSegment &)
{
  Fatal("operator =", "not implemented");
  return *this;
}

//____________________________________________________________________________
void AliPHOSTrackSegment::Copy(TObject & obj) const
{
  // Copy of a track segment into another track segment

   TObject::Copy(obj) ;
   ( (AliPHOSTrackSegment &)obj ).fEmcRecPoint     = fEmcRecPoint ; 
   ( (AliPHOSTrackSegment &)obj ).fCpvRecPoint     = fCpvRecPoint ; 
   ( (AliPHOSTrackSegment &)obj ).fIndexInList     = fIndexInList ; 
   ( (AliPHOSTrackSegment &)obj ).fTrack           = fTrack ;
   ( (AliPHOSTrackSegment &)obj ).fDcpv[0]         = fDcpv[0] ;
   ( (AliPHOSTrackSegment &)obj ).fDcpv[1]         = fDcpv[1] ;
} 


//____________________________________________________________________________
void AliPHOSTrackSegment::Print(const Option_t *) const
{
  // Print all information on this track Segment
  

  AliInfo("Track segment");
  printf("Stored at position %d\n", fIndexInList) ;
  printf(" Emc RecPoint #     %d\n", fEmcRecPoint) ;
  if(fCpvRecPoint >= 0)
    printf(" CPV RecPoint #     %d\n", fCpvRecPoint) ;
  else
    printf(" No CPV RecPoint\n");
  if (fTrack >= 0) 
    printf(" Charged track #     %d\n", fTrack) ;
  else
    printf(" No Charged track\n");
  printf(" Distance to CPV: x=%f, z=%f\n",fDcpv[0],fDcpv[1]) ;
}

//____________________________________________________________________________
void AliPHOSTrackSegment::SetCpvRecPoint(AliPHOSRecPoint * cpvRecPoint) 
{
  // gives an id from its position in the list
  if( cpvRecPoint )  
    fCpvRecPoint = cpvRecPoint->GetIndexInList() ;
 else 
    fCpvRecPoint = -1 ;
}
//____________________________________________________________________________
Float_t AliPHOSTrackSegment::GetCpvDistance(const Option_t* dr) const
{
 if(strcmp(dr,"x")==0||strcmp(dr,"X")==0) return fDcpv[0] ; 
 if(strcmp(dr,"z")==0||strcmp(dr,"Z")==0) return fDcpv[1] ; 
 if(strcmp(dr,"r")==0||strcmp(dr,"R")==0) return TMath::Sqrt(fDcpv[0]*fDcpv[0]+fDcpv[1]*fDcpv[1]) ; 
 return 999. ;

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