21 : FairWriteoutBuffer()
24 buffer = (TBuffer*)gROOT->ProcessLine(
"new TBufferFile(TBuffer::kWrite,10000);");
25 if(!buffer)
throw std::runtime_error(std::string(
"WriteoutBuffer::AddNewDataToTClonesArray: cannot allocate buffer."));
31 : FairWriteoutBuffer(branchName,
"PndDiscDigitizedHit", folderName, persistance)
34 buffer = (TBuffer*)gROOT->ProcessLine(
"new TBufferFile(TBuffer::kWrite,10000);");
35 if(!buffer)
throw std::runtime_error(std::string(
"WriteoutBuffer::AddNewDataToTClonesArray: cannot allocate buffer."));
48 std::vector<std::pair<double, FairTimeStamp*> >
PndDiscWriteoutBuffer::Modify(std::pair<double, FairTimeStamp*> oldData, std::pair<double, FairTimeStamp*> newData)
50 std::vector<std::pair<double, FairTimeStamp*> > result;
51 if( oldData.first >= newData.second->GetTimeStamp() ) {
52 result.push_back(oldData);
56 result.push_back(oldData);
57 result.push_back(newData);
63 #ifdef FWB_USE_INHERITANCE
68 FairRootManager* ioman = FairRootManager::Instance();
69 TClonesArray* myArray = ioman->GetTClonesArray(fBranchName);
77 TClass * class_meta = myArray->GetClass();
78 if( data->IsA() != class_meta ) {
81 throw std::runtime_error(std::string(
"WriteoutBuffer::AddNewDataToTClonesArray: wrong object type."));
85 TObject* new_instance = myArray->New(myArray->GetEntries());
90 buffer->SetWriteMode();
92 buffer->SetBufferOffset(0);
93 buffer->MapObject(data);
94 ((TObject*)data)->Streamer(*buffer);
97 buffer->SetReadMode();
99 buffer->SetBufferOffset(0);
100 buffer->MapObject(new_instance);
101 new_instance->Streamer(*buffer);
104 new_instance->ResetBit(kIsReferenced);
105 new_instance->ResetBit(kCanDelete);
116 std::map<PndDiscDigitizedHit, double>::iterator it;
124 DataMap_t::iterator it =
fData_map.find(data);
151 DataMap_t::iterator it =
fData_map.find(data);
virtual void FillDataMap(FairTimeStamp *data, double activeTime)
ClassImp(PndDiscWriteoutBuffer)
virtual double FindTimeForData(FairTimeStamp *data)
virtual ~PndDiscWriteoutBuffer()
virtual std::vector< std::pair< double, FairTimeStamp * > > Modify(std::pair< double, FairTimeStamp * > oldData, std::pair< double, FairTimeStamp * > newData)
std::map< PndDiscDigitizedHit, double > fData_map
virtual void EraseDataFromDataMap(FairTimeStamp *data)
virtual void AddNewDataToTClonesArray(FairTimeStamp *)