RE: [ROOT] rootcint broken in 3.05/03 ?

From: Ken Teh (teh@phy.anl.gov)
Date: Fri Apr 18 2003 - 23:25:29 MEST


Hello Axel,

This is a stripped down version of the header file.  The error message I 
posted earlier is misleading.  Apparently, pilot error.  The header file 
below has all references to STL's vector removed and this works for me.  
If I remove the comments and do

rootcint -f AFit.Dict.cxx -c AFit.h

I get an abort.  Phillipe Canal apparently has no problems with getting it 
through rootcint and compiling the dictionaries.

I am going to work around it by using ROOT's collection classes instead of 
the STL containers.  It's painful since I am familiar with the STL and I 
find ROOT containers missing the basic object support like copy and 
assign.

I will try in my spare time to chase down the difference between 
Phillipe's setup and mine.  If you get it to go, I'd like to know as well.

Thanks! Ken



/* AFit.h - Apr 2003, Ken Teh
 */
#ifndef _AFit_h
#define _AFit_h
//#include <vector>
#include "TVector.h"
#include "TH1.h"

class AFit {
    private:
        struct Triplet {
            Axis_t xl;
            Axis_t xu;
            Axis_t w;

            Triplet(Axis_t a1=0, Axis_t a2=0, Axis_t a3=0) : 
                xl(a1), xu(a2), w(a3) {}
            ~Triplet() {}
        };

        Int_t fverbose;
//        std::vector<Double_t> fla;
//        std::vector<Double_t> fpa;
//        std::vector<Double_t> fwa;
        TVector fresult;

        AFit(const AFit&) {}
        AFit& operator=(const AFit&) {}
//        std::vector<AFit::Triplet> arrayranges(const Char_t*);
//        std::vector<Double_t> arraylines(const Char_t*);
        Int_t dofit(const Int_t);

    public:
        AFit(Int_t printlevel=-1) : fverbose(printlevel),
//                fla(20), fpa(20), fwa(20), fresult(1)  {
                fresult(1) {
            fla.clear(); fpa.clear(); fwa.clear();
            fresult.Zero();
        }
        ~AFit() { delete fg; }
        
        Int_t calibrate(TH1 *h, const Char_t *ranges, 
                const Char_t *lines, UInt_t ord=2);
        Int_t operator()(TH1 *h, const Char_t *ranges,
                const Char_t *lines, UInt_t ord=2) {
            return calibrate(h, ranges, lines, ord);
        }

        TVector getresult() const { return fresult; }

        ClassDef(AFit, 0)
};

#endif



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:11 MET