Hi to all is there anyone who can explain me WHY root tells me that the object defined in th class I attached to this email is NOT sortable? Thanks Alberto #ifndef ALIITSCHROMOSOME_H #define ALIITSCHROMOSOME_H class AliITSglobalRecPoint; class AliITSchromosome : public TObject { public: AliITSchromosome(); AliITSchromosome(AliITSglobalRecPoint *p1, AliITSglobalRecPoint *p2, AliITSglobalRecPoint *p3, AliITSglobalRecPoint *p4, AliITSglobalRecPoint *p5, AliITSglobalRecPoint *p6); virtual ~AliITSchromosome(); Bool_t IsSortable() {return kTRUE;} Int_t Compare(const TObject *O) const; AliITSglobalRecPoint*& operator[](Int_t i); Double_t GetCost(); private: Int_t fStored; Double_t fCost; AliITSglobalRecPoint *fPoint[6]; ClassDef(AliITSchromosome, 1) }; #endif #include <fstream.h> #include <stdlib.h> #include <TObject.h> #include <TROOT.h> #include <TMath.h> #include "AliITSRecPoint.h" #include "AliITSglobalRecPoint.h" #include "AliITSchromosome.h" ClassImp(AliITSchromosome) // // // AliITSchromosome::AliITSchromosome() { fCost = 0.0; fStored = 0; fPoint[0] = fPoint[1] = fPoint[2] = 0; fPoint[3] = fPoint[4] = fPoint[5] = 0; } // // // AliITSchromosome::AliITSchromosome(AliITSglobalRecPoint *p0 = 0, AliITSglobalRecPoint *p1 = 0, AliITSglobalRecPoint *p2 = 0, AliITSglobalRecPoint *p3 = 0, AliITSglobalRecPoint *p4 = 0, AliITSglobalRecPoint *p5 = 0) { Int_t l; fPoint[0] = p0; fPoint[1] = p1; fPoint[2] = p2; fPoint[3] = p3; fPoint[4] = p4; fPoint[5] = p5; fStored = 0; for (l = 0; l < 5; l++) if (fPoint[l]) fStored++; if (fStored == 6) GetCost(); } // // // AliITSchromosome::~AliITSchromosome() { Int_t l; for(l = 0; l < 6; l++) fPoint[l]=0; } // // // AliITSglobalRecPoint*& AliITSchromosome::operator[](Int_t i) { if (i < 6 && i >= 0) return fPoint[i]; else return fPoint[0]; } // // // Double_t AliITSchromosome::GetCost() { Int_t i = 0; fCost = 0.0; for (i = 1; i < 6; i++) { if (!fPoint[i]) return 0.0; fCost += fPoint[i]->DeltaPhi(fPoint[i-1]); } return fCost; } // // // Int_t AliITSchromosome::Compare(const TObject *O) const { AliITSchromosome *chr = (AliITSchromosome*)O; if (chr->fCost < fCost) return -1; else if (chr->fCost > fCost) return 1; else return 0; }
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:51:05 MET