Commit in slicPandora on MAIN
src/DetectorGeometry.cpp+14-61.6 -> 1.7
   /JobConfig.cpp-1041.1 -> 1.2
   /JobManager.cpp+18-51.4 -> 1.5
   /PfoProcessor.cpp+37-231.5 -> 1.6
   /EventProcessor.cpp-211.1 removed
include/CalorimeterHitProcessor.h+21-21.2 -> 1.3
       /EventProcessor.h+36-101.3 -> 1.4
       /IDDecoder.h+71-131.3 -> 1.4
       /JobConfig.h+120-321.3 -> 1.4
       /JobManager.h+16-91.6 -> 1.7
       /PfoProcessor.h+5-11.2 -> 1.3
tests/PandoraFrontend.cpp+4-41.1 -> 1.2
+342-230
1 removed + 11 modified, total 12 files
end of day checkin

slicPandora/src
DetectorGeometry.cpp 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- DetectorGeometry.cpp	8 Mar 2010 23:00:53 -0000	1.6
+++ DetectorGeometry.cpp	11 Mar 2010 22:18:43 -0000	1.7
@@ -42,9 +42,9 @@
     // Process the calorimeter elements.
     TiXmlElement* calorimeters = root->FirstChildElement("calorimeters");
     TiXmlElement* calElem = (TiXmlElement*) calorimeters->FirstChild("calorimeter");
-    for (calElem;
-         calElem;
-         calElem = calElem->NextSiblingElement() )
+    for ( ;
+          calElem;
+          calElem = calElem->NextSiblingElement() )
     {
         // Get the type of calorimeter.
         const char* subdetType = calElem->Attribute("type");
@@ -97,7 +97,7 @@
 
         // Process layer elements.
         TiXmlElement* layerElem = layers->FirstChildElement();
-        for (layerElem;
+        for (;
              layerElem;
              layerElem = layerElem->NextSiblingElement() )
         {
@@ -148,7 +148,7 @@
         IDDecoder::IDFields fields;
         TiXmlElement* idElem = (TiXmlElement*) calElem->FirstChild("id");
         TiXmlElement* fieldElem = (TiXmlElement*) idElem->FirstChild("field");
-        for (fieldElem;
+        for (;
              fieldElem;
              fieldElem = fieldElem->NextSiblingElement())
         {
@@ -327,7 +327,7 @@
     std::cout << "    ID Fields (name, start, length, signed) - " << decoder->getFieldCount() << std::endl;           
     for (int i=0, j=decoder->getFieldCount(); i<j; i++)
     {
-        IDDecoder::IDField* field = decoder->getField(i);
+        const IDDecoder::IDField* field = decoder->getField(i);
         std::cout << "        " << field->getName() << ", " << field->getStart() << ", " << field->getLength() << ", " << field->isSigned() << std::endl;
     }
     
@@ -344,6 +344,10 @@
     {
             return pandora::HCAL;
     }
+    else
+    {
+        std::cout << "Unknown CalorimeterType <" << calType << ">." << std::endl;
+    }                
 }
 
 inline pandora::InputDetectorRegion DetectorGeometry::getDetectorRegion(const std::string& calType) const
@@ -356,6 +360,10 @@
     {
         return pandora::ENDCAP;
     }
+    else
+    {
+        std::cout << "Unknown CalorimeterType <" << calType << ">." << std::endl;
+    }
 }
 
     

slicPandora/src
JobConfig.cpp 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- JobConfig.cpp	23 Feb 2010 02:27:26 -0000	1.1
+++ JobConfig.cpp	11 Mar 2010 22:18:43 -0000	1.2
@@ -1,108 +1,4 @@
 #include "JobConfig.h"
-#include "DetectorGeometry.h"
-
-JobConfig::JobConfig()
-    : m_nevents(-1),
-      m_nskip(0)
-{}
-
-JobConfig::~JobConfig()
-{}
-
-const std::string& JobConfig::getPandoraSettingsXmlFile()
-{
-    return m_pandoraSettingsXmlFile;
-}
-
-void JobConfig::setPandoraSettingsXmlFile(std::string pandoraSettingsXmlFile)
-{
-    m_pandoraSettingsXmlFile = pandoraSettingsXmlFile;
-}
-
-void JobConfig::setPandoraSettingsXmlFile(const char* pandoraSettingsXmlFile)
-{
-    m_pandoraSettingsXmlFile = std::string(pandoraSettingsXmlFile);
-}
-
-const std::string& JobConfig::getGeometryFile()
-{
-    return m_geometryFile;
-}
-
-void JobConfig::setGeometryFile(const char* geometryFile)
-{
-    m_geometryFile = std::string(geometryFile);
-}
-
-void JobConfig::setGeometryFile(std::string geometryFile)
-{
-    m_geometryFile = geometryFile;
-}
-
-void JobConfig::addInputFile(const char* filename)
-{
-    m_inputLcioFiles.push_back(std::string(filename));
-}
-
-void JobConfig::addInputFile(std::string filename)
-{
-    m_inputLcioFiles.push_back(filename);
-}
-
-JobConfig::FileList JobConfig::getInputFiles()
-{
-    return m_inputLcioFiles;
-}
-
-void JobConfig::setNumberOfEvents(int nevents)
-{
-    m_nevents = nevents;
-}
-
-int JobConfig::getNumberOfEvents()
-{
-    return m_nevents;
-}
-
-void JobConfig::setSkipEvents(int nskip)
-{
-    m_nskip = nskip;
-}
-
-int JobConfig::getSkipEvents()
-{
-    return m_nskip;
-}
-
-void JobConfig::setOutputFile(const char* outputFile)
-{
-    m_outputFile = std::string(outputFile);
-}
-
-void JobConfig::setOutputFile(std::string outputFile)
-{
-    m_outputFile = outputFile;
-}
-
-const std::string& JobConfig::getOutputFile()
-{
-    return m_outputFile;
-}
-
-void JobConfig::addCalorimeterType(const char* calType)
-{
-    m_calTypes.push_back(std::string(calType));
-}
-
-void JobConfig::addCalorimeterType(std::string calType)
-{
-    m_calTypes.push_back(calType);
-}
-
-JobConfig::CalorimeterTypes JobConfig::getCalorimeterTypes()
-{
-    return m_calTypes;
-}
 
 JobConfig::CalorimeterTypes JobConfig::getDefaultCalorimeterTypes()
 {

slicPandora/src
JobManager.cpp 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- JobManager.cpp	8 Mar 2010 23:00:53 -0000	1.4
+++ JobManager.cpp	11 Mar 2010 22:18:43 -0000	1.5
@@ -91,7 +91,7 @@
     return m_detectorGeometry;
 }
 
-StatusCode JobManager::run()
+void JobManager::run()
 {
     initialize();
 
@@ -118,22 +118,35 @@
 
     // Process events.
     while (event != 0)
-    {
+    {        
+        // Run event processors over this event.
         processEvent(event);
+
+        // Write out this event to LCIO file.
         writer->writeEvent(event);
+
+        // Read the next event.
+        event = reader->readNextEvent();
+
+        // Check if job should be stopped due to user-specified event limit.
         if (nread >= ntoread)
         {
-            std::cout << "Read <" << ntoread << "> events.  Stopping run!" << std::endl;
+            std::cout << std::endl << "Stopping run after <" << ntoread << "> events!" << std::endl;
             break;
         }
-        event = reader->readNextEvent();
+
+        // Increment number of events read.
         ++nread;
     }
+    
+    // Close the LCIO reader.
     reader->close();
+
+    // Close the LCIO writer.
     writer->flush();
     writer->close();
 
-    return STATUS_CODE_SUCCESS;
+    std::cout << "Pandora ran <" << nread << "> events in this job." << std::endl;
 }
 
 void JobManager::processEvent(EVENT::LCEvent* event)

slicPandora/src
PfoProcessor.cpp 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- PfoProcessor.cpp	10 Mar 2010 20:17:54 -0000	1.5
+++ PfoProcessor.cpp	11 Mar 2010 22:18:43 -0000	1.6
@@ -1,4 +1,4 @@
-// $Id: PfoProcessor.cpp,v 1.5 2010/03/10 20:17:54 jeremy Exp $
+// $Id: PfoProcessor.cpp,v 1.6 2010/03/11 22:18:43 jeremy Exp $
 #include "PfoProcessor.h"
 
 // lcio
@@ -34,38 +34,41 @@
 {}
 
 void PfoProcessor::processEvent(EVENT::LCEvent* event)
-{
-    std::cout << "PfoProcessor::processEvent" << std::endl;
-        // first a container for the clusters...
+{    
+    // Make a container for the clusters.
     LCCollectionVec* clusterVec = new LCCollectionVec(EVENT::LCIO::CLUSTER);
-    // if we want to point back to the hits we need to set the flag
+
+    // Set flag for pointing back to CalorimeterHits.
     LCFlagImpl clusterFlag(0);
     clusterFlag.setBit(EVENT::LCIO::CLBIT_HITS);
     clusterVec->setFlag(clusterFlag.getFlag());
 
-    // get the particle flow objects
+    // Get Pandora's list of PFOs.
     pandora::ParticleFlowObjectList particleFlowObjectList;
     PANDORA_THROW_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_INITIALIZED, !=, PandoraApi::GetParticleFlowObjects(getJobManager()->getPandora(),
             particleFlowObjectList));
+    std::cout << "Pandora found " << particleFlowObjectList.size() << " PFOs in event <" << event->getEventNumber() << ">." << std::endl;
 
-    std::cout << "Pandora found " << particleFlowObjectList.size() << " PFOs" << std::endl;
-
+    // Make a container for the ReconstructedParticles.
     LCCollectionVec* pReconstructedParticleCollection = new LCCollectionVec(EVENT::LCIO::RECONSTRUCTEDPARTICLE);
 
-    // get particle flow objects and create "reconstructed particles"
+    // Iterate over Pandora's PFO objects to create LCIO ReconstructedParticles.
     for (pandora::ParticleFlowObjectList::iterator itPFO = particleFlowObjectList.begin(), itPFOEnd = particleFlowObjectList.end();
-            itPFO != itPFOEnd; ++itPFO)
+         itPFO != itPFOEnd; 
+         ++itPFO)
     {
+        // Make the new ReconstructedParticle.
         ReconstructedParticleImpl *pReconstructedParticle = new ReconstructedParticleImpl();
 
         pandora::ClusterAddressList clusterAddressList = (*itPFO)->GetClusterAddressList();
-        cout << "Found " << clusterAddressList.size() << " clusters." << endl;
+        cout << "Pandora found <" << clusterAddressList.size() << "> clusters." << endl;
         pandora::TrackAddressList trackAddressList = (*itPFO)->GetTrackAddressList();
 
-        // make LCIO clusters
+        // Iterate over the cluster list and make LCIO clusters.
         for (pandora::ClusterAddressList::iterator itCluster = clusterAddressList.begin(), itClusterEnd = clusterAddressList.end();
                 itCluster != itClusterEnd; ++itCluster)
         {
+            // Make a new Cluster.
             ClusterImpl *pCluster = new ClusterImpl();
             
             double clusterEnergy = 0.;
@@ -80,24 +83,34 @@
                     maxE = ((CalorimeterHit*) (*itHit))->getEnergy();
                     //avert your gaze...
                     clusterPosition = const_cast<float*>(((CalorimeterHit*) (*itHit))->getPosition());
-                }
+                }             
                 pCluster->addHit((CalorimeterHit*) (*itHit), 1.0); // transform from Uid (=void*) to a CalorimeterHit*
             }
+
+            // Set cluster energy.
             pCluster->setEnergy(clusterEnergy);
+
+            // Set the cluster position.
             pCluster->setPosition(clusterPosition);
-            cout << "Cluster contains " << pCluster->getCalorimeterHits().size() << " hits" << endl;
-            // add this cluster to the collection
+
+            cout << "Cluster contains <" << pCluster->getCalorimeterHits().size() << "> hits." << endl;
+
+            // Add the cluster to the collection.
             clusterVec->addElement(pCluster);
+
+            // Associate the cluster with the ReconstructedParticle.
             pReconstructedParticle->addCluster(pCluster);
         }
 
-        // add tracks
-        for (pandora::TrackAddressList::iterator itTrack = trackAddressList.begin(), itTrackEnd = trackAddressList.end(); itTrack != itTrackEnd;
-                ++itTrack)
+        // Add the tracks to the event.
+        for (pandora::TrackAddressList::iterator itTrack = trackAddressList.begin(), itTrackEnd = trackAddressList.end(); 
+             itTrack != itTrackEnd;
+             ++itTrack)
         {
             pReconstructedParticle->addTrack((Track*) (*itTrack));
         }
 
+        // Set the ReconstructedParticle parameters from the PFO.
         float momentum[3] = {(*itPFO)->GetMomentum().GetX(), (*itPFO)->GetMomentum().GetY(), (*itPFO)->GetMomentum().GetZ()};
         pReconstructedParticle->setMomentum(momentum);
         pReconstructedParticle->setEnergy((*itPFO)->GetEnergy());
@@ -105,12 +118,13 @@
         pReconstructedParticle->setCharge((*itPFO)->GetCharge());
         pReconstructedParticle->setType((*itPFO)->GetParticleId());
 
+        // Add the ReconstructedParticle to the collection.
         pReconstructedParticleCollection->addElement(pReconstructedParticle);
     }
-    // add the list of clusters to the event
+    
+    // Add the list of clusters to the event.
     event->addCollection(clusterVec, "ReconClusters");
-    //cout << "end of loop over pandora outpout" << endl;
-    event->addCollection(pReconstructedParticleCollection, "PandoraPFOCollection");
-    //cout << "added pfo objects to event" << endl;
-       
+
+    // Add the list of ReconstructedParticles to the event.
+    event->addCollection(pReconstructedParticleCollection, "PandoraPFOCollection");       
 }

slicPandora/src
EventProcessor.cpp removed after 1.1
diff -N EventProcessor.cpp
--- EventProcessor.cpp	23 Feb 2010 02:27:26 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,21 +0,0 @@
-#include "EventProcessor.h"
-
-#include "JobManager.h"
-
-EventProcessor::EventProcessor(std::string name) 
-    : m_name(name)     
-{;}
-
-EventProcessor::~EventProcessor()
-{;}
-
-void EventProcessor::setJobManager(JobManager* manager)
-{
-    m_manager = manager;
-}
-
-JobManager* EventProcessor::getJobManager()
-{
-    return m_manager;
-}
-

slicPandora/include
CalorimeterHitProcessor.h 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- CalorimeterHitProcessor.h	8 Mar 2010 23:00:54 -0000	1.2
+++ CalorimeterHitProcessor.h	11 Mar 2010 22:18:44 -0000	1.3
@@ -13,26 +13,42 @@
 
 using EVENT::CalorimeterHit;
 
+/**
+ * This is an event processor that converts collections of CalorimeterHits
+ * to Pandora CaloHit::Parameters and registers them with the current
+ * Pandora instance.  The collections to process are retrieved from the JobManager's
+ * list of calorimeter collection types (e.g. EM_BARREL).
+ */
 class CalorimeterHitProcessor : public EventProcessor
 {
 public:
+
+    /**
+     * Standard ctor.
+     */
     CalorimeterHitProcessor()
         : EventProcessor("CalorimeterHitProcessor")
     {;}
 
+    /**
+     * Standard dtor.
+     */
     virtual ~CalorimeterHitProcessor()
     {;}
 
 public:
 
+    /**
+     * This method converts LCIO CalorimeterHits into Pandora CalHit::Parameters.
+     */
     void processEvent(EVENT::LCEvent*);
 
 private:
     
     /**
-     * Make a 64-bit identifier for a hit.
+     * Make a 64-bit ID from the two 32-bit cell IDs of a CalorimeterHit.
      */
-    inline long long makeId64(CalorimeterHit* hit)
+    inline long long makeId64(CalorimeterHit* hit) const
     {        
         return ((long long)hit->getCellID1())<<32 | hit->getCellID0();
     }
@@ -45,6 +61,9 @@
         DetectorGeometry::ExtraSubDetectorParameters* xsubdet,
         CalorimeterHit*);
 
+    /**
+     * Print the given CalHit::Parameters to cout.
+     */
     void printCaloHitParameters(const PandoraApi::CaloHit::Parameters&);
 };
 

slicPandora/include
EventProcessor.h 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- EventProcessor.h	9 Mar 2010 20:13:42 -0000	1.3
+++ EventProcessor.h	11 Mar 2010 22:18:44 -0000	1.4
@@ -1,4 +1,4 @@
-// $Id: EventProcessor.h,v 1.3 2010/03/09 20:13:42 jeremy Exp $
+// $Id: EventProcessor.h,v 1.4 2010/03/11 22:18:44 jeremy Exp $
 
 #ifndef EventProcessor_h
 #define EventProcessor_h 1
@@ -9,7 +9,7 @@
 // lcio
 #include "EVENT/LCEvent.h"
 
-// Needed to avoid circular reference with EventProcessor.
+// Avoid circular reference with EventProcessor class.
 class JobManager;
 
 using EVENT::LCEvent;
@@ -22,22 +22,48 @@
 class EventProcessor
 {
 public:
-    EventProcessor(std::string);
-    virtual ~EventProcessor();
 
-    void setJobManager(JobManager*);
-    JobManager* getJobManager();
+    /**
+     * ctor which requires a name argument.
+     */
+    EventProcessor(std::string name)
+        : m_name(name)
+    {;}
+
+    /**
+     * Standard dtor.
+     */
+    virtual ~EventProcessor()
+    {;}
+
+    /**
+     * Set the pointer to the processor's JobManager.
+     */
+    inline void setJobManager(JobManager* manager)
+    {
+        m_manager = manager;
+    }
+
+    /**
+     * Get the pointer to the processor's JobManager.
+     */
+    inline JobManager* getJobManager() const
+    {
+        return m_manager;
+    }
     
-    inline const std::string& getName()
+    /**
+     * Get the name of the processor.
+     */
+    inline const std::string& getName() const
     {
         return m_name;
     }
 
     /**
      * Process a single LCIO event.  This is a pure virtual method that must be 
-     * implemented by sub-classes.  Processors that are calling Pandora algorithms
-     * may ignore the LCEvent entirely and retrieve objects directly from Pandora 
-     * via the JobManager's reference to it.
+     * implemented by sub-classes.  Processors that call Pandora algorithms may 
+     * ignore the LCEvent and retrieve objects directly from the Pandora instance.
      */
     virtual void processEvent(EVENT::LCEvent*) = 0;
 

slicPandora/include
IDDecoder.h 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- IDDecoder.h	9 Mar 2010 20:13:42 -0000	1.3
+++ IDDecoder.h	11 Mar 2010 22:18:44 -0000	1.4
@@ -1,7 +1,8 @@
-// $Id: IDDecoder.h,v 1.3 2010/03/09 20:13:42 jeremy Exp $
-#ifndef IDDecoder_h
-#define IDDecoder_h 1
+// $Id: IDDecoder.h,v 1.4 2010/03/11 22:18:44 jeremy Exp $
+#ifndef IDDECODER_H
+#define IDDECODER_H 1
 
+// stl
 #include <string>
 #include <vector>
 #include <map>
@@ -9,40 +10,65 @@
 /**
  * This class extracts field values from 64-bit identifiers based on an identifier 
  * description.  It provides similar functionality to the GeomConverter Java class
- * org.lcsim.geometry.util.IDDecoder (NOT the org.lcsim.geometry.IDDecoder interface).
+ * org.lcsim.geometry.util.IDDecoder (but NOT the org.lcsim.geometry.IDDecoder interface
+ * with the same class name).
  */
 class IDDecoder
 {
 
 public:
 
+    /**
+     * An IDField represents a portion of a 64-bit id which contains a data field.
+     * This is defined by a starting bit, a length, and a flag that specifies
+     * whether the field may contain signed values that need to be decoded differently
+     * from unsigned fields.  Fields also have a name, e.g. "layer"..
+     */
     class IDField
     {        
     public:
 
+        /**
+         * Fully specified ctor.  The parameters of IDFields do not change after creation.
+         */
         IDField(const std::string& name, int start, int length, bool isSigned)
             : m_name(name), m_start(start), m_length(length), m_signed(isSigned)
         {;}
 
+        /**
+         * Standard dtor.
+         */
         virtual ~IDField()
         {;}
 
-        const std::string& getName()
+        /**
+         * Get the name of the field.
+         */
+        inline const std::string& getName() const
         {
             return m_name;
         }
 
-        const int getStart()
+        /**
+         * Get the start bit of the field, numbered from 0 to 63.
+         */
+        inline const int getStart() const
         {
             return m_start;
         }
 
-        const int getLength()
+        /**
+         * Get the length of the field.
+         */
+        inline const int getLength() const
         {
             return m_length;
         }
 
-        const bool isSigned()
+        /**
+         * Get the sign flag specifying whether this field may contain signed field values.
+         */
+        inline const bool isSigned() const
         {
             return m_signed;
         }
@@ -56,11 +82,21 @@
 
 public:
 
+    // List of fields.
     typedef std::vector<IDField*> IDFields;
+
+    // Map of field indices to fields.
     typedef std::map<int,IDField*> IndexedFieldMap;
+
+    // Map of field names to fields.
     typedef std::map<std::string,IDField*> NamedFieldMap;
+
+    // Map field names to indices.
     typedef std::map<std::string,int> Name2IndexMap;
 
+    /**
+     * ctor that requires a list of fields.
+     */
     IDDecoder(IDFields fields)
         : m_fields(fields)
     {
@@ -77,28 +113,50 @@
         }
     }
         
+    /**
+     * Standard dtor.
+     */
     virtual ~IDDecoder()
     {;}
     
-    int getFieldValue(int index, long id);    
+    /**
+     * Extract a field at the given index from the id.
+     */
+    int getFieldValue(int index, long id);
+    
+    /**
+     * Extract a field with the given name from the id.
+     */
     int getFieldValue(const std::string& name, long id);
     
-    IDField* getField(int index)
+    /**
+     * Get a field by index.
+     */
+    inline const IDField* getField(int index)
     {
         return m_indexMap[index];
     }
 
-    IDField* getField(const std::string& name)
+    /**
+     * Get a field by name.
+     */
+    inline const IDField* getField(const std::string& name)
     {
         return m_nameMap[name];
     }
 
-    int getFieldIndex(const std::string& name)
+    /**
+     * Get the index of a field by name.
+     */
+    inline const int getFieldIndex(const std::string& name)
     {
         return m_name2IndexMap[name];
     }
     
-    int getFieldCount()
+    /**
+     * Get the number of fields.
+     */
+    inline const int getFieldCount() const
     {
         return m_fields.size();
     }

slicPandora/include
JobConfig.h 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- JobConfig.h	9 Mar 2010 20:13:42 -0000	1.3
+++ JobConfig.h	11 Mar 2010 22:18:44 -0000	1.4
@@ -1,51 +1,139 @@
-// $Id: JobConfig.h,v 1.3 2010/03/09 20:13:42 jeremy Exp $
-#ifndef _SLIC_PANDORACONFIG_H
-#define _SLIC_PANDORACONFIG_H 1
+// $Id: JobConfig.h,v 1.4 2010/03/11 22:18:44 jeremy Exp $
+#ifndef JOBCONFIG_H
+#define JOBCONFIG_H 1
 
 // stl
 #include <string>
 #include <vector>
 
-class DetectorGeometry;
-
+/**
+ * JobConfig contains all the parameters for running Pandora jobs using the JobManager.
+ */
 class JobConfig
 {
 
 public:
 
+    // List of input files.
     typedef std::vector<std::string> FileList;
-    typedef std::vector<std::string> CalorimeterTypes;
 
-    JobConfig();
-    virtual ~JobConfig();
+    // List of calorimeter types.
+    typedef std::vector<std::string> CalorimeterTypes;
 
-    void setPandoraSettingsXmlFile(const char*);
-    void setPandoraSettingsXmlFile(std::string);
-    const std::string& getPandoraSettingsXmlFile();
-
-    void setGeometryFile(const char*);
-    void setGeometryFile(std::string);    
-    const std::string& getGeometryFile();
-
-    void addInputFile(const char*);
-    void addInputFile(std::string);
-    FileList getInputFiles();
-
-    void setOutputFile(const char*);
-    void setOutputFile(std::string);
-    const std::string& getOutputFile();
+    JobConfig()
+        : m_nevents(-1), m_nskip(0)
+    {;}
+
+    virtual ~JobConfig()
+    {;}
+
+    /**
+     * Set the Pandora settings XML file path.
+     */
+    inline void setPandoraSettingsXmlFle(const char* pandoraSettingsXmlFile)
+    {
+        m_pandoraSettingsXmlFile = std::string(pandoraSettingsXmlFile);
+    }
+
+    /**
+     * Set the Pandora settings XML file path.
+     */
+    inline void setPandoraSettingsXmlFile(std::string pandoraSettingsXmlFile)
+    {
+        m_pandoraSettingsXmlFile = pandoraSettingsXmlFile;
+    }
+
+    /**
+     * Get the Pandora settings XML file path.
+     */
+    inline const std::string& getPandoraSettingsXmlFile() const
+    {
+        return m_pandoraSettingsXmlFile;
+    }
+
+    inline void setGeometryFile(const char* geometryFile)
+    {
+        m_geometryFile = std::string(geometryFile);
+    }
+
+    inline void setGeometryFile(std::string geometryFile)
+    {
+        m_geometryFile = geometryFile;
+    }
+
+    const std::string& getGeometryFile() const
+    {
+        return m_geometryFile;
+    }
+
+    inline void addInputFile(const char* filename)
+    {
+        m_inputLcioFiles.push_back(std::string(filename));
+    }
+
+    inline void addInputFile(std::string filename)
+    {
+        m_inputLcioFiles.push_back(filename);
+    }
+
+    const FileList getInputFiles() const
+    {
+        return m_inputLcioFiles;
+    }
+
+    inline void setOutputFile(const char* outputFile)
+    {
+        m_outputFile = std::string(outputFile);
+    }
+
+    inline void setOutputFile(std::string outputFile)
+    {
+        m_outputFile = outputFile;
+    }
+    
+    inline const std::string& getOutputFile() const
+    {
+        return m_outputFile;
+    }
+
+    inline void setNumberOfEvents(int nevents)
+    {
+        m_nevents = nevents;
+    }
+
+    inline const int getNumberOfEvents() const
+    {
+        return m_nevents;
+    }
+
+    inline void setSkipEvents(int nskip)
+    {
+        m_nskip = nskip;
+    }
+
+    inline int getSkipEvents() const
+    {
+        return m_nskip;
+    }
+
+    const CalorimeterTypes getCalorimeterTypes() const
+    {
+        return m_calTypes;
+    }
+
+    inline void addCalorimeterType(const char* calType)
+    {
+        m_calTypes.push_back(std::string(calType));
+    }
+
+    inline void addCalorimeterType(std::string calType)
+    {
+        m_calTypes.push_back(calType);   
+    }
 
     void useDefaultCalorimeterTypes();
-    void addCalorimeterType(const char*);
-    void addCalorimeterType(std::string);
-    CalorimeterTypes getCalorimeterTypes();
-    CalorimeterTypes getDefaultCalorimeterTypes();
-
-    void setNumberOfEvents(int nevents);
-    int getNumberOfEvents();
 
-    void setSkipEvents(int nskip);
-    int getSkipEvents();
+    inline CalorimeterTypes getDefaultCalorimeterTypes();
    
 private:
     std::string m_pandoraSettingsXmlFile;

slicPandora/include
JobManager.h 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- JobManager.h	11 Mar 2010 19:56:48 -0000	1.6
+++ JobManager.h	11 Mar 2010 22:18:44 -0000	1.7
@@ -1,4 +1,4 @@
-// $Id: JobManager.h,v 1.6 2010/03/11 19:56:48 jeremy Exp $
+// $Id: JobManager.h,v 1.7 2010/03/11 22:18:44 jeremy Exp $
 #ifndef JobManager_h
 #define JobManager_h 1
 
@@ -14,6 +14,10 @@
 class DetectorGeometry;
 class EventProcessor;
 
+/**
+ * The JobManager is a manager class for running slicPandora jobs.
+ * The job configuration is defined in a separate class, JobConfig.
+ */
 class JobManager
 {
 public:
@@ -48,24 +52,24 @@
     JobConfig* getJobConfig();
 
     /**
+     * Run the job with the current settings.
+     */
+    void run();
+
+    /**
      * Add an EventProcessor to the end of the processor list.
      */
     void addEventProcessor(EventProcessor*);
 
     /**
-     * Get the DetectorGeometry created from the input xml file.
+     * Get the DetectorGeometry that was created from the input XML file.
      */
     DetectorGeometry* getDetectorGeometry();
 
     /**
      * Get the Pandora PFA instance.
      */
-    const pandora::Pandora& getPandora();
-    
-    /**
-     * Run the job with the current settings.
-     */
-    StatusCode run();
+    const pandora::Pandora& getPandora();   
 
 private:
 
@@ -75,10 +79,13 @@
     void processEvent(EVENT::LCEvent*);
 
     /**
-     * Initialize the job so it is ready to run.
+     * Initialize the job so that it is ready to run.
      */
     void initialize();
 
+    /**
+     * Create Pandora's algorithm generators.
+     */
     StatusCode registerUserAlgorithmFactories();
 
     /**

slicPandora/include
PfoProcessor.h 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- PfoProcessor.h	9 Mar 2010 20:13:42 -0000	1.2
+++ PfoProcessor.h	11 Mar 2010 22:18:44 -0000	1.3
@@ -1,12 +1,16 @@
-// $Id: PfoProcessor.h,v 1.2 2010/03/09 20:13:42 jeremy Exp $
+// $Id: PfoProcessor.h,v 1.3 2010/03/11 22:18:44 jeremy Exp $
 #ifndef PFOPROCESSOR_H
 #define PFOPROCESSOR_H 1
 
+// slicPandora
 #include "EventProcessor.h"
 
 // lcio
 #include "EVENT/LCEvent.h"
 
+/**
+ * This event processor converts Pandora PFO objects into LCIO output.
+ */
 class PfoProcessor : public EventProcessor
 {
 public:

slicPandora/tests
PandoraFrontend.cpp 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- PandoraFrontend.cpp	11 Mar 2010 19:56:49 -0000	1.1
+++ PandoraFrontend.cpp	11 Mar 2010 22:18:44 -0000	1.2
@@ -1,4 +1,4 @@
-//$Id: PandoraFrontend.cpp,v 1.1 2010/03/11 19:56:49 jeremy Exp $
+//$Id: PandoraFrontend.cpp,v 1.2 2010/03/11 22:18:44 jeremy Exp $
 
 /**
  * This is a simple frontend to run slicPandora.  It takes an ordered list of arguments.  (See usage method.)
@@ -17,7 +17,7 @@
 void printUsage()
 {
     cout << "./bin/PandoraFrontend geometry.xml pandoraSettings.xml inputEvents.slcio reconOutput.slcio nevents" << endl << endl;
-    cout << "The nevents argument is optional.  By default, PandoraFrontend will run over all of the input events." << std::endl;
+    cout << "The [nevents] argument is optional.  By default, PandoraFrontend will run over all of the input events." << std::endl;
 }
 
 int main(int argc, char **argv)
@@ -50,12 +50,12 @@
     }
 
     // Print out arguments before starting job.
-    cout << "PandoraFrontend got " << nargs << " arguments..." << endl;
+    cout << "PandoraFrontend got " << nargs << " arguments ..." << endl;
     cout << "    geometry: " << geometry << endl;
     cout << "    pandoraSettings: " << pandoraSettings << endl;
     cout << "    inputEvents: " << inputEvents << endl;
     cout << "    outputEvents: " << outputEvents << endl;
-    cout << "    nevents: " << nevents << endl;
+    cout << "    nevents: " << nevents << endl << endl;
 
     // Create the job configuration from the command line arguments.
     JobConfig* config = new JobConfig();
CVSspam 0.2.8