#include "AliTrackResiduals.h"
#include "AliAlignObj.h"
#include "AliAlignObjParams.h"
#include "AliTrackPointArray.h"
ClassImp(AliTrackResiduals)
AliTrackResiduals::AliTrackResiduals():
fN(0),
fLast(0),
fAlignObj(0),
fVolArray(0),
fTrackArray(0),
fChi2(0),
fNdf(0),
fMinNPoints(0),
fIsOwner(kTRUE)
{
for (Int_t ipar=0; ipar<6; ipar++){
fBFixed[ipar] = kFALSE;
fFixed[ipar] = 0.;
}
}
AliTrackResiduals::AliTrackResiduals(Int_t ntracks):
fN(ntracks),
fLast(0),
fAlignObj(0),
fVolArray(0),
fTrackArray(0),
fChi2(0),
fNdf(0),
fMinNPoints(0),
fIsOwner(kTRUE)
{
if (ntracks > 0) {
fVolArray = new AliTrackPointArray*[ntracks];
fTrackArray = new AliTrackPointArray*[ntracks];
for (Int_t itrack = 0; itrack < ntracks; itrack++)
fVolArray[itrack] = fTrackArray[itrack] = 0x0;
}
for (Int_t ipar=0; ipar<6; ipar++){
fBFixed[ipar] = kFALSE;
fFixed[ipar] = 0.;
}
}
AliTrackResiduals::AliTrackResiduals(const AliTrackResiduals &res):
TObject(res),
fN(res.fN),
fLast(res.fLast),
fAlignObj(0),
fVolArray(new AliTrackPointArray*[fN]),
fTrackArray(new AliTrackPointArray*[fN]),
fChi2(res.fChi2),
fNdf(res.fNdf),
fMinNPoints(res.fMinNPoints),
fIsOwner(kTRUE)
{
if(res.fAlignObj) fAlignObj = (AliAlignObj *)res.fAlignObj->Clone();
memset(fVolArray,0,sizeof(AliTrackPointArray*)*fN);
memset(fTrackArray,0,sizeof(AliTrackPointArray*)*fN);
for (Int_t itrack = 0; itrack < fN; itrack++) {
if (res.fVolArray[itrack])
fVolArray[itrack] = new AliTrackPointArray(*res.fVolArray[itrack]);
if (res.fTrackArray[itrack])
fTrackArray[itrack] = new AliTrackPointArray(*res.fTrackArray[itrack]);
}
memcpy(fBFixed,res.fBFixed,sizeof(Bool_t)*6);
memcpy(fFixed,res.fFixed,sizeof(Float_t)*6);
}
AliTrackResiduals &AliTrackResiduals::operator =(const AliTrackResiduals& res)
{
if(this!=&res) {
TObject::operator=(res);
fLast = res.fLast;
delete fAlignObj;
if(res.fAlignObj)
fAlignObj = (AliAlignObj *)res.fAlignObj->Clone();
else
fAlignObj = 0;
if (fIsOwner) {
if (fVolArray) {
for (Int_t itrack = 0; itrack < fN; itrack++)
delete fVolArray[itrack];
delete [] fVolArray;
fVolArray=0;
}
if(res.fN) {
fVolArray = new AliTrackPointArray*[res.fN];
memset(fVolArray,0,sizeof(AliTrackPointArray*)*res.fN);
for (Int_t itrack = 0; itrack < res.fN; itrack++)
if (res.fVolArray[itrack])
fVolArray[itrack] = new AliTrackPointArray(*res.fVolArray[itrack]);
}
if (fTrackArray) {
for (Int_t itrack = 0; itrack < fN; itrack++)
delete fTrackArray[itrack];
delete [] fTrackArray;
}
if(res.fN) {
fTrackArray = new AliTrackPointArray*[res.fN];
memset(fTrackArray,0,sizeof(AliTrackPointArray*)*res.fN);
for (Int_t itrack = 0; itrack < res.fN; itrack++)
if (res.fTrackArray[itrack])
fTrackArray[itrack] = new AliTrackPointArray(*res.fTrackArray[itrack]);
}
} else {
fVolArray = res.fVolArray;
fTrackArray = res.fTrackArray;
}
fN = res.fN;
fChi2 = res.fChi2;
fNdf = res.fNdf;
fMinNPoints = res.fMinNPoints;
fIsOwner = kFALSE;
memcpy(fBFixed,res.fBFixed,sizeof(Bool_t)*6);
memcpy(fFixed,res.fFixed,sizeof(Float_t)*6);
}
return *this;
}
AliTrackResiduals::~AliTrackResiduals()
{
delete fAlignObj;
DeleteTrackPointArrays();
}
void AliTrackResiduals::SetNTracks(Int_t ntracks)
{
DeleteTrackPointArrays();
fN = ntracks;
fLast = 0;
fChi2 = 0;
fNdf = 0;
fIsOwner = kTRUE;
if (ntracks > 0) {
fVolArray = new AliTrackPointArray*[ntracks];
fTrackArray = new AliTrackPointArray*[ntracks];
for (Int_t itrack = 0; itrack < ntracks; itrack++)
fVolArray[itrack] = fTrackArray[itrack] = 0x0;
}
else {
fVolArray = fTrackArray = 0x0;
}
}
Bool_t AliTrackResiduals::AddTrackPointArrays(AliTrackPointArray *volarray, AliTrackPointArray *trackarray)
{
if (!fVolArray || !fTrackArray) return kFALSE;
if (!volarray || !trackarray) return kFALSE;
if (volarray->GetNPoints() < fMinNPoints) return kFALSE;
if (fLast >= fN) return kFALSE;
fVolArray[fLast] = volarray;
fTrackArray[fLast] = trackarray;
fLast++;
return kTRUE;
}
void AliTrackResiduals::InitAlignObj()
{
delete fAlignObj;
fAlignObj = new AliAlignObjParams;
}
Bool_t AliTrackResiduals::GetTrackPointArrays(Int_t i, AliTrackPointArray* &volarray, AliTrackPointArray* &trackarray) const
{
if (i >= fLast) {
volarray = trackarray = 0x0;
return kFALSE;
}
else {
volarray = fVolArray[i];
trackarray = fTrackArray[i];
return kTRUE;
}
}
void AliTrackResiduals::DeleteTrackPointArrays()
{
if (fIsOwner) {
if (fVolArray) {
for (Int_t itrack = 0; itrack < fN; itrack++)
delete fVolArray[itrack];
delete [] fVolArray;
}
if (fTrackArray) {
for (Int_t itrack = 0; itrack < fN; itrack++)
delete fTrackArray[itrack];
delete [] fTrackArray;
}
}
}
Int_t AliTrackResiduals::GetNFreeParam(){
Int_t unfixedparam=6;
for(Int_t j=0;j<6;j++){
if(fBFixed[j]==kTRUE)unfixedparam--;
}
return unfixedparam;
}
AliTrackResiduals.cxx:100 AliTrackResiduals.cxx:101 AliTrackResiduals.cxx:102 AliTrackResiduals.cxx:103 AliTrackResiduals.cxx:104 AliTrackResiduals.cxx:105 AliTrackResiduals.cxx:106 AliTrackResiduals.cxx:107 AliTrackResiduals.cxx:108 AliTrackResiduals.cxx:109 AliTrackResiduals.cxx:110 AliTrackResiduals.cxx:111 AliTrackResiduals.cxx:112 AliTrackResiduals.cxx:113 AliTrackResiduals.cxx:114 AliTrackResiduals.cxx:115 AliTrackResiduals.cxx:116 AliTrackResiduals.cxx:117 AliTrackResiduals.cxx:118 AliTrackResiduals.cxx:119 AliTrackResiduals.cxx:120 AliTrackResiduals.cxx:121 AliTrackResiduals.cxx:122 AliTrackResiduals.cxx:123 AliTrackResiduals.cxx:124 AliTrackResiduals.cxx:125 AliTrackResiduals.cxx:126 AliTrackResiduals.cxx:127 AliTrackResiduals.cxx:128 AliTrackResiduals.cxx:129 AliTrackResiduals.cxx:130 AliTrackResiduals.cxx:131 AliTrackResiduals.cxx:132 AliTrackResiduals.cxx:133 AliTrackResiduals.cxx:134 AliTrackResiduals.cxx:135 AliTrackResiduals.cxx:136 AliTrackResiduals.cxx:137 AliTrackResiduals.cxx:138 AliTrackResiduals.cxx:139 AliTrackResiduals.cxx:140 AliTrackResiduals.cxx:141 AliTrackResiduals.cxx:142 AliTrackResiduals.cxx:143 AliTrackResiduals.cxx:144 AliTrackResiduals.cxx:145 AliTrackResiduals.cxx:146 AliTrackResiduals.cxx:147 AliTrackResiduals.cxx:148 AliTrackResiduals.cxx:149 AliTrackResiduals.cxx:150 AliTrackResiduals.cxx:151 AliTrackResiduals.cxx:152 AliTrackResiduals.cxx:153 AliTrackResiduals.cxx:154 AliTrackResiduals.cxx:155 AliTrackResiduals.cxx:156 AliTrackResiduals.cxx:157 AliTrackResiduals.cxx:158 AliTrackResiduals.cxx:159 AliTrackResiduals.cxx:160 AliTrackResiduals.cxx:161 AliTrackResiduals.cxx:162 AliTrackResiduals.cxx:163 AliTrackResiduals.cxx:164 AliTrackResiduals.cxx:165 AliTrackResiduals.cxx:166 AliTrackResiduals.cxx:167 AliTrackResiduals.cxx:168 AliTrackResiduals.cxx:169 AliTrackResiduals.cxx:170 AliTrackResiduals.cxx:171 AliTrackResiduals.cxx:172 AliTrackResiduals.cxx:173 AliTrackResiduals.cxx:174 AliTrackResiduals.cxx:175 AliTrackResiduals.cxx:176 AliTrackResiduals.cxx:177 AliTrackResiduals.cxx:178 AliTrackResiduals.cxx:179 AliTrackResiduals.cxx:180 AliTrackResiduals.cxx:181 AliTrackResiduals.cxx:182 AliTrackResiduals.cxx:183 AliTrackResiduals.cxx:184 AliTrackResiduals.cxx:185 AliTrackResiduals.cxx:186 AliTrackResiduals.cxx:187 AliTrackResiduals.cxx:188 AliTrackResiduals.cxx:189 AliTrackResiduals.cxx:190 AliTrackResiduals.cxx:191 AliTrackResiduals.cxx:192 AliTrackResiduals.cxx:193 AliTrackResiduals.cxx:194 AliTrackResiduals.cxx:195 AliTrackResiduals.cxx:196 AliTrackResiduals.cxx:197 AliTrackResiduals.cxx:198 AliTrackResiduals.cxx:199 AliTrackResiduals.cxx:200 AliTrackResiduals.cxx:201 AliTrackResiduals.cxx:202 AliTrackResiduals.cxx:203 AliTrackResiduals.cxx:204 AliTrackResiduals.cxx:205 AliTrackResiduals.cxx:206 AliTrackResiduals.cxx:207 AliTrackResiduals.cxx:208 AliTrackResiduals.cxx:209 AliTrackResiduals.cxx:210 AliTrackResiduals.cxx:211 AliTrackResiduals.cxx:212 AliTrackResiduals.cxx:213 AliTrackResiduals.cxx:214 AliTrackResiduals.cxx:215 AliTrackResiduals.cxx:216 AliTrackResiduals.cxx:217 AliTrackResiduals.cxx:218 AliTrackResiduals.cxx:219 AliTrackResiduals.cxx:220 AliTrackResiduals.cxx:221 AliTrackResiduals.cxx:222 AliTrackResiduals.cxx:223 AliTrackResiduals.cxx:224 AliTrackResiduals.cxx:225 AliTrackResiduals.cxx:226 AliTrackResiduals.cxx:227 AliTrackResiduals.cxx:228 AliTrackResiduals.cxx:229 AliTrackResiduals.cxx:230 AliTrackResiduals.cxx:231 AliTrackResiduals.cxx:232 AliTrackResiduals.cxx:233 AliTrackResiduals.cxx:234 AliTrackResiduals.cxx:235 AliTrackResiduals.cxx:236 AliTrackResiduals.cxx:237 AliTrackResiduals.cxx:238 AliTrackResiduals.cxx:239 AliTrackResiduals.cxx:240 AliTrackResiduals.cxx:241 AliTrackResiduals.cxx:242 AliTrackResiduals.cxx:243 AliTrackResiduals.cxx:244 AliTrackResiduals.cxx:245 AliTrackResiduals.cxx:246 AliTrackResiduals.cxx:247 AliTrackResiduals.cxx:248 AliTrackResiduals.cxx:249 AliTrackResiduals.cxx:250 AliTrackResiduals.cxx:251 AliTrackResiduals.cxx:252 AliTrackResiduals.cxx:253 AliTrackResiduals.cxx:254 AliTrackResiduals.cxx:255 AliTrackResiduals.cxx:256 AliTrackResiduals.cxx:257 AliTrackResiduals.cxx:258 AliTrackResiduals.cxx:259 AliTrackResiduals.cxx:260 AliTrackResiduals.cxx:261 AliTrackResiduals.cxx:262 AliTrackResiduals.cxx:263 AliTrackResiduals.cxx:264 AliTrackResiduals.cxx:265 AliTrackResiduals.cxx:266 AliTrackResiduals.cxx:267 AliTrackResiduals.cxx:268 AliTrackResiduals.cxx:269 AliTrackResiduals.cxx:270 AliTrackResiduals.cxx:271