]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliESDfriendTrack.cxx
added QA class
[u/mrichter/AliRoot.git] / STEER / AliESDfriendTrack.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
16 //-------------------------------------------------------------------------
17 //               Implementation of the AliESDfriendTrack class
18 //  This class keeps complementary to the AliESDtrack information 
19 //      Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch
20 //-------------------------------------------------------------------------
21 #include "AliTrackPointArray.h"
22 #include "AliESDfriendTrack.h"
23 #include "TObjArray.h"
24 #include "TClonesArray.h"
25 #include "AliKalmanTrack.h"
26
27 ClassImp(AliESDfriendTrack)
28
29 AliESDfriendTrack::AliESDfriendTrack(): 
30 TObject(), 
31 f1P(0), 
32 fHmpPhotClus(new TClonesArray("AliHMPIDCluster",1000)),
33 fnMaxITScluster(0),
34 fnMaxTPCcluster(0),
35 fnMaxTRDcluster(0),
36 fITSindex(0x0),
37 fTPCindex(0x0),
38 fTRDindex(0x0),
39 fPoints(0),
40 fCalibContainer(0),
41 fITStrack(0),
42 fTRDtrack(0),
43 fTPCOut(0),
44 fITSOut(0),
45 fTRDIn(0)
46 {
47   //
48   // Default constructor
49   //
50         //  Int_t i;
51   //  fITSindex = new Int_t[fnMaxITScluster];
52   //fTPCindex = new Int_t[fnMaxTPCcluster];
53   //fTRDindex = new Int_t[fnMaxTRDcluster];
54   //for (i=0; i<kMaxITScluster; i++) fITSindex[i]=-2;
55   //for (i=0; i<kMaxTPCcluster; i++) fTPCindex[i]=-2;
56   //for (i=0; i<kMaxTRDcluster; i++) fTRDindex[i]=-2;
57   
58   //fHmpPhotClus->SetOwner(kTRUE); 
59   
60 }
61
62 AliESDfriendTrack::AliESDfriendTrack(const AliESDfriendTrack &t): 
63 TObject(t),
64 f1P(t.f1P),
65 fHmpPhotClus(t.fHmpPhotClus),        
66 fnMaxITScluster(t.fnMaxITScluster),
67 fnMaxTPCcluster(t.fnMaxTPCcluster),
68 fnMaxTRDcluster(t.fnMaxTRDcluster),
69 fITSindex(0x0),
70 fTPCindex(0x0),
71 fTRDindex(0x0),
72 fPoints(0),
73 fCalibContainer(0),
74 fITStrack(0),
75 fTRDtrack(0),
76 fTPCOut(0),
77 fITSOut(0),
78 fTRDIn(0)
79 {
80   //
81   // Copy constructor
82   //
83   AliDebug(2,"Calling copy constructor");
84
85   Int_t i;
86   if (fnMaxITScluster != 0){
87           fITSindex = new Int_t[fnMaxITScluster];
88           for (i=0; i<fnMaxITScluster; i++) fITSindex[i]=t.fITSindex[i];
89   }
90   if (fnMaxTPCcluster != 0){
91           fTPCindex = new Int_t[fnMaxTPCcluster];
92           for (i=0; i<fnMaxTPCcluster; i++) fTPCindex[i]=t.fTPCindex[i];
93   }
94   if (fnMaxTRDcluster != 0){
95           fTRDindex = new Int_t[fnMaxTRDcluster];
96           for (i=0; i<fnMaxTRDcluster; i++) fTRDindex[i]=t.fTRDindex[i]; 
97   }
98   AliDebug(2,Form("fnMaxITScluster = %d",fnMaxITScluster));
99   AliDebug(2,Form("fnMaxTPCcluster = %d",fnMaxTPCcluster));
100   AliDebug(2,Form("fnMaxTRDcluster = %d",fnMaxTRDcluster));
101   if (t.fPoints) fPoints=new AliTrackPointArray(*t.fPoints);
102   if (t.fCalibContainer) {
103      fCalibContainer = new TObjArray(5);
104      Int_t no=t.fCalibContainer->GetEntriesFast();
105      for (i=0; i<no; i++) {
106        TObject *o=t.fCalibContainer->At(i);
107        fCalibContainer->AddLast(o->Clone());
108      }  
109   }
110
111   if (t.fTPCOut) fTPCOut = new AliExternalTrackParam(*(t.fTPCOut));
112   if (t.fITSOut) fITSOut = new AliExternalTrackParam(*(t.fITSOut));
113   if (t.fTRDIn)  fTRDIn = new AliExternalTrackParam(*(t.fTRDIn));
114
115   fHmpPhotClus = new TClonesArray(*t.fHmpPhotClus);  
116   
117 }
118
119 AliESDfriendTrack::~AliESDfriendTrack() {
120   //
121   // Simple destructor
122   //
123    delete fPoints;
124    if (fCalibContainer) fCalibContainer->Delete();
125    delete fCalibContainer;
126    delete fHmpPhotClus;   
127    delete fITStrack;
128    delete fTRDtrack;
129    delete fTPCOut;
130    delete fITSOut;
131    delete fTRDIn;
132    delete[] fITSindex;
133    delete[] fTPCindex;
134    delete[] fTRDindex;
135 }
136
137
138 void AliESDfriendTrack::AddCalibObject(TObject * calibObject){
139   //
140   // add calibration object to array -
141   // track is owner of the objects in the container 
142   //
143   if (!fCalibContainer) fCalibContainer = new TObjArray(5);
144   fCalibContainer->AddLast(calibObject);
145 }
146
147 TObject * AliESDfriendTrack::GetCalibObject(Int_t index){
148   //
149   //
150   //
151   if (!fCalibContainer) return 0;
152   if (index>=fCalibContainer->GetEntriesFast()) return 0;
153   return fCalibContainer->At(index);
154 }
155
156
157 void AliESDfriendTrack::SetTPCOut(const AliExternalTrackParam &param) {
158   // 
159   // backup TPC out track
160   //
161   delete fTPCOut;
162   fTPCOut=new AliExternalTrackParam(param);
163
164 void AliESDfriendTrack::SetITSOut(const AliExternalTrackParam &param) {
165   //
166   // backup ITS out track
167   //
168   delete fITSOut;
169   fITSOut=new AliExternalTrackParam(param);
170
171 void AliESDfriendTrack::SetTRDIn(const AliExternalTrackParam  &param)  {
172   //
173   // backup TRD in track
174   //
175   delete fTRDIn;
176   fTRDIn=new AliExternalTrackParam(param);
177
178
179
180 void AliESDfriendTrack::SetHmpPhotClus(TClonesArray  *array)  {
181   //
182   // 
183   //
184   fHmpPhotClus->Clear("C");
185   for(Int_t iClu=0; iClu<array->GetEntriesFast(); iClu++){
186      TObject *pClu = (TObject*)array->UncheckedAt(iClu);
187      new ((*fHmpPhotClus)[iClu]) TObject(*pClu);
188   }
189 }
190
191 void AliESDfriendTrack::SetITSIndices(Int_t* indices, Int_t n){
192
193         //
194         // setting fITSindex
195         // instantiating the pointer if still NULL
196         //
197
198         fnMaxITScluster = n;
199         AliDebug(2,Form("fnMaxITScluster = %d",fnMaxITScluster));
200         if (fITSindex == 0x0){
201                 fITSindex = new Int_t[fnMaxITScluster];
202         }
203         for (Int_t i = 0; i < fnMaxITScluster; i++){
204                 fITSindex[i] = indices[i];
205         }
206 }
207
208 void AliESDfriendTrack::SetTPCIndices(Int_t* indices, Int_t n){
209
210         //
211         // setting fTPCindex
212         // instantiating the pointer if still NULL
213         //
214
215         fnMaxTPCcluster = n;
216         AliDebug(2,Form("fnMaxTPCcluster = %d",fnMaxTPCcluster));
217         if (fTPCindex == 0x0){
218                 fTPCindex = new Int_t[fnMaxTPCcluster];
219         }
220         for (Int_t i = 0; i < fnMaxTPCcluster; i++){
221                 fTPCindex[i] = indices[i];
222         }
223 }
224
225 void AliESDfriendTrack::SetTRDIndices(Int_t* indices, Int_t n){
226
227         //
228         // setting fTRDindex
229         // instantiating the pointer if still NULL
230         //
231
232         fnMaxTRDcluster = n;
233         AliDebug(2,Form("fnMaxTRDcluster = %d",fnMaxTRDcluster));
234         if (fTRDindex == 0x0){
235                 fTRDindex = new Int_t[fnMaxTRDcluster];
236         }
237         for (Int_t i = 0; i < fnMaxTRDcluster; i++){
238                 fTRDindex[i] = indices[i];
239         }
240 }
241