#include #include #include #include #include "Trybos/TRY_Bank_Number.hh" #include "RawDataBanks/CP2D_StorableBank.hh" #include "CalorObjects/CP2Q_Storable.hh" #include #include #include //_____________________________________________________________________________ Int_t StntupleInitCp2DataBlock(TStnDataBlock* block, AbsEvent* event, int mode) { int ev_number, rn_number; ev_number = AbsEnv::instance()->trigNumber(); rn_number = AbsEnv::instance()->runNumber(); if (block->Initialized(ev_number,rn_number)) return 0; TCp2DataBlock* data = (TCp2DataBlock*) block; data->Clear(); // two forms of data, D is raw, Q bank is corrected EventRecord::ConstIterator qIter(event,"CP2Q_Storable"); EventRecord::ConstIterator rawIter(event,"CP2D_StorableBank"); // use CP2Q if available, CP2D otherwise if (qIter.is_valid()) { ConstHandle chCP2Q(qIter); CP2Q_Storable::const_iterator ciCp2q; for (ciCp2q = chCP2Q->contents().begin(); ciCp2q != chCP2Q->contents().end(); ++ciCp2q) { int padNo = ciCp2q->padNo(); int module = ciCp2q->module(); int energy = ciCp2q->energy(); int i_ew = ciCp2q->we(); data->fNHitPads[i_ew][module]++; data->fPadData[i_ew][module][padNo] = energy; } } else if(rawIter.is_valid() ) { ConstHandle cp2dBank(rawIter); for (CP2D_StorableBank::ConstGrandBankIter data_iter(cp2dBank); data_iter.is_valid(); data_iter++) { // int blockind = data_iter.block_index(); int padNo = cp2dBank->get_pad(data_iter); int module = cp2dBank->get_module(data_iter); int energy = cp2dBank->get_data(data_iter); int i_ew = cp2dBank->get_we(data_iter); //if(energy>=50) { data->fNHitPads[i_ew][module]++; data->fPadData[i_ew][module][padNo] = energy; //} } // set event and run numbers to // mark block as initialized data->f_RunNumber = ev_number; data->f_EventNumber = rn_number; return 0; } else { return 1; } } //_____________________________________________________________________________