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

BDUniquifyTestModule.cxx

Go to the documentation of this file.
00001 #include "BDUniquifyTestModule.h"
00002 #include <BeamDataUtil/BDUniquify.h>
00003 #include <BeamDataUtil/BDEarliest.h>
00004 
00005 #include <RawData/RawBeamMonHeaderBlock.h>
00006 #include <RawData/RawBeamMonBlock.h>
00007 #include <RawData/RawRecord.h>
00008 #include <RawData/RawBeamData.h>
00009 
00010 using namespace std;
00011 
00012 #include <MinosObjectMap/MomNavigator.h>
00013 #include <JobControl/JobCModuleRegistry.h>
00014 #include <JobControl/JobCResult.h>
00015 #include <MessageService/MsgService.h>
00016 CVSID("$Id: BDUniquifyTestModule.cxx,v 1.2 2005/11/07 23:59:31 bv Exp $");
00017 JOBMODULE(BDUniquifyTestModule,
00018           "BDUniquifyTest", "Test BDUniquify class.");
00019 
00020 
00021 BDUniquifyTestModule::BDUniquifyTestModule()
00022 {
00023 }
00024 BDUniquifyTestModule::~BDUniquifyTestModule()
00025 {
00026 }
00027 static double get_scalar(const RawBeamMonBlock& rbmb, const char* name)
00028 {
00029     const RawBeamData* data = rbmb[name];
00030     if (!data) return 0.0;
00031     const double* ddata = data->GetData();
00032     if (!ddata) return 0.0;
00033     return ddata[0];
00034 }
00035 
00036 
00037 static void dump(const char* prefix,
00038                  const RawBeamMonHeaderBlock& rbmhb,
00039                  const RawBeamMonBlock& rbmb)
00040 {
00041     static BDEarliest earliest;
00042     earliest.SetSpill(rbmhb,rbmb);
00043     double dae=0,vme=0;
00044     earliest.GetTimestamps(dae, vme);
00045     VldTimeStamp vts_dae(dae), vts_vme(vme);
00046 
00047     double tortgt = get_scalar(rbmb,"E:TORTGT");
00048     double tor101 = get_scalar(rbmb,"E:TOR101");
00049 
00050     int bad = 0;
00051     vector<string> names = rbmb.GetNames();
00052     size_t siz = names.size();
00053     VldTimeStamp vts = rbmhb.GetTimeStamp();
00054     for (size_t ind=0; ind<siz; ++ind) {
00055         const RawBeamData* rbd = rbmb[names[ind]];
00056         if (!rbd) continue;
00057 
00058         VldTimeStamp tmp(rbd->GetSeconds(),rbd->GetMsecs()*1000000);
00059         if (fabs(vts - tmp) > 0.5) ++bad;
00060     }
00061 
00062     cerr << prefix << rbmhb.GetTimeStamp() << " "
00063          << "dae: " << vts_dae << " "
00064          << "vme: " << vts_vme << " "
00065          << bad << "/" << siz
00066          << " "
00067          << rbmhb.GetSpillCountNum()
00068          << " "
00069          << tor101 << " " << tortgt
00070          << endl;
00071 }
00072 
00073 JobCResult BDUniquifyTestModule::Ana(const MomNavigator *mom)
00074 {
00075     static BDUniquify uniqifier;
00076     vector<BDUniquify::BlockPair> blocks = uniqifier.GetUniqueBlocks(*mom);
00077 
00078     cerr << "Got " << blocks.size() << " unique blocks\n";
00079     for (size_t ind=0; ind<blocks.size(); ++ind) {
00080         dump("u:\t",*blocks[ind].first,*blocks[ind].second);
00081     }
00082 
00083 
00084     // Loop through all RawRecords in mom:
00085     TObject* tobj=0;
00086     TIter fragiter = mom->FragmentIter();
00087     while( ( tobj = fragiter.Next() ) ) {
00088         const RawRecord* rawrec = dynamic_cast<const RawRecord*>(tobj);
00089         if (!rawrec) continue;
00090 
00091         const RawBeamMonHeaderBlock* rbmhb=0;
00092         const RawBeamMonBlock* rbmb=0;
00093 
00094         TIter blockiter = rawrec->GetRawBlockIter();
00095         while( ( tobj = blockiter.Next() ) ) {
00096             if (!rbmhb)
00097                 rbmhb = dynamic_cast<const RawBeamMonHeaderBlock*>(tobj);
00098             if (!rbmb)
00099                 rbmb = dynamic_cast<const RawBeamMonBlock*>(tobj);
00100         }
00101 
00102         if (!rbmhb || !rbmb) continue;
00103         dump("a:\t",*rbmhb,*rbmb);
00104     }
00105 
00106 
00107     return JobCResult::kAOK;
00108 }
00109 void BDUniquifyTestModule::BeginJob()
00110 {
00111 }
00112 void BDUniquifyTestModule::EndJob()
00113 {
00114 }

Generated on Sat Nov 21 22:45:30 2009 for loon by  doxygen 1.3.9.1