#include <DataQualityFilter.h>
Inheritance diagram for DataQualityFilter:

Public Member Functions | |
| DataQualityFilter () | |
| ~DataQualityFilter () | |
| void | BeginJob () |
| JobCResult | Ana (const MomNavigator *mom) |
| const Registry & | DefaultConfig () const |
| void | Config (const Registry &r) |
| void | HandleCommand (JobCommand *command) |
| void | EndJob () |
Private Member Functions | |
| void | WriteOutResults () |
Private Attributes | |
| DataQualityInterface * | fDQhandle |
| Int_t | fTime |
| Int_t | fCurrentTime |
| Int_t | fLiveTime |
| Int_t | fFilter |
| Int_t | fSpillStatus |
| Int_t | fBeamStatus |
| Int_t | fHvStatus |
| Int_t | fCoilStatus |
| Int_t | fDetectorStatus |
| Int_t | fBeamType |
| Int_t | fSpillTimeError |
| Double_t | fProtonsOnTarget |
| Int_t | fFilterOnOff |
| Int_t | fFilterBadBeam |
| Int_t | fFilterBadDetector |
| Int_t | fWriteOutResults |
| Int_t | fUseLookup |
| TString | fFilterFileName |
| TFile * | fFilterFile |
| TTree * | fFilterTree |
|
|
Definition at line 22 of file DataQualityFilter.cxx. References MSG. 00022 : 00023 fTime(0), 00024 fCurrentTime(0), 00025 fFilter(0), 00026 fSpillStatus(-1), 00027 fBeamStatus(-1), 00028 fHvStatus(-1), 00029 fCoilStatus(-1), 00030 fDetectorStatus(-1), 00031 fFilterOnOff(0), 00032 fFilterBadBeam(0), 00033 fFilterBadDetector(0), 00034 fWriteOutResults(0), 00035 fUseLookup(0), 00036 fFilterFileName("dataqualityfilter.root"), 00037 fFilterFile(0), 00038 fFilterTree(0) 00039 { 00040 MSG("DataQualityFilter",Msg::kDebug) << " *** DataQualityFilter::DataQualityFilter() *** " << endl; 00041 00042 fDQhandle = new DataQualityInterface(); 00043 }
|
|
|
Definition at line 45 of file DataQualityFilter.cxx. References MSG. 00046 {
00047 MSG("DataQualityFilter",Msg::kDebug) << " *** DataQualityFilter::~DataQualityFilter() *** " << endl;
00048
00049 if( fDQhandle ) delete fDQhandle;
00050 }
|
|
|
Implement this for read only access to the MomNavigator Reimplemented from JobCModule. Definition at line 58 of file DataQualityFilter.cxx. References fBeamStatus, fBeamType, fCoilStatus, fCurrentTime, fDetectorStatus, fDQhandle, fFilter, fFilterBadBeam, fFilterBadDetector, fFilterOnOff, fHvStatus, fLiveTime, fProtonsOnTarget, fSpillStatus, fSpillTimeError, fTime, DataQualityInterface::GetBeamStatus(), DataQualityInterface::GetBeamType(), DataQualityInterface::GetCoilStatus(), DataQualityInterface::GetDetectorStatus(), MomNavigator::GetFragment(), DataQualityInterface::GetHvStatus(), DataQualityInterface::GetProtonsOnTarget(), VldTimeStamp::GetSec(), DataQualityInterface::GetSpillStatus(), DataQualityInterface::GetSpillTimeError(), VldContext::GetTimeStamp(), RecMinos::GetVldContext(), DataQualityInterface::LookupCoilStatus(), DataQualityInterface::LookupDetectorStatus(), DataQualityInterface::LookupHvStatus(), MSG, and WriteOutResults(). 00059 {
00060 MSG("DataQualityFilter",Msg::kInfo) << " *** DataQualityFilter::Ana(...) *** " << endl;
00061
00062 fSpillStatus=-1;
00063 fBeamStatus=-1;
00064 fHvStatus=-1;
00065 fCoilStatus=-1;
00066 fDetectorStatus=-1;
00067 fBeamType=-1;
00068 fSpillTimeError=-999;
00069 fProtonsOnTarget=0.0;
00070 fFilter=0;
00071
00072 JobCResult result(JobCResult::kAOK);
00073
00074 // Get RawRecord
00075 // =============
00076 RawRecord* rawrec = dynamic_cast<RawRecord*>(mom->GetFragment("RawRecord"));
00077 if( rawrec ){
00078 MSG("DataQualityFilter",Msg::kDebug) << " Found RawRecord " << endl;
00079 VldContext* vldc = (VldContext*)(rawrec->GetVldContext());
00080 fCurrentTime=vldc->GetTimeStamp().GetSec();
00081 fSpillStatus=fDQhandle->GetSpillStatus(*vldc);
00082 fBeamStatus=fDQhandle->GetBeamStatus(*vldc);
00083 fBeamType=fDQhandle->GetBeamType(*vldc);
00084 fSpillTimeError=fDQhandle->GetSpillTimeError(*vldc);
00085 fProtonsOnTarget=fDQhandle->GetProtonsOnTarget(*vldc);
00086 if( fUseLookup ){
00087 fDetectorStatus=fDQhandle->LookupDetectorStatus(*vldc);
00088 fHvStatus=fDQhandle->LookupHvStatus(*vldc);
00089 fCoilStatus=fDQhandle->LookupCoilStatus(*vldc);
00090 }
00091 else{
00092 fDetectorStatus=fDQhandle->GetDetectorStatus(*vldc);
00093 fHvStatus=fDQhandle->GetHvStatus(*vldc);
00094 fCoilStatus=fDQhandle->GetCoilStatus(*vldc);
00095 }
00096 }
00097
00098 // Get CandRecord
00099 // ==============
00100 CandRecord* candrec = dynamic_cast<CandRecord*>(mom->GetFragment("CandRecord"));
00101 if( candrec ){
00102 MSG("DataQualityFilter",Msg::kDebug) << " Found CandRecord " << endl;
00103
00104 }
00105
00106 // Set Filter
00107 // ==========
00108 // check whether filters are on/off then pass/fail event
00109 if( ( fFilterBadBeam==0 || fBeamStatus==1 )
00110 && ( fFilterBadDetector==0 || fDetectorStatus==1 ) ){
00111 fFilter=1;
00112 }
00113
00114 // Write out Results
00115 // =================
00116 if( fCurrentTime!=fTime ){
00117 fLiveTime=1;
00118 if( fTime>0
00119 && fCurrentTime-fTime>1 ) fLiveTime=fCurrentTime-fTime;
00120 fTime=fCurrentTime;
00121 if( fWriteOutResults ) this->WriteOutResults();
00122 }
00123
00124 MSG("DataQualityFilter",Msg::kDebug) << " Time=" << fTime << endl;
00125 MSG("DataQualityFilter",Msg::kDebug) << " BeamType=" << fBeamType << endl;
00126 MSG("DataQualityFilter",Msg::kDebug) << " SpillStatus=" << fSpillStatus << endl;
00127 MSG("DataQualityFilter",Msg::kDebug) << " SpillTimeError=" << fSpillTimeError << endl;
00128 MSG("DataQualityFilter",Msg::kDebug) << " ProtonsOnTarget=" << fProtonsOnTarget << endl;
00129 MSG("DataQualityFilter",Msg::kDebug) << " DetectorStatus=" << fDetectorStatus << " [HV=" << fHvStatus << ", coil=" << fCoilStatus <<"]" << endl;
00130 MSG("DataQualityFilter",Msg::kDebug) << " Beam=[" << fFilterBadBeam << "|" << fBeamStatus << "] Detector=[" << fFilterBadDetector << "|" << fDetectorStatus << "]" << endl;
00131 MSG("DataQualityFilter",Msg::kDebug) << " Filter=[" << fFilterOnOff << "|" << fFilter << "]" << endl;
00132
00133 // Apply Filter
00134 // ============
00135 if( fFilterOnOff ){
00136 if( fFilter ){
00137 MSG("DataQualityFilter",Msg::kInfo) << " *** PASSED FILTER *** " << endl;
00138 return JobCResult::kPassed;
00139 }
00140 else{
00141 MSG("DataQualityFilter",Msg::kInfo) << " *** FAILED FILTER *** " << endl;
00142 return JobCResult::kFailed;
00143 }
00144 }
00145
00146 return result;
00147
00148 }
|
|
|
Implement for notification of begin of job Reimplemented from JobCModule. Definition at line 52 of file DataQualityFilter.cxx. References MSG. 00053 {
00054 MSG("DataQualityFilter",Msg::kInfo) << " *** DataQualityFilter::BeginJob(...) *** " << endl;
00055
00056 }
|
|
|
Return the actual configuration. If your module directly pulls its configuration from the fConfig Registry, you don't need to override this. Override if you have local config variables. Reimplemented from JobCModule. Definition at line 168 of file DataQualityFilter.cxx. References fFilterBadBeam, fFilterBadDetector, fFilterFileName, fFilterOnOff, fUseLookup, fWriteOutResults, Registry::Get(), and MSG. 00169 {
00170 MSG("DataQualityFilter",Msg::kDebug) << " *** DataQualityFilter::Config() *** " << endl;
00171
00172 Int_t tmpint;
00173 const char* tmpchar = 0;
00174
00175 if(r.Get("FilterOnOff",tmpint)) fFilterOnOff = tmpint;
00176 if(r.Get("FilterBadBeam",tmpint)) fFilterBadBeam = tmpint;
00177 if(r.Get("FilterBadDetector",tmpint)) fFilterBadDetector = tmpint;
00178 if(r.Get("WriteOutResults",tmpint)) fWriteOutResults = tmpint;
00179 if(r.Get("UseLookupTable",tmpint)) fUseLookup = tmpint;
00180 if(r.Get("OutputFile",tmpchar)) fFilterFileName=tmpchar;
00181
00182 MSG("DataQualityFilter",Msg::kDebug)
00183 << " configuration: " << endl
00184 << " FilterOnOff=" << fFilterOnOff << endl
00185 << " FilterBadBeam=" << fFilterBadBeam << endl
00186 << " FilterBadDetector=" << fFilterBadDetector << endl
00187 << " WriteOutResults=" << fWriteOutResults << endl
00188 << " UseLookupTable=" << fUseLookup << endl
00189 << " OutputFile=" << fFilterFileName << endl;
00190
00191 return;
00192 }
|
|
|
Get the default configuration registry. This should normally be overridden. One useful idiom is to implement it like: const Registry& MyModule::DefaultConfig() const { static Registry cfg; // never is destroyed if (cfg.Size()) return cfg; // already filled it // set defaults: cfg.Set("TheAnswer",42); cfg.Set("Units","unknown"); return cfg; } Reimplemented from JobCModule. Definition at line 150 of file DataQualityFilter.cxx. References fFilterBadBeam, fFilterBadDetector, fFilterFileName, fFilterOnOff, fUseLookup, fWriteOutResults, Registry::LockValues(), MSG, Registry::Set(), and Registry::UnLockValues(). 00151 {
00152 MSG("DataQualityFilter",Msg::kDebug) << " *** DataQualityFilter::DefaultConfig() *** " << endl;
00153
00154 static Registry r;
00155 r.SetName("DataQualityFilter.config.default");
00156 r.UnLockValues();
00157 r.Set("FilterOnOff",fFilterOnOff);
00158 r.Set("FilterBadBeam",fFilterBadBeam);
00159 r.Set("FilterBadDetector",fFilterBadDetector);
00160 r.Set("WriteOutResults",fWriteOutResults);
00161 r.Set("UseLookupTable",fUseLookup);
00162 r.Set("OutputFile",fFilterFileName);
00163 r.LockValues();
00164
00165 return r;
00166 }
|
|
|
Implement for notification of end of job Reimplemented from JobCModule. Definition at line 203 of file DataQualityFilter.cxx. References fFilterFile, fFilterTree, and MSG. 00204 {
00205 MSG("DataQualityFilter",Msg::kInfo) << " *** DataQualityFilter::EndJob() *** " << endl;
00206 if(fFilterFile){
00207 MSG("DataQualityFilter",Msg::kInfo) << " *** saving info to file ... " << endl;
00208 TDirectory* tmpd = gDirectory;
00209 fFilterFile->cd();
00210 fFilterTree->Write();
00211 fFilterFile->Close();
00212 gDirectory = tmpd;
00213 MSG("DataQualityFilter",Msg::kInfo) << " ... info saved to file *** " << endl;
00214 }
00215 }
|
|
|
Implement to handle a JobCommand Reimplemented from JobCModule. Definition at line 194 of file DataQualityFilter.cxx. References JobCommand::PopCmd(), and JobCommand::PopOpt(). 00195 {
00196 TString cmd = command->PopCmd();
00197 if(cmd=="Set"){
00198 TString opt = command->PopOpt();
00199
00200 }
00201 }
|
|
|
Definition at line 217 of file DataQualityFilter.cxx. References fBeamStatus, fBeamType, fCoilStatus, fDetectorStatus, fFilter, fFilterBadBeam, fFilterBadDetector, fFilterFile, fFilterFileName, fFilterOnOff, fFilterTree, fHvStatus, fLiveTime, fProtonsOnTarget, fSpillStatus, fSpillTimeError, fTime, and MSG. Referenced by Ana(). 00218 {
00219 MSG("DataQualityFilter",Msg::kDebug) << " *** DataQualityFilter::WriteOutResults() *** " << endl;
00220
00221 if(!fFilterFile){
00222 TDirectory* tmpd = gDirectory;
00223 fFilterFile = new TFile(fFilterFileName.Data(),"RECREATE");
00224 fFilterTree = new TTree("DataQualityFilter","DataQualityFilter");
00225 fFilterTree->SetAutoSave(300);
00226 fFilterTree->Branch("Time",&fTime,"Time/I");
00227 fFilterTree->Branch("BeamType",&fBeamType,"BeamType/I");
00228 fFilterTree->Branch("BeamStatus",&fBeamStatus,"BeamStatus/I");
00229 fFilterTree->Branch("SpillStatus",&fSpillStatus,"SpillStatus/I");
00230 fFilterTree->Branch("HvStatus",&fHvStatus,"HvStatus/I");
00231 fFilterTree->Branch("CoilStatus",&fCoilStatus,"CoilStatus/I");
00232 fFilterTree->Branch("DetectorStatus",&fDetectorStatus,"DetectorStatus/I");
00233 fFilterTree->Branch("SpillTimeError",&fSpillTimeError,"SpillTimeError/I");
00234 fFilterTree->Branch("LiveTime",&fLiveTime,"LiveTime/I");
00235 fFilterTree->Branch("ProtonsOnTarget",&fProtonsOnTarget,"ProtonsOnTarget/D");
00236 fFilterTree->Branch("FilterOnOff",&fFilterOnOff,"FilterOnOff/I");
00237 fFilterTree->Branch("FilterBadBeam",&fFilterBadBeam,"FilterBadBeam/I");
00238 fFilterTree->Branch("FilterBadDetector",&fFilterBadDetector,"FilterDetector/I");
00239 fFilterTree->Branch("Filter",&fFilter,"Filter/I");
00240 gDirectory = tmpd;
00241 }
00242
00243 if(fFilterFile){
00244 TDirectory* tmpd = gDirectory;
00245 fFilterFile->cd();
00246 fFilterTree->Fill();
00247 gDirectory = tmpd;
00248 }
00249 }
|
|
|
Definition at line 34 of file DataQualityFilter.h. Referenced by Ana(), and WriteOutResults(). |
|
|
Definition at line 38 of file DataQualityFilter.h. Referenced by Ana(), and WriteOutResults(). |
|
|
Definition at line 36 of file DataQualityFilter.h. Referenced by Ana(), and WriteOutResults(). |
|
|
Definition at line 30 of file DataQualityFilter.h. Referenced by Ana(). |
|
|
Definition at line 37 of file DataQualityFilter.h. Referenced by Ana(), and WriteOutResults(). |
|
|
Definition at line 27 of file DataQualityFilter.h. Referenced by Ana(). |
|
|
Definition at line 32 of file DataQualityFilter.h. Referenced by Ana(), and WriteOutResults(). |
|
|
Definition at line 43 of file DataQualityFilter.h. Referenced by Ana(), Config(), DefaultConfig(), and WriteOutResults(). |
|
|
Definition at line 44 of file DataQualityFilter.h. Referenced by Ana(), Config(), DefaultConfig(), and WriteOutResults(). |
|
|
Definition at line 49 of file DataQualityFilter.h. Referenced by EndJob(), and WriteOutResults(). |
|
|
Definition at line 48 of file DataQualityFilter.h. Referenced by Config(), DefaultConfig(), and WriteOutResults(). |
|
|
Definition at line 42 of file DataQualityFilter.h. Referenced by Ana(), Config(), DefaultConfig(), and WriteOutResults(). |
|
|
Definition at line 50 of file DataQualityFilter.h. Referenced by EndJob(), and WriteOutResults(). |
|
|
Definition at line 35 of file DataQualityFilter.h. Referenced by Ana(), and WriteOutResults(). |
|
|
Definition at line 31 of file DataQualityFilter.h. Referenced by Ana(), and WriteOutResults(). |
|
|
Definition at line 40 of file DataQualityFilter.h. Referenced by Ana(), and WriteOutResults(). |
|
|
Definition at line 33 of file DataQualityFilter.h. Referenced by Ana(), and WriteOutResults(). |
|
|
Definition at line 39 of file DataQualityFilter.h. Referenced by Ana(), and WriteOutResults(). |
|
|
Definition at line 29 of file DataQualityFilter.h. Referenced by Ana(), and WriteOutResults(). |
|
|
Definition at line 46 of file DataQualityFilter.h. Referenced by Config(), and DefaultConfig(). |
|
|
Definition at line 45 of file DataQualityFilter.h. Referenced by Config(), and DefaultConfig(). |
1.3.9.1