#include #include #include #include #include #include #include #include #include #include Int_t StntupleUnpackTL1DBank(TRYBOS_BANK* bank, TTl1d* tl1d); //_____________________________________________________________________________ Int_t StntupleInitTrigSimBlock(TStnDataBlock* block, AbsEvent* Evt, int mode) { // assume that the trig sim data are created by "MC" process // return -1, if bank doesn't exist, 0, if everything is OK // ** no, I don't know yet how this block should look like, // leave it dummy for the moment // TTl3d* tl3d; TStnTriggerBlock* trig_block = (TStnTriggerBlock*) block; trig_block->Clear(); EventRecord::ConstIterator ci; //----------------------------------------------------------------------------- // TFRD //----------------------------------------------------------------------------- ci = StntupleGetIterator(Evt,"TFRD_StorableBank","","Simulated Trigger Bank"); if (ci.is_valid()) { TRYBOS_BANK* tfrd = (TRYBOS_BANK*) ci.operator->(); memcpy(trig_block->Tfrd()->Data(),tfrd->data()+6,11*sizeof(int)); } //----------------------------------------------------------------------------- // simulated TL1D //----------------------------------------------------------------------------- ci = StntupleGetIterator(Evt,"TL1D_StorableBank","","Simulated Trigger Bank"); if (ci.is_valid()) { TRYBOS_BANK* tl1d = (TRYBOS_BANK*) ci.operator->(); StntupleUnpackTL1DBank(tl1d,trig_block->Tl1d()); } //----------------------------------------------------------------------------- // simulated TL2D //----------------------------------------------------------------------------- ci = StntupleGetIterator(Evt,"TL2D_StorableBank","","Simulated Trigger Bank"); if (ci.is_valid()) { TRYBOS_BANK* tl2d_bank = (TRYBOS_BANK*) ci.operator->(); TTl2d* tl2d = trig_block->Tl2d(); TStnArrayI* data = tl2d->Data(); int nw = tl2d_bank->data_size()-3; // assuming 'data' is empty data->Append(tl2d_bank->data()+3,nw); int version = tl2d_bank->bank_version(); tl2d->SetVersion(version); if (version == 0) { //----------------------------------------------------------------------------- // always 2 words per cluster, 4 or 6 words with L2 trigger bits //----------------------------------------------------------------------------- int nbitwords = (tl2d->NL2TriggerWords()-tl2d->NL2Triggers()-1)/2 ; tl2d->SetNL2TriggerBitWords(nbitwords); tl2d->SetL2ClusterSize(2); } else if (version == 1) { //----------------------------------------------------------------------------- // 3 words per cluster, always 6 words with L2 trigger bits //----------------------------------------------------------------------------- tl2d->SetNL2TriggerBitWords(6); tl2d->SetL2ClusterSize(3); } else { // undefined } } //----------------------------------------------------------------------------- // simulated TCMD //----------------------------------------------------------------------------- ci = StntupleGetIterator(Evt,"TCMD_StorableBank","","Simulated Trigger Bank"); if (ci.is_valid()) { TRYBOS_BANK* tcmd = (TRYBOS_BANK*) ci.operator->(); TStnArrayI* data = trig_block->Tcmd()->Data(); int nw = tcmd->data_size()-3; // assuming 'data' is empty data->Append(tcmd->data()+3,nw); } return 0; }