#include <TofMcHitBuilder.h>
Inheritance diagram for TofMcHitBuilder:
Public Types | |
typedef std::map< uint32_t, uint32_t > | TE2REMAP |
Public Member Functions | |
TofMcHitBuilder () | |
virtual | ~TofMcHitBuilder () |
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 &, TofTruth_t &) |
virtual StatusCode | pack (TofMcHitCol *tofMcHitCol, 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_trackLengthCoeff |
uint64_t | m_timeCoeff |
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 | makeTofTruth (TofMcHitCol::const_iterator &pTofMcHit, TofTruth_t &tt) |
Private Attributes | |
TE2REMAP | m_te2reMap |
vector< int > | re2te |
PropertyMgr | m_propMgr |
uint32_t | m_trackIndexIndex |
uint32_t | m_partIdIndex |
uint32_t | m_scinNbIndex |
uint32_t | m_stripIndex |
uint32_t | m_trackIndexMask |
uint32_t | m_partIdMask |
uint32_t | m_scinNbMask |
uint32_t | m_stripMask |
Definition at line 12 of file TofMcHitBuilder.h.
typedef std::map<uint32_t, uint32_t> Builder::TE2REMAP [inherited] |
TofMcHitBuilder::TofMcHitBuilder | ( | ) |
Definition at line 7 of file TofMcHitBuilder.cxx.
References initialize(), and Builder::m_confFile.
00008 :Builder() 00009 { 00010 initialize(Builder::m_confFile); 00011 }
virtual TofMcHitBuilder::~TofMcHitBuilder | ( | ) | [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(), initialize(), TofBuilder::initialize(), MucMcHitBuilder::initialize(), MdcMcHitBuilder::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 initialize(), TofBuilder::initialize(), MucMcHitBuilder::initialize(), MdcMcHitBuilder::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 initialize(), MucMcHitBuilder::initialize(), MdcMcHitBuilder::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 initialize(), TofBuilder::initialize(), MucMcHitBuilder::initialize(), MdcMcHitBuilder::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 TofMcHitBuilder::getREID | ( | uint32_t | reid | ) | [virtual] |
uint32_t TofMcHitBuilder::getTEID | ( | uint32_t | teid | ) | [virtual] |
StatusCode TofMcHitBuilder::initialize | ( | string & | initFile | ) | [virtual] |
Reimplemented from Builder.
Definition at line 76 of file TofMcHitBuilder.cxx.
References Builder::expect(), Builder::expectInt(), Builder::expectLong(), Builder::find(), m_partIdIndex, m_partIdMask, m_pxCoeff, m_pyCoeff, m_pzCoeff, m_scinNbIndex, m_scinNbMask, m_stripIndex, m_stripMask, m_timeCoeff, m_trackIndexIndex, m_trackIndexMask, m_trackLengthCoeff, m_xCoeff, m_yCoeff, and m_zCoeff.
Referenced by TofMcHitBuilder().
00077 { 00078 ifstream f; 00079 00080 //read init file 00081 f.open(initFile.c_str()); 00082 00083 if ( f.bad() ) { 00084 cerr << "Error: could not open file " << initFile << endl; 00085 return StatusCode::FAILURE; 00086 } 00087 00088 if (!Builder::find( f, "##TofTruthConf", initFile)) { 00089 cerr << "Error: could not find '##TofTruthConf' in file " << initFile << endl; 00090 return StatusCode::FAILURE; 00091 } 00092 00093 if ( !Builder::expect( f, "#TofTruthShift", initFile) || 00094 !Builder::expectInt( f, "trackIndex", initFile, m_trackIndexIndex, m_trackIndexMask) || 00095 !Builder::expectInt( f, "partId", initFile, m_partIdIndex, m_partIdMask) || 00096 !Builder::expectInt( f, "scinNb", initFile, m_scinNbIndex, m_scinNbMask) || 00097 !Builder::expectInt( f, "strip", initFile, m_stripIndex, m_stripMask) || 00098 !Builder::expect( f, "#TofTruthCoeff", initFile) || 00099 !Builder::expectLong( f, "x", initFile, m_xCoeff) || 00100 !Builder::expectLong( f, "y", initFile, m_yCoeff) || 00101 !Builder::expectLong( f, "z", initFile, m_zCoeff) || 00102 !Builder::expectLong( f, "px", initFile, m_pxCoeff) || 00103 !Builder::expectLong( f, "py", initFile, m_pyCoeff) || 00104 !Builder::expectLong( f, "pz", initFile, m_pzCoeff) || 00105 !Builder::expectLong( f, "trackLength", initFile, m_trackLengthCoeff) || 00106 !Builder::expectLong( f, "time", initFile, m_timeCoeff) ) 00107 return StatusCode::FAILURE; 00108 00109 f.close(); 00110 00111 return StatusCode::SUCCESS; 00112 }
void TofMcHitBuilder::makeTofTruth | ( | TofMcHitCol::const_iterator & | pTofMcHit, | |
TofTruth_t & | tt | |||
) | [private] |
Definition at line 127 of file TofMcHitBuilder.cxx.
References TofID::barrel_ec(), TofID::endcap(), TofID::getPHI_BARREL_MAX(), TofID::is_barrel(), TofID::is_mrpc(), TofID::is_scin(), TofID::layer(), TofID::module(), TofTruth_t::partId, TofID::phi_module(), TofTruth_t::px, TofTruth_t::py, TofTruth_t::pz, TofTruth_t::scinNb, TofTruth_t::strip, TofID::strip(), TofTruth_t::time, TofTruth_t::trackIndex, TofTruth_t::trackLength, TofTruth_t::x, TofTruth_t::y, and TofTruth_t::z.
00128 { 00129 Identifier ident = (*pTofMcHit)->identify(); 00130 uint32_t partId = TofID::barrel_ec(ident); 00131 uint32_t scinNum = 0; 00132 uint32_t strip = 0; 00133 00134 if( TofID::is_scin(ident) ) { 00135 uint32_t layer = TofID::layer(ident); 00136 scinNum = TofID::phi_module(ident); 00137 if (TofID::is_barrel(layer)) scinNum += TofID::getPHI_BARREL_MAX() + 1; 00138 } 00139 else if( TofID::is_mrpc(ident) ) { 00140 uint32_t endcap = TofID::endcap(ident); 00141 scinNum = TofID::module(ident); 00142 if( TofID::is_barrel(endcap) ) partId = 4; 00143 strip = TofID::strip(ident); 00144 } 00145 00146 tt.trackIndex = (*pTofMcHit)->getTrackIndex(); 00147 tt.partId = partId; 00148 tt.scinNb = scinNum; 00149 tt.strip = strip; 00150 tt.x = int((*pTofMcHit)->getPositionX() * m_xCoeff); 00151 tt.y = int((*pTofMcHit)->getPositionY() * m_yCoeff); 00152 tt.z = int((*pTofMcHit)->getPositionZ() * m_zCoeff); 00153 tt.px = int((*pTofMcHit)->getPx() * m_pxCoeff); 00154 tt.py = int((*pTofMcHit)->getPy() * m_pyCoeff); 00155 tt.pz = int((*pTofMcHit)->getPz() * m_pzCoeff); 00156 tt.trackLength= int((*pTofMcHit)->getTrackLength() * m_trackLengthCoeff); 00157 tt.time = int((*pTofMcHit)->getFlightTime() * m_timeCoeff); 00158 00159 return; 00160 }
StatusCode TofMcHitBuilder::pack | ( | TofMcHitCol * | tofMcHitCol, | |
WriteRawEvent *& | re | |||
) | [virtual] |
Definition at line 35 of file TofMcHitBuilder.cxx.
Referenced by RawDataTofMcHitCnv::createRep().
00036 { 00037 /* 00038 if (tofMcHitCol == NULL) { 00039 cout << "TofMcHitBuilder::pack cant get TofMcHitCol" << endl; 00040 return StatusCode::FAILURE; 00041 } 00042 00043 vector<uint32_t> *tofReMcHitVec = new vector<uint32_t>; 00044 TofTruth_t m_TofTruth; 00045 00046 TofMcHitCol::const_iterator pTofMcHit = tofMcHitCol->begin(); 00047 for ( ; pTofMcHit != tofMcHitCol->end(); pTofMcHit++) { 00048 // make TofTruth_t data 00049 makeTofTruth(pTofMcHit, m_TofTruth); 00050 //pack the int numbers 00051 uint32_t helpVal = (m_TofTruth.trackIndex<<m_trackIndexIndex) & m_trackIndexMask; 00052 helpVal |= ((m_TofTruth.partId<<m_partIdIndex) & m_partIdMask); 00053 helpVal |= ((m_TofTruth.scinNb<<m_scinNbIndex) & m_scinNbMask); 00054 //fill the McHit vector 00055 tofReMcHitVec->push_back(helpVal); 00056 tofReMcHitVec->push_back(m_TofTruth.x); 00057 tofReMcHitVec->push_back(m_TofTruth.y); 00058 tofReMcHitVec->push_back(m_TofTruth.z); 00059 tofReMcHitVec->push_back(m_TofTruth.px); 00060 tofReMcHitVec->push_back(m_TofTruth.py); 00061 tofReMcHitVec->push_back(m_TofTruth.pz); 00062 tofReMcHitVec->push_back(m_TofTruth.trackLength); 00063 tofReMcHitVec->push_back(m_TofTruth.time); 00064 } 00065 00066 OfflineEventFormat::SubDetectorHeader sh(OfflineEventFormat::TOFTRUTH); 00067 SubRawEvent *sub = new SubRawEvent(sh, tofReMcHitVec); 00068 re->append(sub); 00069 */ 00070 00071 return StatusCode::SUCCESS; 00072 }
void TofMcHitBuilder::unPack | ( | vector< uint32_t >::const_iterator & | , | |
vector< uint32_t >::const_iterator & | , | |||
TofTruth_t & | ||||
) | [virtual] |
Definition at line 13 of file TofMcHitBuilder.cxx.
References m_partIdIndex, m_partIdMask, m_scinNbIndex, m_scinNbMask, m_stripIndex, m_stripMask, m_trackIndexIndex, m_trackIndexMask, TofTruth_t::partId, TofTruth_t::px, TofTruth_t::py, TofTruth_t::pz, TofTruth_t::scinNb, TofTruth_t::strip, TofTruth_t::time, TofTruth_t::trackIndex, TofTruth_t::trackLength, TofTruth_t::x, TofTruth_t::y, and TofTruth_t::z.
Referenced by RawDataTofMcHitCnv::createObj().
00015 { 00016 uint32_t helpVal = *(iter++); assert(iter != eiter); 00017 tt.x = *(iter++); assert(iter != eiter); 00018 tt.y = *(iter++); assert(iter != eiter); 00019 tt.z = *(iter++); assert(iter != eiter); 00020 tt.px = *(iter++); assert(iter != eiter); 00021 tt.py = *(iter++); assert(iter != eiter); 00022 tt.pz = *(iter++); assert(iter != eiter); 00023 tt.trackLength= *(iter++); assert(iter != eiter); 00024 tt.time = *(iter++); 00025 00026 tt.trackIndex = (helpVal&m_trackIndexMask) >> m_trackIndexIndex; 00027 tt.partId = (helpVal&m_partIdMask) >> m_partIdIndex; 00028 tt.scinNb = (helpVal&m_scinNbMask) >> m_scinNbIndex; 00029 tt.strip = (helpVal&m_stripMask) >> m_stripIndex; 00030 00031 return; 00032 }
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::EmcMcHitBuilder(), HltBuilder::HltBuilder(), MdcBuilder::MdcBuilder(), MdcMcHitBuilder::MdcMcHitBuilder(), MucMcHitBuilder::MucMcHitBuilder(), TofBuilder::TofBuilder(), and TofMcHitBuilder().
uint32_t TofMcHitBuilder::m_partIdIndex [private] |
uint32_t TofMcHitBuilder::m_partIdMask [private] |
PropertyMgr TofMcHitBuilder::m_propMgr [private] |
uint64_t TofMcHitBuilder::m_pxCoeff |
Definition at line 43 of file TofMcHitBuilder.h.
Referenced by RawDataTofMcHitCnv::createObj(), and initialize().
uint64_t TofMcHitBuilder::m_pyCoeff |
Definition at line 44 of file TofMcHitBuilder.h.
Referenced by RawDataTofMcHitCnv::createObj(), and initialize().
uint64_t TofMcHitBuilder::m_pzCoeff |
Definition at line 45 of file TofMcHitBuilder.h.
Referenced by RawDataTofMcHitCnv::createObj(), and initialize().
uint32_t TofMcHitBuilder::m_scinNbIndex [private] |
uint32_t TofMcHitBuilder::m_scinNbMask [private] |
uint32_t Builder::m_status [protected, inherited] |
Definition at line 49 of file Builder.h.
Referenced by Builder::append2event(), and Builder::Builder().
uint32_t TofMcHitBuilder::m_stripIndex [private] |
uint32_t TofMcHitBuilder::m_stripMask [private] |
TE2REMAP TofMcHitBuilder::m_te2reMap [private] |
Definition at line 31 of file TofMcHitBuilder.h.
uint64_t TofMcHitBuilder::m_timeCoeff |
Definition at line 47 of file TofMcHitBuilder.h.
Referenced by RawDataTofMcHitCnv::createObj(), and initialize().
uint32_t TofMcHitBuilder::m_trackIndexIndex [private] |
uint32_t TofMcHitBuilder::m_trackIndexMask [private] |
uint64_t TofMcHitBuilder::m_trackLengthCoeff |
Definition at line 46 of file TofMcHitBuilder.h.
Referenced by RawDataTofMcHitCnv::createObj(), and initialize().
uint64_t TofMcHitBuilder::m_xCoeff |
Definition at line 40 of file TofMcHitBuilder.h.
Referenced by RawDataTofMcHitCnv::createObj(), and initialize().
uint64_t TofMcHitBuilder::m_yCoeff |
Definition at line 41 of file TofMcHitBuilder.h.
Referenced by RawDataTofMcHitCnv::createObj(), and initialize().
uint64_t TofMcHitBuilder::m_zCoeff |
Definition at line 42 of file TofMcHitBuilder.h.
Referenced by RawDataTofMcHitCnv::createObj(), and initialize().
vector<int> TofMcHitBuilder::re2te [private] |
Definition at line 33 of file TofMcHitBuilder.h.