Re: [ROOT] Sorting

From: Fons Rademakers (Fons.Rademakers@cern.ch)
Date: Wed Oct 31 2001 - 17:03:37 MET


Hi Alberto,

 you override the wrong method, should be "IsSortable() const".

-- Fons



Alberto Pulvirenti wrote:
> 
> 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;
> }

-- 
Org:    CERN, European Laboratory for Particle Physics.
Mail:   1211 Geneve 23, Switzerland
E-Mail: Fons.Rademakers@cern.ch              Phone: +41 22 7679248
WWW:    http://root.cern.ch/~rdm/            Fax:   +41 22 7679480



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:51:05 MET