1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
16 //-----------------------------------------------------------------
17 // Implementation of the base class for track residuals
20 //-----------------------------------------------------------------
22 #include "AliTrackResiduals.h"
24 #include "AliAlignObj.h"
25 #include "AliTrackPointArray.h"
27 ClassImp(AliTrackResiduals)
29 //_____________________________________________________________________________
30 AliTrackResiduals::AliTrackResiduals():
40 // Default constructor
43 //_____________________________________________________________________________
44 AliTrackResiduals::AliTrackResiduals(Int_t ntracks):
54 fVolArray = new AliTrackPointArray*[ntracks];
55 fTrackArray = new AliTrackPointArray*[ntracks];
56 for (Int_t itrack = 0; itrack < ntracks; itrack++)
57 fVolArray[itrack] = fTrackArray[itrack] = 0x0;
61 //_____________________________________________________________________________
62 AliTrackResiduals::AliTrackResiduals(const AliTrackResiduals &res):
71 // By default the created copy owns the track point arrays
73 fAlignObj = (AliAlignObj *)res.fAlignObj->Clone();
76 fVolArray = new AliTrackPointArray*[fN];
77 fTrackArray = new AliTrackPointArray*[fN];
78 for (Int_t itrack = 0; itrack < fN; itrack++)
80 if (res.fVolArray[itrack])
81 fVolArray[itrack] = new AliTrackPointArray(*res.fVolArray[itrack]);
84 if (res.fTrackArray[itrack])
85 fTrackArray[itrack] = new AliTrackPointArray(*res.fTrackArray[itrack]);
92 //_____________________________________________________________________________
93 AliTrackResiduals &AliTrackResiduals::operator =(const AliTrackResiduals& res)
95 // assignment operator
96 // Does not copy the track point arrays
97 if(this==&res) return *this;
98 ((TObject *)this)->operator=(res);
105 fAlignObj = res.fAlignObj;
107 fVolArray = res.fVolArray;
108 fTrackArray = res.fTrackArray;
113 //_____________________________________________________________________________
114 AliTrackResiduals::~AliTrackResiduals()
117 if (fAlignObj) delete fAlignObj;
118 DeleteTrackPointArrays();
121 //_____________________________________________________________________________
122 void AliTrackResiduals::SetNTracks(Int_t ntracks)
124 // Set new size for the track point arrays.
125 // Delete the old arrays and allocate the
127 DeleteTrackPointArrays();
136 fVolArray = new AliTrackPointArray*[ntracks];
137 fTrackArray = new AliTrackPointArray*[ntracks];
138 for (Int_t itrack = 0; itrack < ntracks; itrack++)
139 fVolArray[itrack] = fTrackArray[itrack] = 0x0;
143 //_____________________________________________________________________________
144 Bool_t AliTrackResiduals::AddTrackPointArrays(AliTrackPointArray *volarray, AliTrackPointArray *trackarray)
146 // Adds pair of track space point and
147 // track extrapolation point arrays
148 if (!fVolArray || !fTrackArray) return kFALSE;
150 if (fLast >= fN) return kFALSE;
152 fVolArray[fLast] = volarray;
153 fTrackArray[fLast] = trackarray;
159 //_____________________________________________________________________________
160 void AliTrackResiduals::SetAlignObj(AliAlignObj *alignobj)
162 // Copy the alignment object to be updated in fAlignObj
163 // and flush its parameters
164 if (fAlignObj) delete fAlignObj;
165 fAlignObj = (AliAlignObj *)alignobj->Clone();
166 fAlignObj->SetPars(0,0,0,0,0,0);
170 //_____________________________________________________________________________
171 Bool_t AliTrackResiduals::GetTrackPointArrays(Int_t i, AliTrackPointArray* &volarray, AliTrackPointArray* &trackarray) const
173 // Provide an access to a pair of track point arrays
176 volarray = trackarray = 0x0;
180 volarray = fVolArray[i];
181 trackarray = fTrackArray[i];
186 //_____________________________________________________________________________
187 void AliTrackResiduals::DeleteTrackPointArrays()
189 // Deletes the track point arrays only in case
190 // the object is their owner.
191 // Called by the destructor and SetNTracks methods.
193 for (Int_t itrack = 0; itrack < fLast; itrack++)
195 delete fVolArray[itrack];
196 delete fTrackArray[itrack];
199 delete [] fTrackArray;