#ifndef CalCorToolResult_H
#define CalCorToolResult_H
#include <vector>
#include "geometry/Point.h"
#include "geometry/Vector.h"
#include "GaudiKernel/ContainedObject.h"
#include "GaudiKernel/MsgStream.h"
#include "Event/Recon/CalRecon/CalParams.h"
static const CLID& CLID_CalCorToolResult = InterfaceID("CalCorToolResult", 1, 0);
/**
* @class CalCorToolResult
*
*
* @brief This defines the output from a given Energy Correction Tool
*
* \author CalRecon Rewrite Group
*
* $Header: /nfs/slac/g/glast/ground/cvs/Event/Event/Recon/CalRecon/CalCorToolResult.h,v 1.13 2004/09/18 18:16:58 usher Exp $
*/
namespace Event
{
class CalCorToolResult: virtual public ContainedObject
{
public:
CalCorToolResult() : m_statusBits(0), m_chiSquare(0.) {};
virtual ~CalCorToolResult() {}
/// Status word bits organized like:
/// low: | 0 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 0 0 |
/// < volume info > < hit type > < Energy Correction Status >
/// high: | 0 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 0 0 |
/// < Correction Algorithm Used > < more hit type >
/// @param VALIDENERGY Bit set means particular energy correction is valid
enum StatusBits {VALIDPARAMS = 0x00000001,
/// @param CALVALS Bit set means Profile performed this correction
CALVALS = 0x00100000,
/// @param PROFILE Bit set means Profile performed this correction
PROFILE = 0x00200000,
/// @param LASTLAYER Bit set means Profile performed this correction
LASTLAYER = 0x00400000,
/// @param RAWENERGY Bit set means raw energy sum over all clusters
RAWENERGY = 0x20000000,
/// @param GODOGSGO Bit set means GODOGSGO performed this correction
GODOGSGO = 0x40000000};
/// Answer quick questions based on status bits
inline const bool validParams() const {return (m_statusBits & VALIDPARAMS) == VALIDPARAMS;}
/// Access the status bits to determine details of the hit
inline const unsigned int getStatusBits() const {return m_statusBits;}
/// Retrieve corrected information
const CalParams& getParams() const {return m_params;}
const double getChiSquare() const {return m_chiSquare;}
///
/// Start here the methods for setting the information
/// setParams for setting energy parameters
/// @param params : the Cal energy parameters
inline void setParams(const CalParams& params) {m_params = params;}
/// setChiSquare for setting the chisquare of the correction "fit"
/// @param chiSquare the chiSquare resulting from this correction
inline void setChiSquare(const double chiSquare) {m_chiSquare = chiSquare;}
/// setStatusBit and ClearStatusBit for setting and clearing bits
inline void setStatusBit(unsigned int bitToSet) {m_statusBits |= bitToSet;}
inline void clearStatusBit(StatusBits bitToClear) {m_statusBits &= ~bitToClear;}
private:
unsigned int m_statusBits;
double m_chiSquare;
CalParams m_params;
};
//typedef for the Gaudi TDS Container
typedef ObjectVector<CalCorToolResult> CalCorToolResultCol;
typedef CalCorToolResultCol::iterator CalCorToolResultColItr;
typedef CalCorToolResultCol::const_iterator CalCorToolResultColConItr;
// Define the relational table taking us back to CalCluster objects
typedef Event::RelTable<Event::CalCluster, Event::CalCorToolResult> CalClusToCorToolHitTab;
typedef Event::Relation<Event::CalCluster, Event::CalCorToolResult> CalClusToCorToolHitRel;
typedef ObjectList< Event::Relation<Event::CalCluster, Event::CalCorToolResult> > CalClustToCorToolHitTabList;
}
#endif
|