diff --git a/core/data/DataLinkDef.h b/core/data/DataLinkDef.h index 9b7db8ce4a6d9fa86b0cb5242349ea84982f4fc8..f7d571708ff12d8454c9ea465135baf02d9f1176 100644 --- a/core/data/DataLinkDef.h +++ b/core/data/DataLinkDef.h @@ -76,7 +76,7 @@ #pragma link C++ class CbmTofTracklet + ; #pragma link C++ class CbmTofTrackletParam + ; -#pragma link C++ class CbmPsdDigi; +#pragma link C++ class CbmPsdDigi-; #pragma link C++ class CbmPsdHit; #pragma link C++ class CbmPsdPoint + ; #pragma link C++ class CbmPsdAddress; diff --git a/core/data/psd/CbmPsdDigi.cxx b/core/data/psd/CbmPsdDigi.cxx index 80354480849820591f255432d8c4142b34f2fde6..a441980b60eb89aa10fb205ed9ecaf0a7d49b5a5 100644 --- a/core/data/psd/CbmPsdDigi.cxx +++ b/core/data/psd/CbmPsdDigi.cxx @@ -7,11 +7,12 @@ #include "CbmPsdDigi.h" +#include <TBuffer.h> // for TBuffer +#include <TClass.h> // for CbmPsdDigi::IsA() #include <TString.h> // for Form, TString #include <string> // for basic_string - // --- Default constructor CbmPsdDigi::CbmPsdDigi() {} @@ -82,5 +83,64 @@ std::string CbmPsdDigi::ToString() const { return string.Data(); } +// --- Custom Streamer +void CbmPsdDigi::Streamer(TBuffer& R__b) { + // Stream an object of class CbmPsdDigi. + + UInt_t R__s, R__c; + if (R__b.IsReading()) { + Version_t R__v = R__b.ReadVersion(&R__s, &R__c); + if (R__v) {} + // LOG(info) << "Reading CbmPsdDigi version " << R__v; + if (3 == R__v) { + R__b >> fdEdep; + R__b >> fdTime; + R__b >> fuAddress; + R__b.CheckByteCount(R__s, R__c, CbmPsdDigi::IsA()); + } else if (4 == R__v) { + R__b >> ffFitHarmonic1; + R__b >> ffFitHarmonic2; + R__b >> ffFitR2; + R__b >> ffFitEdep; + R__b >> fdEdep; + R__b >> fdTime; + R__b >> fuAddress; + R__b >> fuAmpl; + R__b >> fuZL; + R__b >> fdEdepWfm; + R__b.CheckByteCount(R__s, R__c, CbmPsdDigi::IsA()); + } + } else { + // The function WriteVersion does not return the version number + // but the position where ti write the next data + // to get the class version use TClass->GetClassVersion() + + R__c = R__b.WriteVersion(CbmPsdDigi::IsA(), kTRUE); + Version_t version = CbmPsdDigi::IsA()->GetClassVersion(); + + // We don't intent to write data in old format + /* + if ( 3 == version ) { + R__b << fdEdep; + R__b << fdTime; + R__b << fuAddress; + R__b.SetByteCount(R__c, kTRUE); + } else if ( 4 == version ) { + */ + if (4 == version) { + R__b << ffFitHarmonic1; + R__b << ffFitHarmonic2; + R__b << ffFitR2; + R__b << ffFitEdep; + R__b << fdEdep; + R__b << fdTime; + R__b << fuAddress; + R__b << fuAmpl; + R__b << fuZL; + R__b << fdEdepWfm; + R__b.SetByteCount(R__c, kTRUE); + } + } +} ClassImp(CbmPsdDigi)