Raw Sdigits energy converted to GeV.
[u/mrichter/AliRoot.git] / PHOS / AliPHOSTrackSegment.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15 /* $Id$ */
16
17 /* History of cvs commits:
18  *
19  * $Log$
20  * Revision 1.30  2006/08/28 10:01:56  kharlov
21  * Effective C++ warnings fixed (Timur Pocheptsov)
22  *
23  * Revision 1.29  2005/05/28 14:19:05  schutz
24  * Compilation warnings fixed by T.P.
25  *
26  */
27
28 //_________________________________________________________________________
29 //  Track segment in PHOS
30 //  Can be : 1 EmcRecPoint
31 //           1 EmcRecPoint + 1 CPV
32 //           1 EmcRecPoint + 1 CPV + 1 charged track
33 //                  
34 //*-- Author:  Dmitri Peressounko (RRC KI & SUBATECH)
35
36 // --- ROOT system ---
37  
38
39 // --- Standard library ---
40
41 // --- AliRoot header files ---
42 #include "AliPHOSEmcRecPoint.h" 
43 #include "AliPHOSTrackSegment.h" 
44 #include "AliESDtrack.h" 
45
46 ClassImp(AliPHOSTrackSegment)
47
48 //____________________________________________________________________________
49 AliPHOSTrackSegment::AliPHOSTrackSegment()
50                         : fEmcRecPoint(0),
51                           fIndexInList(0),
52                           fCpvRecPoint(0),
53                           fTrack(0)
54 {
55   //def ctor
56   fDcpv[0]=999. ;
57   fDcpv[1]=999. ;
58 }
59
60 //____________________________________________________________________________
61 AliPHOSTrackSegment::AliPHOSTrackSegment( AliPHOSEmcRecPoint * emc , 
62                                           AliPHOSRecPoint * cpvrp1)
63                         : fEmcRecPoint(0),
64                           fIndexInList(0),
65                           fCpvRecPoint(0),
66                           fTrack(0)
67 {
68   // ctor
69
70   if( emc )   
71     fEmcRecPoint =  emc->GetIndexInList() ;
72   else 
73     fEmcRecPoint = -1 ;
74
75   if( cpvrp1 )  
76     fCpvRecPoint = cpvrp1->GetIndexInList() ;
77  else 
78     fCpvRecPoint = -1 ;
79
80   fTrack = -1 ; 
81
82   fIndexInList = -1 ;
83   fDcpv[0]=999. ;
84   fDcpv[1]=999. ;
85 }
86
87 //____________________________________________________________________________
88 AliPHOSTrackSegment::AliPHOSTrackSegment( AliPHOSEmcRecPoint * emc , 
89                                           AliPHOSRecPoint * cpvrp1, 
90                                           Int_t track)
91                         : fEmcRecPoint(0),
92                           fIndexInList(0),
93                           fCpvRecPoint(0),
94                           fTrack(0)
95 {
96   // ctor
97
98   if( emc )   
99     fEmcRecPoint =  emc->GetIndexInList() ;
100   else 
101     fEmcRecPoint = -1 ;
102
103   if( cpvrp1 )  
104     fCpvRecPoint = cpvrp1->GetIndexInList() ;
105  else 
106     fCpvRecPoint = -1 ;
107   
108   fTrack = track ; 
109
110   fIndexInList = -1 ;
111   fDcpv[0]=999. ;
112   fDcpv[1]=999. ;
113 }
114
115 //____________________________________________________________________________
116 AliPHOSTrackSegment::AliPHOSTrackSegment( AliPHOSEmcRecPoint * emc , 
117                                           AliPHOSRecPoint * cpvrp1, 
118                                           Int_t track, Float_t dx,Float_t dz)
119                         : fEmcRecPoint(0),
120                           fIndexInList(0),
121                           fCpvRecPoint(0),
122                           fTrack(0)
123 {
124   // ctor
125
126   if( emc )   
127     fEmcRecPoint =  emc->GetIndexInList() ;
128   else 
129     fEmcRecPoint = -1 ;
130
131   if( cpvrp1 )  
132     fCpvRecPoint = cpvrp1->GetIndexInList() ;
133  else 
134     fCpvRecPoint = -1 ;
135   
136   fTrack = track ; 
137
138   fIndexInList = -1 ;
139
140   fDcpv[0] = dx ;
141   fDcpv[1] = dz ;
142 }
143
144 //____________________________________________________________________________
145 AliPHOSTrackSegment::AliPHOSTrackSegment( const AliPHOSTrackSegment & ts) 
146   : TObject(ts),
147     fEmcRecPoint(0),
148     fIndexInList(0),
149     fCpvRecPoint(0),
150     fTrack(0)
151 {
152   // Copy ctor
153
154   ( (AliPHOSTrackSegment &)ts ).Copy(*this) ; 
155 }
156
157
158 //____________________________________________________________________________
159 void AliPHOSTrackSegment::Copy(TObject & obj) const
160 {
161   // Copy of a track segment into another track segment
162
163    TObject::Copy(obj) ;
164    ( (AliPHOSTrackSegment &)obj ).fEmcRecPoint     = fEmcRecPoint ; 
165    ( (AliPHOSTrackSegment &)obj ).fCpvRecPoint     = fCpvRecPoint ; 
166    ( (AliPHOSTrackSegment &)obj ).fIndexInList     = fIndexInList ; 
167    ( (AliPHOSTrackSegment &)obj ).fTrack           = fTrack ;
168    ( (AliPHOSTrackSegment &)obj ).fDcpv[0]         = fDcpv[0] ;
169    ( (AliPHOSTrackSegment &)obj ).fDcpv[1]         = fDcpv[1] ;
170
171
172
173 //____________________________________________________________________________
174 void AliPHOSTrackSegment::Print(const Option_t *) const
175 {
176   // Print all information on this track Segment
177   
178
179   Info("Print", "");
180   printf("Stored at position %d\n", fIndexInList) ;
181   printf(" Emc RecPoint #     %d\n", fEmcRecPoint) ;
182   if(fCpvRecPoint >= 0)
183     printf(" CPV RecPoint #     %d\n", fCpvRecPoint) ;
184   else
185     printf(" No CPV RecPoint\n");
186   if (fTrack >= 0) 
187     printf(" Charged track #     %d\n", fTrack) ;
188   else
189     printf(" No Charged track\n");
190   printf(" Distance to CPV: x=%f, z=%f\n",fDcpv[0],fDcpv[1]) ;
191 }
192
193 //____________________________________________________________________________
194 void AliPHOSTrackSegment::SetCpvRecPoint(AliPHOSRecPoint * cpvRecPoint) 
195 {
196   // gives an id from its position in the list
197   if( cpvRecPoint )  
198     fCpvRecPoint = cpvRecPoint->GetIndexInList() ;
199  else 
200     fCpvRecPoint = -1 ;
201 }
202 //____________________________________________________________________________
203 Float_t AliPHOSTrackSegment::GetCpvDistance(const Option_t* dr) const
204 {
205  if(strcmp(dr,"x")==0||strcmp(dr,"X")==0) return fDcpv[0] ; 
206  if(strcmp(dr,"z")==0||strcmp(dr,"Z")==0) return fDcpv[1] ; 
207  if(strcmp(dr,"r")==0||strcmp(dr,"R")==0) return TMath::Sqrt(fDcpv[0]*fDcpv[0]+fDcpv[1]*fDcpv[1]) ; 
208  return 999. ;
209
210 }