Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

DbuFarRunQuality.cxx

Go to the documentation of this file.
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 }

Generated on Mon Feb 15 11:06:35 2010 for loon by  doxygen 1.3.9.1