FairRoot/PandaRoot
PndSdsDigiStripWriteoutBuffer.cxx
Go to the documentation of this file.
1 /*
2  * PndSdsDigiStripWriteoutBuffer.cxx
3  *
4  * Created on: May 10, 2011
5  * Author: stockman
6  */
7 
9 
11 
12 
13 #include "PndSdsDigiStrip.h"
14 #include "PndSdsDigiStrip.h"
15 
16 
17 
18 
20 {
21  // TODO Auto-generated constructor stub
22 
23 }
24 
25 PndSdsDigiStripWriteoutBuffer::PndSdsDigiStripWriteoutBuffer(TString branchName, TString folderName, Bool_t persistance): FairWriteoutBuffer(branchName, "PndSdsDigiStrip", folderName, persistance), fData_map()
26 
27 {
28 }
29 
31  // TODO Auto-generated destructor stub
32 }
33 
34 std::vector<std::pair<double, FairTimeStamp*> > PndSdsDigiStripWriteoutBuffer::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 = oldData.first + newData.first;
40  singleResult.second = oldData.second;
41  ((PndSdsDigiStrip*)singleResult.second)->AddCharge(((PndSdsDigiStrip*)newData.second)->GetCharge());
42  if (fVerbose > 0) {
43  std::cout << "Modify hit" << std::endl;
44 
45  std::cout << "OldData: " << oldData.first << " : " << oldData.second << " NewData: " << newData.first << " : " << newData.second << std::endl;
46  std::cout << "Resulting Data: " << singleResult.first << " : " << singleResult.second << std::endl;
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: " << *(PndSdsDigiStrip*)(data) << std::endl;
57  new ((*myArray)[myArray->GetEntries()]) PndSdsDigiStrip(*(PndSdsDigiStrip*)(data));
58 }
59 
61 {
62  std::map<PndSdsDigiStrip, double>::iterator it;
63  PndSdsDigiStrip myData = *(PndSdsDigiStrip*)data;
64  it = fData_map.find(myData);
65  PndSdsDigiStrip dataInMap;
66  if (it == fData_map.end())
67  return -1;
68  else {
69  if (fVerbose > 1) {
70  std::cout << "Search: " << myData << " Found: ";
71  dataInMap = it->first;
72  dataInMap.Print();
73  std::cout << " Time: " << it->second << std::endl;
74  }
75  return it->second;
76  }
77 }
78 void PndSdsDigiStripWriteoutBuffer::FillDataMap(FairTimeStamp* data, double activeTime)
79 {
80  PndSdsDigiStrip myData = *(PndSdsDigiStrip*)data;
81  fData_map[myData] = activeTime;
82 }
84 {
85  PndSdsDigiStrip myData = *(PndSdsDigiStrip*)data;
86  if (fData_map.find(myData) != fData_map.end())
87  fData_map.erase(fData_map.find(myData));
88 }
std::ostream & Print(std::ostream &out=std::cout) const
int fVerbose
Definition: poormantracks.C:24
virtual double FindTimeForData(FairTimeStamp *data)
virtual void FillDataMap(FairTimeStamp *data, double activeTime)
Class for digitised strip hits.
std::map< PndSdsDigiStrip, double > fData_map
ClassImp(PndAnaContFact)
virtual std::vector< std::pair< double, FairTimeStamp * > > Modify(std::pair< double, FairTimeStamp * > oldData, std::pair< double, FairTimeStamp * > newData)
virtual void EraseDataFromDataMap(FairTimeStamp *data)