sorting a vecto

From: Roger Mason <rmason_at_esd.mun.ca>
Date: Fri, 31 Oct 2008 14:59:16 -0230


Hello,

I need to find unique entries in an array. I am trying to do this using a vector:

...

  std::vector<Double_t> unique;
  std::vector<Double_t>::iterator Iter;

  Long64_t nbytes = 0, nb = 0;

  TH1D *henergy = new TH1D("energy","energy(eV)",100,0,0);
  TH1D *h       = new TH1D("selected","energy(eV)",100,0,0);
  TCanvas *canv = new TCanvas("canv","Canvas");

  // Fill unique
  for (Long64_t jentry=0; jentry<nentries;jentry++) {     Long64_t ientry = LoadTree(jentry);
    if (ientry < 0) break;
    nb = fChain->GetEntry(jentry); nbytes += nb;     // if (Cut(ientry) < 0) continue;
    unique.push_back(energy);
  }

  // Sort the vector so identical values are adjacent   cout << "Unique has " << unique.size() << " entries" << endl;   cout << " First = " << unique[0] << " last = " << unique.back() <<   endl;

  // unique.resize(2*unique.size());
  // cout << "Unique now has " << unique.size() << " entries" <<   endl;

  std::sort( unique.begin(), unique.end() );

...

Unfortunately sorting fails:

root [0] .L MyClass.C
root [1] MyClass m   
root [2] m.Loop()    

Unique has 1200 entries
 First = -2143.6 last = -2143.55
Internal error: template function call __unguarded_partition failed algo.h:725:

Thanks for any help,
Roger

ROOT 5.20/00 (trunk_at_24524, Sep 30 2008, 15:32:00 on linux) Received on Fri Oct 31 2008 - 18:33:47 CET

This archive was generated by hypermail 2.2.0 : Fri Oct 31 2008 - 23:50:01 CET