#include <MdcMcHitBuilder.h>
Inheritance diagram for MdcMcHitBuilder:
Public Types | |
typedef std::map< uint32_t, uint32_t > | TE2REMAP |
Public Member Functions | |
MdcMcHitBuilder () | |
virtual | ~MdcMcHitBuilder () |
virtual StatusCode | initialize (string &initFile) |
virtual uint32_t | getTEID (uint32_t teid) |
virtual uint32_t | getREID (uint32_t reid) |
virtual void | unPack (vector< uint32_t >::const_iterator &, vector< uint32_t >::const_iterator &, MdcTruth_t &) |
virtual StatusCode | pack (MdcMcHitCol *mdcMcHitCol, WriteRawEvent *&re) |
Static Public Member Functions | |
static bool | expect (ifstream &f, string msg, string fname) |
static bool | expectInt (ifstream &f, string msg, string fname, uint32_t &val1, uint32_t &val2) |
static bool | expectLong (ifstream &f, string msg, string fname, uint64_t &val) |
static bool | find (ifstream &f, string msg, string fname) |
Public Attributes | |
uint64_t | m_edepCoeff |
uint64_t | m_driftDCoeff |
uint64_t | m_xCoeff |
uint64_t | m_yCoeff |
uint64_t | m_zCoeff |
Protected Member Functions | |
void | append2event (WriteRawEvent *&re, uint32_t source_id, uint32_t size) |
Protected Attributes | |
uint32_t * | m_buf |
uint32_t | m_status |
Static Protected Attributes | |
static string | m_confFile |
Private Member Functions | |
void | makeMdcTruth (MdcMcHitCol::const_iterator &pMdcMcHit, MdcTruth_t &tt) |
Private Attributes | |
TE2REMAP | m_te2reMap |
vector< int > | re2te |
string initFile; | |
PropertyMgr | m_propMgr |
uint32_t | m_trackIndexIndex |
uint32_t | m_layerIdIndex |
uint32_t | m_cellIdIndex |
uint32_t | m_posFlagIndex |
uint32_t | m_trackIndexMask |
uint32_t | m_layerIdMask |
uint32_t | m_cellIdMask |
uint32_t | m_posFlagMask |
Definition at line 12 of file MdcMcHitBuilder.h.
typedef std::map<uint32_t, uint32_t> Builder::TE2REMAP [inherited] |
MdcMcHitBuilder::MdcMcHitBuilder | ( | ) |
Definition at line 7 of file MdcMcHitBuilder.cxx.
References initialize(), and Builder::m_confFile.
00008 :Builder() 00009 { 00010 initialize (Builder::m_confFile); 00011 }
virtual MdcMcHitBuilder::~MdcMcHitBuilder | ( | ) | [inline, virtual] |
void Builder::append2event | ( | WriteRawEvent *& | re, | |
uint32_t | source_id, | |||
uint32_t | size | |||
) | [protected, inherited] |
Definition at line 76 of file Builder.cxx.
References eformat::write::FullEventFragment::append(), eformat::write::SubDetectorFragment::append(), eformat::write::ROSFragment::append(), eformat::write::FullEventFragment::lvl1_id(), Builder::m_buf, Builder::m_status, eformat::write::ROBFragment::rod_status(), eformat::write::FullEventFragment::run_no(), eformat::write::SubDetectorFragment::status(), eformat::write::ROSFragment::status(), and eformat::write::ROBFragment::status().
Referenced by TofBuilder::pack(), MucBuilder::pack(), MdcBuilder::pack(), McParticleBuilder::pack(), HltBuilder::pack(), and EmcBuilder::pack().
00077 { 00078 uint32_t run_no = re->run_no(); 00079 uint32_t lvl1_id = re->lvl1_id(); 00080 uint32_t bc_id = 0; // ? 00081 // ROB 00082 eformat::write::ROBFragment* nrob = new eformat::write::ROBFragment( 00083 source_id, // source_id 00084 run_no, // run_no 00085 lvl1_id, // lvl1_id 00086 bc_id, // bc_id 00087 0, // lvl1_type 00088 0, // detev_type 00089 size, // ndata 00090 m_buf, // data 00091 0 // status_position 00092 ); 00093 if(m_status==0xFFFFFFFF){ 00094 nrob->status(0, NULL); 00095 nrob->rod_status(0, NULL); 00096 } 00097 else{ //fucd 00098 nrob->status(1, &m_status); 00099 nrob->rod_status(1, &m_status); 00100 } 00101 // ROS 00102 eformat::write::ROSFragment* nros = new eformat::write::ROSFragment( 00103 source_id, // source_id 00104 run_no, // run_no 00105 lvl1_id, // lvl1_id 00106 bc_id // bc_id 00107 ); 00108 if(m_status==0xFFFFFFFF) nros->status(0, NULL); 00109 else nros->status(1, &m_status); //fucd 00110 // SubDetector 00111 eformat::write::SubDetectorFragment* nsd = new eformat::write::SubDetectorFragment(source_id); 00112 if(m_status==0xFFFFFFFF) nsd->status(0, NULL); 00113 else nsd->status(1, &m_status); //fucd 00114 // append to FullEventFragment 00115 nros->append(nrob); 00116 nsd->append(nros); 00117 re->append(nsd); 00118 }
Definition at line 28 of file Builder.cxx.
References deljobs::string.
Referenced by Builder::expectInt(), Builder::expectLong(), TofMcHitBuilder::initialize(), TofBuilder::initialize(), MucMcHitBuilder::initialize(), initialize(), MdcBuilder::initialize(), HltBuilder::initialize(), EmcMcHitBuilder::initialize(), and EmcBuilder::initialize().
00029 { 00030 string str; 00031 if( f.bad() ) 00032 { 00033 cerr << "Error: file " << fname << " is bad" << endl; 00034 return false; 00035 } 00036 f >> str; 00037 if( str == msg ) 00038 return true; 00039 00040 cerr << "Error: expected `" << msg << "|" << str <<"` in " << fname << endl; 00041 return false; 00042 }
bool Builder::expectInt | ( | ifstream & | f, | |
string | msg, | |||
string | fname, | |||
uint32_t & | val1, | |||
uint32_t & | val2 | |||
) | [static, inherited] |
Definition at line 44 of file Builder.cxx.
References Builder::expect().
Referenced by TofMcHitBuilder::initialize(), TofBuilder::initialize(), MucMcHitBuilder::initialize(), initialize(), MdcBuilder::initialize(), HltBuilder::initialize(), EmcMcHitBuilder::initialize(), and EmcBuilder::initialize().
00045 { 00046 if( !expect( f, msg, fname ) || f.bad() ) 00047 return false; 00048 f >> val1 >> val2; 00049 return true; 00050 }
bool Builder::expectLong | ( | ifstream & | f, | |
string | msg, | |||
string | fname, | |||
uint64_t & | val | |||
) | [static, inherited] |
Definition at line 52 of file Builder.cxx.
References Builder::expect().
Referenced by TofMcHitBuilder::initialize(), MucMcHitBuilder::initialize(), initialize(), and EmcMcHitBuilder::initialize().
00053 { 00054 if ( !expect(f, msg, fname) || f.bad() ) 00055 return false; 00056 f >> val; 00057 return true; 00058 }
Definition at line 60 of file Builder.cxx.
References deljobs::string.
Referenced by TofMcHitBuilder::initialize(), TofBuilder::initialize(), MucMcHitBuilder::initialize(), initialize(), MdcBuilder::initialize(), McParticleBuilder::initialize(), HltBuilder::initialize(), EmcMcHitBuilder::initialize(), and EmcBuilder::initialize().
00061 { 00062 if ( f.bad() ) { 00063 cerr << "Error: file " << fname << " bad checked" << endl; 00064 return false; 00065 } 00066 00067 string str; 00068 while ( !f.eof() ) { 00069 f >> str; 00070 if ( str == msg ) return true; 00071 } 00072 00073 return false; 00074 }
uint32_t MdcMcHitBuilder::getREID | ( | uint32_t | reid | ) | [virtual] |
uint32_t MdcMcHitBuilder::getTEID | ( | uint32_t | teid | ) | [virtual] |
StatusCode MdcMcHitBuilder::initialize | ( | string & | initFile | ) | [virtual] |
Reimplemented from Builder.
Definition at line 70 of file MdcMcHitBuilder.cxx.
References Builder::expect(), Builder::expectInt(), Builder::expectLong(), Builder::find(), m_cellIdIndex, m_cellIdMask, m_driftDCoeff, m_edepCoeff, m_layerIdIndex, m_layerIdMask, m_posFlagIndex, m_posFlagMask, m_trackIndexIndex, m_trackIndexMask, m_xCoeff, m_yCoeff, and m_zCoeff.
Referenced by MdcMcHitBuilder().
00071 { 00072 ifstream f; 00073 00074 //read init file 00075 f.open(initFile.c_str()); 00076 00077 if ( f.bad() ) { 00078 cerr << "Error: could not open file " << initFile << endl; 00079 return StatusCode::FAILURE; 00080 } 00081 00082 if (!Builder::find( f, "##MdcTruthConf", initFile)) { 00083 cerr << "Error: could not find '##MdcTruthConf' in file " << initFile << endl; 00084 return StatusCode::FAILURE; 00085 } 00086 00087 if ( !Builder::expect( f, "#MdcTruthShift", initFile) || 00088 !Builder::expectInt( f, "trackIndex", initFile, m_trackIndexIndex, m_trackIndexMask) || 00089 !Builder::expectInt( f, "layerId", initFile, m_layerIdIndex, m_layerIdMask) || 00090 !Builder::expectInt( f, "cellId", initFile, m_cellIdIndex, m_cellIdMask) || 00091 !Builder::expectInt( f, "posFlag", initFile, m_posFlagIndex, m_posFlagMask) || 00092 !Builder::expect( f, "#MdcTruthCoeff", initFile) || 00093 !Builder::expectLong( f, "edep", initFile, m_edepCoeff) || 00094 !Builder::expectLong( f, "driftD", initFile, m_driftDCoeff) || 00095 !Builder::expectLong( f, "x", initFile, m_xCoeff) || 00096 !Builder::expectLong( f, "y", initFile, m_yCoeff) || 00097 !Builder::expectLong( f, "z", initFile, m_zCoeff) ) 00098 return StatusCode::FAILURE; 00099 00100 f.close(); 00101 00102 return StatusCode::SUCCESS; 00103 }
void MdcMcHitBuilder::makeMdcTruth | ( | MdcMcHitCol::const_iterator & | pMdcMcHit, | |
MdcTruth_t & | tt | |||
) | [private] |
Definition at line 118 of file MdcMcHitBuilder.cxx.
References MdcTruth_t::cellId, MdcTruth_t::driftD, MdcTruth_t::edep, MdcID::layer(), MdcTruth_t::layerId, MdcTruth_t::posFlag, MdcTruth_t::trackIndex, MdcID::wire(), MdcTruth_t::x, MdcTruth_t::y, and MdcTruth_t::z.
00119 { 00120 Identifier ident = (*iter)->identify(); 00121 00122 mt.trackIndex = (*iter)->getTrackIndex(); 00123 mt.layerId = MdcID::layer(ident); 00124 mt.cellId = MdcID::wire(ident); 00125 mt.edep = int((*iter)->getDepositEnergy() * m_edepCoeff); 00126 mt.driftD = int((*iter)->getDriftDistance() * m_driftDCoeff); 00127 mt.x = int((*iter)->getPositionX() * m_xCoeff); 00128 mt.y = int((*iter)->getPositionY() * m_yCoeff); 00129 mt.z = int((*iter)->getPositionZ() * m_zCoeff); 00130 mt.posFlag = (*iter)->getPositionFlag(); 00131 00132 return; 00133 }
StatusCode MdcMcHitBuilder::pack | ( | MdcMcHitCol * | mdcMcHitCol, | |
WriteRawEvent *& | re | |||
) | [virtual] |
Definition at line 31 of file MdcMcHitBuilder.cxx.
Referenced by RawDataMdcMcHitCnv::createRep().
00032 { 00033 /* 00034 if (mdcMcHitCol == NULL) { 00035 cout << "MdcMcHitBuilder::pack cant get MdcMcHitCol" << endl; 00036 return StatusCode::FAILURE; 00037 } 00038 00039 MdcTruth_t m_MdcTruth; 00040 vector<uint32_t> *mdcReMcHitVec = new vector<uint32_t>; 00041 00042 MdcMcHitCol::const_iterator pMdcMcHit = mdcMcHitCol->begin(); 00043 for ( ; pMdcMcHit != mdcMcHitCol->end(); pMdcMcHit++) { 00044 // Make MdcTruth data 00045 makeMdcTruth(pMdcMcHit, m_MdcTruth); 00046 // pack the trackIndex, layerId and cellId. 00047 uint32_t helpVal = (m_MdcTruth.trackIndex<<m_trackIndexIndex) & m_trackIndexMask; 00048 helpVal |= ((m_MdcTruth.layerId<<m_layerIdIndex) & m_layerIdMask); 00049 helpVal |= ((m_MdcTruth.cellId<<m_cellIdIndex) & m_cellIdMask); 00050 if (m_MdcTruth.posFlag) helpVal |= ((0x1<<m_posFlagIndex) & m_posFlagMask); 00051 //fill the McHit Vector 00052 mdcReMcHitVec->push_back(helpVal); 00053 mdcReMcHitVec->push_back(m_MdcTruth.edep); 00054 mdcReMcHitVec->push_back(m_MdcTruth.driftD); 00055 mdcReMcHitVec->push_back(m_MdcTruth.x); 00056 mdcReMcHitVec->push_back(m_MdcTruth.y); 00057 mdcReMcHitVec->push_back(m_MdcTruth.z); 00058 } 00059 00060 OfflineEventFormat::SubDetectorHeader sh(OfflineEventFormat::MDCTRUTH); 00061 SubRawEvent *sub = new SubRawEvent(sh, mdcReMcHitVec); 00062 re->append(sub); 00063 */ 00064 00065 return StatusCode::SUCCESS; 00066 }
void MdcMcHitBuilder::unPack | ( | vector< uint32_t >::const_iterator & | , | |
vector< uint32_t >::const_iterator & | , | |||
MdcTruth_t & | ||||
) | [virtual] |
Definition at line 13 of file MdcMcHitBuilder.cxx.
References MdcTruth_t::cellId, MdcTruth_t::driftD, MdcTruth_t::edep, MdcTruth_t::layerId, m_cellIdIndex, m_cellIdMask, m_layerIdIndex, m_layerIdMask, m_posFlagMask, m_trackIndexIndex, m_trackIndexMask, MdcTruth_t::posFlag, MdcTruth_t::trackIndex, MdcTruth_t::x, MdcTruth_t::y, and MdcTruth_t::z.
Referenced by RawDataMdcMcHitCnv::createObj().
00015 { 00016 uint32_t helpVal = *(iter++); assert(iter != eiter); 00017 mt.edep = *(iter++); assert(iter != eiter); 00018 mt.driftD = *(iter++); assert(iter != eiter); 00019 mt.x = *(iter++); assert(iter != eiter); 00020 mt.y = *(iter++); assert(iter != eiter); 00021 mt.z = *(iter++); 00022 00023 mt.trackIndex = (helpVal & m_trackIndexMask) >> m_trackIndexIndex; 00024 mt.layerId = (helpVal & m_layerIdMask) >> m_layerIdIndex; 00025 mt.cellId = (helpVal & m_cellIdMask) >> m_cellIdIndex; 00026 mt.posFlag = (helpVal & m_posFlagMask) ? 1 : 0 ; 00027 00028 return; 00029 }
uint32_t* Builder::m_buf [protected, inherited] |
Definition at line 46 of file Builder.h.
Referenced by Builder::append2event(), Builder::Builder(), TofBuilder::pack(), MucBuilder::pack(), MdcBuilder::pack(), McParticleBuilder::pack(), HltBuilder::pack(), EmcBuilder::pack(), and Builder::~Builder().
uint32_t MdcMcHitBuilder::m_cellIdIndex [private] |
uint32_t MdcMcHitBuilder::m_cellIdMask [private] |
string Builder::m_confFile [static, protected, inherited] |
Definition at line 47 of file Builder.h.
Referenced by Builder::Builder(), EmcBuilder::EmcBuilder(), EmcMcHitBuilder::EmcMcHitBuilder(), HltBuilder::HltBuilder(), MdcBuilder::MdcBuilder(), MdcMcHitBuilder(), MucMcHitBuilder::MucMcHitBuilder(), TofBuilder::TofBuilder(), and TofMcHitBuilder::TofMcHitBuilder().
uint64_t MdcMcHitBuilder::m_driftDCoeff |
Definition at line 40 of file MdcMcHitBuilder.h.
Referenced by RawDataMdcMcHitCnv::createObj(), and initialize().
uint64_t MdcMcHitBuilder::m_edepCoeff |
Definition at line 39 of file MdcMcHitBuilder.h.
Referenced by RawDataMdcMcHitCnv::createObj(), and initialize().
uint32_t MdcMcHitBuilder::m_layerIdIndex [private] |
uint32_t MdcMcHitBuilder::m_layerIdMask [private] |
uint32_t MdcMcHitBuilder::m_posFlagIndex [private] |
uint32_t MdcMcHitBuilder::m_posFlagMask [private] |
PropertyMgr MdcMcHitBuilder::m_propMgr [private] |
uint32_t Builder::m_status [protected, inherited] |
Definition at line 49 of file Builder.h.
Referenced by Builder::append2event(), and Builder::Builder().
TE2REMAP MdcMcHitBuilder::m_te2reMap [private] |
Definition at line 30 of file MdcMcHitBuilder.h.
uint32_t MdcMcHitBuilder::m_trackIndexIndex [private] |
uint32_t MdcMcHitBuilder::m_trackIndexMask [private] |
uint64_t MdcMcHitBuilder::m_xCoeff |
Definition at line 41 of file MdcMcHitBuilder.h.
Referenced by RawDataMdcMcHitCnv::createObj(), and initialize().
uint64_t MdcMcHitBuilder::m_yCoeff |
Definition at line 42 of file MdcMcHitBuilder.h.
Referenced by RawDataMdcMcHitCnv::createObj(), and initialize().
uint64_t MdcMcHitBuilder::m_zCoeff |
Definition at line 43 of file MdcMcHitBuilder.h.
Referenced by RawDataMdcMcHitCnv::createObj(), and initialize().
vector<int> MdcMcHitBuilder::re2te [private] |