From: <ro...@us...> - 2008-01-25 14:50:52
|
Revision: 1477 http://nsclspectcl.svn.sourceforge.net/nsclspectcl/?rev=1477&view=rev Author: ron-fox Date: 2008-01-25 06:50:56 -0800 (Fri, 25 Jan 2008) Log Message: ----------- Add plugins to svn Added Paths: ----------- trunk/plugins/ trunk/plugins/rootFilterFormat/ trunk/plugins/rootFilterFormat/.deps/ trunk/plugins/rootFilterFormat/.deps/CRootFilterOutputStage.Plo trunk/plugins/rootFilterFormat/.deps/CRootFilterOutputStageCreator.Plo trunk/plugins/rootFilterFormat/.deps/CRootNtupleAccumulator.Plo trunk/plugins/rootFilterFormat/.deps/rootPackage.Plo trunk/plugins/rootFilterFormat/AUTHORS trunk/plugins/rootFilterFormat/COPYING trunk/plugins/rootFilterFormat/CRootFilterOutputStage.cpp trunk/plugins/rootFilterFormat/CRootFilterOutputStage.h trunk/plugins/rootFilterFormat/CRootFilterOutputStageCreator.cpp trunk/plugins/rootFilterFormat/CRootFilterOutputStageCreator.h trunk/plugins/rootFilterFormat/CRootNtupleAccumulator.cpp trunk/plugins/rootFilterFormat/CRootNtupleAccumulator.h trunk/plugins/rootFilterFormat/ChangeLog trunk/plugins/rootFilterFormat/INSTALL trunk/plugins/rootFilterFormat/Makefile.am trunk/plugins/rootFilterFormat/NEWS trunk/plugins/rootFilterFormat/README trunk/plugins/rootFilterFormat/bootstrap trunk/plugins/rootFilterFormat/config/ trunk/plugins/rootFilterFormat/configure.in trunk/plugins/rootFilterFormat/rootPackage.cpp Added: trunk/plugins/rootFilterFormat/.deps/CRootFilterOutputStage.Plo =================================================================== --- trunk/plugins/rootFilterFormat/.deps/CRootFilterOutputStage.Plo (rev 0) +++ trunk/plugins/rootFilterFormat/.deps/CRootFilterOutputStage.Plo 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1 @@ +# dummy Added: trunk/plugins/rootFilterFormat/.deps/CRootFilterOutputStageCreator.Plo =================================================================== --- trunk/plugins/rootFilterFormat/.deps/CRootFilterOutputStageCreator.Plo (rev 0) +++ trunk/plugins/rootFilterFormat/.deps/CRootFilterOutputStageCreator.Plo 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1 @@ +# dummy Added: trunk/plugins/rootFilterFormat/.deps/CRootNtupleAccumulator.Plo =================================================================== --- trunk/plugins/rootFilterFormat/.deps/CRootNtupleAccumulator.Plo (rev 0) +++ trunk/plugins/rootFilterFormat/.deps/CRootNtupleAccumulator.Plo 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1 @@ +# dummy Added: trunk/plugins/rootFilterFormat/.deps/rootPackage.Plo =================================================================== --- trunk/plugins/rootFilterFormat/.deps/rootPackage.Plo (rev 0) +++ trunk/plugins/rootFilterFormat/.deps/rootPackage.Plo 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1 @@ +# dummy Added: trunk/plugins/rootFilterFormat/AUTHORS =================================================================== --- trunk/plugins/rootFilterFormat/AUTHORS (rev 0) +++ trunk/plugins/rootFilterFormat/AUTHORS 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1,5 @@ +Ron Fox +National Superconducting Cyclotron Laboratory +Michigan State University +East Lansing, MI 48824-1321 + Added: trunk/plugins/rootFilterFormat/COPYING =================================================================== --- trunk/plugins/rootFilterFormat/COPYING (rev 0) +++ trunk/plugins/rootFilterFormat/COPYING 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1,16 @@ +/* + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. + + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: + + http://www.gnu.org/licenses/gpl.txt + + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 +*/ + Added: trunk/plugins/rootFilterFormat/CRootFilterOutputStage.cpp =================================================================== --- trunk/plugins/rootFilterFormat/CRootFilterOutputStage.cpp (rev 0) +++ trunk/plugins/rootFilterFormat/CRootFilterOutputStage.cpp 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1,104 @@ +/* + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. + + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: + + http://www.gnu.org/licenses/gpl.txt + + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 +*/ + + + +#include <config.h> +#include "CRootFilterOutputStage.h" +#include "CRootNtupleAccumulator.h" +#include "Event.h" +#include <math.h> + + + +using namespace std; + + +/*! + Creating the output stage just requires us to create an Ntuple accumulator: +*/ +CRootFilterOutputStage::CRootFilterOutputStage() : + m_nTuple(*(new CRootNtupleAccumulator)) +{} + +/*! + Destroying the output stage cleanly requires that we not leak accumulators). +*/ +CRootFilterOutputStage::~CRootFilterOutputStage() +{ + delete &m_nTuple; +} + +/*! + When asked to open the output file we can defer to the accumulator as it does all file handling: + \param filename - name of the file that will be opened. +*/ +void +CRootFilterOutputStage::open(string filename) +{ + m_nTuple.open(filename.c_str()); +} + +/*! + When asked to close the file we once more defer to the ntuple: +*/ +void +CRootFilterOutputStage::close() +{ + m_nTuple.close(); +} +/*! + Describing the event is what actually creates the ntuple we'll also save the indices + so that we know how to pull the data out of a CEvent. + \param paramterNames - vector of string parameter names. + \param parameterIds - vector of parameter ids (CEvent slot numbers). +*/ +void +CRootFilterOutputStage::DescribeEvent(vector<string> parameterNames, + vector<UInt_t> parameterIds) +{ + m_parameterIds = parameterIds; + m_nTuple.createNtuple(string("spectcl"), parameterNames); +} +/*! + When an event is in it is marshalled to a vector of floats so that the root + output stage is de-coupled from SpecTcl data types etc. +*/ +void +CRootFilterOutputStage::operator()(CEvent& event) +{ + vector<float> vEvent; + for (int i=0; i < m_parameterIds.size(); i++) { + UInt_t id = m_parameterIds[i]; + if (event[id].isValid()) { + if ((event[id] < 0.0) || (event[id] > 1023.0)) { + } + vEvent.push_back(event[id]); + } + else { + vEvent.push_back(nanf("NAN")); + } + } + m_nTuple.accumulate(vEvent); +} +/*! + Need to give the type of the output stage. +*/ +string +CRootFilterOutputStage::type() const +{ + return string("rootntuple"); +} Added: trunk/plugins/rootFilterFormat/CRootFilterOutputStage.h =================================================================== --- trunk/plugins/rootFilterFormat/CRootFilterOutputStage.h (rev 0) +++ trunk/plugins/rootFilterFormat/CRootFilterOutputStage.h 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1,68 @@ +#ifndef __CROOTFILTEROUTPUTSTAGE_H +#define __CROOTFILTEROUTPUTSTAGE_H + +/* + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. + + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: + + http://www.gnu.org/licenses/gpl.txt + + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 +*/ + +#ifndef __CFILTEROUTPUTSTAGE_H +#include "CFilterOutputStage.h" +#endif + + +class CRootNtupleAccumulator; + +/*! + Filter output stage that writes a root file with an n-tuple inside. + The ntuple name will be "spectcl" until we can think of a way to give it a name. + + The parameter names in the ntpule will be the same as the names of the SpecTcl parameter names + the filter should send to its output stage. + + In this implementation, any parameter that is not present will be given a value of NaN + which hopefully will silently not histogram. + +*/ +class CRootFilterOutputStage : public CFilterOutputStage +{ +private: + CRootNtupleAccumulator& m_nTuple; + std::vector<UInt_t> m_parameterIds; + +public: + CRootFilterOutputStage(); + virtual ~CRootFilterOutputStage(); + + // using references is nice but it makes copy like objects impossible. + +private: + CRootFilterOutputStage(const CRootFilterOutputStage& rhs); + CRootFilterOutputStage& operator=(const CRootFilterOutputStage& rhs); + int operator==(const CRootFilterOutputStage& rhs) const; + int operator!=(const CRootFilterOutputStage& rhs) const; +public: + + // We must meet the following interface: + + virtual void open(std::string filename) ; + virtual void close(); + virtual void DescribeEvent(std::vector<std::string> parameterNames, + std::vector<UInt_t> parameterIds); + virtual void operator()(CEvent& event) ; + virtual std::string type() const; +}; + + +#endif Added: trunk/plugins/rootFilterFormat/CRootFilterOutputStageCreator.cpp =================================================================== --- trunk/plugins/rootFilterFormat/CRootFilterOutputStageCreator.cpp (rev 0) +++ trunk/plugins/rootFilterFormat/CRootFilterOutputStageCreator.cpp 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1,63 @@ +/* + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. + + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: + + http://www.gnu.org/licenses/gpl.txt + + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 +*/ +#include <config.h> +#include "CRootFilterOutputStageCreator.h" +#include "CRootFilterOutputStage.h" + +using namespace std; + +static const string mytype("rootntuple"); + +/*! + copy construction is needed for clone but is a no-op. +*/ +CRootFilterOutputStageCreator::CRootFilterOutputStageCreator(const CRootFilterOutputStageCreator& rhs) +{} + +/*! + If the type matches mytype, then we can create a filter output stage. If not, return a NULL. + \param type - The output stage type being requested. +*/ +CFilterOutputStage* +CRootFilterOutputStageCreator::operator()(string type) +{ + if (type == mytype) { + return new CRootFilterOutputStage; + } + else { + return reinterpret_cast<CFilterOutputStage*>(NULL); + } +} + +/*! + provide a one-line documentation describing the type of output stage produced. this is + used by the filter usage command to document what is available. +*/ +string +CRootFilterOutputStageCreator::document() const +{ + string doc = mytype; + doc += " - Root file containing an ntuple named spectcl."; + return doc; +} +/*! + Clones a copy of this. +*/ +CFilterOutputStageCreator* +CRootFilterOutputStageCreator::clone() +{ + return new CRootFilterOutputStageCreator(*this); +} Added: trunk/plugins/rootFilterFormat/CRootFilterOutputStageCreator.h =================================================================== --- trunk/plugins/rootFilterFormat/CRootFilterOutputStageCreator.h (rev 0) +++ trunk/plugins/rootFilterFormat/CRootFilterOutputStageCreator.h 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1,40 @@ +#ifndef __CROOTFILTEROUTPUTSTAGECREATOR_H +#define __CROOTFILTEROUTPUTSTAGECREATOR_h +/* + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. + + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: + + http://www.gnu.org/licenses/gpl.txt + + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 +*/ +#ifndef __CFILTEROUTPUTSTAGECREATOR_H +#include <CFilterOutputStageCreator.h> +#endif + + +/*! + Defines a creator that allows filters to write their output data in root format. +*/ +class CRootFilterOutputStageCreator : public CFilterOutputStageCreator +{ +public: + CRootFilterOutputStageCreator() {} + CRootFilterOutputStageCreator(const CRootFilterOutputStageCreator& rhs); + + // We have to meet the following interface obligations: + + virtual CFilterOutputStage* operator()(std::string type); + virtual std::string document() const; + virtual CFilterOutputStageCreator* clone(); +}; + + +#endif Added: trunk/plugins/rootFilterFormat/CRootNtupleAccumulator.cpp =================================================================== --- trunk/plugins/rootFilterFormat/CRootNtupleAccumulator.cpp (rev 0) +++ trunk/plugins/rootFilterFormat/CRootNtupleAccumulator.cpp 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1,107 @@ +/* + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. + + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: + + http://www.gnu.org/licenses/gpl.txt + + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 +*/ +#include "CRootNtupleAccumulator.h" + +#include <TNtuple.h> +#include <TFile.h> + +using namespace std; + + +/*! + At construction time, there is no ntuple and the filename + is empty as it normally is. +*/ +CRootNtupleAccumulator::CRootNtupleAccumulator() : + m_pNtuple(0) +{ + +} +/*! + Destruction time; we will close the file if open, which will delete + the ntuple +*/ +CRootNtupleAccumulator::~CRootNtupleAccumulator() +{ + close(); +} + +/*! + Opening a file is, for now just saving the filename so it can be used + when writing the ntuple to disk + + \param pFilename - name of the file to which the data will be saved. +*/ +void +CRootNtupleAccumulator::open(const char* pFilename) +{ + m_filename = pFilename; +} +/*! + Closing the file means that if the ntuple exists it will be written to + file named by m_filename. +*/ +void +CRootNtupleAccumulator::close() +{ + if (m_pNtuple) { + TFile outputFile(m_filename.c_str(), "RECREATE"); + outputFile.WriteTObject(m_pNtuple); + delete m_pNtuple; + m_pNtuple = reinterpret_cast<TNtuple*>(0); + } +} +/*! + Create the ntuple + \param parameterNames - the names of the parameters that make up the + ntuple. +*/ +void +CRootNtupleAccumulator::createNtuple(string ntupleName, + vector<string> parameterNames) +{ + string description; + string separator; + + // Create the ntuple description + + for (int i=0; i < parameterNames.size(); i++) { + description += separator; + description += parameterNames[i]; + separator = ":"; + } + close(); // Close the ntuple. + m_pNtuple = new TNtuple(ntupleName.c_str(), "SpecTcl _> root output stage", description.c_str()); +} +/*! + Accumulate an event into the ntuple. + \param event - a vector of floats to Fill into the NTuple. + +*/ +void +CRootNtupleAccumulator::accumulate(vector<float> event) +{ + // Can't do any of this if the ntuple does not exist. + + if (m_pNtuple) { + Float_t* pEvent = new Float_t[event.size()]; + for (int i =0; i < event.size(); i++) { + pEvent[i] = event[i]; + } + m_pNtuple->Fill(pEvent); + delete []pEvent; + } +} Added: trunk/plugins/rootFilterFormat/CRootNtupleAccumulator.h =================================================================== --- trunk/plugins/rootFilterFormat/CRootNtupleAccumulator.h (rev 0) +++ trunk/plugins/rootFilterFormat/CRootNtupleAccumulator.h 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1,74 @@ + +#ifndef __CROOTNTUPLEACCUMULATOR_H +#define __CROOTNTUPLEACCUMULATOR_H +/* + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. + + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: + + http://www.gnu.org/licenses/gpl.txt + + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 +*/ + +#ifndef __STL_VECTOR +#include <vector> +#ifndef __STL_VECTOR +#define __STL_VECTOR +#endif +#endif + + +#ifndef __STL_STRING +#include <string> +#ifndef __STL_STRING +#define __STL_STRING +#endif +#endif + + +class TNtuple; + +/*! + This class accumulates root ntpules and writes them to file. + The idea is that you open the file, describe the ntuple + accumulate it and then close the file. Note that given how Root + works, it's the close that actually writes the file. +*/ +class CRootNtupleAccumulator +{ +private: + TNtuple* m_pNtuple; + std::string m_filename; + +public: + CRootNtupleAccumulator(); + ~CRootNtupleAccumulator(); + + // Ntuples don't seemto have copy constructors so: + +private: + CRootNtupleAccumulator(const CRootNtupleAccumulator& rhs); + CRootNtupleAccumulator& operator=(const CRootNtupleAccumulator& rhs); + int operator==(const CRootNtupleAccumulator& rhs) const; + int operator!=(const CRootNtupleAccumulator& rhs) const; + +public: + + // Interface functions: + + void open(const char* pFilename); + void close(); + void createNtuple(std::string ntupleName, + std::vector<std::string> parameterNames); + void accumulate(std::vector<float> event); +}; + + +#endif Added: trunk/plugins/rootFilterFormat/ChangeLog =================================================================== --- trunk/plugins/rootFilterFormat/ChangeLog (rev 0) +++ trunk/plugins/rootFilterFormat/ChangeLog 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1 @@ +Version 1.0 Released January 25, 2008 \ No newline at end of file Added: trunk/plugins/rootFilterFormat/INSTALL =================================================================== --- trunk/plugins/rootFilterFormat/INSTALL (rev 0) +++ trunk/plugins/rootFilterFormat/INSTALL 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1,251 @@ +Installation Instructions +************************* + +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, +2006 Free Software Foundation, Inc. + +This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + +Briefly, the shell commands `./configure; make; make install' should +configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. Caching is +disabled by default to prevent problems with accidental use of stale +cache files. + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. + + Running `configure' might take a while. While running, it prints + some messages telling which features it is checking for. + The simplest form of the configure command for this package is: + ./configure --prefix=spectclhome --with-rootsys=rootsys + Where: + spectclhome is the directory that is $SpecTclHome when you are running + SpecTcl, and must be a version of SpecTcl of 3.2 or higher (not + 3.2-preanything). + + rootsys is the directory that you point the ROOTSYS environment + variable at when you use root. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + +Some systems require unusual options for compilation or linking that the +`configure' script does not know about. Run `./configure --help' for +details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + +You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. + +Installation Names +================== + +By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + +Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + +There may be some features `configure' cannot figure out automatically, +but needs to determine by the type of machine the package will run on. +Usually, assuming the package is built to be run on the _same_ +architectures, `configure' can figure that out, but if it prints a +message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + +If you want to set default values for `configure' scripts to share, you +can create a site shell script called `config.site' that gives default +values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + +Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf bug. Until the bug is fixed you can use this workaround: + + CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + +`configure' recognizes the following options to control how it operates. + + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--with-rootsys=DIR' + REQUIRED!!!! + Describes where Root lives. +`--with-spectcl-home=DIR' + If you are not installing the plugin in the SpecTcl installation + directory, this describes where SpecTcl is installed. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + Added: trunk/plugins/rootFilterFormat/Makefile.am =================================================================== --- trunk/plugins/rootFilterFormat/Makefile.am (rev 0) +++ trunk/plugins/rootFilterFormat/Makefile.am 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1,21 @@ +lib_LTLIBRARIES=librootfilterformat.la +librootfilterformat_la_LIBADD=$(ROOTLDSW) + +INCLUDES=$(SPECTCLCCSW) $(ROOTCCSW) $(TCLCCSW) + +librootfilterformat_la_SOURCES = CRootFilterOutputStage.cpp \ + CRootNtupleAccumulator.cpp \ + CRootFilterOutputStageCreator.cpp \ + rootPackage.cpp + +noinst_HEADERS= CRootFilterOutputStage.h \ + CRootFilterOutputStageCreator.h \ + CRootNtupleAccumulator.h + + +# The library will get installed in $prefix/lib, nothing we can do +# about that, but we want it installed in $prefix/TclLibs: + +install-exec-local: + $(mkinstalldirs) $(prefix)/TclLibs + for f in .libs/lib*; do $(INSTALL_PROGRAM) $$f $(prefix)/TclLibs; done Added: trunk/plugins/rootFilterFormat/NEWS =================================================================== Added: trunk/plugins/rootFilterFormat/README =================================================================== --- trunk/plugins/rootFilterFormat/README (rev 0) +++ trunk/plugins/rootFilterFormat/README 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1,40 @@ +This tarball is a SpecTcl plugin that adds the ability for +SpecTcl filters to write root ntuple files. This is not +standalone software. At a minimum, you will need SpecTcl and +Root installed on the target system. + +See COPYING for license terms, +See INSTALL for installation instructions. + +To use; assuming you installed the plugin in SpecTcl's installation tree +The folowing command (scripted in SpecTclRC.tcl is probably best) loads the +plugin: + +load $SpecTclHome/TclLibs/librootfilterformat.so + +To have a filter 'myfilter' write an ntuple file; +1. Ensure the filter is disabled. +2. filter -format myfilter rootntuple + +Set the filter file and enable it as any other filter. +When you disable the filter, or change the filename, +the NTuple that has been accumulating will be written to disk. +The name of the ntuple will be "spectcl" the parameters in the ntuple will +be the same as the spectcl parameter names. This implies, if you know root, +that you should avoid parameters with names that have colons as NTuple +descriptors use colons to separate parameter names. + +Suppose you wrote a root filter name rootfilter.root +with parameters a.b.c and a.b.d in it, and that these +parameters have the range 0-4095. +In root: + +TFile f("rootfilter.root"); // Opens the file. +TNtuple* nt = f.Get("spectcl"); // Loads the ntuple. +nt.Draw("a.b.c", + "(a.b.c >= 0.0) && (a.b.c < 4096)"); // Plot a.b.c +nt.Draw("a.b.c:a.b.d", + "(a.b.c < 4096) && (a.b.d < 4096"); // Plot 2d. + +Those with more root knowlege than I can make a fancier example. + Added: trunk/plugins/rootFilterFormat/bootstrap =================================================================== --- trunk/plugins/rootFilterFormat/bootstrap (rev 0) +++ trunk/plugins/rootFilterFormat/bootstrap 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1,10 @@ +#!/bin/sh + +set -x +find . -name .deps -exec rm -rf {} \; +find . -name "*.o" -exec rm {} \; +aclocal -I config +libtoolize --force --copy +autoheader +automake --add-missing --copy +autoconf --warnings=none Property changes on: trunk/plugins/rootFilterFormat/bootstrap ___________________________________________________________________ Name: svn:executable + Added: trunk/plugins/rootFilterFormat/configure.in =================================================================== --- trunk/plugins/rootFilterFormat/configure.in (rev 0) +++ trunk/plugins/rootFilterFormat/configure.in 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1,144 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + + +AC_INIT(RootFilterFormat, 1.0, fo...@ns...) +AC_CONFIG_AUX_DIR(config) +AM_CONFIG_HEADER([configure.h]) +AC_CANONICAL_HOST +AM_INIT_AUTOMAKE() + +AC_EXEEXT +AC_OBJEXT + +# Checks for programs. +AC_PROG_CXX +AC_PROG_CC +AC_PROG_CPP +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PROG_MAKE_SET +AC_PROG_LIBTOOL + +# Checks for libraries. + +# Checks for header files. + + +tcl_versions="8.5 8.4 8.3 8.2 8.1 8.0" # First match; so order new -> old. + + + +tcl_header_dir="" +AC_MSG_CHECKING([for tcl header directory]) + +AC_ARG_WITH(tcl-header-dir, + [ --with-tcl-header-dir=path Path to tcl headers], + [tcl_header_dir=$withval ; + tcl_headers_found="yes"],[tcl_headers_found="no"]) + + +# +# Look for tcl.h in the following places: +# Note that the order is important for Darwin and OSF1. + # + # /sw/include (Best for darwin). + # /usr/local/tcl/include (Best for NSCL Cygwin). + # /usr/local/include (Best for NSCL OSF1) + # /usr/include (Best for e.g. Linux). + # + # For all of these directories, + # look for tcl.h in: + # - the directory itself. + # - a tcl subdirectory to the directory. + # - subdirectories of the form tcl${version} where + # version is chosein from tcl_versions. + # + +tcl_h_testdirs="/sw/include /usr/local/tcl/include /usr/local/include \ + /usr/include" + +if test $tcl_headers_found = "no" +then + for d in $tcl_h_testdirs + do + for v in ${tcl_versions}; + do + if test $tcl_headers_found = "no" + then + AC_CHECK_FILE([${d}/tcl${v}/tcl.h], + [tcl_header_dir=${d}/tcl${v} + tcl_headers_found="yes"]) + fi + done + if test $tcl_headers_found = "no" + then + AC_CHECK_FILE([${d}/tcl.h], + [tcl_header_dir=$d + tcl_headers_found="yes"]) + fi + if test $tcl_headers_found = "no" + then + AC_CHECK_FILE([${d}/tcl/tcl.h], + [tcl_header_dir=${d}/tcl + tcl_headers_found="yes"]) + fi + done +fi + +if test $tcl_headers_found = "yes"; then + TCLINCDIR=${tcl_header_dir} + AC_MSG_RESULT(Using path $tcl_header_dir) +else + AC_MSG_ERROR([can't find tcl.h try using --with-tcl-header-dir to help me]) +fi + + +# --prefix is assumed to be where spectcl is unless overidden +# with --with-spectcl-home +# + +AC_ARG_WITH(spectcl-home, + [ --with-spectcl-home=path Path to SpecTcl installatino], + [SPECTCLHOME=$withval], + [SPECTCLHOME=$prefix]) + +# --rootsys is required as we have no idea where to look for it. + +AC_ARG_WITH(rootsys, + [ --with-rootsys=path Path to Root installation], + [ROOTSYS=$withval], + [ROOTSYS=""]) + +if [ "${ROOTSYS}" = "" ]; then + AC_MSG_ERROR([ You must tell me where root is installed via --with-rootsys]) +fi + +# Makefile macros exported: + + # TCL: + + + TCLCCSW="-I${TCLINCDIR}" + AC_SUBST(TCLCCSW) + + # SpecTcl: + + SPECTCLCCSW="-I${SPECTCLHOME}/include" + AC_SUBST(SPECTCLCCSW) + + # Root: + + ROOTCCSW="-I${ROOTSYS}/include/root" + ROOTLDSW="-L${ROOTSYS}/lib/root -lTree -lCore -lCint -ldl -Wl,\"-rpath=${ROOTSYS}/lib/root\"" + + AC_SUBST(ROOTCCSW) + AC_SUBST(ROOTLDSW) + +# Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST + +# Checks for library functions. + + +AC_OUTPUT(Makefile) Added: trunk/plugins/rootFilterFormat/rootPackage.cpp =================================================================== --- trunk/plugins/rootFilterFormat/rootPackage.cpp (rev 0) +++ trunk/plugins/rootFilterFormat/rootPackage.cpp 2008-01-25 14:50:56 UTC (rev 1477) @@ -0,0 +1,43 @@ +/* + This software is Copyright by the Board of Trustees of Michigan + State University (c) Copyright 2005. + + You may use this software under the terms of the GNU public license + (GPL). The terms of this license are described at: + + http://www.gnu.org/licenses/gpl.txt + + Author: + Ron Fox + NSCL + Michigan State University + East Lansing, MI 48824-1321 +*/ + +#include <config.h> +#include <tcl.h> +#include <TCLInterpreter.h> +#include <Iostream.h> + +#include <SpecTcl.h> +#include "CRootFilterOutputStageCreator.h" + + +using namespace std; + + + +static const char* version="1.0"; + +// This is the package initialization entry point.. .just add a creator to the +// list of creators that can build filter output stages: + +extern "C" int Rootfilterformat_Init(Tcl_Interp* pInterp) +{ + Tcl_PkgProvide(pInterp, "Rootfilterformat", version); + + CRootFilterOutputStageCreator creator; + SpecTcl* api = SpecTcl::getInstance(); + api->addFilterOutputFormat(creator); + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |