68 for (
int ientry = 0; ientry < digList.size(); ientry++) {
69 auto& buffEntry = mTimedDigitsFuture[ientry];
70 auto& dig = digList.at(ientry);
72 auto towerEntry = buffEntry.mDigitMap->find(towerID);
73 if (towerEntry == buffEntry.mDigitMap->end()) {
74 towerEntry = buffEntry.mDigitMap->insert(std::pair<
int, std::list<o2::emcal::LabeledDigit>>(towerID, std::list<o2::emcal::LabeledDigit>())).first;
76 towerEntry->second.push_back(dig);
87 unsigned long eventTime = record.
getTimeNS();
90 int sampleDifference = (eventTime - mTriggerTime) / 100 - (mLastEventTime - mTriggerTime) / 100;
92 for (
int idel = 0; idel < sampleDifference; idel++) {
95 if (!mTimedDigitsFuture.front().mRecordMode) {
101 mTimedDigitsPast.push_back(mTimedDigitsFuture.front());
102 mTimedDigitsFuture.pop_front();
105 if (mTimedDigitsPast.size() > mBufferSize) {
106 mTimedDigitsPast.pop_front();
110 if (mTimedDigitsPast.back().mEndWindow) {
114 for (
auto& digitTimebin : mTimedDigitsPast) {
115 if (digitTimebin.mTriggerColl) {
116 triggerNode = digitTimebin;
128 if (trigger && ((eventTime - mTriggerTime) >= (mLiveTime + mBusyTime) || mFirstEvent)) {
129 LOG(
debug) <<
"Trigger received and accepted";
130 mTriggerTime = eventTime;
131 mTimedDigitsFuture.front().mTriggerColl =
true;
132 mTimedDigitsFuture.front().mInterRecord = record;
133 mTimedDigitsFuture[(mLiveTime / 100) - 1].mEndWindow =
true;
135 long timeStamp = (eventTime / 100) * 100;
136 for (
auto& iNode : mTimedDigitsFuture) {
137 long diff = (timeStamp - eventTime);
138 if (TMath::Abs(diff) > mLiveTime) {
141 iNode.mRecordMode =
true;
147 if ((eventTime - mTriggerTime) >= (mLiveTime + mBusyTime - mPreTriggerTime) || mFirstEvent) {
148 LOG(
debug) <<
"Pre-trigger collision";
149 long timeStamp = (eventTime / 100) * 100;
150 for (
auto& iNode : mTimedDigitsFuture) {
151 long diff = (timeStamp - eventTime);
152 if (TMath::Abs(diff) > mLiveTime) {
155 iNode.mRecordMode =
true;
160 mLastEventTime = eventTime;
162 mPhase = (record.
bc + mSwapPhase) % 4;
172 for (
unsigned int ibin = 0; ibin < mBufferSize; ibin++) {
174 if (!mTimedDigitsFuture.front().mRecordMode || mTimedDigitsFuture.front().mDigitMap->empty()) {
178 mTimedDigitsPast.push_back(mTimedDigitsFuture.front());
179 mTimedDigitsFuture.pop_front();
181 if (mTimedDigitsPast.size() > mBufferSize) {
182 mTimedDigitsPast.pop_front();
185 if (mTimedDigitsPast.back().mEndWindow) {
189 for (
auto& digitTimebin : mTimedDigitsPast) {
190 if (digitTimebin.mTriggerColl) {
191 triggerNode = digitTimebin;
void fill(std::deque< o2::emcal::DigitTimebin > &digitlist, o2::InteractionRecord record)
Fill all the containers, digits, labels, and trigger records.