FairRoot/PandaRoot
PndDrcDigiWriteoutBuffer.cxx
Go to the documentation of this file.
1 /*
2  * PndDrcDigiWriteoutBuffer.cxx
3  *
4  */
5 // -------------------------------------------------------------------------
6 // ----- PndDrcDigiWriteoutBuffer source file -----
7 // ----- HARPHOOL KUMAWAT h.kumawat@gsi.de -----
8 // ----- -----
9 // -------------------------------------------------------------------------
10 
12 
13 #include "PndDrcDigi.h"
14 
15 
17 
18 
20 
21  // TODO Auto-generated constructor stub
22 
23 }
24 
25 
26 PndDrcDigiWriteoutBuffer::PndDrcDigiWriteoutBuffer(TString branchName, TString folderName, Bool_t persistance): FairWriteoutBuffer(branchName, "PndDrcDigi", folderName, persistance)
27 {
28 }
29 
31  // TODO Auto-generated destructor stub
32 }
33 
35 {
36  FairRootManager* ioman = FairRootManager::Instance();
37  TClonesArray* myArray = ioman->GetTClonesArray(fBranchName);
38  if (fVerbose > 1){
39  std::cout << "Data Inserted: " << *(PndDrcDigi*)(data) << std::endl;
40  }
41  new ((*myArray)[myArray->GetEntries()]) PndDrcDigi(*(PndDrcDigi*)(data));
42 }
43 
44 double PndDrcDigiWriteoutBuffer::FindTimeForData(FairTimeStamp* data)
45 {
46  std::map<PndDrcDigi, double>::iterator it;
47  PndDrcDigi myData = *(PndDrcDigi*)data;
48  it = fData_map.find(myData);
49  if (it == fData_map.end())
50  return -1;
51  else
52  return it->second;
53 }
54 
55 void PndDrcDigiWriteoutBuffer::FillDataMap(FairTimeStamp* data, double activeTime)
56 {
57  PndDrcDigi myData = *(PndDrcDigi*)data;
58  fData_map[myData] = activeTime;
59 }
60 
62 {
63  PndDrcDigi myData = *(PndDrcDigi*)data;
64  if (fData_map.find(myData) != fData_map.end()){
65  fData_map.erase(fData_map.find(myData));
66  }
67 }
68 
69 std::vector<std::pair<double, FairTimeStamp*> > PndDrcDigiWriteoutBuffer::Modify(std::pair<double, FairTimeStamp*> oldData, std::pair<double, FairTimeStamp*> newData) {
70  std::vector<std::pair<double, FairTimeStamp*> > result;
71 
72  Double_t oldStamp = ((PndDrcDigi*)oldData.second)->GetTimeStamp();
73  Double_t newStamp = ((PndDrcDigi*)newData.second)->GetTimeStamp();
74  Double_t deadTime = oldData.first -oldStamp;
75  if(newStamp-oldStamp>deadTime-0.0000001) result.push_back(newData);
76  else oldData.first = newStamp+deadTime;
77 
78  result.push_back(oldData);
79 
80  // std::pair<double, FairTimeStamp*> Result1;
81  // if (newData.first > 0) Result1.first = oldData.first + (newData.first - oldData.first);
82  // Result1.second = oldData.second;
83  // result.push_back(oldData);
84 
85  if (fVerbose > 0){
86  std::cout << "Modify hit" << std::endl;
87  std::cout << "OldData: " << oldData.first << " : " << ((PndDrcDigi*)oldData.second)->GetTimeStamp() <<"("<<((PndDrcDigi*)oldData.second)->GetSensorId() <<")"<< " NewData: " << newData.first << " : " << newData.second <<" "<< ((PndDrcDigi*)newData.second)->GetTimeStamp() <<"("<<((PndDrcDigi*)newData.second)->GetSensorId() <<")"<< std::endl;
88  //std::cout << "Resulting Data: " << Result1.first << " : " << Result1.second << std::endl;
89  }
90 
91  return result;
92 }
int fVerbose
Definition: poormantracks.C:24
virtual void FillDataMap(FairTimeStamp *data, double activeTime)
void AddNewDataToTClonesArray(FairTimeStamp *)
std::map< PndDrcDigi, double > fData_map
virtual void EraseDataFromDataMap(FairTimeStamp *data)
virtual std::vector< std::pair< double, FairTimeStamp * > > Modify(std::pair< double, FairTimeStamp * > oldData, std::pair< double, FairTimeStamp * > newData)
Double_t
ClassImp(PndAnaContFact)
virtual double FindTimeForData(FairTimeStamp *data)