correct handling of dictionary handling

This commit is contained in:
nemu 2008-05-29 14:41:33 +00:00
parent b4c70d2d4e
commit 7458f000a8
8 changed files with 104 additions and 31 deletions

View File

@ -54,19 +54,19 @@ short term:
* something is strange with the coordinate system in TPaveText! **CHECK** * something is strange with the coordinate system in TPaveText! **CHECK**
* something is wrong with lifetimecorrection plot of musrview (up shifted data) **DONE** 08-05-16 * something is wrong with lifetimecorrection plot of musrview (up shifted data) **FIXED** 08-05-16
--------------------- ---------------------
intermediate term: intermediate term:
--------------------- ---------------------
* implement access to user-function, i.e. functions not
* start writing docu, i.e. transferring WKM doc from German -> English and * start writing docu, i.e. transferring WKM doc from German -> English and
describe new features with examples! describe new features with examples!
* introduce error numbers with corresponding docu/explanation in the latex-docu. * introduce error numbers with corresponding docu/explanation in the latex-docu.
* implement RRF stuff * implement RRF stuff
* implement NonMuSR stuff * implement NonMuSR stuff
* implement access to user-function, i.e. functions not
defined within musrfit, using the ROOT dictionary feature defined within musrfit, using the ROOT dictionary feature
to look for them and use them. to look for them and use them.
* think about if it is worth to modify wkm in order to read * think about if it is worth to modify wkm in order to read

View File

@ -124,11 +124,11 @@ $(OBJS): %.o: %.cpp
MuSR_td_PSI_bin.o: ../external/MuSR_software/Class_MuSR_PSI/MuSR_td_PSI_bin.cpp MuSR_td_PSI_bin.o: ../external/MuSR_software/Class_MuSR_PSI/MuSR_td_PSI_bin.cpp
$(CXX) $(INCLUDES) $(CXXFLAGS) -c ../external/MuSR_software/Class_MuSR_PSI/MuSR_td_PSI_bin.cpp $(CXX) $(INCLUDES) $(CXXFLAGS) -c ../external/MuSR_software/Class_MuSR_PSI/MuSR_td_PSI_bin.cpp
PStartupHandlerDict.cpp: ../include/PStartupHandler.h PStartupHandlerDict.cpp: ../include/PStartupHandler.h ../include/PStartupHandlerLinkDef.h
@echo "Generating dictionary $@..." @echo "Generating dictionary $@..."
rootcint -f $@ -c -p $^ rootcint -f $@ -c -p $^
PMusrCanvasDict.cpp: ../include/PMusrCanvas.h PMusrCanvasDict.cpp: ../include/PMusrCanvas.h ../include/PMusrCanvasLinkDef.h
@echo "Generating dictionary $@..." @echo "Generating dictionary $@..."
rootcint -v -f $@ -c -p $^ rootcint -v -f $@ -c -p $^

View File

@ -254,12 +254,21 @@ PTheory::PTheory(PMsrHandler *msrInfo, unsigned int runNo, const bool hasParent)
MakeCleanAndTidyTheoryBlock(fullTheoryBlock); MakeCleanAndTidyTheoryBlock(fullTheoryBlock);
} }
// check if user function, if so, check if it is reachable (root) // check if user function, if so, check if it is reachable (root) and if yes invoke object
if (!fUserFcnClassName.IsWhitespace()) { if (!fUserFcnClassName.IsWhitespace()) {
cout << endl << ">> user function class name: " << fUserFcnClassName.Data() << endl; cout << endl << ">> user function class name: " << fUserFcnClassName.Data() << endl;
if (!TClass::GetDict(fUserFcnClassName.Data())) { if (!TClass::GetDict(fUserFcnClassName.Data())) {
cout << endl << "**ERROR**: PTheory: user function class '" << fUserFcnClassName.Data() << "' not found. See line no " << line->fLineNo; cout << endl << "**ERROR**: PTheory: user function class '" << fUserFcnClassName.Data() << "' not found. See line no " << line->fLineNo;
fValid = false; fValid = false;
} else { // invoke user function object
fUserFcn = 0;
fUserFcn = TClass::GetClass(fUserFcnClassName.Data())->New();
cout << endl << ">> fUserFcn = " << fUserFcn;
if (fUserFcn == 0) {
cout << endl << "**ERROR**: PTheory: user function object could not be invoked. See line no " << line->fLineNo;
fValid = false;
} else { // get the pointer to the user function evaluation routine
}
} }
} }
@ -296,6 +305,12 @@ PTheory::~PTheory()
delete fStaticKTLFFunc; delete fStaticKTLFFunc;
fStaticKTLFFunc = 0; fStaticKTLFFunc = 0;
} }
if (fUserFcn) {
/*
fUserFcn = 0;
*/
}
} }
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------

View File

@ -140,16 +140,4 @@ class PMusrCanvas : public TObject, public TQObject
ClassDef(PMusrCanvas, 1) ClassDef(PMusrCanvas, 1)
}; };
// root dictionary stuff --------------------------------------------------
#ifdef __CINT__
#pragma link off all globals;
#pragma link off all classes;
#pragma link off all functions;
#pragma link C++ class PMusrCanvas+;
#endif
// root dictionary stuff --------------------------------------------------
#endif // _PMUSRCANVAS_H_ #endif // _PMUSRCANVAS_H_

View File

@ -0,0 +1,41 @@
/***************************************************************************
PMusrCanvasLinkDef.h
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
$Id$
***************************************************************************/
/***************************************************************************
* Copyright (C) 2007 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifdef __CINT__
#pragma link off all globals;
#pragma link off all classes;
#pragma link off all functions;
#pragma link C++ class PMusrCanvas+;
#endif

View File

@ -75,17 +75,5 @@ class PStartupHandler : public TObject, public TQObject
ClassDef(PStartupHandler, 1) ClassDef(PStartupHandler, 1)
}; };
// root dictionary stuff --------------------------------------------------
#ifdef __CINT__
#pragma link off all globals;
#pragma link off all classes;
#pragma link off all functions;
#pragma link C++ class PStartupHandler+;
#endif
// root dictionary stuff --------------------------------------------------
#endif // _PSTARTUPHANDLER_H_ #endif // _PSTARTUPHANDLER_H_

View File

@ -0,0 +1,40 @@
/***************************************************************************
PStartupHandlerLinkDef.h
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
$Id$
***************************************************************************/
/***************************************************************************
* Copyright (C) 2007 by Andreas Suter *
* andreas.suter@psi.c *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifdef __CINT__
#pragma link off all globals;
#pragma link off all classes;
#pragma link off all functions;
#pragma link C++ class PStartupHandler+;
#endif

View File

@ -214,7 +214,8 @@ class PTheory
// TString fUserFunPreParsed; // TString fUserFunPreParsed;
TF1 *fStaticKTLFFunc; TF1 *fStaticKTLFFunc;
TString fUserFcnClassName; ///< name of the user function class for within root TString fUserFcnClassName; ///< name of the user function class for within root
void *fUserFcn; ///< pointer to the user function object
PMsrHandler *fMsrInfo; PMsrHandler *fMsrInfo;
}; };