Hello, I am using root 3.03/9a on win2k. I have a stand-alone project that includes the class CLasHeader shown below. When I build the project, I use rootcint -f headerdict.cpp -c CLasHeader.h and I include the resulting headerdict.cpp and headerdict.h in my project build (VC++6). In the standalong file, I do: TFile *f = new TFile("stream.root","recreate"); CLasHeader h; ... h->Write() Now, in an interactive root session, I do the following: root [0] TFile *f = new TFile("stream.root") root [1] .L CLasHeader.cpp++ Info in <TWinNTSystem::ACLiC>: creating shared library C:\str\CLasHeader_cpp.dll 1678.cxx 1680.cxx 1682.cxx 1684.cxx svo_.cxx Creating library CLasHeader_cpp.lib and object CLasHeader_cpp.exp root [2] CLasHeader *ph = (CLasHeader *)f->Get("CLasHeader") Error in <TBuffer::CheckByteCount>: object of class CLasHeader read too few bytes: 192 instead of 196 Warning in <TBuffer::CheckByteCount>: CLasHeader::Streamer() not in sync with data on file, fix Streamer() Note: If I remove the Double_t fApertureAtten[8] from the class, the streamer works fine. It looks like a bug... Ed Oltman #ifndef _CLASHEADER_H_ #define _CLASHEADER_H_ #include "TObject.h" class CLasHeader : public TObject { public: CLasHeader(); ~CLasHeader(); void Fill(char *pFromLas); UInt_t fHeaderSize; //Las header size in bytes UInt_t fStreamVersion; //Stream version number UInt_t fAcquisitionVersion; //Acquisition version number UInt_t fHardwareConfiguration; //Hardware configuration UInt_t fRunNumber; //Run number UInt_t fAtomProbeId; //Atom probe ID UInt_t fDebugFlag; //Debug flag UInt_t fAcquisitionMode; //Acquisition mode UInt_t fStartDate; //Start date in form YYYYMMDD e.g. 20021213 UInt_t fStartTime; //Start time in form HHMMSS e.g. 153214 UInt_t fMaxHitsPerPulse; //Maximum number of hits per pulse Double_t fDeltaTofCorrection; //(TOF_X-TOF_Y)/(-2) in nsec Double_t fNsPerLsb; //TDC least significant bit in nsec Double_t fT0Estimate; //Estimate of T0 in nsec Double_t fXposOffset; //Estimate of detector's x-position in ns Double_t fYposOffset; //Estimate of detector's y-position in ns Double_t fUnAttenApVoltage; //Unattenuated aperture voltage Double_t fApertureAtten[8]; //Array of aperture attenuation values Double_t fTargetEvapRate; //Initial target evaporation rate in percent Double_t fTargetPulseFraction; //Initial target pulse fraction in percent Double_t fInitialPulseFreq; //Initial target pulse frequency in Hz #if !defined(__CINT__) || defined(__MAKECINT__) ClassDef(CLasHeader,1) #endif }; #endif Here is the rootcint generated streamer: //__________________________________________________________________________ ____ void CLasHeader::Streamer(TBuffer &R__b) { // Stream an object of class CLasHeader. UInt_t R__s, R__c; if (R__b.IsReading()) { Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { } TObject::Streamer(R__b); R__b >> fHeaderSize; R__b >> fStreamVersion; R__b >> fAcquisitionVersion; R__b >> fHardwareConfiguration; R__b >> fRunNumber; R__b >> fAtomProbeId; R__b >> fDebugFlag; R__b >> fAcquisitionMode; R__b >> fStartDate; R__b >> fStartTime; R__b >> fMaxHitsPerPulse; R__b >> fDeltaTofCorrection; R__b >> fNsPerLsb; R__b >> fT0Estimate; R__b >> fXposOffset; R__b >> fYposOffset; R__b >> fUnAttenApVoltage; R__b.ReadStaticArray(fApertureAtten); R__b >> fTargetEvapRate; R__b >> fTargetPulseFraction; R__b >> fInitialPulseFreq; R__b.CheckByteCount(R__s, R__c, CLasHeader::IsA()); } else { R__c = R__b.WriteVersion(CLasHeader::IsA(), kTRUE); TObject::Streamer(R__b); R__b << fHeaderSize; R__b << fStreamVersion; R__b << fAcquisitionVersion; R__b << fHardwareConfiguration; R__b << fRunNumber; R__b << fAtomProbeId; R__b << fDebugFlag; R__b << fAcquisitionMode; R__b << fStartDate; R__b << fStartTime; R__b << fMaxHitsPerPulse; R__b << fDeltaTofCorrection; R__b << fNsPerLsb; R__b << fT0Estimate; R__b << fXposOffset; R__b << fYposOffset; R__b << fUnAttenApVoltage; R__b.WriteArray(fApertureAtten, 8); R__b << fTargetEvapRate; R__b << fTargetPulseFraction; R__b << fInitialPulseFreq; R__b.SetByteCount(R__c, kTRUE); } }
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:23 MET