Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions 7 Detectors/ZDC/calib/include/ZDCCalib/WaveformCalibData.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,18 @@ struct WaveformCalibData {
inline void setFirstValid(int isig, int ipos)
{
if (ipos > mWave[isig].mFirstValid) {
#ifdef O2_ZDC_WAVEFORMCALIB_DEBUG
printf("WaveformCalibChData::%s isig=%-2d mFirstValid %5d -> %5d\n", __func__, isig, mWave[isig].mFirstValid, ipos);
#endif
mWave[isig].mFirstValid = ipos;
}
}
inline void setLastValid(int isig, int ipos)
{
if (ipos < mWave[isig].mLastValid) {
#ifdef O2_ZDC_WAVEFORMCALIB_DEBUG
printf("WaveformCalibChData::%s isig=%-2d mLastValid %5d -> %5d\n", __func__, isig, mWave[isig].mLastValid, ipos);
#endif
mWave[isig].mLastValid = ipos;
}
}
Expand All @@ -77,6 +83,7 @@ struct WaveformCalibData {
int getLastValid(int is) const;
void print() const;
void clear();
void clearWaveforms();
void setCreationTime(uint64_t ctime);
void setN(int n);
int saveDebugHistos(const std::string fn);
Expand Down
5 changes: 3 additions & 2 deletions 5 Detectors/ZDC/calib/include/ZDCCalib/WaveformCalibEPN.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class WaveformCalibEPN
public:
WaveformCalibEPN() = default;
int init();
void clear(int ih = -1);
void clear();
int process(const gsl::span<const o2::zdc::BCRecData>& bcrec,
const gsl::span<const o2::zdc::ZDCEnergy>& energy,
const gsl::span<const o2::zdc::ZDCTDCData>& tdc,
Expand All @@ -54,7 +54,7 @@ class WaveformCalibEPN

int mFirst = 0;
int mLast = 0;
int mN = 1;
int mN = 10;

void configure(int ifirst, int ilast)
{
Expand All @@ -64,6 +64,7 @@ class WaveformCalibEPN
mFirst = ifirst;
mLast = ilast;
mN = ilast - ifirst + 1;
LOG(info) << "WaveformCalibEPN::" << __func__ << " mN=" << mN << "[" << mFirst << ":" << mLast << "]";
}

WaveformCalibQueue mQueue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ struct WaveformCalibQueue {
int mNP = 0; // Number of interpolated points in waveform
int mTimeLow[NChannels]; /// Cut on position difference low
int mTimeHigh[NChannels]; /// Cut on position difference high
int mVerbosity = 0;

const WaveformCalibConfig* mCfg = nullptr;

Expand Down
4 changes: 2 additions & 2 deletions 4 Detectors/ZDC/calib/src/BaselineCalibConfig.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,6 @@ void BaselineCalibConfig::setCuts(int low, int high)

void BaselineCalibConfig::setCuts(int isig, int low, int high)
{
cutHigh[isig] = low;
cutLow[isig] = high;
cutLow[isig] = low;
cutHigh[isig] = high;
}
4 changes: 2 additions & 2 deletions 4 Detectors/ZDC/calib/src/InterCalibConfig.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ void InterCalibConfig::setCuts(double low, double high)

void InterCalibConfig::setCuts(int ih, double low, double high)
{
cutHigh[ih] = low;
cutLow[ih] = high;
cutLow[ih] = low;
cutHigh[ih] = high;
}

void InterCalibConfig::setBinning1D(int nb, double amin, double amax)
Expand Down
4 changes: 2 additions & 2 deletions 4 Detectors/ZDC/calib/src/TDCCalibConfig.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ void TDCCalibConfig::setCuts(double low, double high)

void TDCCalibConfig::setCuts(int ih, double low, double high)
{
cutHigh[ih] = low;
cutLow[ih] = high;
cutLow[ih] = low;
cutHigh[ih] = high;
}

void TDCCalibConfig::setBinning1D(int nb, double amin, double amax)
Expand Down
8 changes: 4 additions & 4 deletions 8 Detectors/ZDC/calib/src/WaveformCalibConfig.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ WaveformCalibConfig::WaveformCalibConfig()
cutHigh[isig] = std::numeric_limits<float>::infinity();
}
for (int itdc = 0; itdc < NTDCChannels; itdc++) {
cutTimeLow[itdc] = -2.5;
cutTimeHigh[itdc] = 2.5;
cutTimeLow[itdc] = -1.25;
cutTimeHigh[itdc] = 1.25;
}
}

Expand Down Expand Up @@ -132,8 +132,8 @@ void WaveformCalibConfig::setCuts(double low, double high)

void WaveformCalibConfig::setCuts(int isig, double low, double high)
{
cutHigh[isig] = low;
cutLow[isig] = high;
cutLow[isig] = low;
cutHigh[isig] = high;
}

void WaveformCalibConfig::setTimeCuts(double low, double high)
Expand Down
26 changes: 22 additions & 4 deletions 26 Detectors/ZDC/calib/src/WaveformCalibData.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,15 @@ WaveformCalibChData& WaveformCalibChData::operator+=(const WaveformCalibChData&
{
if (other.mEntries > 0) {
if (other.mFirstValid > mFirstValid) {
#ifdef O2_ZDC_WAVEFORMCALIB_DEBUG
printf("WaveformCalibChData::+= mFirstValid %5d -> %5d\n", mFirstValid, other.mFirstValid);
#endif
mFirstValid = other.mFirstValid;
}
if (other.mLastValid < mLastValid) {
#ifdef O2_ZDC_WAVEFORMCALIB_DEBUG
printf("WaveformCalibChData::+= mLastValid %5d -> %5d\n", mLastValid, other.mLastValid);
#endif
mLastValid = other.mLastValid;
}
mEntries = mEntries + other.mEntries;
Expand Down Expand Up @@ -130,23 +136,23 @@ int WaveformCalibChData::getLastValid() const
//______________________________________________________________________________
void WaveformCalibData::setN(int n)
{
if (n >= 0 && n < NBT) {
if (n > 0 && n <= NBT) {
mN = n;
for (int is = 0; is < NChannels; is++) {
mWave[is].setN(n);
}
} else {
LOG(fatal) << "WaveformCalibData " << __func__ << " wrong stored b.c. setting " << n << " not in range [0:" << NBT << "]";
LOG(warn) << "WaveformCalibData " << __func__ << " wrong stored b.c. setting " << n << " not in range [1:" << NBT << "]";
}
}

void WaveformCalibChData::setN(int n)
{
if (n >= 0 && n < NBT) {
if (n > 0 && n <= NBT) {
mFirstValid = 0;
mLastValid = n * NTimeBinsPerBC * TSN - 1;
} else {
LOG(fatal) << "WaveformCalibChData " << __func__ << " wrong stored b.c. setting " << n << " not in range [0:" << NBT << "]";
LOG(warn) << "WaveformCalibChData " << __func__ << " wrong stored b.c. setting " << n << " not in range [1:" << NBT << "]";
}
}

Expand All @@ -172,6 +178,8 @@ int WaveformCalibData::saveDebugHistos(const std::string fn)
}
h.SetEntries(mWave[is].mEntries);
h.Write("", TObject::kOverwrite);
} else {
LOG(warn) << "WaveformCalibData " << __func__ << " waveform for ch " << is << " has too few entries: " << mWave[is].mEntries;
}
}
f->Close();
Expand All @@ -191,6 +199,16 @@ void WaveformCalibData::clear()
}
}

//______________________________________________________________________________
void WaveformCalibData::clearWaveforms()
{
mCTimeBeg = 0;
mCTimeEnd = 0;
for (int32_t is = 0; is < NChannels; is++) {
mWave[is].clear();
}
}

void WaveformCalibChData::clear()
{
mEntries = 0;
Expand Down
19 changes: 16 additions & 3 deletions 19 Detectors/ZDC/calib/src/WaveformCalibEPN.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -45,17 +45,29 @@ int WaveformCalibEPN::init()
if (mVerbosity > DbgZero) {
mQueue.printConf();
}
mQueue.mVerbosity = mVerbosity;

// number of bins
mNBin = cfg->nbun * TSN;
mNBin = cfg->nbun * TSN * NTimeBinsPerBC;
mFirst = cfg->ibeg;
mLast = cfg->iend;
mData.setN(cfg->nbun);
mData.mPeak = mQueue.mPeak;
LOGF(info, "o2::zdc::WaveformCalibEPN::%s mNBin=%d mFirst=%d mLast=%d mN=%d mPeak=%d", __func__, mNBin, mFirst, mLast, cfg->nbun, mData.mPeak);
mInitDone = true;
return 0;
}

void WaveformCalibEPN::clear()
{
#ifdef O2_ZDC_WAVEFORMCALIB_DEBUG
LOG(info) << "o2::zdc::WaveformCalibEPN::" << __func__;
#endif
// mQueue.clear();
mData.clearWaveforms();
mData.setN(mN);
}

//______________________________________________________________________________
int WaveformCalibEPN::process(const gsl::span<const o2::zdc::BCRecData>& RecBC,
const gsl::span<const o2::zdc::ZDCEnergy>& Energy,
Expand Down Expand Up @@ -111,9 +123,10 @@ int WaveformCalibEPN::endOfRun()
LOGF(info, "WaveformCalibEPN::endOfRun ts (%llu:%llu)", mData.mCTimeBeg, mData.mCTimeEnd);
for (int is = 0; is < NChannels; is++) {
if (mData.getEntries(is) > 0) {
LOGF(info, "Waveform %2d %s with %10d events and cuts AMP:(%g:%g) TDC:(%g:%g) Valid:[%d:%d:%d]", is, ChannelNames[is].data(),
int itdc = SignalTDC[is];
LOGF(info, "Waveform %2d %s with %10d events and cuts AMP:(%g:%g) TDC:%d:(%g:%g) Valid:[%d:%d:%d]", is, ChannelNames[is].data(),
mData.getEntries(is), mConfig->cutLow[is], mConfig->cutHigh[is],
mConfig->cutTimeLow[is], mConfig->cutTimeHigh[is],
itdc, mConfig->cutTimeLow[itdc], mConfig->cutTimeHigh[itdc],
mData.getFirstValid(is), mData.mPeak, mData.getLastValid(is));
}
}
Expand Down
3 changes: 3 additions & 0 deletions 3 Detectors/ZDC/calib/src/WaveformCalibEPNSpec.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -88,10 +88,13 @@ void WaveformCalibEPNSpec::run(ProcessingContext& pc)
mTimer.Stop();
mTimer.Reset();
mTimer.Start(false);
} else {
mWorker.clear();
}

auto creationTime = pc.services().get<o2::framework::TimingInfo>().creation; // approximate time in ms
WaveformCalibData& data = mWorker.getData();

data.setCreationTime(creationTime);

auto bcrec = pc.inputs().get<gsl::span<o2::zdc::BCRecData>>("bcrec");
Expand Down
71 changes: 55 additions & 16 deletions 71 Detectors/ZDC/calib/src/WaveformCalibQueue.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@ uint32_t WaveformCalibQueue::append(RecEventFlat& ev)
auto& last = mIR.back();
// If BC are not consecutive, clear queue
if (toadd.differenceInBC(last) > 1) {
#ifdef O2_ZDC_WAVEFORMCALIB_DEBUG
LOG(info) << "WaveformCalibQueue::" << __func__ << " gap detected. Clearing " << mIR.size() << " bc";
#endif
clear();
}
// If queue is not empty and is too long remove first element
Expand All @@ -61,6 +64,9 @@ uint32_t WaveformCalibQueue::append(RecEventFlat& ev)
// If BC are consecutive or cleared queue append element
appendEv(ev);
if (mIR.size() == mN) {
#ifdef O2_ZDC_WAVEFORMCALIB_DEBUG
LOG(info) << "WaveformCalibQueue::" << __func__ << " processing " << mIR.size() << " bcs";
#endif
uint32_t mask = 0;
for (int32_t itdc = 0; itdc < NTDCChannels; itdc++) {
// Check which channels satisfy the condition on TDC
Expand Down Expand Up @@ -92,6 +98,9 @@ uint32_t WaveformCalibQueue::append(RecEventFlat& ev)
}
return mask;
} else {
// #ifdef O2_ZDC_WAVEFORMCALIB_DEBUG
// LOG(info) << "WaveformCalibQueue::" << __func__ << " IR size = " << mIR.size() << " != " << mN;
// #endif
return 0;
}
}
Expand Down Expand Up @@ -182,7 +191,7 @@ int WaveformCalibQueue::hasData(int isig, const gsl::span<const o2::zdc::ZDCWave
} else {
int ipos = NTimeBinsPerBC * TSN * ipkb + ipk;
#ifdef O2_ZDC_WAVEFORMCALIB_DEBUG
LOG(info) << "WaveformCalibConfig::" << __func__ << " isig = " << isig << " ipkb " << ipkb << " ipk " << ipk << " min " << min;
LOG(info) << "WaveformCalibQueue::" << __func__ << " isig = " << isig << " ipkb " << ipkb << " ipk " << ipk << " min " << min;
#endif
return ipos;
}
Expand All @@ -199,9 +208,9 @@ int WaveformCalibQueue::addData(int isig, const gsl::span<const o2::zdc::ZDCWave
bool hasInfos = false;
for (int ib = 0; ib < mN; ib++) {
bool ifound = false;
#ifdef O2_ZDC_WAVEFORMCALIB_DEBUG
LOG(info) << "mNW[" << ib << "] = " << mNW[ib] << " mFirstW = " << mFirstW[ib];
#endif
// #ifdef O2_ZDC_WAVEFORMCALIB_DEBUG
// LOG(info) << "mNW[" << ib << "/" << mN << "] = " << mNW[ib] << " mFirstW = " << mFirstW[ib];
// #endif
if (mHasInfos[isig][ib] || mHasInfos[TDCSignal[SignalTDC[isig]]][ib]) {
#ifdef O2_ZDC_WAVEFORMCALIB_DEBUG
LOG(info) << "isig=" << isig << " ib=" << ib << " tdcid=" << SignalTDC[isig] << " tdc_sig=" << TDCSignal[SignalTDC[isig]] << " " << mHasInfos[isig][ib] << " " << mHasInfos[TDCSignal[SignalTDC[isig]]][ib];
Expand Down Expand Up @@ -237,6 +246,9 @@ int WaveformCalibQueue::addData(int isig, const gsl::span<const o2::zdc::ZDCWave
}
}
if (ipkb != mPk) {
#ifdef O2_ZDC_WAVEFORMCALIB_DEBUG
LOG(info) << "WaveformCalibQueue::" << __func__ << " isig = " << isig << " ipkb " << ipkb << " != mPk " << mPk << " SKIP";
#endif
return -1;
} else {
int ppos = NIS * ipkb + ipk;
Expand All @@ -249,8 +261,10 @@ int WaveformCalibQueue::addData(int isig, const gsl::span<const o2::zdc::ZDCWave
return -1;
}
if ((ppos - mPeak) < mTimeLow[itdc] || (ppos - mPeak) > mTimeHigh[itdc]) {
// Put a warning message for a signal out of time
LOGF(warning, "%d.%04d Signal %2d peak position %d-%d=%d is outside allowed range [%d:%d]", mIR[mPk].orbit, mIR[mPk].bc, isig, ppos, mPeak, ppos - mPeak, mTimeLow[isig], mTimeHigh[isig]);
if (mVerbosity > DbgMinimal) {
// Put a warning message for a signal out of time
LOGF(warning, "%d.%04d Signal %2d peak position %d-%d=%d is outside allowed range [%d:%d]", mIR[mPk].orbit, mIR[mPk].bc, isig, ppos, mPeak, ppos - mPeak, mTimeLow[isig], mTimeHigh[isig]);
}
return -1;
}
}
Expand All @@ -277,7 +291,7 @@ int WaveformCalibQueue::addData(int isig, const gsl::span<const o2::zdc::ZDCWave
// Restrict validity range because of signal jitter
data.setLastValid(isig, ipos);
#ifdef O2_ZDC_WAVEFORMCALIB_DEBUG
LOG(info) << "WaveformCalibConfig::" << __func__ << " isig = " << isig << " ipkb " << ipkb << " ipk " << ipk << " min " << min << " range=[" << data.getFirstValid(isig) << ":" << ppos << ":" << data.getLastValid(isig) << "]";
LOG(info) << "WaveformCalibQueue::" << __func__ << " isig = " << isig << " ipkb " << ipkb << " ipk " << ipk << " min " << min << " range=[" << data.getFirstValid(isig) << ":" << ppos << ":" << data.getLastValid(isig) << "]";
#endif
return ipos;
}
Expand All @@ -286,36 +300,61 @@ int WaveformCalibQueue::addData(int isig, const gsl::span<const o2::zdc::ZDCWave
void WaveformCalibQueue::print()
{
int n = mIR.size();
printf("WaveformCalibQueue::print() %d consecutive bunches\n", n);
for (int i = 0; i < n; i++) {
printf("%d.%04d mEntry=%d mFirstW=%d mNW=%d\n", mIR[i].orbit, mIR[i].bc, mEntry[i], mFirstW[i], mNW[i]);
printf("mHasInfos:");
printf("%d.%04d mEntry=%d mFirstW=%d mNW=%d waveforms\n", mIR[i].orbit, mIR[i].bc, mEntry[i], mFirstW[i], mNW[i]);
bool printed = false;
for (int j = 0; j < NChannels; j++) {
if (mHasInfos[j][i] != 0) {
if (!printed) {
printf("mHasInfos:");
printed = true;
}
printf(" %2d=%d", j, mHasInfos[j][i] != 0);
}
}
printf("\n");
printf("mNTDC:");
if (printed) {
printf("\n");
printed = false;
}
for (int j = 0; j < NTDCChannels; j++) {
if (mNTDC[j][i] > 0) {
if (!printed) {
printf("mNTDC:");
printed = true;
}
printf(" %2d=%6u", j, mNTDC[j][i]);
}
}
printf("\n");
printf("mTDCA:");
if (printed) {
printf("\n");
printed = false;
}
for (int j = 0; j < NTDCChannels; j++) {
if (mNTDC[j][i] > 0) {
if (!printed) {
printf("mTDCA:");
printed = true;
}
printf(" %2d=%6.1f", j, mTDCA[j][i]);
}
}
printf("\n");
printf("mTDCP:");
if (printed) {
printf("\n");
printed = false;
}
for (int j = 0; j < NTDCChannels; j++) {
if (mNTDC[j][i] > 0) {
if (!printed) {
printf("mTDCP:");
printed = true;
}
printf(" %2d=%6.1f", j, mTDCP[j][i]);
}
}
printf("\n");
if (printed) {
printf("\n");
}
}
}

Expand Down
Loading
Morty Proxy This is a proxified and sanitized view of the page, visit original site.