MucMcHitBuilder Class Reference

#include <MucMcHitBuilder.h>

Inheritance diagram for MucMcHitBuilder:

Builder List of all members.

Public Types

typedef std::map< uint32_t,
uint32_t > 
TE2REMAP

Public Member Functions

 MucMcHitBuilder ()
virtual ~MucMcHitBuilder ()
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 &, MucTruth_t &)
virtual StatusCode pack (MucMcHitCol *mucMcHitCol, 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

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 makeMucTruth (MucMcHitCol::const_iterator &pMucMcHit, MucTruth_t &mt)

Private Attributes

TE2REMAP m_te2reMap
vector< int > re2te
PropertyMgr m_propMgr
uint32_t m_trackIndexIndex
uint32_t m_partIdIndex
uint32_t m_segIdIndex
uint32_t m_gapIdIndex
uint32_t m_stripIdIndex
uint32_t m_trackIndexMask
uint32_t m_partIdMask
uint32_t m_segIdMask
uint32_t m_gapIdMask
uint32_t m_stripIdMask

Detailed Description

Definition at line 12 of file MucMcHitBuilder.h.


Member Typedef Documentation

typedef std::map<uint32_t, uint32_t> Builder::TE2REMAP [inherited]

Definition at line 25 of file Builder.h.


Constructor & Destructor Documentation

MucMcHitBuilder::MucMcHitBuilder (  ) 

Definition at line 7 of file MucMcHitBuilder.cxx.

References initialize(), and Builder::m_confFile.

00008    :Builder()
00009 {
00010   initialize (Builder::m_confFile);
00011 }

virtual MucMcHitBuilder::~MucMcHitBuilder (  )  [inline, virtual]

Definition at line 17 of file MucMcHitBuilder.h.

00017 {};


Member Function Documentation

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 }

bool Builder::expect ( ifstream f,
string  msg,
string  fname 
) [static, inherited]

Definition at line 28 of file Builder.cxx.

References deljobs::string.

Referenced by Builder::expectInt(), Builder::expectLong(), TofMcHitBuilder::initialize(), TofBuilder::initialize(), 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 TofMcHitBuilder::initialize(), TofBuilder::initialize(), 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 TofMcHitBuilder::initialize(), 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 }

bool Builder::find ( ifstream f,
string  msg,
string  fname 
) [static, inherited]

Definition at line 60 of file Builder.cxx.

References deljobs::string.

Referenced by TofMcHitBuilder::initialize(), TofBuilder::initialize(), 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 MucMcHitBuilder::getREID ( uint32_t  reid  )  [virtual]

Implements Builder.

Definition at line 120 of file MucMcHitBuilder.cxx.

00121 {
00122   return 0;
00123 }

uint32_t MucMcHitBuilder::getTEID ( uint32_t  teid  )  [virtual]

Implements Builder.

Definition at line 114 of file MucMcHitBuilder.cxx.

00115 {
00116   return 0;
00117 }

StatusCode MucMcHitBuilder::initialize ( string initFile  )  [virtual]

Reimplemented from Builder.

Definition at line 76 of file MucMcHitBuilder.cxx.

References Builder::expect(), Builder::expectInt(), Builder::expectLong(), Builder::find(), m_gapIdIndex, m_gapIdMask, m_partIdIndex, m_partIdMask, m_pxCoeff, m_pyCoeff, m_pzCoeff, m_segIdIndex, m_segIdMask, m_stripIdIndex, m_stripIdMask, m_trackIndexIndex, m_trackIndexMask, m_xCoeff, m_yCoeff, and m_zCoeff.

Referenced by MucMcHitBuilder().

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, "##MucTruthConf", initFile)) {
00089     cerr << "Error: could not find '##MucTruthConf' in file " << initFile << endl;
00090     return StatusCode::FAILURE;
00091   }
00092 
00093   if ( !Builder::expect( f, "#MucTruthShift", 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, "segId", initFile, m_segIdIndex, m_segIdMask) ||
00097        !Builder::expectInt( f, "gapId", initFile, m_gapIdIndex, m_gapIdMask) ||
00098        !Builder::expectInt( f, "stripId", initFile, m_stripIdIndex, m_stripIdMask) ||
00099        !Builder::expect( f, "#MucTruthCoeff", initFile) ||
00100        !Builder::expectLong( f, "x", initFile, m_xCoeff) ||
00101        !Builder::expectLong( f, "y", initFile, m_yCoeff) ||
00102        !Builder::expectLong( f, "z", initFile, m_zCoeff) ||
00103        !Builder::expectLong( f, "px", initFile, m_pxCoeff) ||
00104        !Builder::expectLong( f, "py", initFile, m_pyCoeff) ||
00105        !Builder::expectLong( f, "pz", initFile, m_pzCoeff)    )
00106     return StatusCode::FAILURE;
00107 
00108   f.close();
00109 
00110   return StatusCode::SUCCESS;
00111 }

void MucMcHitBuilder::makeMucTruth ( MucMcHitCol::const_iterator &  pMucMcHit,
MucTruth_t mt 
) [private]

Definition at line 126 of file MucMcHitBuilder.cxx.

References MucID::gap(), MucTruth_t::gapId, MucID::part(), MucTruth_t::partId, MucTruth_t::px, MucTruth_t::py, MucTruth_t::pz, MucID::seg(), MucTruth_t::segId, MucID::strip(), MucTruth_t::stripId, MucTruth_t::trackIndex, MucTruth_t::x, MucTruth_t::y, and MucTruth_t::z.

00127 {
00128   Identifier ident = (*pMucMcHit)->identify();
00129 
00130   mt.trackIndex = (*pMucMcHit)->getTrackIndex() % 1000;
00131   mt.partId     = MucID::part(ident);
00132   mt.segId      = MucID::seg(ident);
00133   mt.gapId      = MucID::gap(ident);
00134   mt.stripId    = MucID::strip(ident);
00135   mt.x          = int((*pMucMcHit)->getPositionX() * m_xCoeff);
00136   mt.y          = int((*pMucMcHit)->getPositionY() * m_yCoeff);
00137   mt.z          = int((*pMucMcHit)->getPositionZ() * m_zCoeff);
00138   mt.px         = int((*pMucMcHit)->getPx() * m_pxCoeff);
00139   mt.py         = int((*pMucMcHit)->getPy() * m_pyCoeff);
00140   mt.pz         = int((*pMucMcHit)->getPz() * m_pzCoeff);
00141 
00142   return;
00143 }

StatusCode MucMcHitBuilder::pack ( MucMcHitCol mucMcHitCol,
WriteRawEvent *&  re 
) [virtual]

Definition at line 34 of file MucMcHitBuilder.cxx.

Referenced by RawDataMucMcHitCnv::createRep().

00035 {
00036 /*
00037 
00038   if (mucMcHitCol == NULL) {
00039     cout << "MucMcHitBuilder::pack cant get MucMcHitCol" << endl;
00040     return StatusCode::FAILURE;
00041   }
00042 
00043   vector<uint32_t> *mucReMcHitVec = new vector<uint32_t>;
00044   MucTruth_t m_MucTruth;
00045 
00046   MucMcHitCol::const_iterator pMucMcHit = mucMcHitCol->begin();
00047   for ( ; pMucMcHit != mucMcHitCol->end(); pMucMcHit++) {
00048     //make the MucTruth data
00049     makeMucTruth(pMucMcHit, m_MucTruth);
00050     //pack integers in mucTruth
00051     uint32_t helpVal = (m_MucTruth.trackIndex<<m_trackIndexIndex) & m_trackIndexMask;
00052     helpVal |= ((m_MucTruth.partId<<m_partIdIndex) & m_partIdMask);
00053     helpVal |= ((m_MucTruth.segId<<m_segIdIndex) & m_segIdMask);
00054     helpVal |= ((m_MucTruth.gapId<<m_gapIdIndex) & m_gapIdMask);
00055     helpVal |= ((m_MucTruth.stripId<<m_stripIdIndex) & m_stripIdMask);
00056     //fill the McHit vector
00057     mucReMcHitVec->push_back(helpVal);
00058     mucReMcHitVec->push_back(m_MucTruth.x);
00059     mucReMcHitVec->push_back(m_MucTruth.y);
00060     mucReMcHitVec->push_back(m_MucTruth.z);
00061     mucReMcHitVec->push_back(m_MucTruth.px);
00062     mucReMcHitVec->push_back(m_MucTruth.py);
00063     mucReMcHitVec->push_back(m_MucTruth.pz);
00064   }
00065 
00066   OfflineEventFormat::SubDetectorHeader sh(OfflineEventFormat::MUCTRUTH);
00067   SubRawEvent *sub = new SubRawEvent(sh, mucReMcHitVec);
00068   re->append(sub);
00069   */
00070 
00071   return StatusCode::SUCCESS;
00072 }

void MucMcHitBuilder::unPack ( vector< uint32_t >::const_iterator &  ,
vector< uint32_t >::const_iterator &  ,
MucTruth_t  
) [virtual]

Definition at line 13 of file MucMcHitBuilder.cxx.

References MucTruth_t::gapId, m_gapIdIndex, m_gapIdMask, m_partIdIndex, m_partIdMask, m_segIdIndex, m_segIdMask, m_stripIdIndex, m_stripIdMask, m_trackIndexIndex, m_trackIndexMask, MucTruth_t::partId, MucTruth_t::px, MucTruth_t::py, MucTruth_t::pz, MucTruth_t::segId, MucTruth_t::stripId, MucTruth_t::trackIndex, MucTruth_t::x, MucTruth_t::y, and MucTruth_t::z.

Referenced by RawDataMucMcHitCnv::createObj().

00015 {
00016   uint32_t helpVal = *(iter++); assert(iter != eiter);
00017   mt.x          = *(iter++); assert(iter != eiter);
00018   mt.y          = *(iter++); assert(iter != eiter);
00019   mt.z          = *(iter++); assert(iter != eiter);
00020   mt.px         = *(iter++); assert(iter != eiter);
00021   mt.py         = *(iter++); assert(iter != eiter);
00022   mt.pz         = *(iter++);
00023   
00024   mt.trackIndex = (helpVal&m_trackIndexMask) >> m_trackIndexIndex;
00025   mt.partId     = (helpVal&m_partIdMask) >> m_partIdIndex;
00026   mt.segId      = (helpVal&m_segIdMask) >> m_segIdIndex;
00027   mt.gapId      = (helpVal&m_gapIdMask) >> m_gapIdIndex;
00028   mt.stripId    = (helpVal&m_stripIdMask) >> m_stripIdIndex;
00029 
00030   return;
00031 }


Member Data Documentation

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(), TofBuilder::TofBuilder(), and TofMcHitBuilder::TofMcHitBuilder().

uint32_t MucMcHitBuilder::m_gapIdIndex [private]

Definition at line 36 of file MucMcHitBuilder.h.

Referenced by initialize(), and unPack().

uint32_t MucMcHitBuilder::m_gapIdMask [private]

Definition at line 37 of file MucMcHitBuilder.h.

Referenced by initialize(), and unPack().

uint32_t MucMcHitBuilder::m_partIdIndex [private]

Definition at line 36 of file MucMcHitBuilder.h.

Referenced by initialize(), and unPack().

uint32_t MucMcHitBuilder::m_partIdMask [private]

Definition at line 37 of file MucMcHitBuilder.h.

Referenced by initialize(), and unPack().

PropertyMgr MucMcHitBuilder::m_propMgr [private]

Reimplemented from Builder.

Definition at line 34 of file MucMcHitBuilder.h.

uint64_t MucMcHitBuilder::m_pxCoeff

Definition at line 43 of file MucMcHitBuilder.h.

Referenced by RawDataMucMcHitCnv::createObj(), and initialize().

uint64_t MucMcHitBuilder::m_pyCoeff

Definition at line 44 of file MucMcHitBuilder.h.

Referenced by RawDataMucMcHitCnv::createObj(), and initialize().

uint64_t MucMcHitBuilder::m_pzCoeff

Definition at line 45 of file MucMcHitBuilder.h.

Referenced by RawDataMucMcHitCnv::createObj(), and initialize().

uint32_t MucMcHitBuilder::m_segIdIndex [private]

Definition at line 36 of file MucMcHitBuilder.h.

Referenced by initialize(), and unPack().

uint32_t MucMcHitBuilder::m_segIdMask [private]

Definition at line 37 of file MucMcHitBuilder.h.

Referenced by initialize(), and unPack().

uint32_t Builder::m_status [protected, inherited]

Definition at line 49 of file Builder.h.

Referenced by Builder::append2event(), and Builder::Builder().

uint32_t MucMcHitBuilder::m_stripIdIndex [private]

Definition at line 36 of file MucMcHitBuilder.h.

Referenced by initialize(), and unPack().

uint32_t MucMcHitBuilder::m_stripIdMask [private]

Definition at line 37 of file MucMcHitBuilder.h.

Referenced by initialize(), and unPack().

TE2REMAP MucMcHitBuilder::m_te2reMap [private]

Definition at line 31 of file MucMcHitBuilder.h.

uint32_t MucMcHitBuilder::m_trackIndexIndex [private]

Definition at line 36 of file MucMcHitBuilder.h.

Referenced by initialize(), and unPack().

uint32_t MucMcHitBuilder::m_trackIndexMask [private]

Definition at line 37 of file MucMcHitBuilder.h.

Referenced by initialize(), and unPack().

uint64_t MucMcHitBuilder::m_xCoeff

Definition at line 40 of file MucMcHitBuilder.h.

Referenced by RawDataMucMcHitCnv::createObj(), and initialize().

uint64_t MucMcHitBuilder::m_yCoeff

Definition at line 41 of file MucMcHitBuilder.h.

Referenced by RawDataMucMcHitCnv::createObj(), and initialize().

uint64_t MucMcHitBuilder::m_zCoeff

Definition at line 42 of file MucMcHitBuilder.h.

Referenced by RawDataMucMcHitCnv::createObj(), and initialize().

vector<int> MucMcHitBuilder::re2te [private]

Definition at line 33 of file MucMcHitBuilder.h.


Generated on Tue Nov 29 23:20:29 2016 for BOSS_7.0.2 by  doxygen 1.4.7