00001 #ifndef GlastEvent_AcdRecon_H
00002 #define GlastEvent_AcdRecon_H 1
00003
00004
00005
00006 #include <iostream>
00007 #include "idents/AcdId.h"
00008 #include "data/IVetoData.h"
00009 #include "GaudiKernel/Kernel.h"
00010 #include "GaudiKernel/StreamBuffer.h"
00011 #include "GaudiKernel/DataObject.h"
00012
00013 #include "GlastEvent/TopLevel/Definitions.h"
00014
00015 #include <vector>
00016 #include <map>
00017
00029 extern const CLID& CLID_AcdRecon;
00030
00031
00032 class AcdRecon : virtual public DataObject {
00033
00034 public:
00035 AcdRecon()
00036 : m_totEnergy(0.0),
00037 m_tileCount(0),
00038 m_gammaDOCA(-99999.0),
00039 m_DOCA(-99999.0)
00040 {};
00041
00042 AcdRecon(double e, int count, double gDoca, double doca,
00043 IVetoData::Tile hitTile, std::vector<double> &rowDOCA,
00044 std::map<idents::AcdId,double> &energies)
00045 : m_totEnergy(e),
00046 m_tileCount(count),
00047 m_gammaDOCA(gDoca),
00048 m_DOCA(doca),
00049 m_hitTile(hitTile),
00050 m_rowDOCA_vec(rowDOCA),
00051 m_energies(energies)
00052
00053 {};
00054
00056 virtual ~AcdRecon() { };
00057
00059 virtual const CLID& clID() const { return AcdRecon::classID(); }
00060 static const CLID& classID() { return CLID_AcdRecon; }
00061
00062 inline const double energy() const { return m_totEnergy; };
00063 inline const int tileCount() const { return m_tileCount; };
00064 inline const double gammaDOCA() const { return m_gammaDOCA; };
00065 inline const double DOCA() const { return m_DOCA; };
00066
00067
00068
00070 virtual StreamBuffer& serialize( StreamBuffer& s ) const;
00072 virtual StreamBuffer& serialize( StreamBuffer& s );
00074 virtual std::ostream& fillStream( std::ostream& s ) const;
00075
00076
00077
00078 private:
00079
00080 double m_totEnergy;
00081 int m_tileCount;
00082 double m_gammaDOCA;
00083 double m_DOCA;
00084 std::vector<double> m_rowDOCA_vec;
00085
00086
00087 IVetoData::Tile m_hitTile;
00088
00089 std::map<idents::AcdId,double> m_energies;
00090
00091 };
00092
00093
00095 inline StreamBuffer& AcdRecon::serialize( StreamBuffer& s ) const
00096 {
00097 DataObject::serialize(s);
00098 return s
00099 << m_totEnergy
00100 << m_tileCount
00101 << m_gammaDOCA
00102 << m_DOCA;
00103 }
00104
00105
00107 inline StreamBuffer& AcdRecon::serialize( StreamBuffer& s )
00108 {
00109 DataObject::serialize(s);
00110
00111 s >> m_totEnergy
00112 >> m_tileCount
00113 >> m_gammaDOCA
00114 >> m_DOCA;
00115
00116 return s;
00117 }
00118
00119
00121 inline std::ostream& AcdRecon::fillStream( std::ostream& s ) const
00122 {
00123 return s
00124 << " base class AcdRecon :"
00125 << "\n total energy = "
00126 << GlastEventFloatFormat( GlastEvent::width, GlastEvent::precision )
00127 << m_totEnergy << ", "
00128 << "\n tile Count = "
00129 << GlastEventFloatFormat( GlastEvent::width, GlastEvent::precision )
00130 << m_tileCount << " )"
00131 << "\n gamma DOCA = "
00132 << m_gammaDOCA << " )"
00133 << "\n DOCA = "
00134 << GlastEventFloatFormat( GlastEvent::width, GlastEvent::precision )
00135 << m_DOCA << " )";
00136 }
00137
00138
00139
00140
00141 #endif // GlastEvent_AcdRecon_H
00142