#include "evt/Event.hh" #include #include #include #include //_____________________________________________________________________________ Int_t StntupleInitClcDataBlock(TStnDataBlock* block, AbsEvent* event, int mode) { // initialize CLC data block with the `event' data 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; TClcDataBlock* clc_block = (TClcDataBlock*) block; clc_block->Clear(); TRYBOS_BANK *clad, *cltd; int _nIsolated = 0; int tmp[96]; clad = TRYBOS_BANK::Find(event,"CLAD"); if (clad) { for (int i=0; ifAdcData[i] = clad->sw(5+2*i); } //----------------------------------------------------------------------------- // check if channel is isolated: loop over channels and identify neighborhs //----------------------------------------------------------------------------- for (int i=0; iChannel(i); for ( int ich = 0; ich < nin; ich++) { // thersholds for isolation are hardcoded for now // probably could change to set it trhough talk to // in the future if (! clc_block->fAdcData[i] > 0 || clc_block->fAdcData[ind[ich]] > 100) { // channel is not isolated // break out from loop ch->SetIsolated(0); break; } } // if it is isolated put it in temporary structure if ( ch->IsIsolated()) { tmp[_nIsolated] = i; _nIsolated++; } } } //----------------------------------------------------------------------------- // put it in the resizable container later will be stored in stntuple //----------------------------------------------------------------------------- clc_block->fListOfIsolatedChannels.Reserve(_nIsolated); clc_block->fListOfIsolatedChannels.Append(tmp,_nIsolated); cltd = TRYBOS_BANK::Find(event,"CLTD"); StntupleUnpackTdcBank(cltd,clc_block->fTdcData); clc_block->InitTdcChannels(); clc_block->f_RunNumber = rn_number; clc_block->f_EventNumber = ev_number; return 0; }