00001 #ifndef EMC_MCHIT_BUILDER_H
00002 #define EMC_MCHIT_BUILDER_H
00003
00004 #include "RawDataCnv/EventManagement/Builder.h"
00005 #include "McTruth/EmcMcHit.h"
00006 #include "RawDataCnv/EventManagement/McTruthDataStructure.h"
00007
00008 using namespace std;
00009 using Event::EmcMcHit;
00010 using Event::EmcMcHitCol;
00011
00012 class EmcMcHitBuilder: public Builder
00013 {
00014
00015 public:
00016 EmcMcHitBuilder ();
00017 virtual ~EmcMcHitBuilder(){};
00018 virtual StatusCode initialize(string &initFile);
00019 virtual uint32_t getTEID(uint32_t teid);
00020 virtual uint32_t getREID(uint32_t reid);
00021
00022 virtual void unPack (vector<uint32_t>::const_iterator&,
00023 vector<uint32_t>::const_iterator&,
00024 EmcTruth_t&);
00025 virtual StatusCode pack(EmcMcHitCol* emcMcHitCol, WriteRawEvent*& re);
00026
00027 private:
00028
00029 void makeEmcTruth(EmcMcHitCol::const_iterator& pEmcMcHit, EmcTruth_t& et);
00030
00031 TE2REMAP m_te2reMap;
00032
00033 vector <int> re2te;
00034 PropertyMgr m_propMgr;
00035
00036 uint32_t m_trackIndexIndex, m_partIdIndex, m_numThetaIndex, m_numPhiIndex;
00037 uint32_t m_trackIndexMask, m_partIdMask, m_numThetaMask, m_numPhiMask;
00038
00039 public:
00040 uint64_t m_xCoeff;
00041 uint64_t m_yCoeff;
00042 uint64_t m_zCoeff;
00043 uint64_t m_pxCoeff;
00044 uint64_t m_pyCoeff;
00045 uint64_t m_pzCoeff;
00046 uint64_t m_totalEdepCoeff;
00047 };
00048 #endif