diff --git a/Clas12Banks/clas12reader.cpp b/Clas12Banks/clas12reader.cpp index c6e6b11..c257cc7 100644 --- a/Clas12Banks/clas12reader.cpp +++ b/Clas12Banks/clas12reader.cpp @@ -250,12 +250,14 @@ namespace clas12 { _pids.emplace_back(pidch); } else{ - if(_bftbparts->getRows()){ + if(_bftbparts->getRows()!=0){ + _bparts->setEntry(i); _bftbparts->setEntry(i); - auto pidch=_bparts->getPid(); + auto pidch=_bftbparts->getPid(); if(pidch==0) //no PID use charge instead pidch=_bparts->getCharge()*UndefPDG; + _pids.emplace_back(pidch); } else{//if not ftbased use FD based @@ -271,15 +273,9 @@ namespace clas12 { } return _pids; } - bool clas12reader::readEvent(){ - - //First get pid of tracks and save in _pids - //also responsible for calling hiporead() - preCheckPids(); - //Second check qa - //Special run banks - if(_brunconfig.get())_event.getStructure(*_brunconfig.get()); + bool clas12reader::checkQA(){ + //check if event has QA requirements and those were met if(_db!=nullptr){ if(_applyQA&&_db->qa()!=nullptr){ @@ -292,7 +288,38 @@ namespace clas12 { _db->qa()->accumulateCharge(_brunconfig->getEvent()); } } + return true; + } + bool clas12reader::justCheckQA(){ + if(_brunconfig.get())_event.getStructure(*_brunconfig.get()); + if(checkQA()==false) return false; + return true; + } + // double clas12reader::sumChargeFromQA(){ + // while(_reader.next()){ + // if(_nevent==_nToProcess){ + // summary(); + // return false; //reached supplied event limit + // } + // hipoRead(); + // ++_nevent; + // if(justCheckQA()) + // ++_nselected; + // } + // std::cout<<" clas12reader::sumChargeFromQA() "<qa()->getAccCharge()<<" from "<<_nselected <<" events out of "<<_nevent<qa()->getAccCharge(); + // } + + bool clas12reader::readEvent(){ + + //First get pid of tracks and save in _pids + //also responsible for calling hiporead() + preCheckPids(); + //Second check qa + //Special run banks + if(_brunconfig.get())_event.getStructure(*_brunconfig.get()); + if(checkQA()==false) return false; //Third check if event is of the right type if(!passPidSelect()){ @@ -532,15 +559,13 @@ namespace clas12 { ///connect to the data bases void clas12reader::connectDataBases(clas12databases* db){ _db=db; - //void clas12reader::connectDataBases(){ _connectDB=true; - // if(_runNo==0){ _runNo=readQuickRunConfig(_filename); - //} + if(_verbose )std::cout<<"Connecting databases to run "<<_runNo<notifyRun(_runNo); + if(_runNo!=0)_db->notifyRun(_runNo); } ///////////////////////////////////////////////////////// ///make a list of banks, required for writer diff --git a/Clas12Banks/clas12reader.h b/Clas12Banks/clas12reader.h index b8c9e94..f475db5 100644 --- a/Clas12Banks/clas12reader.h +++ b/Clas12Banks/clas12reader.h @@ -193,6 +193,9 @@ namespace clas12 { if(db()->qa()!=nullptr) return db()->qa()->getAccCharge(); return _runBeamCharge; } + + int getRunNumber()const {return _runNo;}//works if connectDatabases called + double getCurrApproxCharge(){return _runBeamCharge*_nevent/_reader.getEntries();} void summary(){ @@ -314,7 +317,9 @@ namespace clas12 { bool _applyQA=false; bool _connectDB=false; - + bool checkQA(); + bool justCheckQA(); + public: //Database stuff @@ -338,6 +343,7 @@ namespace clas12 { } } + //double sumChargeFromQA(); private: /////////////////////////////// diff --git a/Clas12Banks/qadb_reader.cpp b/Clas12Banks/qadb_reader.cpp index 6d0cb1c..17d39c9 100644 --- a/Clas12Banks/qadb_reader.cpp +++ b/Clas12Banks/qadb_reader.cpp @@ -18,6 +18,7 @@ namespace clas12 { /////////////////////////////////////////////////////// ///Checks if an event passes all the QA requirements bool qadb_reader::passQAReqs(int evNb){ + //std::cout<<"DEBUG qadb_reader::passQAReqs "<<_runNb<<" "<ccdb()){ //cout<< ccdbElSF.size()<