Fixes for bug #52499: Field polarities inconsistiency
[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 "AliKalmanTrack.h"
25
26 ClassImp(AliESDfriendTrack)
27
28 AliESDfriendTrack::AliESDfriendTrack(): 
29 TObject(), 
30 f1P(0), 
31 fPoints(0),
32 fCalibContainer(0),
33 fITStrack(0),
34 fTRDtrack(0),
35 fTPCOut(0),
36 fITSOut(0),
37 fTRDIn(0)
38 {
39   //
40   // Default constructor
41   //
42   Int_t i;
43   for (i=0; i<kMaxITScluster; i++) fITSindex[i]=-2;
44   for (i=0; i<kMaxTPCcluster; i++) fTPCindex[i]=-2;
45   for (i=0; i<kMaxTRDcluster; i++) fTRDindex[i]=-2;
46 }
47
48 AliESDfriendTrack::AliESDfriendTrack(const AliESDfriendTrack &t): 
49 TObject(t),
50 f1P(t.f1P),
51 fPoints(0),
52 fCalibContainer(0),
53 fITStrack(0),
54 fTRDtrack(0),
55 fTPCOut(0),
56 fITSOut(0),
57 fTRDIn(0)
58 {
59   //
60   // Copy constructor
61   //
62   Int_t i;
63   for (i=0; i<kMaxITScluster; i++) fITSindex[i]=t.fITSindex[i];
64   for (i=0; i<kMaxTPCcluster; i++) fTPCindex[i]=t.fTPCindex[i];
65   for (i=0; i<kMaxTRDcluster; i++) fTRDindex[i]=t.fTRDindex[i];
66   if (t.fPoints) fPoints=new AliTrackPointArray(*t.fPoints);
67   if (t.fCalibContainer) {
68      fCalibContainer = new TObjArray(5);
69      Int_t no=t.fCalibContainer->GetEntriesFast();
70      for (i=0; i<no; i++) {
71        TObject *o=t.fCalibContainer->At(i);
72        fCalibContainer->AddLast(o->Clone());
73      }  
74   }
75
76   if (t.fTPCOut) fTPCOut = new AliExternalTrackParam(*(t.fTPCOut));
77   if (t.fITSOut) fITSOut = new AliExternalTrackParam(*(t.fITSOut));
78   if (t.fTRDIn)  fTRDIn = new AliExternalTrackParam(*(t.fTRDIn));
79 }
80
81 AliESDfriendTrack::~AliESDfriendTrack() {
82   //
83   // Simple destructor
84   //
85    delete fPoints;
86    if (fCalibContainer) fCalibContainer->Delete();
87    delete fCalibContainer;
88    delete fITStrack;
89    delete fTRDtrack;
90    delete fTPCOut;
91    delete fITSOut;
92    delete fTRDIn;
93 }
94
95
96 void AliESDfriendTrack::AddCalibObject(TObject * calibObject){
97   //
98   // add calibration object to array -
99   // track is owner of the objects in the container 
100   //
101   if (!fCalibContainer) fCalibContainer = new TObjArray(5);
102   fCalibContainer->AddLast(calibObject);
103 }
104
105 TObject * AliESDfriendTrack::GetCalibObject(Int_t index){
106   //
107   //
108   //
109   if (!fCalibContainer) return 0;
110   if (index>=fCalibContainer->GetEntriesFast()) return 0;
111   return fCalibContainer->At(index);
112 }
113
114
115 void AliESDfriendTrack::SetTPCOut(const AliExternalTrackParam &param) {
116   // 
117   // backup TPC out track
118   //
119   delete fTPCOut;
120   fTPCOut=new AliExternalTrackParam(param);
121
122 void AliESDfriendTrack::SetITSOut(const AliExternalTrackParam &param) {
123   //
124   // backup ITS out track
125   //
126   delete fITSOut;
127   fITSOut=new AliExternalTrackParam(param);
128
129 void AliESDfriendTrack::SetTRDIn(const AliExternalTrackParam  &param)  {
130   //
131   // backup TRD in track
132   //
133   delete fTRDIn;
134   fTRDIn=new AliExternalTrackParam(param);
135
136