--- PamCut/Collections/LiveTimeCollection/LiveTimeCollection.cpp 2010/04/06 09:19:21 1.1.1.1 +++ PamCut/Collections/LiveTimeCollection/LiveTimeCollection.cpp 2010/04/20 10:20:54 1.2 @@ -14,11 +14,15 @@ _actionsPositions.push_back(GetSize() - 1); _sumLT.push_back(0); _sum.push_back(0); + _badsum.push_back(0); } void LiveTimeCollection::OnBad(PamLevel2 *event, int actNumber, unsigned int inc) { if((event->GetOrbitalInfo()->absTime - _currenttime > 1000.) || (_currenttime == 0)){ - for(unsigned int j = 0; j < _sumLT.size(); j++ ) _sumLT[j] = 0; + for(unsigned int j = 0; j < _sumLT.size(); j++ ){ + if(_currenttime == 0) _badsum[j] = 0; else {_badsum[j] += _sumLT[j]; _gapNumb++;} + _sumLT[j] = 0; + } } _currenttime = event->GetOrbitalInfo()->absTime; unsigned int Inc = 0; @@ -31,6 +35,11 @@ return _sum[actNumber] * 0.16 /1000. ; } +Float_t LiveTimeCollection::GetBadsumLiveTime(unsigned int actNumber) { + if(actNumber >= _sum.size()) return -1; + return _badsum[actNumber] * 0.16 /1000. ; +} + int LiveTimeCollection::ApplyCut(PamLevel2 *event) { _nEv++; @@ -70,18 +79,21 @@ Int_t inc = 0; unsigned int lastPosition = _cuts.size(); for (unsigned int i = iBeforeCuts; i < _actions.size(); i++) { - actNumber = i-1; + actNumber = i; if (_actionsPositions[i] < (int) firstFailed){ if((event->GetOrbitalInfo()->absTime - _currenttime > 1000.) || (_currenttime == 0)){ - for(unsigned int j = 0; j < _sumLT.size(); j++ ) _sumLT[j] = 0; + for(unsigned int j = 0; j < _sumLT.size(); j++ ) { + if(_currenttime == 0) _badsum[j] = 0; else {_badsum[j] += _sumLT[j]; _gapNumb++;} + _sumLT[j] = 0; + } } if( che ){ inc = event->GetTrigLevel2()->dltime[0]; Inc = inc; - _sum[i] += _sumLT[i]+inc; - event->GetTrigLevel2()->dltime[0] += _sumLT[i] ; - che = false; - }else _sum[i] += (_sumLT[i]+inc); + } + _sum[i] += (_sumLT[i]+inc); + event->GetTrigLevel2()->dltime[0] += _sumLT[i] + inc; + che = false; _actions[i]->OnGood(event); _sumLT[i] = 0; _currenttime = event->GetOrbitalInfo()->absTime; @@ -108,9 +120,10 @@ } void LiveTimeCollection::Finalize() { + SmartCollection::Finalize(); ofstream livetimereport; livetimereport.open (_livetimereport); livetimereport << "Action name\t\tsum live time"<GetName()<<"\t"<GetName()<<"\t"<