CalEventEnergy.h
 
#ifndef CalEventEnergy_H
#define CalEventEnergy_H

#include <vector>
#include "geometry/Point.h"
#include "geometry/Vector.h"
#include "GaudiKernel/DataObject.h"
#include "GaudiKernel/MsgStream.h"

#include "Event/RelTable/RelTable.h"
#include "Event/Recon/CalRecon/CalCorToolResult.h"

class Event::CalCluster;

static const CLID& CLID_CalEventEnergy = InterfaceID("CalEventEnergy", 1, 0);

/**
*  @class CalEventEnergy
*
*
*  @brief This defines the top level CalRecon TDS object summarizing the 
*         Cal energy reconstruction. 
*         This is a new class and is intended to sit above CalCluster(s) in
*         the CalRecon hierarchy. 
*         The presumption is that there is but one of these objects, hence it
*         derives from Gaudi's DataObject. 
*  
*  \author CalRecon Rewrite Group
*
* $Header: /nfs/slac/g/glast/ground/cvs/Event/Event/Recon/CalRecon/CalEventEnergy.h,v 1.13 2004/09/18 18:16:58 usher Exp $
*/

namespace Event 
{
    
class CalEventEnergy: public CalCorToolResultCol, virtual public DataObject 
{     
public:
        
    CalEventEnergy() : m_statusBits(0), m_params() {}
        
    virtual ~CalEventEnergy() {}

    /// 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            > <  Recon Status  >
    /// high:  |  0   0   0   0  |  0   0   0   0  |  0   0   0   0  |  0   0   0   0   |
    ///         <            more bits to play with                 >  < more hit type >
    /// @param PASS_ONE  Bit set means succesful first pass energy recon (no tracking)
    enum StatusBits {PASS_ONE  = 0x00000001, 
    /// @param PASS_TWO  Bit set means successful second pass energy recon
                     PASS_TWO  = 0x00000002,
    /// @param GODOGSGO    Bit set means GODOGSGO is valid
                     GODOGSGO     = 0x100000};  

    /// Access the status bits to determine details of the hit
    inline const unsigned int  getStatusBits() const {return m_statusBits;}

    /// Answer quick questions based on status bits
    inline const bool validPassOne() const {return (m_statusBits & PASS_ONE)  == PASS_ONE;}
    inline const bool validPassTwo() const {return (m_statusBits & PASS_TWO)  == PASS_TWO;}

    /// Access to "the" energy and parameters
    const CalParams  getParams()    const {return m_params;}
    const double     getEnergy()    const {return m_params.getEnergy();}
    const Point      getCentroid()  const {return m_params.getCentroid();}
    const Vector     getDirection() const {return m_params.getAxis();}

    ///
    /// Set methods for this class
    /// @param energy the corrected energy
    inline void setParams(const CalParams& params)    {m_params = params;}

    inline void setStatusBit(unsigned int bitToSet)   {m_statusBits |=  bitToSet;}
    inline void clearStatusBit(StatusBits bitToClear) {m_statusBits &= ~bitToClear;}
        
private:
    unsigned int m_statusBits;
    CalParams    m_params;
};

}

#endif	

  • No labels