00001
00002 #include "FarDetVarcErrorsDump.h"
00003
00004 #include "MessageService/MsgService.h"
00005 #include "MinosObjectMap/MomNavigator.h"
00006 #include "JobControl/JobCommand.h"
00007 #include "JobControl/JobCModuleRegistry.h"
00008
00009 #include "RawData/RawRecord.h"
00010 #include "RawData/RawChannelId.h"
00011 #include "RawData/RawDaqHeaderBlock.h"
00012 #include "RawData/RawVarcErrorInTfBlock.h"
00013
00014 #include "Validity/VldContext.h"
00015 #include "Validity/VldTimeStamp.h"
00016
00017 #include "TDirectory.h"
00018
00019 CVSID("$Id: FarDetVarcErrorsDump.cxx,v 1.1 2006/04/21 17:40:11 blake Exp $");
00020
00021 JOBMODULE(FarDetVarcErrorsDump,"FarDetVarcErrorsDump","FarDetVarcErrorsDump");
00022
00023 FarDetVarcErrorsDump::FarDetVarcErrorsDump() :
00024 fVarcErrorsFile(0),
00025 fVarcErrorsTree(0)
00026 {
00027
00028 }
00029
00030 FarDetVarcErrorsDump::~FarDetVarcErrorsDump()
00031 {
00032
00033 }
00034
00035 void FarDetVarcErrorsDump::BeginJob()
00036 {
00037 MSG("FarDetVarcErrorsDump",Msg::kInfo) << " *** FarDetVarcErrorsDump::BeginJob() *** " << endl;
00038
00039 }
00040
00041 JobCResult FarDetVarcErrorsDump::Ana(const MomNavigator *mom)
00042 {
00043 MSG("FarDetVarcErrorsDump",Msg::kDebug) << " *** FarDetVarcErrorsDump::Ana(...) *** " << endl;
00044
00045 UShort_t timeBlock,crateId,varcId,etcId,errCode;
00046
00047 JobCResult result(JobCResult::kPassed);
00048
00049 TIter momitr(mom->FragmentIter());
00050 while(const RawRecord* rawrec = dynamic_cast<const RawRecord*>(momitr())){
00051
00052 MSG("FarDetVarcErrorsDump",Msg::kDebug) << " *** NEXT RECORD *** " << endl;
00053
00054 TIter rawrecitr = rawrec->GetRawBlockIter();
00055 TObject *tob;
00056 while((tob = rawrecitr())){
00057 MSG("FarDetVarcErrorsDump",Msg::kDebug) << tob->GetName() << endl;
00058
00059 if(tob->InheritsFrom("RawDaqHeaderBlock")){
00060 MSG("FarDetVarcErrorsDump",Msg::kDebug) << " ... found RawDaqHeaderBlock " << endl;
00061 RawDaqHeaderBlock* rdb = (RawDaqHeaderBlock*)(tob);
00062 run = rdb->GetRun();
00063 timeframe = rdb->GetTimeFrameNum();
00064 date = (((VldTimeStamp)(rdb->GetTimeStamp())).GetSec()-1059696000)/(3600*24);
00065 time = (((VldTimeStamp)(rdb->GetTimeStamp())).GetSec()-1059696000)%(3600*24);
00066 MSG("FarDetVarcErrorsDump",Msg::kDebug) << " ... timeframe=" << timeframe << endl;
00067 }
00068
00069 if(tob->InheritsFrom("RawVarcErrorInTfBlock")){
00070 MSG("FarDetDataQualityModule",Msg::kDebug) << " ... found RawVarcErrorInTfBlock" << endl;
00071 RawVarcErrorInTfBlock* rdb = (RawVarcErrorInTfBlock*)(tob);
00072
00073 if( !fVarcErrorsFile ){
00074
00075
00076
00077 TString mystring("fardet.varcerrors.root");
00078 TDirectory* tmpd = gDirectory;
00079 fVarcErrorsFile = new TFile(mystring.Data(),"RECREATE");
00080 fVarcErrorsTree = new TTree("VarcErrorsTree","VarcErrorsTree");
00081 fVarcErrorsTree->SetAutoSave(100);
00082 fVarcErrorsTree->Branch("date",&date,"date/I");
00083 fVarcErrorsTree->Branch("time",&time,"time/I");
00084 fVarcErrorsTree->Branch("run",&run,"run/I");
00085 fVarcErrorsTree->Branch("timeframe",&timeframe,"timeframe/I");
00086 fVarcErrorsTree->Branch("timeblock",&timeblock,"timeblock/I");
00087 fVarcErrorsTree->Branch("crate",&crate,"crate/I");
00088 fVarcErrorsTree->Branch("varc",&varc,"varc/I");
00089 fVarcErrorsTree->Branch("etc",&etc,"etc/I");
00090 fVarcErrorsTree->Branch("sparserr",&sparserr,"sparserr/I");
00091 fVarcErrorsTree->Branch("etcerr",&etcerr,"etcerr/I");
00092 fVarcErrorsTree->Branch("errcode",&errcode,"errcode/I");
00093 gDirectory = tmpd;
00094 }
00095
00096 crateId = rdb->GetCrateId();
00097 crateId-=1792;
00098
00099 for(Int_t k=0;k<rdb->GetNumberOfSparsErrors();k++){
00100 rdb->UnpackSparsError(k,timeBlock,varcId,errCode);
00101 timeblock = timeBlock;
00102 crate = crateId;
00103 varc = varcId;
00104 etc = -1;
00105 sparserr = 1;
00106 etcerr = 0;
00107 errcode = errCode;
00108 TDirectory* tmpddd = gDirectory;
00109 fVarcErrorsFile->cd();
00110 fVarcErrorsTree->Fill();
00111 gDirectory = tmpddd;
00112 }
00113
00114 for(Int_t k=0;k<rdb->GetNumberOfEtcErrors();k++){
00115 rdb->UnpackEtcError(k,timeBlock,varcId,etcId,errCode);
00116 timeblock = timeBlock;
00117 crate = crateId;
00118 varc = varcId;
00119 etc = etcId;
00120 sparserr = 0;
00121 etcerr = 1;
00122 errcode = errCode;
00123 TDirectory* tmpddd = gDirectory;
00124 fVarcErrorsFile->cd();
00125 fVarcErrorsTree->Fill();
00126 gDirectory = tmpddd;
00127 }
00128
00129 }
00130
00131 }
00132 }
00133
00134 MSG("FarDetVarcErrorsDump",Msg::kDebug) << " *** FarDetVarcErrorsDump::Ana( ) FINISHED *** " << endl;
00135
00136 return result;
00137
00138 }
00139
00140 void FarDetVarcErrorsDump::EndJob()
00141 {
00142 MSG("FarDetVarcErrorsDump",Msg::kInfo) << " *** FarDetVarcErrorsDump::EndJob() *** " << endl;
00143 if(fVarcErrorsFile){
00144 MSG("FarDetVarcErrorsDump",Msg::kInfo) << " *** saving data to file *** " << endl;
00145 TDirectory* tmpddd = gDirectory;
00146 fVarcErrorsFile->cd();
00147 fVarcErrorsTree->Write();
00148 fVarcErrorsFile->Close();
00149 gDirectory = tmpddd;
00150 MSG("FarDetVarcErrorsDump",Msg::kInfo) << " *** data saved to file *** " << endl;
00151 }
00152 }
00153