#include <DataQualityInterface.h>
|
|
Definition at line 25 of file DataQualityInterface.cxx. 00025 : 00026 fBeamTime(-1), 00027 fBeamStatus(-1), 00028 fNearDetStatus(-1), 00029 fBeamType(-1), 00030 fProtonsOnTarget(0.0), 00031 fDetectorTime(-1), 00032 fDetectorStatus(-1), 00033 fCoilStatus(-1), 00034 fHvStatus(-1), 00035 fGpsStatus(-1), 00036 fGpsError(-999), 00037 fDataQualityLookup(0) 00038 { 00039 00040 }
|
|
|
Definition at line 42 of file DataQualityInterface.cxx. 00042 :
00043 TObject(rhs)
00044 {
00045
00046 }
|
|
|
Definition at line 48 of file DataQualityInterface.cxx. 00049 {
00050 if(fDataQualityLookup) delete fDataQualityLookup;
00051 }
|
|
||||||||||||
|
|
|
|
Definition at line 59 of file DataQualityInterface.cxx. References ProcessBeamStatus(). Referenced by DataQualityFilter::Ana(). 00060 {
00061 this->ProcessBeamStatus(vldc,1);
00062 return fBeamStatus;
00063 }
|
|
|
Definition at line 65 of file DataQualityInterface.cxx. References ProcessBeamStatus(). Referenced by DataQualityFilter::Ana(). 00066 {
00067 this->ProcessBeamStatus(vldc,1);
00068 return fBeamType;
00069 }
|
|
|
Definition at line 89 of file DataQualityInterface.cxx. References ProcessDetectorStatus(). Referenced by DataQualityFilter::Ana(). 00090 {
00091 this->ProcessDetectorStatus(vldc,1);
00092 return fCoilStatus;
00093 }
|
|
|
Definition at line 77 of file DataQualityInterface.cxx. References ProcessDetectorStatus(). Referenced by DataQualityFilter::Ana(). 00078 {
00079 this->ProcessDetectorStatus(vldc,1);
00080 return fDetectorStatus;
00081 }
|
|
|
Definition at line 95 of file DataQualityInterface.cxx. References ProcessDetectorStatus(). Referenced by DataQualityFilter::Ana(). 00096 {
00097 this->ProcessDetectorStatus(vldc,1);
00098 return fGpsStatus;
00099 }
|
|
|
Definition at line 83 of file DataQualityInterface.cxx. References ProcessDetectorStatus(). Referenced by DataQualityFilter::Ana(). 00084 {
00085 this->ProcessDetectorStatus(vldc,1);
00086 return fHvStatus;
00087 }
|
|
|
Definition at line 71 of file DataQualityInterface.cxx. References ProcessBeamStatus(). Referenced by DataQualityFilter::Ana(). 00072 {
00073 this->ProcessBeamStatus(vldc,1);
00074 return fProtonsOnTarget;
00075 }
|
|
|
Definition at line 53 of file DataQualityInterface.cxx. References ProcessBeamStatus(). Referenced by DataQualityFilter::Ana(). 00054 {
00055 this->ProcessBeamStatus(vldc,1);
00056 return fNearDetStatus;
00057 }
|
|
|
Definition at line 113 of file DataQualityInterface.cxx. References ProcessDetectorStatus(). Referenced by DataQualityFilter::Ana(). 00114 {
00115 this->ProcessDetectorStatus(vldc,0);
00116 return fCoilStatus;
00117 }
|
|
|
Definition at line 101 of file DataQualityInterface.cxx. References ProcessDetectorStatus(). Referenced by DataQualityFilter::Ana(). 00102 {
00103 this->ProcessDetectorStatus(vldc,0);
00104 return fDetectorStatus;
00105 }
|
|
|
Definition at line 119 of file DataQualityInterface.cxx. References ProcessDetectorStatus(). 00120 {
00121 this->ProcessDetectorStatus(vldc,0);
00122 return fGpsStatus;
00123 }
|
|
|
Definition at line 107 of file DataQualityInterface.cxx. References ProcessDetectorStatus(). Referenced by DataQualityFilter::Ana(). 00108 {
00109 this->ProcessDetectorStatus(vldc,0);
00110 return fHvStatus;
00111 }
|
|
||||||||||||
|
Definition at line 125 of file DataQualityInterface.cxx. References abs(), BeamMonSpill::BeamType(), SpillTimeFinder::DataIsAvailable(), fBeamMonSpill, fBeamMonStatus, fBeamStatus, fBeamTime, fBeamType, fNearDetSpill, fNearDetStatus, fProtonsOnTarget, BeamMonSpill::fTor101, BeamMonSpill::fTortgt, BeamMonSpill::fTrtgtd, BDSpillAccessor::Get(), VldTimeStamp::GetNanoSec(), SpillTimeFinder::GetNearestSpill(), VldTimeStamp::GetSec(), SpillTimeND::GetTimeStamp(), VldContext::GetTimeStamp(), SpillTimeFinder::GetTimeToNearestSpill(), SpillTimeFinder::Instance(), BDSpillAccessor::LoadSpill(), MSG, BMSpillAna::SelectSpill(), BMSpillAna::SetSpill(), BMSpillAna::SetTimeDiff(), BeamMonSpill::SpillTime(), and BMSpillAna::UseDatabaseCuts(). Referenced by GetBeamStatus(), GetBeamType(), GetProtonsOnTarget(), and GetSpillStatus(). 00126 {
00127 if( vldc.GetTimeStamp().GetSec()!=fBeamTime ){
00128 MSG("DataQualityFilter",Msg::kVerbose) << " DataQualityInterface::ProcessBeamStatus(VldContext) " << endl;
00129
00130 fBeamTime=vldc.GetTimeStamp().GetSec();
00131 fBeamStatus=-1;
00132 fNearDetStatus=-1;
00133 fBeamMonStatus=-1;
00134 fNearDetSpill=0;
00135 fBeamMonSpill=0;
00136 fBeamType=-1;
00137 fProtonsOnTarget=0.0;
00138
00139 // USE BEAM DATABASE TABLES
00140 // ========================
00141 if( useDB ){
00142
00143 // Check NearDet Spill Times
00144 SpillTimeFinder& NDaccess = SpillTimeFinder::Instance();
00145 fNearDetStatus = NDaccess.DataIsAvailable(vldc);
00146 const SpillTimeND& ndspill = NDaccess.GetNearestSpill(vldc);
00147 VldTimeStamp NDtime = ndspill.GetTimeStamp();
00148
00149 Double_t nd_subtime = NDaccess.GetTimeToNearestSpill(vldc);
00150
00151 if( nd_subtime>=0.0 && nd_subtime<1.0 ){
00152 fNearDetSpill = 1;
00153 }
00154
00155 MSG("DataQualityFilter",Msg::kVerbose) << " NearDet [status=" << fNearDetStatus << ", spill=" << fNearDetSpill << ", time=" << nd_subtime << "]" << endl;
00156
00157 // Check Beam Monitoring
00158 BDSpillAccessor& BMaccess = BDSpillAccessor::Get();
00159 const BeamMonSpill& BMspill = *(BMaccess.LoadSpill(NDtime));
00160 VldTimeStamp BMtime = BMspill.SpillTime();
00161
00162 Double_t bm_subtime = ( BMtime.GetSec()-NDtime.GetSec() )
00163 + 1.0e-9*( BMtime.GetNanoSec()-NDtime.GetNanoSec() );
00164
00165 BMSpillAna BMana;
00166 BMana.UseDatabaseCuts();
00167 BMana.SetSpill(BMspill);
00168 BMana.SetTimeDiff(bm_subtime);
00169
00170 Double_t pots = 0.0;
00171 if(BMspill.fTortgt !=0.) pots = BMspill.fTortgt;
00172 else if(BMspill.fTrtgtd !=0.) pots = BMspill.fTrtgtd;
00173 else if(BMspill.fTor101 !=0.) pots = BMspill.fTor101;
00174
00175 if( fNearDetSpill
00176 && abs(bm_subtime)<1.0 ){
00177 fBeamMonSpill = 1;
00178 fProtonsOnTarget = pots;
00179 fBeamType = BMspill.BeamType();
00180 fBeamMonStatus = BMana.SelectSpill();
00181 }
00182
00183 MSG("DataQualityFilter",Msg::kVerbose) << " BeamMon [spill=" << fBeamMonSpill << ", isgood=" << fBeamMonStatus << ", time=" << nd_subtime+bm_subtime << ", type=" << fBeamType << ", PoTs=" << fProtonsOnTarget << "]" << endl;
00184
00185 }
00186
00187 // USE BEAM LOOKUP TABLES
00188 // ======================
00189 else{
00190
00191 }
00192
00193 // APPLY BEAM QUALITY CUTS
00194 // =======================
00195 // check the beam monitoring
00196 // 1 = beam monitoring is good
00197 // 0 = beam monitoring is bad
00198 // -1 = no beam monitoring information
00199
00200 if( fBeamMonStatus==1 && fNearDetStatus==1 ){
00201 fBeamStatus=1;
00202 }
00203 if( fBeamMonStatus==0 || fNearDetStatus==0 ){
00204 fBeamStatus=0;
00205 }
00206
00207 }
00208
00209 return;
00210 }
|
|
||||||||||||
|
Definition at line 212 of file DataQualityInterface.cxx. References SpillServerMonFinder::DataIsAvailable(), fCoilStatus, fDataQualityLookup, fDetectorStatus, fDetectorTime, fGpsError, fGpsStatus, fHvStatus, DataQualityLookup::GetCoilStatus(), DataQualityLookup::GetHvStatus(), HvStatusFinder::GetHvStatus(), VldTimeStamp::GetNanoSec(), SpillServerMonFinder::GetNearestSpill(), VldTimeStamp::GetSec(), SpillServerMon::GetSpillTimeError(), SpillServerMon::GetSpillType(), SpillServerMon::GetTimeStamp(), VldContext::GetTimeStamp(), SpillServerMonFinder::Instance(), HvStatusFinder::Instance(), CoilTools::IsOK(), and MSG. Referenced by GetCoilStatus(), GetDetectorStatus(), GetGpsStatus(), GetHvStatus(), LookupCoilStatus(), LookupDetectorStatus(), LookupGpsStatus(), and LookupHvStatus(). 00213 {
00214 if( vldc.GetTimeStamp().GetSec()!=fDetectorTime ){
00215 MSG("DataQualityFilter",Msg::kVerbose) << " DataQualityInterface::ProcessDetectorStatus(VldContext) " << endl;
00216
00217 fDetectorTime=vldc.GetTimeStamp().GetSec();
00218 fDetectorStatus=-1;
00219 fCoilStatus=-1;
00220 fHvStatus=-1;
00221 fGpsStatus=1;
00222 fGpsError=-999;
00223
00224 // USE DETECTOR DATABASE TABLES
00225 // ============================
00226 if( useDB ){
00227
00228 // Check Coil Current
00229 if( CoilTools::IsOK(vldc) ) fCoilStatus=1; else fCoilStatus=0;
00230 MSG("DataQualityFilter",Msg::kVerbose) << " CoilCurrentStatus [status=" << fCoilStatus << "]" << endl;
00231 MSG("DataQualityFilter",Msg::kVerbose) << " CoilCurrent [lookup=0, status=" << fCoilStatus << "]" << endl;
00232
00233 // Check High Voltage
00234 HvStatus::HvStatus_t status = HvStatusFinder::Instance().GetHvStatus(vldc);
00235 if( (status&HvStatus::kOK)==(HvStatus::kOK) ) fHvStatus=1;
00236 if( (status&HvStatus::kBad)==(HvStatus::kBad) ) fHvStatus=0;
00237 MSG("DataQualityFilter",Msg::kVerbose) << " HighVoltageStatus [statusword=" << status << ", status=" << fHvStatus << "]" << endl;
00238 MSG("DataQualityFilter",Msg::kVerbose) << " HighVoltage [lookup=0, status=" << fHvStatus << "]" << endl;
00239
00240 // Check GPS Error
00241 SpillServerMonFinder& GPSaccess = SpillServerMonFinder::Instance();
00242 if( GPSaccess.DataIsAvailable(vldc) ){
00243 const SpillServerMon& spill_nearest = GPSaccess.GetNearestSpill(vldc);
00244
00245 Double_t gps_subtime = ( spill_nearest.GetTimeStamp().GetSec()-vldc.GetTimeStamp().GetSec() )
00246 + 1.0e-9*( spill_nearest.GetTimeStamp().GetNanoSec()-vldc.GetTimeStamp().GetNanoSec() );
00247
00248 if( gps_subtime>=0.0 && gps_subtime<1.0 ){
00249 fGpsError = 0;
00250 if( spill_nearest.GetSpillType()==1 ){
00251 fGpsError = spill_nearest.GetSpillTimeError();
00252 if( fGpsError>1000 ) fGpsStatus = 0;
00253 }
00254 }
00255 }
00256 MSG("DataQualityFilter",Msg::kVerbose) << " GpsErrorStatus [error=" << fGpsError << ", status=" << fGpsStatus << "]" << endl;
00257 MSG("DataQualityFilter",Msg::kVerbose) << " GpsError [lookup=0, status=" << fGpsStatus << "]" << endl;
00258
00259 }
00260
00261 // USE DETECTOR LOOKUP TABLES
00262 // ==========================
00263 else{
00264 if(!fDataQualityLookup) fDataQualityLookup = new DataQualityLookup();
00265
00266 // Check Coil Current
00267 fCoilStatus=fDataQualityLookup->GetCoilStatus(vldc);
00268 MSG("DataQualityFilter",Msg::kVerbose) << " CoilCurrent [lookup=1, status=" << fCoilStatus << "]" << endl;
00269
00270 // Check High Voltage
00271 fHvStatus=fDataQualityLookup->GetHvStatus(vldc);
00272 MSG("DataQualityFilter",Msg::kVerbose) << " HighVoltage [lookup=1, status=" << fHvStatus << "]" << endl;
00273
00274 // Check GPS Error;
00275 fGpsStatus=1;
00276 MSG("DataQualityFilter",Msg::kVerbose) << " GpsError [lookup=1, status=" << fGpsStatus << "]" << endl;
00277
00278 }
00279
00280 // APPLY DETECTOR QUALITY CUTS
00281 // ===========================
00282 // 1 = coil and HV are good
00283 // 0 = coil or HV are bad or unknown
00284 // -1 = no detector information
00285
00286 if( fCoilStatus==1 && fHvStatus==1 && fGpsStatus==1 ){
00287 fDetectorStatus=1;
00288 }
00289 if( fCoilStatus==0 || fHvStatus==0 || fGpsStatus==0 ){
00290 fDetectorStatus=0;
00291 }
00292
00293 }
00294
00295 return;
00296 }
|
|
|
Definition at line 40 of file DataQualityInterface.h. Referenced by ProcessBeamStatus(). |
|
|
Definition at line 38 of file DataQualityInterface.h. Referenced by ProcessBeamStatus(). |
|
|
Definition at line 36 of file DataQualityInterface.h. Referenced by ProcessBeamStatus(). |
|
|
Definition at line 35 of file DataQualityInterface.h. Referenced by ProcessBeamStatus(). |
|
|
Definition at line 41 of file DataQualityInterface.h. Referenced by ProcessBeamStatus(). |
|
|
Definition at line 46 of file DataQualityInterface.h. Referenced by ProcessDetectorStatus(). |
|
|
Definition at line 51 of file DataQualityInterface.h. Referenced by ProcessDetectorStatus(). |
|
|
Definition at line 45 of file DataQualityInterface.h. Referenced by ProcessDetectorStatus(). |
|
|
Definition at line 44 of file DataQualityInterface.h. Referenced by ProcessDetectorStatus(). |
|
|
Definition at line 49 of file DataQualityInterface.h. Referenced by ProcessDetectorStatus(). |
|
|
Definition at line 48 of file DataQualityInterface.h. Referenced by ProcessDetectorStatus(). |
|
|
Definition at line 47 of file DataQualityInterface.h. Referenced by ProcessDetectorStatus(). |
|
|
Definition at line 39 of file DataQualityInterface.h. Referenced by ProcessBeamStatus(). |
|
|
Definition at line 37 of file DataQualityInterface.h. Referenced by ProcessBeamStatus(). |
|
|
Definition at line 42 of file DataQualityInterface.h. Referenced by ProcessBeamStatus(). |
1.3.9.1