Charged jets (pPb): Improved trackcut analysis
[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 AliPHOSTrackSegment & AliPHOSTrackSegment::operator = (const AliPHOSTrackSegment &)
161 {
162   Fatal("operator =", "not implemented");
163   return *this;
164 }
165
166 //____________________________________________________________________________
167 void AliPHOSTrackSegment::Copy(TObject & obj) const
168 {
169   // Copy of a track segment into another track segment
170
171    TObject::Copy(obj) ;
172    ( (AliPHOSTrackSegment &)obj ).fEmcRecPoint     = fEmcRecPoint ; 
173    ( (AliPHOSTrackSegment &)obj ).fCpvRecPoint     = fCpvRecPoint ; 
174    ( (AliPHOSTrackSegment &)obj ).fIndexInList     = fIndexInList ; 
175    ( (AliPHOSTrackSegment &)obj ).fTrack           = fTrack ;
176    ( (AliPHOSTrackSegment &)obj ).fDcpv[0]         = fDcpv[0] ;
177    ( (AliPHOSTrackSegment &)obj ).fDcpv[1]         = fDcpv[1] ;
178
179
180
181 //____________________________________________________________________________
182 void AliPHOSTrackSegment::Print(const Option_t *) const
183 {
184   // Print all information on this track Segment
185   
186
187   AliInfo("Track segment");
188   printf("Stored at position %d\n", fIndexInList) ;
189   printf(" Emc RecPoint #     %d\n", fEmcRecPoint) ;
190   if(fCpvRecPoint >= 0)
191     printf(" CPV RecPoint #     %d\n", fCpvRecPoint) ;
192   else
193     printf(" No CPV RecPoint\n");
194   if (fTrack >= 0) 
195     printf(" Charged track #     %d\n", fTrack) ;
196   else
197     printf(" No Charged track\n");
198   printf(" Distance to CPV: x=%f, z=%f\n",fDcpv[0],fDcpv[1]) ;
199 }
200
201 //____________________________________________________________________________
202 void AliPHOSTrackSegment::SetCpvRecPoint(AliPHOSRecPoint * cpvRecPoint) 
203 {
204   // gives an id from its position in the list
205   if( cpvRecPoint )  
206     fCpvRecPoint = cpvRecPoint->GetIndexInList() ;
207  else 
208     fCpvRecPoint = -1 ;
209 }
210 //____________________________________________________________________________
211 Float_t AliPHOSTrackSegment::GetCpvDistance(const Option_t* dr) const
212 {
213  if(strcmp(dr,"x")==0||strcmp(dr,"X")==0) return fDcpv[0] ; 
214  if(strcmp(dr,"z")==0||strcmp(dr,"Z")==0) return fDcpv[1] ; 
215  if(strcmp(dr,"r")==0||strcmp(dr,"R")==0) return TMath::Sqrt(fDcpv[0]*fDcpv[0]+fDcpv[1]*fDcpv[1]) ; 
216  return 999. ;
217
218 }