Introduction of decalibration in the simulations with anchor runs and raw:// OCDB.
[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 #include "AliLog.h" 
46
47 ClassImp(AliPHOSTrackSegment)
48
49 //____________________________________________________________________________
50 AliPHOSTrackSegment::AliPHOSTrackSegment()
51                         : fEmcRecPoint(0),
52                           fIndexInList(0),
53                           fCpvRecPoint(0),
54                           fTrack(0)
55 {
56   //def ctor
57   fDcpv[0]=999. ;
58   fDcpv[1]=999. ;
59 }
60
61 //____________________________________________________________________________
62 AliPHOSTrackSegment::AliPHOSTrackSegment( AliPHOSEmcRecPoint * emc , 
63                                           AliPHOSRecPoint * cpvrp1)
64                         : fEmcRecPoint(0),
65                           fIndexInList(0),
66                           fCpvRecPoint(0),
67                           fTrack(0)
68 {
69   // ctor
70
71   if( emc )   
72     fEmcRecPoint =  emc->GetIndexInList() ;
73   else 
74     fEmcRecPoint = -1 ;
75
76   if( cpvrp1 )  
77     fCpvRecPoint = cpvrp1->GetIndexInList() ;
78  else 
79     fCpvRecPoint = -1 ;
80
81   fTrack = -1 ; 
82
83   fIndexInList = -1 ;
84   fDcpv[0]=999. ;
85   fDcpv[1]=999. ;
86 }
87
88 //____________________________________________________________________________
89 AliPHOSTrackSegment::AliPHOSTrackSegment( AliPHOSEmcRecPoint * emc , 
90                                           AliPHOSRecPoint * cpvrp1, 
91                                           Int_t track)
92                         : fEmcRecPoint(0),
93                           fIndexInList(0),
94                           fCpvRecPoint(0),
95                           fTrack(0)
96 {
97   // ctor
98
99   if( emc )   
100     fEmcRecPoint =  emc->GetIndexInList() ;
101   else 
102     fEmcRecPoint = -1 ;
103
104   if( cpvrp1 )  
105     fCpvRecPoint = cpvrp1->GetIndexInList() ;
106  else 
107     fCpvRecPoint = -1 ;
108   
109   fTrack = track ; 
110
111   fIndexInList = -1 ;
112   fDcpv[0]=999. ;
113   fDcpv[1]=999. ;
114 }
115
116 //____________________________________________________________________________
117 AliPHOSTrackSegment::AliPHOSTrackSegment( AliPHOSEmcRecPoint * emc , 
118                                           AliPHOSRecPoint * cpvrp1, 
119                                           Int_t track, Float_t dx,Float_t dz)
120                         : fEmcRecPoint(0),
121                           fIndexInList(0),
122                           fCpvRecPoint(0),
123                           fTrack(0)
124 {
125   // ctor
126
127   if( emc )   
128     fEmcRecPoint =  emc->GetIndexInList() ;
129   else 
130     fEmcRecPoint = -1 ;
131
132   if( cpvrp1 )  
133     fCpvRecPoint = cpvrp1->GetIndexInList() ;
134  else 
135     fCpvRecPoint = -1 ;
136   
137   fTrack = track ; 
138
139   fIndexInList = -1 ;
140
141   fDcpv[0] = dx ;
142   fDcpv[1] = dz ;
143 }
144
145 //____________________________________________________________________________
146 AliPHOSTrackSegment::AliPHOSTrackSegment( const AliPHOSTrackSegment & ts) 
147   : TObject(ts),
148     fEmcRecPoint(0),
149     fIndexInList(0),
150     fCpvRecPoint(0),
151     fTrack(0)
152 {
153   // Copy ctor
154
155   ( (AliPHOSTrackSegment &)ts ).Copy(*this) ; 
156 }
157
158
159 //____________________________________________________________________________
160 void AliPHOSTrackSegment::Copy(TObject & obj) const
161 {
162   // Copy of a track segment into another track segment
163
164    TObject::Copy(obj) ;
165    ( (AliPHOSTrackSegment &)obj ).fEmcRecPoint     = fEmcRecPoint ; 
166    ( (AliPHOSTrackSegment &)obj ).fCpvRecPoint     = fCpvRecPoint ; 
167    ( (AliPHOSTrackSegment &)obj ).fIndexInList     = fIndexInList ; 
168    ( (AliPHOSTrackSegment &)obj ).fTrack           = fTrack ;
169    ( (AliPHOSTrackSegment &)obj ).fDcpv[0]         = fDcpv[0] ;
170    ( (AliPHOSTrackSegment &)obj ).fDcpv[1]         = fDcpv[1] ;
171
172
173
174 //____________________________________________________________________________
175 void AliPHOSTrackSegment::Print(const Option_t *) const
176 {
177   // Print all information on this track Segment
178   
179
180   AliInfo("Track segment");
181   printf("Stored at position %d\n", fIndexInList) ;
182   printf(" Emc RecPoint #     %d\n", fEmcRecPoint) ;
183   if(fCpvRecPoint >= 0)
184     printf(" CPV RecPoint #     %d\n", fCpvRecPoint) ;
185   else
186     printf(" No CPV RecPoint\n");
187   if (fTrack >= 0) 
188     printf(" Charged track #     %d\n", fTrack) ;
189   else
190     printf(" No Charged track\n");
191   printf(" Distance to CPV: x=%f, z=%f\n",fDcpv[0],fDcpv[1]) ;
192 }
193
194 //____________________________________________________________________________
195 void AliPHOSTrackSegment::SetCpvRecPoint(AliPHOSRecPoint * cpvRecPoint) 
196 {
197   // gives an id from its position in the list
198   if( cpvRecPoint )  
199     fCpvRecPoint = cpvRecPoint->GetIndexInList() ;
200  else 
201     fCpvRecPoint = -1 ;
202 }
203 //____________________________________________________________________________
204 Float_t AliPHOSTrackSegment::GetCpvDistance(const Option_t* dr) const
205 {
206  if(strcmp(dr,"x")==0||strcmp(dr,"X")==0) return fDcpv[0] ; 
207  if(strcmp(dr,"z")==0||strcmp(dr,"Z")==0) return fDcpv[1] ; 
208  if(strcmp(dr,"r")==0||strcmp(dr,"R")==0) return TMath::Sqrt(fDcpv[0]*fDcpv[0]+fDcpv[1]*fDcpv[1]) ; 
209  return 999. ;
210
211 }