-------- Original Message -------- Subject: ROOT compilation problem Date: Tue, 26 Oct 2004 11:37:50 +0200 From: Alberto Pulvirenti <alberto.pulvirenti@ct.infn.it> To: rene.brun@cern.ch Dear all, I am trying to create a shared library with some ROOT-heir classes, and I followed the explanation in the guide, creating che ClassDef instances and a LinkDef file. I attached in this email the linkDef, and some classes which I implemented. When trying to compile with these, I get always an error, which I do not understand. Can someone tell me where the error is? Tnahks, Alberto # Makefile for the ROOT test programs. # This Makefile shows nicely how to compile and link applications # using the ROOT libraries on all supported platforms. # # Copyright (c) 2000 Rene Brun and Fons Rademakers # # Author: Fons Rademakers, 29/2/2000 ARCH := $(shell root-config --arch) PLATFORM = $(ARCH) ObjSuf = o SrcSuf = cxx ExeSuf = DllSuf = so OutPutOpt = -o # keep whitespace after "-o" ROOTCFLAGS := $(shell root-config --cflags) ROOTLIBS := $(shell root-config --libs) ROOTGLIBS := $(shell root-config --glibs) # Linux with egcs, gcc 2.9x, gcc 3.x (>= RedHat 5.2) CXX = g++ CXXFLAGS = -O -Wall -fPIC LD = g++ LDFLAGS = -O SOFLAGS = -shared CXXFLAGS += $(ROOTCFLAGS) LIBS = $(ROOTLIBS) $(SYSLIBS) GLIBS = $(ROOTGLIBS) $(SYSLIBS) #------------------------------------------------------------------------------ SRCS = clsPoint.cxx\ clsEvent.cxx\ clsTrack.cxx\ clsTrackCut.cxx\ clsTracker.cxx\ clsAnalysis.cxx\ myCint.cxx HDRS = $(SOURCES:.cxx=.h) myLinkDef.h DICTSRC = myCint.cxx DICTHDR = myCint.h DICTOBJ = myCint.o OBJS = $(SRCS:.cxx=.o) $(DICTO) #------------------------------------------------------------------------------ .SUFFIXES: .$(SrcSuf) .$(ObjSuf) .$(DllSuf) libTrackingTB2003.so: $(OBJS) myCint.o @echo "$(HDRS)" @echo "$@ linking!" $(LD) $(SOFLAGS) $(LDFLAGS) $(OBJS) $(OutPutOpt)$@ @echo "$@ linking done" clean: @rm -f $(OBJS) core distclean: clean @rm -f *Cint.* .SUFFIXES: .$(SrcSuf) ### myCint.$(SrcSuf): clsPoint.h clsEvent.h clsTrack.h clsTracker.h clsAnalysis.h myLinkDef.h @echo "Generating dictionary $@..." @rootcint -f $@ -c $^ clsPoint.$(ObjSuf): clsPoint.h .$(SrcSuf).$(ObjSuf): $(CXX) $(CXXFLAGS) -c $< #include <TVector3.h> #include "clsTrack.h" #include "clsTrackCut.h" /* ROOT implementation */ ClassImp(clsTrackCut); // Constructor clsTrackCut::clsTrackCut() { fParam = NULL; } // Destructos clsTrackCut::~clsTrackCut() { if (fParam != NULL) { delete [] fParam; } } // virtual function Bool_t clsTrackCut::Pass(clsTrack *track) { Warning("Pass", "This method must be overridden"); return kFALSE; } // // // /* ROOT implementation */ ClassImp(clsTrackCutKink); // Argumented constructor clsTrackCutKink::clsTrackCutKink(Double_t kinkmax) : clsTrackCut() { fParam = new Double_t(kinkmax); } // Method for check Bool_t clsTrackCutKink::Pass(clsTrack *track) { // translation of 'fParam' variables // to meaningful names Double_t kinkMax = fParam[0]; // calculates the total kink angle between the segments // of the connected path 0-->1-->3-->4 // and checks if it is smaller than a given cut TVector3 v01 = track->Point[0]->VectorTo(track->Point[1]); TVector3 v13 = track->Point[1]->VectorTo(track->Point[3]); TVector3 v34 = track->Point[3]->VectorTo(track->Point[4]); TVector3 v04 = track->Point[0]->VectorTo(track->Point[4]); Double_t checkval = TMath::Abs(v01.Angle(v13)) + TMath::Abs(v13.Angle(v34)); checkval *= 180.0 / TMath::Pi(); return (checkval <= kinkMax); } // // // /* ROOT implementation */ ClassImp(clsTrackCutTarget); // Argumented constructor clsTrackCutTarget::clsTrackCutTarget (Double_t zTarget, Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax) : clsTrackCut() { fParam = new Double_t[5]; fParam[0] = zTarget; fParam[1] = xmin; fParam[2] = xmax; fParam[3] = ymin; fParam[4] = ymax; } // Method for check Bool_t clsTrackCutTarget::Pass(clsTrack *track) { // translation of 'fParam' variables // to meaningful names Double_t zTarget = fParam[0]; Double_t xMin = fParam[1], xMax = fParam[2]; Double_t yMin = fParam[1], yMax = fParam[2]; // definition of an ellipse whose center is in the mean point // between the two edges in X, Y, given by the user Double_t projX = 0.5 * (xMax + xMin) - track->X(zTarget); Double_t projY = 0.5 * (yMax + yMin) - track->Y(zTarget); Double_t radiusX = 0.5 * (xMax - xMin); Double_t radiusY = 0.5 * (yMax - yMin); // checks if the track prolongation to Z of target (parameter 0) // falls into the ellipse above defined projX /= radiusX; projY /= radiusY; Double_t checkval = projX*projX + projY*projY; return (checkval <= 1.0); /* Double_t projX = t->X(fZTarget); if (projX < fCutProjX[0] || projX > fCutProjX[1]) { param = projX; return 7; } Double_t projY = t->Y(fZTarget); if (projY < fCutProjY[0] || projY > fCutProjY[1]) { param = projY; return 8; } */ } // // // /* ROOT implementation */ ClassImp(clsTrackCutCorrelation); // Argumented constructor clsTrackCutCorrelation::clsTrackCutCorrelation (Double_t xzCorr, Double_t yzCorr) : clsTrackCut() { fParam = new Double_t[2]; fParam[0] = xzCorr; fParam[1] = yzCorr; } // Method for check Bool_t clsTrackCutCorrelation::Pass(clsTrack *track) { // translation of 'fParam' variables // to meaningful names Double_t xzCorrMin = fParam[0]; Double_t yzCorrMin = fParam[1]; // check for correlation factors track->GetCorrelationFactors(); return ((track->CorrX >= xzCorrMin) && (track->CorrY < yzCorrMin)); } #ifndef __clsTrackCut__ #define __clsTrackCut__ #include <TObject.h> class clsTrack; class clsTrackCut : public TObject { public: clsTrackCut(); virtual ~clsTrackCut(); virtual Bool_t Pass(clsTrack *clsTrack); protected: Double_t *fParam; // parameters for cut evaluation private: /* ROOT definitions */ ClassDef(clsTrackCut, 1) }; // // // class clsTrackCutKink : public clsTrackCut { public: clsTrackCutKink() : clsTrackCut() { } clsTrackCutKink(Double_t kinkmax); virtual ~clsTrackCutKink() { } virtual Bool_t Pass(clsTrack* clsTrack); private: ClassDef(clsTrackCutKink, 1) }; // // // class clsTrackCutTarget : public clsTrackCut { public: clsTrackCutTarget() : clsTrackCut() { } clsTrackCutTarget(Double_t zTarget, Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax); virtual ~clsTrackCutTarget() { } virtual Bool_t Pass(clsTrack *clsTrack); private: ClassDef(clsTrackCutTarget, 1) }; // // // class clsTrackCutCorrelation : public clsTrackCut { public: clsTrackCutCorrelation() : clsTrackCut() { } clsTrackCutCorrelation(Double_t xzCorr, Double_t yzCorr); virtual ~clsTrackCutCorrelation() { } virtual Bool_t Pass(clsTrack *clsTrack); private: ClassDef(clsTrackCutCorrelation, 1) }; #endif #ifdef __CINT__ #pragma link off all globals; #pragma link off all classes; #pragma link off all functions; #pragma link C++ class clsPoint+; #pragma link C++ class clsEvent+; #pragma link C++ class clsTrack+; #pragma link C++ class clsTrackCut+; #pragma link C++ class clsTrackCutKink+; #pragma link C++ class clsTrackCutTarget+; #pragma link C++ class clsTrackCutCorrelation+; #pragma link C++ class clsTracker+; #pragma link C++ class clsAnalysis+; #endif
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:10 MET