//----------------------------------------------------------------------------- // Dec 26 2000 P.Murat: initialization of the STNTUPLE CMU block //----------------------------------------------------------------------------- #include #include #include #include #include "StorableBanks/ConstGrandBankIterTDC.hh" #include "StorableBanks/ConstBankIterTDC.hh" #include "RawDataBanks/CMUD_StorableBank.hh" #include #include #include #include #include #include //_____________________________________________________________________________ Int_t StntupleInitCmuDataBlock(TStnDataBlock* block, AbsEvent* event, int mode) { // initialize CMU 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; TCmuDataBlock* data = (TCmuDataBlock*) block; data->Clear(); // Loop over the hits in the D bank EventRecord::ConstIterator cmud_iter(event, "CMUD_StorableBank"); if (cmud_iter.is_valid()) { ConstHandle handle(cmud_iter); const CMUD_StorableBank* cmud = handle.operator->(); for (ConstGrandBankIterTDC dhit(handle); dhit.is_valid(); ++dhit) { TCmudHit* hit = data->NewCmudHit(); cmud->get_geometric_indices(dhit, hit->fSideNumber, hit->fWedgeNumber, hit->fLayerNumber, hit->fStackNumber, ierror); hit->fLeadingEdge = cmud->get_start(dhit); hit->fWidth = cmud->get_width(dhit); hit->fL2Accept = cmud->get_L2_accept(dhit); } } // E-bank hits StorableObject::SelectByClassName class_name("MuonXZHitColl"); StorableObject::SelectByDescription description("CMUHits"); EventRecord::ConstIterator iter(event, class_name && description); if (iter.is_valid()) { ConstHandle hit_coll(iter); int ib, iw, il; MuonXZHitColl::collection_type cmue = hit_coll->contents(); for (MuonXZHitColl::const_digi_iterator di = cmue.begin(); di != cmue.end(); di++) { for (MuonXZHitColl::const_iterator ken = di->second.begin(); ken != di->second.end(); ken++) { TCmueHit* hit = data->NewCmueHit(); hit->Z() = ken->getZDistance(); 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.getStack()/2; hit->ChamberNumber() = dc.getStack()%2; } } } data->f_RunNumber = ev_number; data->f_EventNumber = rn_number; return 0; }