FairRoot/PandaRoot
PndSdsDigiPixelWriteoutBuffer.cxx
Go to the documentation of this file.
1 /*
2  * PndSdsDigiPixelWriteoutBuffer.cxx
3  *
4  * Created on: May 10, 2011
5  * Author: stockman
6  */
7 
9 
11 
12 #include "PndSdsDigiPixel.h"
13 #include "PndSdsDigiStrip.h"
14 
15 
17 , fData_map()
18 {
19 
20  // TODO Auto-generated constructor stub
21 
22 }
23 
24 
25 PndSdsDigiPixelWriteoutBuffer::PndSdsDigiPixelWriteoutBuffer(TString branchName, TString folderName, Bool_t persistance): FairWriteoutBuffer(branchName, "PndSdsDigiPixel", folderName, persistance),
26 fData_map()
27 {
28 }
29 
31  // TODO Auto-generated destructor stub
32 }
33 
34 std::vector<std::pair<double, FairTimeStamp*> > PndSdsDigiPixelWriteoutBuffer::Modify(std::pair<double, FairTimeStamp*> oldData, std::pair<double, FairTimeStamp*> newData)
35 {
36  std::vector<std::pair<double, FairTimeStamp*> > result;
37  std::pair<double, FairTimeStamp*> singleResult;
38  if (newData.first > 0)
39  singleResult.first = newData.first;
40  singleResult.second = oldData.second;
41  ((PndSdsDigiPixel*)singleResult.second)->AddCharge(((PndSdsDigiPixel*)newData.second)->GetCharge());
42  if (fVerbose > 0){
43  std::cout << "Modify hit" << std::endl;
44  std::cout << "OldData: " << oldData.first << " : " << oldData.second << " NewData: " << newData.first << " : " << newData.second << std::endl;
45  std::cout << "Resulting Data: " << singleResult.first << " : " << singleResult.second << std::endl;
46  }
47 
48  result.push_back(singleResult);
49  return result;
50 }
51 
53 {
54  FairRootManager* ioman = FairRootManager::Instance();
55  TClonesArray* myArray = ioman->GetTClonesArray(fBranchName);
56  if (fVerbose > 1) std::cout << "Data Inserted: " << *(PndSdsDigiPixel*)(data) << std::endl;
57  new ((*myArray)[myArray->GetEntries()]) PndSdsDigiPixel(*(PndSdsDigiPixel*)(data));
58 }
59 
61 {
62  std::map<PndSdsDigiPixel, double>::iterator it;
63  PndSdsDigiPixel myData = *(PndSdsDigiPixel*)data;
64  it = fData_map.find(myData);
65  if (it == fData_map.end())
66  return -1;
67  else{
68  if (fVerbose > 1)
69  std::cout << "Search: " << myData << " Found: " << (PndSdsDigiPixel)it->first << " Time: " << it->second << std::endl;
70  return it->second;
71  }
72 }
73 void PndSdsDigiPixelWriteoutBuffer::FillDataMap(FairTimeStamp* data, double activeTime)
74 {
75  PndSdsDigiPixel myData = *(PndSdsDigiPixel*)data;
76  fData_map[myData] = activeTime;
77 }
79 {
80  PndSdsDigiPixel myData = *(PndSdsDigiPixel*)data;
81  if (fData_map.find(myData) != fData_map.end())
82  fData_map.erase(fData_map.find(myData));
83 }
int fVerbose
Definition: poormantracks.C:24
virtual double FindTimeForData(FairTimeStamp *data)
virtual void EraseDataFromDataMap(FairTimeStamp *data)
virtual void FillDataMap(FairTimeStamp *data, double activeTime)
ClassImp(PndSdsDigiPixelWriteoutBuffer)
Data class to store the digi output of a pixel module.
virtual std::vector< std::pair< double, FairTimeStamp * > > Modify(std::pair< double, FairTimeStamp * > oldData, std::pair< double, FairTimeStamp * > newData)
std::map< PndSdsDigiPixel, double > fData_map