Ignore:
Timestamp:
08/03/18 13:51:26 (6 years ago)
Author:
tbretz
Message:
Secure the algorithm for the case when the output container (64) is smaller than the input container (1440).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Mars/mdrs/MDrsCalibApply.cc

    r17762 r19129  
    171171    fSignal->InitSamples(roi);
    172172
    173     if (!fDrsCalib)  // FIXME: Do a fake (none) calibration
     173    if (!fDrsCalib)  // Do a fake (none) calibration
     174    {
     175        /*
     176        const int16_t *val = reinterpret_cast<int16_t*>(fRawEvt->GetSamples());
     177        const uint32_t num = fRawEvt->GetNumPixels()*roi;
     178
     179        std::copy(val, val+num, fSignal->GetSamples(0));
     180        */
     181        /*
     182            const int16_t *val = reinterpret_cast<int16_t*>(fRawEvt->GetSamples());
     183            Float_t *vec = fSignal->GetSamples(0);
     184
     185            const UShort_t *idx = fRawEvt->GetPixelIds();
     186            for (size_t ch=0; ch<fRawEvt->GetNumPixels(); ch++)
     187            {
     188                const size_t hw  = ch*roi;
     189                const size_t sw  = ch*roi;//idx[ch]*roi;
     190                std::copy(val+hw, val+hw+roi, vec+sw);
     191            }
     192        */
    174193        return kTRUE;
     194    }
    175195
    176196    const int16_t *val = reinterpret_cast<int16_t*>(fRawEvt->GetSamples());
     
    191211    for (size_t ch=0; ch<fRawEvt->GetNumPixels(); ch++)
    192212    {
     213        if (idx[ch]>=fSignal->GetNumPixels())
     214            continue;
     215
    193216        const size_t drs = ch*1024;
    194217        const size_t hw  = ch*roi;
     
    208231        for (auto it=fPrevStart.begin(); it!=fPrevStart.end(); it++)
    209232        {
    210             fResult->fData[i++] = DrsCalibrate::CorrectStep(vec, fRawEvt->GetNumPixels(), roi, it->data(), start, roi+10, idx);
    211             fResult->fData[i++] = DrsCalibrate::CorrectStep(vec, fRawEvt->GetNumPixels(), roi, it->data(), start, 3,      idx);
     233            fResult->fData[i++] = DrsCalibrate::CorrectStep(vec, fSignal->GetNumPixels(), roi, it->data(), start, roi+10, idx);
     234            fResult->fData[i++] = DrsCalibrate::CorrectStep(vec, fSignal->GetNumPixels(), roi, it->data(), start, 3,      idx);
    212235        }
    213236
     
    220243    {
    221244    case 1:
    222         for (size_t ch=0; ch<fRawEvt->GetNumPixels(); ch++)
     245        for (size_t ch=0; ch<fSignal->GetNumPixels(); ch++)
    223246            DrsCalibrate::RemoveSpikes(vec+ch*roi, roi);
    224247        break;
    225248    case 2:
    226         for (size_t ch=0; ch<fRawEvt->GetNumPixels(); ch++)
     249        for (size_t ch=0; ch<fSignal->GetNumPixels(); ch++)
    227250            DrsCalibrate::RemoveSpikes2(vec+ch*roi, roi);
    228251        break;
    229252    case 3:
    230         for (size_t ch=0; ch<fRawEvt->GetNumPixels(); ch++)
     253        for (size_t ch=0; ch<fSignal->GetNumPixels(); ch++)
    231254            DrsCalibrate::RemoveSpikes3(vec+ch*roi, roi);
    232255        break;
    233256    case 4:
    234         for (size_t ch=0; ch<fRawEvt->GetNumPixels(); ch++)
     257        for (size_t ch=0; ch<fSignal->GetNumPixels(); ch++)
    235258            DrsCalibrate::RemoveSpikes4(vec+ch*roi, roi);
    236259        break;
    237260    }
    238 
    239261
    240262    if (fSlidingAverage)
Note: See TracChangeset for help on using the changeset viewer.