#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)
{
// Default constructor
- fAlignObj = 0x0;
- fVolArray = fTrackArray = 0x0;
+ for (Int_t ipar=0; ipar<6; ipar++){
+ fBFixed[ipar] = kFALSE;
+ fFixed[ipar] = 0.;
+ }
}
//_____________________________________________________________________________
-AliTrackResiduals::AliTrackResiduals(Int_t ntracks, AliAlignObj *alignobj):
+AliTrackResiduals::AliTrackResiduals(Int_t ntracks):
fN(ntracks),
fLast(0),
- fAlignObj(alignobj),
+ fAlignObj(0),
+ fVolArray(0),
+ fTrackArray(0),
+ fChi2(0),
+ fNdf(0),
+ fMinNPoints(0),
fIsOwner(kTRUE)
{
// Constructor
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.;
+ }
}
//_____________________________________________________________________________
TObject(res),
fN(res.fN),
fLast(res.fLast),
- fAlignObj(res.fAlignObj),
+ fAlignObj(0),
+ fVolArray(0),
+ fTrackArray(0),
+ fChi2(res.fChi2),
+ fNdf(res.fNdf),
+ fMinNPoints(res.fMinNPoints),
fIsOwner(kTRUE)
{
// Copy constructor
// By default the created copy owns the track point arrays
+ if (res.fAlignObj)
+ fAlignObj = (AliAlignObj *)res.fAlignObj->Clone();
+
if (fN > 0) {
fVolArray = new AliTrackPointArray*[fN];
fTrackArray = new AliTrackPointArray*[fN];
fTrackArray = 0x0;
}
}
+ for(Int_t i=0;i<6;i++) {
+ fBFixed[i]=res.fBFixed[i];
+ fFixed[i]=res.fFixed[i];
+ }
}
//_____________________________________________________________________________
fN = res.fN;
fLast = res.fLast;
+ fChi2 = res.fChi2;
+ fNdf = res.fNdf;
+ fMinNPoints = res.fMinNPoints;
fIsOwner = kFALSE;
fAlignObj = res.fAlignObj;
fVolArray = res.fVolArray;
fTrackArray = res.fTrackArray;
+ for(Int_t i=0;i<6;i++) {
+ fBFixed[i]=res.fBFixed[i];
+ fFixed[i]=res.fFixed[i];
+ }
+
return *this;
}
AliTrackResiduals::~AliTrackResiduals()
{
// Destructor
+ if (fAlignObj) delete fAlignObj;
DeleteTrackPointArrays();
}
fN = ntracks;
fLast = 0;
+ fChi2 = 0;
+ fNdf = 0;
fIsOwner = kTRUE;
if (ntracks > 0) {
for (Int_t itrack = 0; itrack < ntracks; itrack++)
fVolArray[itrack] = fTrackArray[itrack] = 0x0;
}
+ else {
+ fVolArray = fTrackArray = 0x0;
+ }
}
//_____________________________________________________________________________
// track extrapolation point arrays
if (!fVolArray || !fTrackArray) return kFALSE;
+ if (!volarray || !trackarray) return kFALSE;
+
+ if (volarray->GetNPoints() < fMinNPoints) return kFALSE;
+
if (fLast >= fN) return kFALSE;
fVolArray[fLast] = volarray;
return kTRUE;
}
+//_____________________________________________________________________________
+void AliTrackResiduals::InitAlignObj()
+{
+ // Create the alignment object
+ // to be updated
+ if (fAlignObj) delete fAlignObj;
+ fAlignObj = new AliAlignObjParams;
+}
+
+
//_____________________________________________________________________________
Bool_t AliTrackResiduals::GetTrackPointArrays(Int_t i, AliTrackPointArray* &volarray, AliTrackPointArray* &trackarray) const
{
// the object is their owner.
// Called by the destructor and SetNTracks methods.
if (fIsOwner) {
- for (Int_t itrack = 0; itrack < fLast; itrack++)
- {
- delete fVolArray[itrack];
- delete fTrackArray[itrack];
+ if (fVolArray) {
+ for (Int_t itrack = 0; itrack < fN; itrack++) {
+ if (fVolArray[itrack]) delete fVolArray[itrack];
}
- delete [] fVolArray;
- delete [] fTrackArray;
+ delete [] fVolArray;
+ }
+ if (fTrackArray) {
+ for (Int_t itrack = 0; itrack < fN; itrack++) {
+ if (fTrackArray[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;
}