#include <EmcMcHitBuilder.h>
Inheritance diagram for EmcMcHitBuilder:
Public Types | |
typedef std::map< uint32_t, uint32_t > | TE2REMAP |
Public Member Functions | |
EmcMcHitBuilder () | |
virtual | ~EmcMcHitBuilder () |
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 &, EmcTruth_t &) |
virtual StatusCode | pack (EmcMcHitCol *emcMcHitCol, 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_xCoeff |
uint64_t | m_yCoeff |
uint64_t | m_zCoeff |
uint64_t | m_pxCoeff |
uint64_t | m_pyCoeff |
uint64_t | m_pzCoeff |
uint64_t | m_totalEdepCoeff |
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 | makeEmcTruth (EmcMcHitCol::const_iterator &pEmcMcHit, EmcTruth_t &et) |
Private Attributes | |
TE2REMAP | m_te2reMap |
vector< int > | re2te |
PropertyMgr | m_propMgr |
uint32_t | m_trackIndexIndex |
uint32_t | m_partIdIndex |
uint32_t | m_numThetaIndex |
uint32_t | m_numPhiIndex |
uint32_t | m_trackIndexMask |
uint32_t | m_partIdMask |
uint32_t | m_numThetaMask |
uint32_t | m_numPhiMask |
Definition at line 12 of file EmcMcHitBuilder.h.
typedef std::map<uint32_t, uint32_t> Builder::TE2REMAP [inherited] |
EmcMcHitBuilder::EmcMcHitBuilder | ( | ) |
Definition at line 7 of file EmcMcHitBuilder.cxx.
References initialize(), and Builder::m_confFile.
00008 :Builder() 00009 { 00010 initialize(Builder::m_confFile); 00011 }
virtual EmcMcHitBuilder::~EmcMcHitBuilder | ( | ) | [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(), MdcMcHitBuilder::initialize(), MdcBuilder::initialize(), HltBuilder::initialize(), 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(), MdcMcHitBuilder::initialize(), MdcBuilder::initialize(), HltBuilder::initialize(), 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(), MdcMcHitBuilder::initialize(), and 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(), MdcMcHitBuilder::initialize(), MdcBuilder::initialize(), McParticleBuilder::initialize(), HltBuilder::initialize(), 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 EmcMcHitBuilder::getREID | ( | uint32_t | reid | ) | [virtual] |
uint32_t EmcMcHitBuilder::getTEID | ( | uint32_t | teid | ) | [virtual] |
StatusCode EmcMcHitBuilder::initialize | ( | string & | initFile | ) | [virtual] |
Reimplemented from Builder.
Definition at line 75 of file EmcMcHitBuilder.cxx.
References Builder::expect(), Builder::expectInt(), Builder::expectLong(), Builder::find(), m_numPhiIndex, m_numPhiMask, m_numThetaIndex, m_numThetaMask, m_partIdIndex, m_partIdMask, m_pxCoeff, m_pyCoeff, m_pzCoeff, m_totalEdepCoeff, m_trackIndexIndex, m_trackIndexMask, m_xCoeff, m_yCoeff, and m_zCoeff.
Referenced by EmcMcHitBuilder().
00076 { 00077 ifstream f; 00078 00079 //read init file 00080 f.open(initFile.c_str()); 00081 00082 if ( f.bad() ) { 00083 cerr << "Error: could not open file " << initFile << endl; 00084 return StatusCode::FAILURE; 00085 } 00086 00087 if (!Builder::find( f, "##EmcTruthConf", initFile)) { 00088 cerr << "Error: could not find '##EmcTruthConf' in file " << initFile << endl; 00089 return StatusCode::FAILURE; 00090 } 00091 00092 if ( !Builder::expect( f, "#EmcTruthShift", initFile) || 00093 !Builder::expectInt( f, "trackIndex", initFile, m_trackIndexIndex, m_trackIndexMask) || 00094 !Builder::expectInt( f, "partId", initFile, m_partIdIndex, m_partIdMask) || 00095 !Builder::expectInt( f, "numTheta", initFile, m_numThetaIndex, m_numThetaMask) || 00096 !Builder::expectInt( f, "numPhi", initFile, m_numPhiIndex, m_numPhiMask) || 00097 !Builder::expect( f, "#EmcTruthCoeff", initFile) || 00098 !Builder::expectLong( f, "x", initFile, m_xCoeff) || 00099 !Builder::expectLong( f, "y", initFile, m_yCoeff) || 00100 !Builder::expectLong( f, "z", initFile, m_zCoeff) || 00101 !Builder::expectLong( f, "px", initFile, m_pxCoeff) || 00102 !Builder::expectLong( f, "py", initFile, m_pyCoeff) || 00103 !Builder::expectLong( f, "pz", initFile, m_pzCoeff) || 00104 !Builder::expectLong( f, "totalEdep", initFile, m_totalEdepCoeff) ) 00105 return StatusCode::FAILURE; 00106 00107 f.close(); 00108 00109 return StatusCode::SUCCESS; 00110 }
void EmcMcHitBuilder::makeEmcTruth | ( | EmcMcHitCol::const_iterator & | pEmcMcHit, | |
EmcTruth_t & | et | |||
) | [private] |
Definition at line 125 of file EmcMcHitBuilder.cxx.
References EmcID::barrel_ec(), EmcTruth_t::numPhi, EmcTruth_t::numTheta, EmcTruth_t::partId, EmcID::phi_module(), EmcTruth_t::px, EmcTruth_t::py, EmcTruth_t::pz, EmcID::theta_module(), EmcTruth_t::totalEdep, EmcTruth_t::trackIndex, EmcTruth_t::x, EmcTruth_t::y, and EmcTruth_t::z.
00126 { 00127 Identifier ident = (*pEmcMcHit)->identify(); 00128 00129 et.trackIndex = (*pEmcMcHit)->getTrackIndex(); 00130 et.partId = EmcID::barrel_ec(ident); 00131 et.numTheta = EmcID::theta_module(ident); 00132 et.numPhi = EmcID::phi_module(ident); 00133 et.x = int((*pEmcMcHit)->getPositionX() * m_xCoeff); 00134 et.y = int((*pEmcMcHit)->getPositionY() * m_yCoeff); 00135 et.z = int((*pEmcMcHit)->getPositionZ() * m_zCoeff); 00136 et.px = int((*pEmcMcHit)->getPx() * m_pxCoeff); 00137 et.py = int((*pEmcMcHit)->getPy() * m_pyCoeff); 00138 et.pz = int((*pEmcMcHit)->getPz() * m_pzCoeff); 00139 et.totalEdep = int((*pEmcMcHit)->getDepositEnergy() * m_totalEdepCoeff); 00140 00141 return; 00142 }
StatusCode EmcMcHitBuilder::pack | ( | EmcMcHitCol * | emcMcHitCol, | |
WriteRawEvent *& | re | |||
) | [virtual] |
Definition at line 34 of file EmcMcHitBuilder.cxx.
Referenced by RawDataEmcMcHitCnv::createRep().
00035 { 00036 /* 00037 if (emcMcHitCol == NULL) { 00038 cout << "EmcMcHitBuilder::pack cant get EmcMcHitCol" << endl; 00039 return StatusCode::FAILURE; 00040 } 00041 00042 vector<uint32_t> *emcReMcHitVec = new vector<uint32_t>; 00043 EmcTruth_t m_EmcTruth; 00044 00045 EmcMcHitCol::const_iterator pEmcMcHit = emcMcHitCol->begin(); 00046 for ( ; pEmcMcHit != emcMcHitCol->end(); pEmcMcHit++) { 00047 // Make the EmcTruth Data 00048 makeEmcTruth(pEmcMcHit, m_EmcTruth); 00049 // pack 00050 uint32_t helpVal = (m_EmcTruth.trackIndex<<m_trackIndexIndex) & m_trackIndexMask; 00051 helpVal |= ((m_EmcTruth.partId<<m_partIdIndex) & m_partIdMask); 00052 helpVal |= ((m_EmcTruth.numTheta<<m_numThetaIndex) & m_numThetaMask); 00053 helpVal |= ((m_EmcTruth.numPhi<<m_numPhiIndex) & m_numPhiMask); 00054 // fill the McHit vector 00055 emcReMcHitVec->push_back(helpVal); 00056 emcReMcHitVec->push_back(m_EmcTruth.x); 00057 emcReMcHitVec->push_back(m_EmcTruth.y); 00058 emcReMcHitVec->push_back(m_EmcTruth.z); 00059 emcReMcHitVec->push_back(m_EmcTruth.px); 00060 emcReMcHitVec->push_back(m_EmcTruth.py); 00061 emcReMcHitVec->push_back(m_EmcTruth.pz); 00062 emcReMcHitVec->push_back(m_EmcTruth.totalEdep); 00063 } 00064 00065 OfflineEventFormat::SubDetectorHeader sh(OfflineEventFormat::EMCTRUTH); 00066 SubRawEvent *sub = new SubRawEvent(sh, emcReMcHitVec); 00067 re->append(sub); 00068 */ 00069 00070 return StatusCode::SUCCESS; 00071 }
void EmcMcHitBuilder::unPack | ( | vector< uint32_t >::const_iterator & | , | |
vector< uint32_t >::const_iterator & | , | |||
EmcTruth_t & | ||||
) | [virtual] |
Definition at line 13 of file EmcMcHitBuilder.cxx.
References m_numPhiIndex, m_numPhiMask, m_numThetaIndex, m_numThetaMask, m_partIdIndex, m_partIdMask, m_trackIndexIndex, m_trackIndexMask, EmcTruth_t::numPhi, EmcTruth_t::numTheta, EmcTruth_t::partId, EmcTruth_t::px, EmcTruth_t::py, EmcTruth_t::pz, EmcTruth_t::totalEdep, EmcTruth_t::trackIndex, EmcTruth_t::x, EmcTruth_t::y, and EmcTruth_t::z.
Referenced by RawDataEmcMcHitCnv::createObj().
00015 { 00016 uint32_t helpVal = *(iter++); assert(iter != eiter); 00017 et.x = *(iter++); assert(iter != eiter); 00018 et.y = *(iter++); assert(iter != eiter); 00019 et.z = *(iter++); assert(iter != eiter); 00020 et.px = *(iter++); assert(iter != eiter); 00021 et.py = *(iter++); assert(iter != eiter); 00022 et.pz = *(iter++); assert(iter != eiter); 00023 et.totalEdep = *(iter++); 00024 00025 et.trackIndex = (helpVal&m_trackIndexMask) >> m_trackIndexIndex; 00026 et.partId = (helpVal&m_partIdMask) >> m_partIdIndex; 00027 et.numTheta = (helpVal&m_numThetaMask) >> m_numThetaIndex; 00028 et.numPhi = (helpVal&m_numPhiMask) >> m_numPhiIndex; 00029 00030 return; 00031 }
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().
string Builder::m_confFile [static, protected, inherited] |
Definition at line 47 of file Builder.h.
Referenced by Builder::Builder(), EmcBuilder::EmcBuilder(), EmcMcHitBuilder(), HltBuilder::HltBuilder(), MdcBuilder::MdcBuilder(), MdcMcHitBuilder::MdcMcHitBuilder(), MucMcHitBuilder::MucMcHitBuilder(), TofBuilder::TofBuilder(), and TofMcHitBuilder::TofMcHitBuilder().
uint32_t EmcMcHitBuilder::m_numPhiIndex [private] |
uint32_t EmcMcHitBuilder::m_numPhiMask [private] |
uint32_t EmcMcHitBuilder::m_numThetaIndex [private] |
uint32_t EmcMcHitBuilder::m_numThetaMask [private] |
uint32_t EmcMcHitBuilder::m_partIdIndex [private] |
uint32_t EmcMcHitBuilder::m_partIdMask [private] |
PropertyMgr EmcMcHitBuilder::m_propMgr [private] |
uint64_t EmcMcHitBuilder::m_pxCoeff |
Definition at line 43 of file EmcMcHitBuilder.h.
Referenced by RawDataEmcMcHitCnv::createObj(), and initialize().
uint64_t EmcMcHitBuilder::m_pyCoeff |
Definition at line 44 of file EmcMcHitBuilder.h.
Referenced by RawDataEmcMcHitCnv::createObj(), and initialize().
uint64_t EmcMcHitBuilder::m_pzCoeff |
Definition at line 45 of file EmcMcHitBuilder.h.
Referenced by RawDataEmcMcHitCnv::createObj(), and initialize().
uint32_t Builder::m_status [protected, inherited] |
Definition at line 49 of file Builder.h.
Referenced by Builder::append2event(), and Builder::Builder().
TE2REMAP EmcMcHitBuilder::m_te2reMap [private] |
Definition at line 31 of file EmcMcHitBuilder.h.
uint64_t EmcMcHitBuilder::m_totalEdepCoeff |
Definition at line 46 of file EmcMcHitBuilder.h.
Referenced by RawDataEmcMcHitCnv::createObj(), and initialize().
uint32_t EmcMcHitBuilder::m_trackIndexIndex [private] |
uint32_t EmcMcHitBuilder::m_trackIndexMask [private] |
uint64_t EmcMcHitBuilder::m_xCoeff |
Definition at line 40 of file EmcMcHitBuilder.h.
Referenced by RawDataEmcMcHitCnv::createObj(), and initialize().
uint64_t EmcMcHitBuilder::m_yCoeff |
Definition at line 41 of file EmcMcHitBuilder.h.
Referenced by RawDataEmcMcHitCnv::createObj(), and initialize().
uint64_t EmcMcHitBuilder::m_zCoeff |
Definition at line 42 of file EmcMcHitBuilder.h.
Referenced by RawDataEmcMcHitCnv::createObj(), and initialize().
vector<int> EmcMcHitBuilder::re2te [private] |
Definition at line 33 of file EmcMcHitBuilder.h.