00001 00002 #include "DbuFarRunQuality.h" 00003 #include "MessageService/MsgService.h" 00004 #include "DatabaseInterface/DbiOutRowStream.h" 00005 #include "DatabaseInterface/DbiResultSet.h" 00006 #include "DatabaseInterface/DbiValidityRec.h" 00007 00008 ClassImp(DbuFarRunQuality) 00009 00010 CVSID("$Id: DbuFarRunQuality.cxx,v 1.4 2008/09/22 10:44:44 blake Exp $"); 00011 00012 #include "DatabaseInterface/DbiResultPtr.tpl" 00013 template class DbiResultPtr<DbuFarRunQuality>; 00014 00015 #include "DatabaseInterface/DbiWriter.tpl" 00016 template class DbiWriter<DbuFarRunQuality>; 00017 00018 Bool_t DbuFarRunQuality::IsOK() const 00019 { 00020 00021 // if( ( fRun>=0 ) 00022 // && ( fPhysicsRun==1 && fTestRun==0 ) 00023 // && ( fCrateMask==16 ) 00024 // && ( fTimeFrames>=300 || (fSubRun>0 && fTimeFrames>120 ) ) 00025 // && ( fGoodSnarls>=100 && (double)fGoodSnarls/(double)fTimeFrames<30 00026 // && fSnarlRateMedian<100 && fSnarlRateMax<300 ) ){ 00027 // return 1; 00028 // } 00029 00030 if( this->GoodRunType() 00031 && this->GoodReadout() 00032 && !this->Short() 00033 && !this->LowRate() 00034 && !this->HighRate() ) return 1; 00035 00036 else return 0; 00037 } 00038 00039 Bool_t DbuFarRunQuality::GoodRunType() const 00040 { 00041 if( fRun>=0 00042 && fPhysicsRun==1 && fTestRun==0 ) return 1; 00043 else return 0; 00044 } 00045 00046 Bool_t DbuFarRunQuality::GoodReadout() const 00047 { 00048 if( fCrateMask==16 ) return 1; 00049 else return 0; 00050 } 00051 00052 Bool_t DbuFarRunQuality::Short() const 00053 { 00054 if( fTimeFrames>=300 00055 || (fSubRun>0 && fTimeFrames>120 ) ) return 0; 00056 else return 1; 00057 } 00058 00059 Bool_t DbuFarRunQuality::LowRate() const 00060 { 00061 if( fGoodSnarls>=100 ) return 0; 00062 else return 1; 00063 } 00064 00065 Bool_t DbuFarRunQuality::HighRate() const 00066 { 00067 if( (double)fGoodSnarls/(double)fTimeFrames<30 00068 && fSnarlRateMedian<100 && fSnarlRateMax<300 ) return 0; 00069 else return 1; 00070 } 00071 00072 UInt_t DbuFarRunQuality::GetIndex(Int_t run, Int_t subrun) 00073 { 00074 if( run>=0 && subrun>=0 && subrun<1000 ){ 00075 return 1000*run+subrun; 00076 } 00077 else return 0; 00078 } 00079 00080 void DbuFarRunQuality::Fill(DbiResultSet& rs, const DbiValidityRec* /*vrec*/) 00081 { 00082 if ( rs.TableName() == "DBUFARRUNQUALITY" ) { 00083 rs >> fRun 00084 >> fSubRun 00085 >> fRunType 00086 >> fRopMask 00087 >> fCrateMask 00088 >> fTriggerMask 00089 >> fStartTime 00090 >> fEndTime 00091 >> fTimeFrames 00092 >> fSnarls 00093 >> fGoodSnarls 00094 >> fSnarlRateMin 00095 >> fSnarlRateMax 00096 >> fSnarlRateMean 00097 >> fSnarlRateMedian 00098 >> fTriggersPlane 00099 >> fTriggersEnergy 00100 >> fTriggersSpill 00101 >> fTriggersRealSpill 00102 >> fTriggersFakeSpill 00103 >> fPhysicsRun 00104 >> fModifiedRun 00105 >> fTestRun; 00106 } 00107 else { 00108 Int_t numCol = rs.NumCols(); 00109 for (Int_t curCol = 2; curCol <= numCol; ++curCol) { 00110 string colName = rs.CurColName(); 00111 if( colName == "RUN" ) rs >> fRun; 00112 else if ( colName == "SUBRUN" ) rs >> fSubRun; 00113 else if ( colName == "RUNTYPE" ) rs >> fRunType; 00114 else if ( colName == "ROPMASK" ) rs >> fRopMask; 00115 else if ( colName == "CRATEMASK" ) rs >> fCrateMask; 00116 else if ( colName == "TRIGGERMASK" ) rs >> fTriggerMask; 00117 else if ( colName == "STARTTIME" ) rs >> fStartTime; 00118 else if ( colName == "ENDTIME" ) rs >> fEndTime; 00119 else if ( colName == "TIMEFRAMES" ) rs >> fTimeFrames; 00120 else if ( colName == "SNARLS" ) rs >> fSnarls; 00121 else if ( colName == "GOODSNARLS" ) rs >> fGoodSnarls; 00122 else if ( colName == "MINSNARLRATE" ) rs >> fSnarlRateMin; 00123 else if ( colName == "MAXSNARLRATE" ) rs >> fSnarlRateMax; 00124 else if ( colName == "MEANSNARLRATE" ) rs >> fSnarlRateMean; 00125 else if ( colName == "MEDIANSNARLRATE" ) rs >> fSnarlRateMedian; 00126 else if ( colName == "PLANETRIGGERS" ) rs >> fTriggersPlane; 00127 else if ( colName == "ENERGYTRIGGERS" ) rs >> fTriggersEnergy; 00128 else if ( colName == "SPILLTRIGGERS" ) rs >> fTriggersSpill; 00129 else if ( colName == "SPILLTRIGGERSREAL" ) rs >> fTriggersRealSpill; 00130 else if ( colName == "SPILLTRIGGERSFAKE" ) rs >> fTriggersFakeSpill; 00131 else if ( colName == "PHYSICSRUN" ) rs >> fPhysicsRun; 00132 else if ( colName == "MODIFIEDRUN" ) rs >> fModifiedRun; 00133 else if ( colName == "TESTRUN" ) rs >> fTestRun; 00134 else { 00135 MSG("FarRunQuality",Msg::kDebug) << "Ignoring column " 00136 << curCol 00137 << "(" << colName << ")" << endl; 00138 rs.IncrementCurCol(); 00139 } 00140 } 00141 } 00142 00143 } 00144 00145 void DbuFarRunQuality::Store(DbiOutRowStream& ors, const DbiValidityRec* /*vrec*/) const 00146 { 00147 ors << fRun 00148 << fSubRun 00149 << fRunType 00150 << fRopMask 00151 << fCrateMask 00152 << fTriggerMask 00153 << fStartTime 00154 << fEndTime 00155 << fTimeFrames 00156 << fSnarls 00157 << fGoodSnarls 00158 << fSnarlRateMin 00159 << fSnarlRateMax 00160 << fSnarlRateMean 00161 << fSnarlRateMedian 00162 << fTriggersPlane 00163 << fTriggersEnergy 00164 << fTriggersSpill 00165 << fTriggersRealSpill 00166 << fTriggersFakeSpill 00167 << fPhysicsRun 00168 << fModifiedRun 00169 << fTestRun; 00170 }
1.3.9.1