/* * PndGemDigiWriteoutBuffer.cxx * * Created on: May 10, 2011 * Author: stockman */ #include ClassImp(PndGemDigiWriteoutBuffer); #include "PndGemDigi.h" PndGemDigiWriteoutBuffer::PndGemDigiWriteoutBuffer():FairWriteoutBuffer() { // TODO Auto-generated constructor stub } PndGemDigiWriteoutBuffer::PndGemDigiWriteoutBuffer(TString branchName, TString folderName, Bool_t persistance): FairWriteoutBuffer(branchName, "PndGemDigi", folderName, persistance) { } PndGemDigiWriteoutBuffer::~PndGemDigiWriteoutBuffer() { // TODO Auto-generated destructor stub } std::vector > PndGemDigiWriteoutBuffer::Modify(std::pair oldData, std::pair newData) { std::cout << " PndGemDigiWriteoutBuffer::Modify" << std::endl; std::vector > result; std::pair singleResult; if (newData.first > 0) singleResult.first = oldData.first + newData.first; singleResult.second = oldData.second; singleResult.second->AddCharge(newData.second->GetCharge()); // if (fVerbose > 0){ std::cout << "Modify hit" << std::endl; std::cout << "OldData: " << oldData.first << " : " << oldData.second << " NewData: " << newData.first << " : " << newData.second << std::endl; std::cout << "Resulting Data: " << singleResult.first << " : " << singleResult.second << std::endl; // } result.push_back(singleResult); return result; } void PndGemDigiWriteoutBuffer::AddNewDataToTClonesArray(FairTimeStamp* data) { std::cout << "PndGemDigiWriteoutBuffer::AddNewDataToTClonesArray( " << data->GetTimeStamp() << " ) in " << fBranchName.Data() << std::endl; FairRootManager* ioman = FairRootManager::Instance(); TClonesArray* myArray = ioman->GetTClonesArray(fBranchName); if (fVerbose > 1) std::cout << "Data Inserted: " << *(PndGemDigi*)(data) << std::endl; std::cout << "INSERTING DATA WITH TIME " << data->GetTimeStamp() << " NS" << std::endl; new ((*myArray)[myArray->GetEntries()]) PndGemDigi(*(PndGemDigi*)(data)); } double PndGemDigiWriteoutBuffer::FindTimeForData(FairTimeStamp* data) { std::cout << "double PndGemDigiWriteoutBuffer::FindTimeForData(" << std::endl; std::cout << " data = " << data->GetTimeStamp() << " )" << std::endl; /* std::cout << "---------------------------------------------------------" << std::endl; std::cout << "fData_map has " << fData_map.size() << " datas" << std::endl; std::map::iterator mapIt; for (mapIt=fData_map.begin(); mapIt!=fData_map.end(); mapIt++) { std::cout << " >>> " << mapIt->first.GetDetectorId() << " . " << mapIt->first.GetChannelNr() << " at " << mapIt->first.GetTimeStamp() << " (time " << mapIt->second << ")" << std::endl; }*/ std::map::iterator it; PndGemDigi myData = *(PndGemDigi*)data; std::cout << "adding " << myData.GetDetectorId() << " . " << myData.GetChannelNr() << " at " << myData.GetTimeStamp() << std::endl; std::cout << "---------------------------------------------------------" << std::endl; std::cout << "before find" << std::endl; it = fData_map.find(myData); std::cout << "after find" << std::endl; if (it == fData_map.end()) { std::cout << "returning -1" << std::endl; return -1; } else { std::cout << "returning second" << std::endl; return it->second; } } void PndGemDigiWriteoutBuffer::FillDataMap(FairTimeStamp* data, double activeTime) { PndGemDigi myData = *(PndGemDigi*)data; fData_map[myData] = activeTime; } void PndGemDigiWriteoutBuffer::EraseDataFromDataMap(FairTimeStamp* data) { std::cout << "PndGemDigiWriteoutBuffer::EraseDataFromDataMap" << std::endl; PndGemDigi myData = *(PndGemDigi*)data; std::cout << " ( " << myData.GetDetectorId() << " . " << myData.GetChannelNr() << " at " << myData.GetTimeStamp() << " )" << std::endl; if (fData_map.find(myData) != fData_map.end()) fData_map.erase(fData_map.find(myData)); }