/////////////////////////////////////////////////////////////////////////////// // description of TSU RAW data block /////////////////////////////////////////////////////////////////////////////// #include #include #include #include "StorableBanks/ConstGrandBankIterTDC.hh" #include "StorableBanks/ConstBankIterTDC.hh" #include "RawDataBanks/TSUD_StorableBank.hh" #include #include #include #include //_____________________________________________________________________________ Int_t StntupleInitTsuDataBlock(TStnDataBlock* block, AbsEvent* event, int mode) { // initialize TSU 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; TTsuDataBlock* data = (TTsuDataBlock*) block; data->Clear(); // Loop over the hits in the D bank EventRecord::ConstIterator tsud_iter(event, "TSUD_StorableBank"); ConstHandle handle(tsud_iter); const TSUD_StorableBank* tsud = handle.operator->(); for (ConstGrandBankIterTDC dhit(handle); dhit.is_valid(); ++dhit) { TTsudHit* hit = data->NewTsudHit(); tsud->get_geometric_indices(dhit, hit->fSideNumber, hit->fWedgeNumber, hit->fLayerNumber, hit->fCounterNumber, ierror); hit->fLeadingEdge = tsud->get_start(dhit); hit->fWidth = tsud->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 is, 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++) { MuonDigiCode dc = ken->getCode(); is = dc.getSystem(); if(is != MuonDigiCode::TSU) continue; TTsueHit* hit = data->NewTsueHit(); hit->TDCTime() = ken->getTime(); 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; }