From: <ro...@us...> - 2014-12-05 12:25:20
|
Revision: 2221 http://sourceforge.net/p/nsclspectcl/code/2221 Author: ron-fox Date: 2014-12-05 12:25:12 +0000 (Fri, 05 Dec 2014) Log Message: ----------- * Comment the sync loss correction coded in the event builder better. * Small cleanups in the multiplicity code: - Correct the timing for the output data offset/end times. - Remove dead code/constants. Modified Paths: -------------- branches/LLNLMadcChainSpecTcl-mtdcdev/CEventBuilder.cpp branches/LLNLMadcChainSpecTcl-mtdcdev/CMultiplicity.cpp Modified: branches/LLNLMadcChainSpecTcl-mtdcdev/CEventBuilder.cpp =================================================================== --- branches/LLNLMadcChainSpecTcl-mtdcdev/CEventBuilder.cpp 2014-12-05 11:33:21 UTC (rev 2220) +++ branches/LLNLMadcChainSpecTcl-mtdcdev/CEventBuilder.cpp 2014-12-05 12:25:12 UTC (rev 2221) @@ -389,15 +389,19 @@ AdcQueue& e(m_adcHits[equeue.first][equeue.second]); AdcQueue& tac(m_adcHits[tacqueue.first][tacqueue.second]); - // If the fronts match just drop the front elements and try again later: + // If the fronts match just drop the front elements and try again later. + // This happens if, e.g. an MADC event sneaks in due to a threshold that's too low. + // and therefore does not have a TDC event. if (e.front().s_eventCorr == tac.front().s_eventCorr) { e.pop_front(); tac.pop_front(); return; } - // NO match in the front so drop oldest elements until we can get a match or one of the queues - // emptied: + // NO match in the front so drop oldest element between the TAC/Q until we can get a + // match or one of the queues + // emptied: This should only happen if e.g. an event sneaks into one of the MADC's + // but not the other again, most likely due to threshold problems. while(!e.empty() && !tac.empty()) { if(e.front().s_eventCorr == tac.front().s_eventCorr) return; // back to matching. Modified: branches/LLNLMadcChainSpecTcl-mtdcdev/CMultiplicity.cpp =================================================================== --- branches/LLNLMadcChainSpecTcl-mtdcdev/CMultiplicity.cpp 2014-12-05 11:33:21 UTC (rev 2220) +++ branches/LLNLMadcChainSpecTcl-mtdcdev/CMultiplicity.cpp 2014-12-05 12:25:12 UTC (rev 2221) @@ -323,7 +323,6 @@ return kfFALSE; // Abort event processing. } - double nsPerTick = 1000.0*1000.0/m_frequency; // (1000usec/ms, 1000ns/usec)/ms^-1 -> ns. double highPStampNs = highPTimestamp / 1000.0; /// 1000ps/ns. double timestamp = rawTimestamp; @@ -337,7 +336,6 @@ // Figure out the cycle and bin: - // double fullBin = (timestamp*nsPerTick)/m_minTime; double fullBin = (highPStampNs)/m_minTime; unsigned cycle = fullBin/m_bins; unsigned bin = fullBin - (cycle*m_bins); @@ -858,15 +856,15 @@ double CMultiplicity::startDelay() { - double firstTimestamp = 1.0e06; // Likely to be less than this. + double firstTimestamp = 1.0e20; // Likely to be less than this. for (int i =0; i < m_fragmentQueues.size(); i++) { double aFirst = m_fragmentQueues[i].s_firstTimestamp; if (aFirst < firstTimestamp) firstTimestamp = aFirst; } - double startDelayus = firstTimestamp/m_frequency; // Milliseconds. - startDelayus *= 1000; // Microseconds. + double startDelayus = firstTimestamp/(1000); // Microseconds + return startDelayus; } /** @@ -882,8 +880,8 @@ double aLast = m_fragmentQueues[i].s_lastTimestamp; if (aLast > lasttime) lasttime = aLast; } - - lasttime = (lasttime /m_frequency) * 1000; // last time in usec. + // lasttime is in nanoseconds at this point + lasttime = (lasttime / 1000); // last time in usec. return (lasttime)/1.0e6; // Result in seconds. } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |