Re: sorting a vecto

From: Philippe Canal <pcanal_at_fnal.gov>
Date: Fri, 31 Oct 2008 14:46:17 -0500


Hi Roger,

To work around this issue, compile your script via ACLiC;

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

Cheers,
Philippe.

Roger Mason wrote:
> 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 - 20:48:33 CET

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