Changeset 12481


Ignore:
Timestamp:
11/09/11 22:38:09 (13 years ago)
Author:
tbretz
Message:
Moved the RunDescription to HeadersFAD; added a new set which stores which runs are supposed to be opened; pipe the RunDescription in runOpen to Open
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/EventBuilderWrapper.h

    r12470 r12481  
    194194        fDimRoi         ("FAD_CONTROL/REGION_OF_INTEREST", "S:2",  ""),
    195195        fDimDac         ("FAD_CONTROL/DAC",                "S:336", ""),
    196         fDimDrsCalibration("FAD_CONTROL/DRS_CALIBRATION",  "I:3;I:1;F:1474560;F:1474560;F:1474560;F:1474560;F:1474560;F:1474560;F:163840;F:163840", ""),
     196        fDimDrsCalibration("FAD_CONTROL/DRS_CALIBRATION",  "I:1;I:3;F:1474560;F:1474560;F:1474560;F:1474560;F:1474560;F:1474560;F:163840;F:163840", ""),
    197197        fDimStatistics1 ("FAD_CONTROL/STATISTICS1",        "I:3;I:5;X:4;I:3;I:3;I:40;I:1;I:2;C:40;I:40;I:40;X:40", ""),
    198198        fDimStatistics2 ("FAD_CONTROL/STATISTICS2",        "I:1;I:280;X:40;I:40;I:4;I:4;I:2;I:2;I:3;C:40",  ""),
     
    223223    }
    224224
    225     struct RunDescription
    226     {
    227         uint32_t maxtime;
    228         uint32_t maxevt;
    229 
    230         string name;
    231 
    232         FAD::Configuration reference;
    233 
    234         bool started;
    235     };
    236 
    237     map<uint32_t, RunDescription> fExpectedRuns;
     225    set<uint32_t> fIsRunStarted;
     226    map<uint32_t, FAD::RunDescription> fExpectedRuns;
    238227
    239228    uint32_t StartNewRun(int64_t maxtime, int64_t maxevt, const pair<string, FAD::Configuration> &ref)
     
    244233            maxevt  = INT32_MAX;
    245234
    246         const RunDescription descr =
     235        const FAD::RunDescription descr =
    247236        {
    248237            uint32_t(maxtime),
     
    250239            ref.first,
    251240            ref.second,
    252             false
    253241        };
    254242
     
    258246
    259247        fExpectedRuns[fRunNumber] = descr;
     248        fIsRunStarted.insert(fRunNumber);
    260249        return fRunNumber++;
    261250    }
     
    535524        fMsg.Info(" ==> TODO: Write information from fTargetConfig to header!");
    536525
     526        map<uint32_t,FAD::RunDescription>::iterator it = fExpectedRuns.begin();
     527        while (1)
     528        {
     529            if (it->first<runid)
     530            {
     531                ostringstream str;
     532                str << "runOpen - Missed run " << runid << "." << endl;
     533                fMsg.Info(str);
     534
     535                fExpectedRuns.erase(it);
     536            }
     537            if (it->first==runid)
     538                break;
     539            it++;
     540        }
     541        if (it==fExpectedRuns.end())
     542        {
     543            ostringstream str;
     544            str << "runOpen - Run " << runid << " wasn't expected." << endl;
     545            fMsg.Warn(str);
     546        }
     547
     548        const FAD::RunDescription desc = it->second;
     549
     550        fExpectedRuns.erase(it);
     551
    537552        // Check if file already exists...
    538553        DataProcessorImp *file = 0;
     
    548563        try
    549564        {
    550             if (!file->Open(h))
     565            if (!file->Open(h, desc))
    551566                return 0;
    552567        }
     
    923938    bool IsRunStarted() const
    924939    {
    925         const map<uint32_t,RunDescription>::const_iterator it = fExpectedRuns.find(fRunNumber-1);
    926         return it==fExpectedRuns.end();// ? true : it->second.started;
     940        const set<uint32_t>::const_iterator it = fIsRunStarted.find(fRunNumber-1);
     941        return it==fIsRunStarted.end();// ? true : it->second.started;
    927942    }
    928943
     
    938953    }
    939954
    940     void gotNewRun(int runnr, PEVNT_HEADER */*headers*/)
     955    void gotNewRun(uint32_t runnr, PEVNT_HEADER */*headers*/)
    941956    {
    942957        // This function is called even when writing is switched off
    943         const map<uint32_t,RunDescription>::iterator it = fExpectedRuns.find(runnr);
    944         if (it==fExpectedRuns.end())
     958        set<uint32_t>::iterator it = fIsRunStarted.begin();
     959        while (1)
     960        {
     961            if (*it<runnr)
     962            {
     963                ostringstream str;
     964                str << "gotNewRun - Missed run " << runnr << "." << endl;
     965                fMsg.Info(str);
     966
     967                fIsRunStarted.erase(it);
     968            }
     969            if (*it==runnr)
     970                break;
     971            it++;
     972        }
     973        if (it==fIsRunStarted.end())
     974        {
     975            ostringstream str;
     976            str << "gotNewRun - Not waiting for run " << runnr << "." << endl;
     977            fMsg.Warn(str);
     978            return;
     979        }
     980
     981        map<uint32_t,FAD::RunDescription>::iterator i2 = fExpectedRuns.find(runnr);
     982        if (i2==fExpectedRuns.end())
    945983        {
    946984            ostringstream str;
    947985            str << "gotNewRun - Run " << runnr << " wasn't expected." << endl;
    948             return;
    949         }
    950 
    951         CloseRunFile(runnr, time(NULL)+it->second.maxtime, it->second.maxevt);
     986            fMsg.Warn(str);
     987            return;
     988        }
     989
     990        CloseRunFile(runnr, time(NULL)+i2->second.maxtime, i2->second.maxevt);
    952991        // return: 0=close scheduled / >0 already closed / <0 does not exist
    953992
     
    955994        //        be opened/closed
    956995
    957         it->second.started = true;
    958 
    959         fExpectedRuns.erase(it);
     996        fIsRunStarted.erase(it);
    960997    }
    961998
     
    13201357    }
    13211358
    1322     void gotNewRun(int runnr, PEVNT_HEADER *headers)
     1359    void gotNewRun(uint32_t runnr, PEVNT_HEADER *headers)
    13231360    {
    13241361        return EventBuilderWrapper::This->gotNewRun(runnr, headers);
Note: See TracChangeset for help on using the changeset viewer.