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

testWrite.cc File Reference

#include <iostream>
#include <string>
#include <ctime>
#include "TROOT.h"
#include "TRint.h"
#include "TRandom.h"
#include "EventDataModel/Event.h"
#include "EventDataModel/DataBucket.h"
#include "EventDataModel/EventHandle.h"
#include "IoModules/ReadWriteModule.h"
#include "TFile.h"
#include "DAQStatus.h"

Go to the source code of this file.

Functions

TRandom gRAND (time(0))
int main (int, char **argv)


Function Documentation

TRandom gRAND time(0)   )  [static]
 

Referenced by main().

int main int  ,
char **  argv
 

Definition at line 17 of file testWrite.cc.

References edm::EventHandle::Clear(), edm::EventHandle::DAQ(), DataBlock::fADC, DataBlock::fTDC, io::ReadWriteModule::GetEvent(), gRAND(), edm::EventHandle::Header(), edm::EventHandle::Raw(), io::ReadWriteModule::SetOutputFileName(), DAQStatus::SizeOf(), and io::ReadWriteModule::WriteEvent().

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   DataBlock           dataBlock;
00028   std::vector<Digit*> digitList;
00029   
00030   unsigned int nevent;
00031   unsigned int ndigit;
00032   unsigned int ndigittot = 0;
00033   unsigned int minSize = 0;
00034 
00035   nevent = 10 + (int)(100000*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 + (int)(10000*gRAND.Uniform());
00043     ndigittot += ndigit;
00044     digitList.resize(ndigit);
00045     dataBlock.fTDC.resize(ndigit);
00046     dataBlock.fADC.resize(ndigit);
00047     for (unsigned int j=0; j<ndigit; ++j) {
00048       digitList[j] = new Digit();
00049     }
00050     // Fill with random data so that compression efficiencies are not
00051     // over estimated
00052     long r1 = random();
00053     long r2 = random();
00054     for (unsigned int j=0; j<ndigit; ++j) {
00055       digitList[j]->fCrateId = (r1    )&0xFFFF;
00056       digitList[j]->fChanId  = (r1<<16)&0xFFFF;
00057       digitList[j]->fADC     = (r2    )&0xFFFF;
00058       digitList[j]->fTDC     = (r2<<16)&0xFFFF;
00059 
00060       dataBlock.fADC[j] = (r2    )&0xFFFF;
00061       dataBlock.fTDC[j] = (r2<<16)&0xFFFF;
00062     }
00063 
00064     evt.DAQ().Put(daqStatus,      "./status");
00065     evt.Raw().Put(dataBlock,      "./digits");
00066     evt.Raw().PutVector(digitList,"./digits");
00067     
00068     // Done with the digits, so delete them
00069     for (unsigned int j=0; j<ndigit; ++j) {
00070       delete digitList[j];
00071       digitList[j] = 0;
00072     }
00073     digitList.clear();
00074 
00075     minSize += daqStatus.SizeOf() + ndigit*digitList[0]->SizeOf();
00076 
00077     iomod->WriteEvent();
00078 
00079     if (i%1000==0) {
00080       std::cerr << i << " of " << nevent << " events written." << std::endl;
00081     }
00082   }
00083   delete iomod;
00084   time_t t2 = time(0);
00085   
00086   TFile f(argv[1]);
00087   unsigned int sz = f.GetSize();
00088   
00089   std::cerr << t2-t1 << "\t" 
00090             << nevent << "\t" 
00091             << ndigittot << "\t"
00092             << minSize << "\t"
00093             << sz << "\t"
00094             << f.GetCompressionFactor()
00095             << std::endl;
00096   return 0;
00097 }


Generated on Mon Nov 23 04:45:29 2009 for NOvA Offline by  doxygen 1.3.9.1