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
00015 static TRandom gRAND(time(0));
00016
00017 int main(int , 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
00049
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 }