/////////////////////////////////////////////////////////////////////////////// // description of BSU RAW data block /////////////////////////////////////////////////////////////////////////////// #include #include #include #include "StorableBanks/ConstGrandBankIterTDC.hh" #include "StorableBanks/ConstBankIterTDC.hh" #include "RawDataBanks/BSUD_StorableBank.hh" #include #include #include #include //_____________________________________________________________________________ Int_t StntupleInitBsuDataBlock(TStnDataBlock* block, AbsEvent* event, int mode) { // initialize BSU data block with the `event' data, `mode' is not used so far int ierror, ev_number, rn_number; // check if block has already been // initialized ev_number = AbsEnv::instance()->trigNumber(); rn_number = AbsEnv::instance()->runNumber(); if (block->Initialized(ev_number,rn_number)) return 0; TBsuDataBlock* data = (TBsuDataBlock*) block; data->Clear(); // Loop over the hits in the D bank EventRecord::ConstIterator bsud_iter(event, "BSUD_StorableBank"); ConstHandle handle(bsud_iter); const BSUD_StorableBank* bsud = handle.operator->(); for (ConstGrandBankIterTDC dhit(handle); dhit.is_valid(); ++dhit) { TBsudHit* hit = data->NewBsudHit(); bsud->get_geometric_indices(dhit, hit->fSideNumber, hit->fWedgeNumber, hit->fLayerNumber, hit->fCounterNumber, ierror); hit->fLeadingEdge = bsud->get_start(dhit); hit->fWidth = bsud->get_width(dhit); } // E-bank hits StorableObject::SelectByClassName class_name("MuonTHitColl"); StorableObject::SelectByDescription description("BSUHits"); EventRecord::ConstIterator iter(event, class_name && description); if (iter.is_valid()) { ConstHandle hit_coll(iter); int ib, iw, il; MuonTHitColl::collection_type bsue = hit_coll->contents(); for (MuonTHitColl::const_digi_iterator di = bsue.begin(); di != bsue.end(); di++) { for (MuonTHitColl::const_iterator ken = di->second.begin(); ken != di->second.end(); ken++) { TBsueHit* hit = data->NewBsueHit(); hit->TDCTime() = ken->getTime(); MuonDigiCode dc = ken->getCode(); ib = dc.getSide(); hit->SideNumber () = ib; iw = dc.getWedge(); hit->WedgeNumber () = iw; il = dc.getLayer(); hit->LayerNumber () = il; hit->StackNumber () = dc.getBMUStack(); hit->McId () = ken->getMcId(); } } } // set event and run numbers data->f_RunNumber = ev_number; data->f_EventNumber = rn_number; return 0; }