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

DataQualityFilter Class Reference

#include <DataQualityFilter.h>

Inheritance diagram for DataQualityFilter:

JobCModule List of all members.

Public Member Functions

 DataQualityFilter ()
 ~DataQualityFilter ()
void BeginJob ()
JobCResult Ana (const MomNavigator *mom)
const RegistryDefaultConfig () const
void Config (const Registry &r)
void HandleCommand (JobCommand *command)
void EndJob ()

Private Member Functions

void WriteOutResults ()

Private Attributes

DataQualityInterfacefDQhandle
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

Constructor & Destructor Documentation

DataQualityFilter::DataQualityFilter  ) 
 

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 }

DataQualityFilter::~DataQualityFilter  ) 
 

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 }


Member Function Documentation

JobCResult DataQualityFilter::Ana const MomNavigator mom  )  [virtual]
 

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 }

void DataQualityFilter::BeginJob  )  [virtual]
 

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 }

void DataQualityFilter::Config const Registry r  )  [virtual]
 

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 }

const Registry & DataQualityFilter::DefaultConfig  )  const [virtual]
 

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 }

void DataQualityFilter::EndJob  )  [virtual]
 

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 }

void DataQualityFilter::HandleCommand JobCommand command  )  [virtual]
 

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 }

void DataQualityFilter::WriteOutResults  )  [private]
 

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 }


Member Data Documentation

Int_t DataQualityFilter::fBeamStatus [private]
 

Definition at line 34 of file DataQualityFilter.h.

Referenced by Ana(), and WriteOutResults().

Int_t DataQualityFilter::fBeamType [private]
 

Definition at line 38 of file DataQualityFilter.h.

Referenced by Ana(), and WriteOutResults().

Int_t DataQualityFilter::fCoilStatus [private]
 

Definition at line 36 of file DataQualityFilter.h.

Referenced by Ana(), and WriteOutResults().

Int_t DataQualityFilter::fCurrentTime [private]
 

Definition at line 30 of file DataQualityFilter.h.

Referenced by Ana().

Int_t DataQualityFilter::fDetectorStatus [private]
 

Definition at line 37 of file DataQualityFilter.h.

Referenced by Ana(), and WriteOutResults().

DataQualityInterface* DataQualityFilter::fDQhandle [private]
 

Definition at line 27 of file DataQualityFilter.h.

Referenced by Ana().

Int_t DataQualityFilter::fFilter [private]
 

Definition at line 32 of file DataQualityFilter.h.

Referenced by Ana(), and WriteOutResults().

Int_t DataQualityFilter::fFilterBadBeam [private]
 

Definition at line 43 of file DataQualityFilter.h.

Referenced by Ana(), Config(), DefaultConfig(), and WriteOutResults().

Int_t DataQualityFilter::fFilterBadDetector [private]
 

Definition at line 44 of file DataQualityFilter.h.

Referenced by Ana(), Config(), DefaultConfig(), and WriteOutResults().

TFile* DataQualityFilter::fFilterFile [private]
 

Definition at line 49 of file DataQualityFilter.h.

Referenced by EndJob(), and WriteOutResults().

TString DataQualityFilter::fFilterFileName [private]
 

Definition at line 48 of file DataQualityFilter.h.

Referenced by Config(), DefaultConfig(), and WriteOutResults().

Int_t DataQualityFilter::fFilterOnOff [private]
 

Definition at line 42 of file DataQualityFilter.h.

Referenced by Ana(), Config(), DefaultConfig(), and WriteOutResults().

TTree* DataQualityFilter::fFilterTree [private]
 

Definition at line 50 of file DataQualityFilter.h.

Referenced by EndJob(), and WriteOutResults().

Int_t DataQualityFilter::fHvStatus [private]
 

Definition at line 35 of file DataQualityFilter.h.

Referenced by Ana(), and WriteOutResults().

Int_t DataQualityFilter::fLiveTime [private]
 

Definition at line 31 of file DataQualityFilter.h.

Referenced by Ana(), and WriteOutResults().

Double_t DataQualityFilter::fProtonsOnTarget [private]
 

Definition at line 40 of file DataQualityFilter.h.

Referenced by Ana(), and WriteOutResults().

Int_t DataQualityFilter::fSpillStatus [private]
 

Definition at line 33 of file DataQualityFilter.h.

Referenced by Ana(), and WriteOutResults().

Int_t DataQualityFilter::fSpillTimeError [private]
 

Definition at line 39 of file DataQualityFilter.h.

Referenced by Ana(), and WriteOutResults().

Int_t DataQualityFilter::fTime [private]
 

Definition at line 29 of file DataQualityFilter.h.

Referenced by Ana(), and WriteOutResults().

Int_t DataQualityFilter::fUseLookup [private]
 

Definition at line 46 of file DataQualityFilter.h.

Referenced by Config(), and DefaultConfig().

Int_t DataQualityFilter::fWriteOutResults [private]
 

Definition at line 45 of file DataQualityFilter.h.

Referenced by Config(), and DefaultConfig().


The documentation for this class was generated from the following files:
Generated on Fri Mar 28 15:58:20 2008 for loon by  doxygen 1.3.9.1