//----------------------------------------------------------------------------- // Dec 26 2000 P.Murat: initialization of the STNTUPLE BMU block //----------------------------------------------------------------------------- #include #include #include #include #include "StorableBanks/ConstGrandBankIterTDC.hh" #include "StorableBanks/ConstBankIterTDC.hh" #include "RawDataBanks/BMUD_StorableBank.hh" #include #include #include #include //_____________________________________________________________________________ Int_t StntupleInitBmuDataBlock(TStnDataBlock* block, AbsEvent* event, int mode) { // initialize BMU data block with the `event' data int ierror; int 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; TBmuDataBlock* data = (TBmuDataBlock*) block; data->Clear(); // Loop over the hits in the D bank EventRecord::ConstIterator bmud_iter(event, "BMUD_StorableBank"); if (bmud_iter.is_valid()) { ConstHandle handle(bmud_iter); const BMUD_StorableBank* bmud = handle.operator->(); for (ConstGrandBankIterTDC dhit(handle); dhit.is_valid(); ++dhit) { TBmudHit* hit = data->NewBmudHit(); bmud->get_geometric_indices(dhit, hit->fSideNumber, hit->fWedgeNumber, hit->fLayerNumber, hit->fStackNumber, ierror); hit->fLeadingEdge = bmud->get_start(dhit); hit->fWidth = bmud->get_width(dhit); hit->fL2Accept = bmud->get_L2_accept(dhit); } } // E-bank hits StorableObject::SelectByClassName class_name("MuonXZHitColl"); StorableObject::SelectByDescription description("BMUHits"); EventRecord::ConstIterator iter(event, class_name && description); if (iter.is_valid()) { ConstHandle hit_coll(iter); int ib, iw, il; MuonXZHitColl::collection_type bmue = hit_coll->contents(); for (MuonXZHitColl::const_digi_iterator di = bmue.begin(); di != bmue.end(); di++) { for (MuonXZHitColl::const_iterator ken = di->second.begin(); ken != di->second.end(); ken++) { TBmueHit* hit = data->NewBmueHit(); hit->Z() = ken->getZDistance(); hit->TDCTime() = ken->getTDCTime(); hit->DriftDistance() = ken->getDriftDistance(); 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(); } } } data->f_RunNumber = ev_number; data->f_EventNumber = rn_number; return 0; }