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

|
|
Definition at line 48 of file DataQualityReader.cxx. References MSG. 00048 : 00049 fRecord(0), 00050 fSnarl(0), 00051 fFilter(0), 00052 fCounter(0), 00053 fDQHeader(0), 00054 fDQRawDigits(0), 00055 fDQHotColdElectronics(0), 00056 fDQLightInjection(0), 00057 fDQSpillServer(0), 00058 fWriteDataQuality(0), 00059 fWriteDeadChips(0), 00060 fFilterOnOff(0), 00061 fFilterBadDataQuality(0), 00062 fFilterLowMultiplicity(0), 00063 fFilterHighMultiplicity(0), 00064 fFilterWord(0), 00065 fDataQualityFile(0), 00066 fDataQualityTree(0), 00067 fDeadChipFile(0), 00068 fDeadChipTree(0) 00069 { 00070 MSG("DataQuality",Msg::kDebug) << " *** DataQualityReader::DataQualityReader() *** " << endl; 00071 00072 // Create the monitoring objects which extract the 00073 // monitoring information from the raw data blocks 00074 00075 fDQHeader = new DQHeader(); 00076 fDQRawDigits = new DQRawDigits(); 00077 fDQHotColdElectronics = new DQHotColdElectronics(); 00078 fDQLightInjection = new DQLightInjection(); 00079 fDQSpillServer = new DQSpillServer(); 00080 }
|
|
|
Definition at line 82 of file DataQualityReader.cxx. References MSG. 00083 {
00084 MSG("DataQuality",Msg::kInfo) << " *** DataQualityReader::~DataQualityReader() *** " << endl;
00085
00086 delete fDQHeader;
00087 delete fDQRawDigits;
00088 delete fDQHotColdElectronics;
00089 delete fDQLightInjection;
00090 delete fDQSpillServer;
00091 }
|
|
|
Implement this for read only access to the MomNavigator Reimplemented from JobCModule. Definition at line 225 of file DataQualityReader.cxx. References Adc, BusyChips, ChannelId, ChipStatus, ColdChips, CrateMask, DataQuality, Entries, ErrorCode, fDataQualityFile, fDataQualityTree, fDeadChipFile, fDeadChipTree, CandRecord::FindCandHandle(), fWriteDataQuality, fWriteDeadChips, CandDeadChipHandle::GetAdc(), CandDataQualityHandle::GetBusyChips(), RawChannelId::GetChAdd(), CandDeadChipHandle::GetChannelId(), CandDeadChipHandle::GetChipStatus(), CandDataQualityHandle::GetColdChips(), CandDataQualityHandle::GetCrateMask(), CandDataQualityHandle::GetDataQuality(), CandHandle::GetDaughterIterator(), CandDeadChipHandle::GetEntries(), CandDeadChipHandle::GetErrorCode(), CandDataQualityHandle::GetErrorCode(), MomNavigator::GetFragment(), CandDataQualityHandle::GetHotChips(), CandDataQualityHandle::GetLiCalibPoint(), CandDataQualityHandle::GetLiCalibType(), CandDataQualityHandle::GetLiPulseHeight(), CandDataQualityHandle::GetLiPulserBox(), CandDataQualityHandle::GetLiPulserLed(), CandDataQualityHandle::GetLiPulseWidth(), CandDataQualityHandle::GetLiRelativeTime(), CandDataQualityHandle::GetLiSubtractedTime(), CandDataQualityHandle::GetLiTime(), CandDataQualityHandle::GetLiTrigger(), CandDataQualityHandle::GetPostTriggerDigits(), CandDataQualityHandle::GetPreTriggerDigits(), CandDataQualityHandle::GetReadoutErrors(), CandDataQualityHandle::GetRun(), CandDataQualityHandle::GetRunType(), CandDataQualityHandle::GetSnarl(), CandDataQualityHandle::GetSnarlMultiplicity(), CandDataQualityHandle::GetSpillStatus(), CandDataQualityHandle::GetSpillTimeError(), CandDataQualityHandle::GetSpillType(), CandDataQualityHandle::GetSubRun(), CandDeadChipHandle::GetTdc(), CandDataQualityHandle::GetTime(), CandDataQualityHandle::GetTimeFrame(), CandDeadChipHandle::GetTriggerRate(), CandDataQualityHandle::GetTriggerSource(), CandDataQualityHandle::GetTriggerTime(), HotChips, LiCalibPoint, LiCalibType, LiPulseHeight, LiPulserBox, LiPulserLed, LiPulseWidth, LiRelativeTime, LiSubtractedTime, LiTime, LiTrigger, MSG, PostTriggerDigits, PreTriggerDigits, ReadoutErrors, Run, RunType, Snarl, SnarlMultiplicity, SpillStatus, SpillTimeError, SpillType, SubRun, Tdc, Time, TimeFrame, TriggerRate, TriggerSource, and TriggerTime. 00226 {
00227 MSG("DataQuality",Msg::kDebug) << " *** DataQualityReader::Ana(...) *** " << endl;
00228
00229 JobCResult result(JobCResult::kPassed);
00230
00231 // Write out data quality and/or dead chip info
00232
00233 CandRecord* candrec = dynamic_cast<CandRecord*>(mom->GetFragment("CandRecord", "PrimaryCandidateRecord"));
00234 if( candrec ){
00235 CandDataQualityHandle* cdh = dynamic_cast<CandDataQualityHandle*>(candrec->FindCandHandle("CandDataQualityHandle"));
00236 if( cdh ){
00237
00238 Time=cdh->GetTime();
00239 RunType=cdh->GetRunType();
00240 Run=cdh->GetRun();
00241 SubRun=cdh->GetSubRun();
00242 TimeFrame=cdh->GetTimeFrame();
00243 Snarl=cdh->GetSnarl();
00244 TriggerSource=cdh->GetTriggerSource();
00245 TriggerTime=cdh->GetTriggerTime();
00246 ErrorCode=cdh->GetErrorCode();
00247 CrateMask=cdh->GetCrateMask();
00248 PreTriggerDigits=cdh->GetPreTriggerDigits();
00249 PostTriggerDigits=cdh->GetPostTriggerDigits();
00250 SnarlMultiplicity=cdh->GetSnarlMultiplicity();
00251 SpillStatus=cdh->GetSpillStatus();
00252 SpillType=cdh->GetSpillType();
00253 SpillTimeError=cdh->GetSpillTimeError();
00254 LiTrigger=cdh->GetLiTrigger();
00255 LiTime=cdh->GetLiTime();
00256 LiSubtractedTime=cdh->GetLiSubtractedTime();
00257 LiRelativeTime=cdh->GetLiRelativeTime();
00258 LiCalibPoint=cdh->GetLiCalibPoint();
00259 LiCalibType=cdh->GetLiCalibType();
00260 LiPulserBox=cdh->GetLiPulserBox();
00261 LiPulserLed=cdh->GetLiPulserLed();
00262 LiPulseHeight=cdh->GetLiPulseHeight();
00263 LiPulseWidth=cdh->GetLiPulseWidth();
00264 ColdChips=cdh->GetColdChips();
00265 HotChips=cdh->GetHotChips();
00266 BusyChips=cdh->GetBusyChips();
00267 ReadoutErrors=cdh->GetReadoutErrors();
00268 DataQuality=cdh->GetDataQuality();
00269
00270 if(fWriteDataQuality && !fDataQualityFile){
00271 TString mystring("dataquality.root");
00272 TDirectory* tmpd = gDirectory;
00273 fDataQualityFile = new TFile(mystring.Data(),"RECREATE");
00274 fDataQualityTree = new TTree("DataQuality","DataQuality");
00275 fDataQualityTree->SetAutoSave(300);
00276 fDataQualityTree->Branch("Time",&Time,"Time/I");
00277 fDataQualityTree->Branch("RunType",&RunType,"RunType/I");
00278 fDataQualityTree->Branch("Run",&Run,"Run/I");
00279 fDataQualityTree->Branch("SubRun",&SubRun,"SubRun/I");
00280 fDataQualityTree->Branch("TimeFrame",&TimeFrame,"TimeFrame/I");
00281 fDataQualityTree->Branch("Snarl",&Snarl,"Snarl/I");
00282 fDataQualityTree->Branch("TriggerSource",&TriggerSource,"TriggerSource/I");
00283 fDataQualityTree->Branch("TriggerTime",&TriggerTime,"TriggerTime/I");
00284 fDataQualityTree->Branch("ErrorCode",&ErrorCode,"ErrorCode/I");
00285 fDataQualityTree->Branch("CrateMask",&CrateMask,"CrateMask/I");
00286 fDataQualityTree->Branch("PreTriggerDigits",&PreTriggerDigits,"PreTriggerDigits/I");
00287 fDataQualityTree->Branch("PostTriggerDigits",&PostTriggerDigits,"PostTriggerDigits/I");
00288 fDataQualityTree->Branch("SnarlMultiplicity",&SnarlMultiplicity,"SnarlMultiplicity/I");
00289 fDataQualityTree->Branch("SpillStatus",&SpillStatus,"SpillStatus/I");
00290 fDataQualityTree->Branch("SpillType",&SpillType,"SpillType/I");
00291 fDataQualityTree->Branch("SpillTimeError",&SpillTimeError,"SpillTimeError/I");
00292 fDataQualityTree->Branch("LiTrigger",&LiTrigger,"LiTrigger/I");
00293 fDataQualityTree->Branch("LiTime",&LiTime,"LiTime/I");
00294 fDataQualityTree->Branch("LiSubtractedTime",&LiSubtractedTime,"LiSubtractedTime/I");
00295 fDataQualityTree->Branch("LiRelativeTime",&LiRelativeTime,"LiRelativeTime/I");
00296 fDataQualityTree->Branch("LiCalibPoint",&LiCalibPoint,"LiCalibPoint/I");
00297 fDataQualityTree->Branch("LiCalibType",&LiCalibType,"LiCalibType/I");
00298 fDataQualityTree->Branch("LiPulserBox",&LiPulserBox,"LiPulserBox/I");
00299 fDataQualityTree->Branch("LiPulserLed",&LiPulserLed,"LiPulserLed/I");
00300 fDataQualityTree->Branch("LiPulseHeight",&LiPulseHeight,"LiPulseHeight/I");
00301 fDataQualityTree->Branch("LiPulseWidth",&LiPulseWidth,"LiPulseWidth/I");
00302 fDataQualityTree->Branch("ColdChips",&ColdChips,"ColdChips/I");
00303 fDataQualityTree->Branch("HotChips",&HotChips,"HotChips/I");
00304 fDataQualityTree->Branch("BusyChips",&BusyChips,"BusyChips/I");
00305 fDataQualityTree->Branch("ReadoutErrors",&ReadoutErrors,"ReadoutErrors/I");
00306 fDataQualityTree->Branch("DataQuality",&DataQuality,"DataQuality/I");
00307 gDirectory = tmpd;
00308 }
00309
00310 if(fWriteDataQuality && fDataQualityFile){
00311 TDirectory* tmpd = gDirectory;
00312 fDataQualityFile->cd();
00313 fDataQualityTree->Fill();
00314 gDirectory = tmpd;
00315 }
00316
00317 TIter deadchipitr(cdh->GetDaughterIterator());
00318 while(CandDeadChipHandle* deadchip = dynamic_cast<CandDeadChipHandle*>(deadchipitr())){
00319 if( deadchip ){
00320
00321 Entries=deadchip->GetEntries();
00322 ChannelId=deadchip->GetChannelId().GetChAdd();
00323 Adc=deadchip->GetAdc();
00324 Tdc=deadchip->GetTdc();
00325 ErrorCode=deadchip->GetErrorCode();
00326 TriggerRate=deadchip->GetTriggerRate();
00327 ChipStatus=deadchip->GetChipStatus();
00328
00329 if(fWriteDeadChips && !fDeadChipFile){
00330 TString mystring("deadchips.root");
00331 TDirectory* tmpd = gDirectory;
00332 fDeadChipFile = new TFile(mystring.Data(),"RECREATE");
00333 fDeadChipTree = new TTree("DeadChips","DeadChips");
00334 fDeadChipTree->SetAutoSave(300);
00335 fDeadChipTree->Branch("Time",&Time,"Time/I");
00336 fDeadChipTree->Branch("Run",&Run,"Run/I");
00337 fDeadChipTree->Branch("SubRun",&SubRun,"SubRun/I");
00338 fDeadChipTree->Branch("TimeFrame",&TimeFrame,"TimeFrame/I");
00339 fDeadChipTree->Branch("Snarl",&Snarl,"Snarl/I");
00340 fDeadChipTree->Branch("Entries",&Entries,"Entries/I");
00341 fDeadChipTree->Branch("ChannelId",&ChannelId,"ChannelId/I");
00342 fDeadChipTree->Branch("Adc",&Adc,"Adc/I");
00343 fDeadChipTree->Branch("Tdc",&Tdc,"Tdc/I");
00344 fDeadChipTree->Branch("ErrorCode",&ErrorCode,"ErrorCode/I");
00345 fDeadChipTree->Branch("TriggerRate",&TriggerRate,"TriggerRate/I");
00346 fDeadChipTree->Branch("ChipStatus",&ChipStatus,"ChipStatus/I");
00347 gDirectory = tmpd;
00348 }
00349
00350 if(fWriteDeadChips && fDeadChipFile){
00351 TDirectory* tmpd = gDirectory;
00352 fDeadChipFile->cd();
00353 fDeadChipTree->Fill();
00354 gDirectory = tmpd;
00355 }
00356 }
00357
00358 }
00359 }
00360 }
00361
00362 return result;
00363 }
|
|
|
Definition at line 551 of file DataQualityReader.cxx. References fFilterWord, CandDataQualityHandle::GetDataQuality(), and MSG. Referenced by Reco(). 00552 {
00553 // APPLY DATA QUALITY FILTER
00554 // =========================
00555 // pass events if:
00556 // (a) no filter word
00557 // (b) no problem with data quality
00558 // (c) filter mask doesn't match quality bits
00559
00560 Bool_t filter=0;
00561
00562 if( ( fFilterWord==0 || cdh->GetDataQuality()==0 )
00563 || ( (cdh->GetDataQuality()&fFilterWord)==0 ) ) filter=1;
00564
00565 MSG("DataQuality",Msg::kVerbose) << " APPLY FILTER [filterword=" << fFilterWord << ", quality=" << cdh->GetDataQuality() << ", filter=" << filter << "]" << endl;
00566
00567 return filter;
00568 }
|
|
|
Implement for notification of begin of job Reimplemented from JobCModule. Definition at line 93 of file DataQualityReader.cxx. References MSG. 00094 {
00095 MSG("DataQuality",Msg::kInfo) << " *** DataQualityReader::BeginJob() *** " << endl;
00096
00097 }
|
|
|
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 384 of file DataQualityReader.cxx. References fFilterOnOff, fFilterWord, fWriteDataQuality, fWriteDeadChips, Registry::Get(), and MSG. 00385 {
00386 MSG("DataQuality",Msg::kDebug) << " *** DataQualityReader::Config() *** " << endl;
00387
00388 Int_t tmpint;
00389 Int_t tmpFilterWord;
00390
00391 if(r.Get("WriteDataQuality",tmpint)) fWriteDataQuality = tmpint;
00392 if(r.Get("WriteDeadChips",tmpint)) fWriteDeadChips = tmpint;
00393 if(r.Get("FilterOnOff",tmpint)) fFilterOnOff = tmpint;
00394
00395 if(r.Get("FilterBadDataQuality",tmpint)){
00396 if(tmpint){
00397 tmpFilterWord = fFilterWord;
00398 fFilterWord |= CandDataQuality::kBad;
00399 MSG("DataQuality",Msg::kDebug) << " Filter bad data quality : " << tmpFilterWord << "|CandDataQuality::kBad = " << fFilterWord << endl;
00400 }
00401 }
00402
00403 if(r.Get("FilterLowMultiplicity",tmpint)){
00404 if(tmpint){
00405 tmpFilterWord = fFilterWord;
00406 fFilterWord |= CandDataQuality::kLowMultiplicity;
00407 MSG("DataQuality",Msg::kDebug) << " Filter low multiplicity : " << tmpFilterWord << "|CandDataQuality::kLowMultiplicity = " << fFilterWord << endl;
00408 }
00409 }
00410
00411 if(r.Get("FilterHighMultiplicity",tmpint)){
00412 if(tmpint){
00413 tmpFilterWord = fFilterWord;
00414 fFilterWord |= CandDataQuality::kHighMultiplicity;
00415 MSG("DataQuality",Msg::kDebug) << " Filter high multiplicity : " << tmpFilterWord << "|CandDataQuality::kHighMultiplicity = " << fFilterWord << endl;
00416 }
00417 }
00418
00419 if(r.Get("FilterWord",tmpint)){
00420 if(tmpint){
00421 tmpFilterWord = fFilterWord;
00422 fFilterWord |= tmpint;
00423 MSG("DataQuality",Msg::kDebug) << " Filter word : " << tmpFilterWord << "|" << tmpint << " = " << fFilterWord << endl;
00424 }
00425 }
00426
00427 MSG("DataQuality",Msg::kDebug)
00428 << " configuration: " << endl
00429 << " WriteDataQuality=" << fWriteDataQuality << endl
00430 << " WriteDeadChips=" << fWriteDeadChips << endl
00431 << " FilterOnOff=" << fFilterOnOff << endl
00432 << " FilterWord=" << fFilterWord << endl;
00433
00434 return;
00435 }
|
|
|
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 365 of file DataQualityReader.cxx. References fFilterBadDataQuality, fFilterHighMultiplicity, fFilterLowMultiplicity, fFilterOnOff, fFilterWord, fWriteDataQuality, fWriteDeadChips, Registry::LockValues(), MSG, Registry::Set(), and Registry::UnLockValues(). 00366 {
00367 MSG("DataQuality",Msg::kDebug) << " *** DataQualityReader::DefaultConfig() *** " << endl;
00368
00369 static Registry r;
00370 r.SetName("DataQualityReader.config.default");
00371 r.UnLockValues();
00372 r.Set("WriteDataQuality",fWriteDataQuality);
00373 r.Set("WriteDeadChips",fWriteDeadChips);
00374 r.Set("FilterOnOff",fFilterOnOff);
00375 r.Set("FilterBadDataQuality",fFilterBadDataQuality);
00376 r.Set("FilterLowMultiplicity",fFilterLowMultiplicity);
00377 r.Set("FilterHighMultiplicity",fFilterHighMultiplicity);
00378 r.Set("FilterWord",fFilterWord);
00379 r.LockValues();
00380
00381 return r;
00382 }
|
|
|
Implement for notification of end of job Reimplemented from JobCModule. Definition at line 446 of file DataQualityReader.cxx. References fDataQualityFile, fDataQualityTree, fDeadChipFile, fDeadChipTree, and MSG. 00447 {
00448 MSG("DataQuality",Msg::kInfo) << " *** DataQualityReader::EndJob() *** " << endl;
00449
00450 if(fDataQualityFile){
00451 MSG("DataQuality",Msg::kInfo) << " *** saving data quality info to file ... " << endl;
00452 TDirectory* tmpd = gDirectory;
00453 fDataQualityFile->cd();
00454 fDataQualityTree->Write();
00455 fDataQualityFile->Close();
00456 gDirectory = tmpd;
00457 MSG("DataQuality",Msg::kInfo) << " ... data quality info saved to file *** " << endl;
00458 }
00459
00460 if(fDeadChipFile){
00461 MSG("DataQuality",Msg::kInfo) << " *** saving dead chip info to file ... " << endl;
00462 TDirectory* tmpd = gDirectory;
00463 fDeadChipFile->cd();
00464 fDeadChipTree->Write();
00465 fDeadChipFile->Close();
00466 gDirectory = tmpd;
00467 MSG("DataQuality",Msg::kInfo) << " ... dead chip info saved to file *** " << endl;
00468 }
00469 }
|
|
|
Implement to handle a JobCommand Reimplemented from JobCModule. Definition at line 437 of file DataQualityReader.cxx. References JobCommand::PopCmd(), and JobCommand::PopOpt(). 00438 {
00439 TString cmd = command->PopCmd();
00440 if(cmd=="Set"){
00441 TString opt = command->PopOpt();
00442
00443 }
00444 }
|
|
|
Definition at line 493 of file DataQualityReader.cxx. References fDQHeader, fDQHotColdElectronics, fDQLightInjection, fDQRawDigits, fDQSpillServer, fSnarl, MSG, DQLightInjection::Process(), DQSpillServer::Process(), DQHotColdElectronics::Process(), DQRawDigits::Process(), and DQHeader::Process(). Referenced by Reco(). 00494 {
00495
00496 // HEADER BLOCKS
00497 // =============
00498 if(obj->InheritsFrom("RawDaqHeaderBlock")){
00499 MSG("DataQuality",Msg::kDebug) << " ... found RawDaqHeaderBlock " << endl;
00500 RawDaqHeaderBlock* rdb = (RawDaqHeaderBlock*)(obj);
00501 fDQHeader->Process(rdb);
00502 fDQRawDigits->Process(rdb);
00503 }
00504
00505 if(obj->InheritsFrom("RawSnarlHeaderBlock")){
00506 MSG("DataQuality",Msg::kDebug) << " ... found RawSnarlHeaderBlock " << endl;
00507 RawSnarlHeaderBlock* rdb = (RawSnarlHeaderBlock*)(obj);
00508 fDQHeader->Process(rdb);
00509 fDQRawDigits->Process(rdb);
00510 }
00511
00512 // MONITORING BLOCKS
00513 // =================
00514 if(obj->InheritsFrom("RawTpSinglesSummaryBlock")){
00515 MSG("DataQuality",Msg::kDebug) << " ... found RawTpSinglesSummaryBlock " << endl;
00516 RawTpSinglesSummaryBlock* rdb = (RawTpSinglesSummaryBlock*)(obj);
00517 fDQHotColdElectronics->Process(rdb);
00518 }
00519
00520 if(obj->InheritsFrom("RawSpillServerMonitorBlock")){
00521 MSG("DataQuality",Msg::kDebug) << " ... found RawSpillServerMonitorBlock " << endl;
00522 RawSpillServerMonitorBlock* rdb = (RawSpillServerMonitorBlock*)(obj);
00523 fDQSpillServer->Process(rdb);
00524 }
00525
00526 if(obj->InheritsFrom("RawLiTpmtDigitsBlock")){
00527 MSG("DataQuality",Msg::kDebug) << " ... found RawLiTpmtDigitsBlock " << endl;
00528 RawLiTpmtDigitsBlock* rdb = (RawLiTpmtDigitsBlock*)(obj);
00529 fDQLightInjection->Process(rdb);
00530 }
00531
00532 // LIGHT INJECTION BLOCKS
00533 // ======================
00534 if(obj->InheritsFrom("RawLIAdcSummaryBlock")){
00535 MSG("DataQuality",Msg::kDebug) << " ... found RawLIAdcSummaryBlock " << endl;
00536 RawLIAdcSummaryBlock* rdb = (RawLIAdcSummaryBlock*)(obj);
00537 fDQLightInjection->Process(rdb);
00538 }
00539
00540 // RAW DATA BLOCKS
00541 // ===============
00542 if(obj->InheritsFrom("RawDigitDataBlock")){
00543 MSG("DataQuality",Msg::kDebug) << " ... found RawDigitDataBlock " << endl;
00544 RawDigitDataBlock* rdb = (RawDigitDataBlock*)(obj);
00545 fDQRawDigits->Process(rdb);
00546 fSnarl=1;
00547 }
00548
00549 }
|
|
|
Definition at line 471 of file DataQualityReader.cxx. References fDQHeader, fDQRawDigits, MSG, DQRawDigits::Process(), and DQHeader::Process(). Referenced by Reco(). 00472 {
00473
00474 // DAQ HEADER
00475 // ==========
00476 if(obj->InheritsFrom("RawDaqHeader")){
00477 MSG("DataQuality",Msg::kDebug) << " ... found RawDaqHeader " << endl;
00478 RawDaqHeader* hdr = (RawDaqHeader*)(obj);
00479 fDQHeader->Process(hdr);
00480 fDQRawDigits->Process(hdr);
00481 }
00482
00483 // SNARL HEADER
00484 // ============
00485 if(obj->InheritsFrom("RawDaqSnarlHeader")){
00486 MSG("DataQuality",Msg::kDebug) << " ... found RawDaqSnarlHeader " << endl;
00487 RawDaqSnarlHeader* hdr = (RawDaqSnarlHeader*)(obj);
00488 fDQHeader->Process(hdr);
00489 fDQRawDigits->Process(hdr);
00490 }
00491 }
|
|
|
Implement this for read-write access to the MomNavigator Reimplemented from JobCModule. Definition at line 99 of file DataQualityReader.cxx. References MomNavigator::AdoptFragment(), ApplyFilter(), fCounter, fDQHeader, fDQHotColdElectronics, fDQLightInjection, fDQRawDigits, fDQSpillServer, fFilter, CandRecord::FindCandHandle(), MomNavigator::FragmentIter(), fRecord, fSnarl, AlgFactory::GetAlgHandle(), MomNavigator::GetFragment(), AlgFactory::GetInstance(), RawRecord::GetName(), RawRecord::GetRawBlockIter(), RawRecord::GetRawHeader(), DQHeader::GetRun(), DQHeader::GetSnarl(), RecMinosHdr::GetVldContext(), CandDataQuality::MakeCandidate(), MSG, ProcessBlock(), ProcessHeader(), run(), CandRecord::SecureCandHandle(), CandContext::SetCandRecord(), CandContext::SetDataIn(), JobCResult::SetFailed(), CandHandle::SetName(), JobCResult::SetPassed(), and CandHandle::SetTitle(). 00100 {
00101 MSG("DataQuality",Msg::kInfo) << " *** DataQualityReader::Reco(...) *** " << endl;
00102
00103 JobCResult result(JobCResult::kPassed);
00104
00105 VldContext vldc;
00106 TObject* momobject = 0;
00107 Int_t run,snarl;
00108
00109 fRecord=0;
00110 fSnarl=0;
00111 fFilter=0;
00112
00113 // ===================
00114 // PROCESS RAW RECORDS
00115 // ===================
00116 // Iterate over raw records in mom and extract
00117 // monitoring information from raw data blocks
00118
00119 TIter momitr(mom->FragmentIter());
00120 while((momobject = momitr())){
00121 if(momobject->InheritsFrom("RawRecord")){
00122 fRecord=1;
00123 fCounter++;
00124 MSG("DataQuality",Msg::kInfo) << " *** RAW RECORD [" << fCounter << "] *** " << endl;
00125 RawRecord* rawrec = dynamic_cast<RawRecord*>(momobject);
00126
00127 // Get the raw header and extract validity context
00128 vldc = rawrec->GetRawHeader()->GetVldContext();
00129 this->ProcessHeader((TObject*)(rawrec->GetRawHeader()));
00130
00131 // Iterate over the raw blocks in raw record
00132 TIter rawrecitr = rawrec->GetRawBlockIter();
00133 TObject* tob = 0;
00134 while((tob = rawrecitr())){
00135 MSG("DataQuality",Msg::kDebug) << " " << tob->GetName() << endl;
00136 this->ProcessBlock(tob);
00137 }
00138
00139 }
00140 }
00141
00142 if( !fRecord ){
00143 MSG("DataQuality",Msg::kWarning) << " *** FAILED TO FIND RAW RECORD *** " << endl;
00144 return result.SetFailed();
00145 }
00146
00147 // ===========================
00148 // MAKE DATA QUALITY CANDIDATE
00149 // ===========================
00150 // If the raw record contains a snarl then create a new
00151 // data quality candidate and add it to the CandRecord
00152
00153 if( fSnarl ){
00154 MSG("DataQuality",Msg::kInfo) << " *** MAKING DATA QUALITY CANDIDATE *** " << endl;
00155 run=fDQHeader->GetRun();
00156 snarl=fDQHeader->GetSnarl();
00157
00158 // Get the CandRecord
00159 CandRecord* candrec = dynamic_cast<CandRecord*>(mom->GetFragment("CandRecord", "PrimaryCandidateRecord"));
00160 if(candrec==0) {
00161 MSG("DataQuality",Msg::kInfo) << " *** MAKING NEW CANDRECORD (" << run << "," << snarl << ") ***" << endl;
00162 CandHeader *head = new CandHeader(vldc,run,snarl);
00163 candrec = new CandRecord(head);
00164 candrec->SetName("PrimaryCandidateRecord");
00165 candrec->SetTitle("Created from RawRecord.");
00166 mom->AdoptFragment(candrec);
00167 }
00168
00169 AlgFactory &af = AlgFactory::GetInstance();
00170 AlgHandle ah = af.GetAlgHandle("AlgDataQuality", "default");
00171
00172 // Package up the monitoring objects and
00173 // pass them to the data quality algorithm
00174 TObjArray* mycx = new TObjArray();
00175 mycx->Add(fDQHeader);
00176 mycx->Add(fDQRawDigits);
00177 mycx->Add(fDQHotColdElectronics);
00178 mycx->Add(fDQLightInjection);
00179 mycx->Add(fDQSpillServer);
00180
00181 CandContext cx(this, mom);
00182 cx.SetCandRecord(candrec);
00183 cx.SetDataIn(mycx);
00184 CandDataQualityHandle dataquality = CandDataQuality::MakeCandidate(ah,cx);
00185 dataquality.SetName("CandDataQualityHandle");
00186 dataquality.SetTitle(TString("Created by CandDataQualityReader"));
00187
00188 candrec->SecureCandHandle(dataquality);
00189
00190 delete mycx;
00191 }
00192
00193 // APPLY DATA QUALITY FILTER
00194 // =========================
00195 // apply filter based on data quality status bits
00196
00197 if( fFilterOnOff ){
00198 MSG("DataQuality",Msg::kDebug) << " *** DATA QUALITY FILTER *** " << endl;
00199
00200 if( fSnarl ){
00201 CandRecord* candrec = dynamic_cast<CandRecord*>(mom->GetFragment("CandRecord", "PrimaryCandidateRecord"));
00202 if( candrec ){
00203 CandDataQualityHandle* cdh = dynamic_cast<CandDataQualityHandle*>(candrec->FindCandHandle("CandDataQualityHandle"));
00204 if( cdh ){
00205 fFilter = this->ApplyFilter(cdh);
00206 }
00207 }
00208 }
00209
00210 if( fFilter ){
00211 MSG("DataQuality",Msg::kDebug) << " *** PASSED FILTER *** " << endl;
00212 result.SetPassed();
00213 }
00214 else{
00215 MSG("DataQuality",Msg::kDebug) << " *** FAILED FILTER *** " << endl;
00216 result.SetFailed();
00217 }
00218 }
00219
00220 MSG("DataQuality",Msg::kInfo) << " *** DataQualityReader::Reco(...) FINISHED *** " << endl;
00221
00222 return result;
00223 }
|
|
|
Definition at line 99 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 91 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 98 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 102 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 89 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 72 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 93 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 97 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 71 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 41 of file DataQualityReader.h. Referenced by Reco(). |
|
|
Definition at line 61 of file DataQualityReader.h. |
|
|
Definition at line 62 of file DataQualityReader.h. |
|
|
Definition at line 95 of file DataQualityReader.h. |
|
|
Definition at line 96 of file DataQualityReader.h. |
|
|
Definition at line 43 of file DataQualityReader.h. Referenced by ProcessBlock(), ProcessHeader(), and Reco(). |
|
|
Definition at line 45 of file DataQualityReader.h. Referenced by ProcessBlock(), and Reco(). |
|
|
Definition at line 46 of file DataQualityReader.h. Referenced by ProcessBlock(), and Reco(). |
|
|
Definition at line 44 of file DataQualityReader.h. Referenced by ProcessBlock(), ProcessHeader(), and Reco(). |
|
|
Definition at line 47 of file DataQualityReader.h. Referenced by ProcessBlock(), and Reco(). |
|
|
Definition at line 40 of file DataQualityReader.h. Referenced by Reco(). |
|
|
Definition at line 56 of file DataQualityReader.h. Referenced by DefaultConfig(). |
|
|
Definition at line 58 of file DataQualityReader.h. Referenced by DefaultConfig(). |
|
|
Definition at line 57 of file DataQualityReader.h. Referenced by DefaultConfig(). |
|
|
Definition at line 55 of file DataQualityReader.h. Referenced by Config(), and DefaultConfig(). |
|
|
Definition at line 59 of file DataQualityReader.h. Referenced by ApplyFilter(), Config(), and DefaultConfig(). |
|
|
Definition at line 38 of file DataQualityReader.h. Referenced by Reco(). |
|
|
Definition at line 39 of file DataQualityReader.h. Referenced by ProcessBlock(), and Reco(). |
|
|
Definition at line 53 of file DataQualityReader.h. Referenced by Ana(), Config(), and DefaultConfig(). |
|
|
Definition at line 54 of file DataQualityReader.h. Referenced by Ana(), Config(), and DefaultConfig(). |
|
|
Definition at line 90 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 83 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 84 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 87 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 85 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 86 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 88 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 82 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 81 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 80 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 79 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 74 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 73 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 92 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 65 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 64 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 68 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 75 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 76 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 78 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 77 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 66 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 100 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 63 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 67 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 101 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 69 of file DataQualityReader.h. Referenced by Ana(). |
|
|
Definition at line 70 of file DataQualityReader.h. Referenced by Ana(). |
1.3.9.1