FairRoot/PandaRoot
Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
PndMQHitsEventBuilder Class Reference

#include <PndMQHitsEventBuilder.h>

Public Member Functions

 PndMQHitsEventBuilder (int nChannels=4)
 
virtual ~PndMQHitsEventBuilder ()
 
void AddData (vector< vector< vector< PndSdsHit > > > &data)
 
vector< vector< PndSdsHit > > GetEvents ()
 
vector< int > GetSensorsInEvent ()
 
std::vector< int > GetInputDataLevel ()
 

Protected Member Functions

vector< bool > GetChannelsInEvent (vector< vector< PndSdsHit > > &eventData)
 
int FindFirstChannel (vector< vector< PndSdsHit > > &eventData)
 channel which has the oldest data More...
 
vector< PndSdsHitGetNextEvent ()
 
bool HasData ()
 

Protected Attributes

vector< int > fSensorsInEvent
 

Private Attributes

vector< vector< vector
< PndSdsHit > > > 
fInputData
 
int fNChannels
 
int fEventCounter
 

Detailed Description

Definition at line 18 of file PndMQHitsEventBuilder.h.

Constructor & Destructor Documentation

PndMQHitsEventBuilder::PndMQHitsEventBuilder ( int  nChannels = 4)

Definition at line 12 of file PndMQHitsEventBuilder.cxx.

References fInputData.

12  : fNChannels(nChannels), fEventCounter(0), fSensorsInEvent(nChannels, 0) {
13  fInputData.resize(nChannels);
14 
15 }
vector< vector< vector< PndSdsHit > > > fInputData
PndMQHitsEventBuilder::~PndMQHitsEventBuilder ( )
virtual

Definition at line 17 of file PndMQHitsEventBuilder.cxx.

17  {
18  // TODO Auto-generated destructor stub
19 }

Member Function Documentation

void PndMQHitsEventBuilder::AddData ( vector< vector< vector< PndSdsHit > > > &  data)

Definition at line 21 of file PndMQHitsEventBuilder.cxx.

References fInputData.

Referenced by PndMQHitEventDevice::Run().

22 {
23  for (int channelNr = 0; channelNr < data.size(); channelNr++){
24  //LOG(INFO) << "PndMQHitsEventBuilder::AddData from Channel " << channelNr << " size " << data[channelNr].size();
25  fInputData[channelNr].insert(fInputData[channelNr].end(), data[channelNr].begin(), data[channelNr].end());
26  }
27 }
vector< vector< vector< PndSdsHit > > > fInputData
int PndMQHitsEventBuilder::FindFirstChannel ( vector< vector< PndSdsHit > > &  eventData)
protected

channel which has the oldest data

Definition at line 147 of file PndMQHitsEventBuilder.cxx.

Referenced by GetChannelsInEvent().

148 {
149  int result = -1;
150  double oldTimeStamp = -1;
151  for (int channelNr = 0; channelNr < eventData.size(); channelNr++){
152  double actualTimeStamp = eventData[channelNr].front().GetTimeStamp();
153  if (actualTimeStamp < oldTimeStamp || oldTimeStamp < 0){
154  result = channelNr;
155  oldTimeStamp = actualTimeStamp;
156  }
157  }
158  return result;
159 }
vector< bool > PndMQHitsEventBuilder::GetChannelsInEvent ( vector< vector< PndSdsHit > > &  eventData)
protected

Definition at line 116 of file PndMQHitsEventBuilder.cxx.

References FindFirstChannel(), fNChannels, and offset().

Referenced by GetNextEvent().

117 {
118  double offset = 50;
119  vector<bool> result(fNChannels, false);
120 
121  int firstChannel = FindFirstChannel(eventData);
122 // LOG(INFO) << "FirstChannel: " << firstChannel;
123  if (firstChannel > -1){
124  double firstTimeStamp = eventData[firstChannel][0].GetTimeStamp();
125  double lastTimeStamp = eventData[firstChannel].rbegin()->GetTimeStamp() + offset;
126  result[firstChannel] = true;
127 
128  for (int channelNr = 0; channelNr < eventData.size(); channelNr++){
129  if (channelNr != firstChannel){
130  double actualFirstTS = eventData[channelNr].begin()->GetTimeStamp();
131  double actualLastTS = eventData[channelNr].rbegin()->GetTimeStamp();
132  if (actualFirstTS == firstTimeStamp)
133  result[channelNr] = true;
134  if (actualFirstTS < firstTimeStamp){
135  if (actualLastTS >= firstTimeStamp){
136  result[channelNr] = true;
137  }
138  } else if (actualFirstTS <= lastTimeStamp) {
139  result[channelNr] = true;
140  }
141  }
142  }
143  }
144  return result;
145 }
TVector3 offset(2, 0, 0)
int FindFirstChannel(vector< vector< PndSdsHit > > &eventData)
channel which has the oldest data
vector< vector< PndSdsHit > > PndMQHitsEventBuilder::GetEvents ( )

Definition at line 29 of file PndMQHitsEventBuilder.cxx.

References GetNextEvent(), and HasData().

Referenced by PndMQHitEventDevice::Run().

30 {
31  vector<vector<PndSdsHit> > result;
32  while (HasData()){
33  result.push_back(GetNextEvent());
34  }
35  return result;
36 }
vector< PndSdsHit > GetNextEvent()
std::vector<int> PndMQHitsEventBuilder::GetInputDataLevel ( )
inline

Definition at line 26 of file PndMQHitsEventBuilder.h.

Referenced by PndMQHitEventDevice::Run().

26  {
27  std::vector<int> result;
28  for (auto& channelIter : fInputData){
29  result.push_back(channelIter.size());
30  }
31  return result;
32  }
vector< vector< vector< PndSdsHit > > > fInputData
vector< PndSdsHit > PndMQHitsEventBuilder::GetNextEvent ( )
protected

Definition at line 51 of file PndMQHitsEventBuilder.cxx.

References fInputData, fNChannels, fSensorsInEvent, and GetChannelsInEvent().

Referenced by GetEvents().

52 {
53  vector<PndSdsHit> result;
54 // if (fEventCounter % 1000 == 0){
55 // LOG(INFO) << fEventCounter;
56 // for (int channelNr = 0; channelNr < fNChannels; channelNr++){
57 // LOG(INFO) << channelNr << " : " << fInputData[channelNr].size();
58 // }
59 // }
60 // fEventCounter++;
61 // LOG(INFO) << "Data in channels";
62 // for (auto channelIter: fInputData){
63 // LOG(INFO) << "Channel size: " << channelIter.size();
64 // for (auto eventIter : channelIter)
65 // for (auto dataIter : eventIter)
66 // LOG(INFO) << dataIter.GetSensorID() << " " << dataIter.GetTimeStamp();
67 // }
68 
69  vector<vector<PndSdsHit> > firstDataInChannels;
70  firstDataInChannels.resize(fNChannels);
71  for (int channelNr = 0; channelNr < fInputData.size(); channelNr++){
72  if (fInputData[channelNr].size() > 0){
73  if (fInputData[channelNr][0].size() > 0)
74  firstDataInChannels[channelNr] = fInputData[channelNr][0];
75  else
76  return result;
77  }
78  }
79 // LOG(INFO) << "FirstDataInChannel:";
80 // for (int channel = 0; channel < firstDataInChannels.size(); channel++){
81 // //LOG(INFO) << "Channel: " << channel << " : ";
82 // for (auto data : firstDataInChannels[channel]){
83 // LOG(INFO) << channel << " : " << TString::Format("%12.0f", data.GetTimeStamp()).Data();
84 // }
85 // }
86  vector<bool> channelInEvent = GetChannelsInEvent(firstDataInChannels);
87 
88  int nSensorsInEvent = 0;
89 // LOG(INFO) << "ChannelMatch:";
90  for (auto inEvent : channelInEvent){
91  //LOG(INFO) << inEvent;
92  nSensorsInEvent += inEvent;
93  }
94 
95  if (nSensorsInEvent > 0)
96  fSensorsInEvent[nSensorsInEvent - 1]++;
97 
98 // LOG(INFO) << "channelInEvent.size " << channelInEvent.size();
99  for(int channelNr = 0; channelNr < fNChannels; channelNr++){
100  if (channelInEvent[channelNr] == true){
101  //LOG(INFO) << "Add Data to result from: " << channelNr;
102  result.insert(result.end(), firstDataInChannels[channelNr].begin(), firstDataInChannels[channelNr].end());
103  //LOG(INFO) << "DataInserted: " << result.size();
104  fInputData[channelNr].erase(fInputData[channelNr].begin());
105 // LOG(INFO) << "Delete data from InputData " << channelNr << " " << fInputData[channelNr].size();
106  }
107  }
108  //if (nChannelsInEvent > 2){
109  // LOG(INFO) << "Data in Result: ";
110  // for (auto data : result)
111  // LOG(INFO) << data.GetSensorID() << " : " << data.GetTimeStamp();
112  //}
113  return result;
114 }
vector< vector< vector< PndSdsHit > > > fInputData
vector< bool > GetChannelsInEvent(vector< vector< PndSdsHit > > &eventData)
vector<int> PndMQHitsEventBuilder::GetSensorsInEvent ( )
inline

Definition at line 25 of file PndMQHitsEventBuilder.h.

Referenced by PndMQHitEventDevice::Run().

25 { return fSensorsInEvent;}
bool PndMQHitsEventBuilder::HasData ( )
protected

Definition at line 38 of file PndMQHitsEventBuilder.cxx.

References fInputData.

Referenced by GetEvents().

39 {
40  bool result = true;
41  for (int channelIter = 0; channelIter < fInputData.size(); channelIter++){
42  if (fInputData[channelIter].size() == 0){
43  result = false;
44  }
45  }
46 // if (result == false)
47 // LOG(INFO) << "HasData " << result;
48  return result;
49 }
vector< vector< vector< PndSdsHit > > > fInputData

Member Data Documentation

int PndMQHitsEventBuilder::fEventCounter
private

Definition at line 47 of file PndMQHitsEventBuilder.h.

vector<vector<vector<PndSdsHit> > > PndMQHitsEventBuilder::fInputData
private

Definition at line 45 of file PndMQHitsEventBuilder.h.

Referenced by AddData(), GetNextEvent(), HasData(), and PndMQHitsEventBuilder().

int PndMQHitsEventBuilder::fNChannels
private

Definition at line 46 of file PndMQHitsEventBuilder.h.

Referenced by GetChannelsInEvent(), and GetNextEvent().

vector<int> PndMQHitsEventBuilder::fSensorsInEvent
protected

Definition at line 38 of file PndMQHitsEventBuilder.h.

Referenced by GetNextEvent().


The documentation for this class was generated from the following files: