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

testWrite.cc

Go to the documentation of this file.
00001 #include <iostream>
00002 #include <string>
00003 #include <ctime>
00004 #include "TROOT.h"
00005 #include "TRint.h"
00006 #include "TRandom.h"
00007 #include "EventDataModel/Event.h"
00008 #include "EventDataModel/DataBucket.h"
00009 #include "EventDataModel/EventHandle.h"
00010 #include "IoModules/ReadWriteModule.h"
00011 #include "TFile.h"
00012 #include "DAQStatus.h"
00013 
00014 // static TROOT gsTROOT("rootie","tootie");
00015 static TRandom gRAND(time(0));
00016 
00017 int main(int /*argc*/, char** argv)
00018 {
00019   io::ReadWriteModule* iomod = new io::ReadWriteModule();
00020   iomod->SetOutputFileName(argv[1]);
00021 
00022   edm::EventHandle& evt = iomod->GetEvent();
00023   evt.DAQ().MakeFolder("./status");
00024   evt.Raw().MakeFolder("./digits");
00025   
00026   DAQStatus           daqStatus;
00027   std::vector<Digit*> digitList;
00028   
00029   unsigned int nevent;
00030   unsigned int ndigit;
00031   unsigned int ndigitold = 0;
00032   unsigned int ndigittot = 0;
00033   unsigned int minSize = 0;
00034 
00035   nevent = 10 + 10000*gRAND.Uniform();
00036   time_t t1 = time(0);
00037   for (unsigned int i=0; i<nevent; ++i) {
00038     evt.Clear();
00039     evt.Header().SetRun(1112);
00040     evt.Header().SetEvent(i+1);
00041   
00042     ndigit = 10 + 10000*gRAND.Uniform();
00043     ndigittot += ndigit;
00044     digitList.resize(ndigit);
00045     for (unsigned int j=ndigitold; j<ndigit; ++j) {
00046       digitList[j] = new Digit();
00047     }
00048     // Fill with random data so that compression efficiencies are not
00049     // over estimated
00050     long r1 = random();
00051     long r2 = random();
00052     for (unsigned int j=0; j<ndigit; ++j) {
00053       digitList[j]->fCrateId = (r1    )&0xFFFF;
00054       digitList[j]->fChanId  = (r1<<16)&0xFFFF;
00055       digitList[j]->fADC     = (r2    )&0xFFFF;
00056       digitList[j]->fTDC     = (r2<<16)&0xFFFF;
00057     }
00058     ndigitold = ndigit;
00059 
00060     evt.DAQ().Put(daqStatus,      "./status");
00061     evt.Raw().PutVector(digitList,"./digits");
00062     
00063     minSize += daqStatus.SizeOf() + ndigit*digitList[0]->SizeOf();
00064 
00065     iomod->WriteEvent();
00066   }
00067   delete iomod;
00068   time_t t2 = time(0);
00069   
00070   TFile f(argv[1]);
00071   unsigned int sz = f.GetSize();
00072   
00073   std::cerr << t2-t1 << "\t" 
00074             << nevent << "\t" 
00075             << ndigittot << "\t"
00076             << minSize << "\t"
00077             << sz << "\t"
00078             << f.GetCompressionFactor()
00079             << std::endl;
00080   return 0;
00081 }

Generated on Sat Oct 11 02:35:28 2008 for NOvA Offline by  doxygen 1.3.9.1