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