9 #include "FairRootManager.h"
12 #include "TClonesArray.h"
16 fBranchName(branchName), fClassName(className), fActivateBuffering(kTRUE),
fVerbose(3)
18 FairRootManager::Instance()->Register(branchName, className, folderName, persistance);
27 FairRootManager* ioman = FairRootManager::Instance();
28 std::vector<FairTimeStamp*> data;
30 if (
fVerbose > 0) std::cout <<
"-I- PndWriteoutBuffer::WriteOutData for time: " << time << std::endl;
33 TClonesArray* myArray = ioman->GetTClonesArray(
fBranchName);
35 std::cout <<
"-E- PndWriteoutBuffer::WriteOutData " <<
fBranchName <<
" array is not available!" << std::endl;
36 if (
fVerbose > 0) std::cout <<
"-I- PndWriteoutBuffer::WriteOutData size: " << data.size() << std::endl;
37 for (
int i = 0;
i < data.size();
i++){
40 std::cout << i <<
" : ";
42 std::cout << std::endl;
61 typedef std::multimap<double, FairTimeStamp*>::iterator DTMapIter;
62 std::vector<FairTimeStamp*> result;
64 if (
fVerbose > 1) std::cout <<
"-I- GetRemoveOldData: DeadTime: " << it->first <<
" Data: " << it->second << std::endl;
65 result.push_back(it->second);
82 typedef std::multimap<double, FairTimeStamp*>::iterator DTMapIter;
83 typedef std::map<FairTimeStamp, double>::iterator DataMapIter;
86 if(timeOfOldData > -1){
87 if (
fVerbose > 1) std::cout <<
" OldData found! " << std::endl;
88 if (
fVerbose > 1) std::cout <<
"New Data: " << activeTime <<
" : " << data << std::endl;
89 double currentdeadtime = timeOfOldData;
90 FairTimeStamp* oldData;
93 if (
fVerbose > 1) std::cout <<
"Check Data: " << it->first <<
" : " << oldData << std::endl;
94 if (oldData->equal(data)){
95 if (
fVerbose > 1) std::cout <<
" oldData == data " << std::endl;
96 if (
fVerbose > 1) std::cout << it->first <<
" : " << it->second << std::endl;
102 std::vector<std::pair<double, FairTimeStamp*> > modifiedData =
Modify(std::pair<double, FairTimeStamp*>(currentdeadtime, oldData), std::pair<double, FairTimeStamp*>(-1, data));
103 for (
int i = 0;
i < modifiedData.size();
i++){
105 if (
fVerbose > 1) std::cout <<
i <<
" :Modified Data: " << modifiedData[
i].first <<
" : " << modifiedData[
i].second << std::endl;
110 std::cout <<
"-I- PndWriteoutBuffer::FillNewData Data Inserted: " << activeTime <<
" : ";
112 std::cout << std::endl;
114 fDeadTime_map.insert(std::pair<double, FairTimeStamp*>(activeTime, data));
virtual void FillDataMap(FairTimeStamp *data, double activeTime)=0
add a new element in the search buffer
std::multimap< double, FairTimeStamp * > fDeadTime_map
virtual std::vector< FairTimeStamp * > GetRemoveOldData(double time)
virtual std::vector< std::pair< double, FairTimeStamp * > > Modify(std::pair< double, FairTimeStamp * > oldData, std::pair< double, FairTimeStamp * > newData)
virtual void EraseDataFromDataMap(FairTimeStamp *data)=0
delete the element from the search buffer (see PndSdsDigiPixelWriteoutBuffer)
virtual void FillNewData(FairTimeStamp *data, double activeTime)
virtual void WriteOutData(double time)
virtual void AddNewDataToTClonesArray(FairTimeStamp *data)=0
store the data from the FairTimeStamp pointer in a TClonesArray (you have to cast it to your type of ...
Bool_t fActivateBuffering
ClassImp(PndWriteoutBuffer)
virtual double FindTimeForData(FairTimeStamp *data)=0
if the same data object (like a pad or a pixel) is already present in the buffer, the time of this ob...
virtual void WriteOutAllData()
A container class to store digi data during events.
virtual std::vector< FairTimeStamp * > GetAllData()