PPM-DU analysis  2.3
conversion and analysis of the PPM-DU data
 All Classes Files Functions Variables Pages
/home/alex/Work/Research/Km3NeT/PPM-DU/ppm-du-v2.3/triggeringEvent.cc
Go to the documentation of this file.
1 #include <cmath>
2 #include <algorithm>
3 #include <iostream>
4 
5 #include "triggeringEvent.h"
6 
7 void
8 AddDom2Event(std::vector<triggeredSignals>& vTriggeredDom,
9  std::vector<triggeredSignals>& vEventList)
10 {
11  vEventList.insert(vEventList.end(), vTriggeredDom.begin(), vTriggeredDom.end());
12 }
13 
14 void
15 Do2DomTrigger(std::vector<triggeredSignals>& vTrigSignals,
16  std::vector<triggeredSignals>& vFinalEvent,
17  const int domTimeWindow)
18 {
19  //std::cout << "test0" << std::endl;
20  sort(vTrigSignals.begin(), vTrigSignals.end());
21  //std::cout << "test1" << std::endl;
22  std::vector<signals> vEventSignals;
23  vEventSignals.clear();
24  for (unsigned int dom1 = 0; dom1 < vTrigSignals.size() - 1; ++dom1) {
25  if (vTrigSignals.size() == 0) break;
26  const int domId1 = vTrigSignals[dom1].GetSignals()[0].GetDomId();
27  int skipped = 0;
28  for (unsigned int dom2 = dom1 + 1; dom2 < vTrigSignals.size(); ++dom2) {
29  const int domId2 = vTrigSignals[dom2].GetSignals()[0].GetDomId();
30  //std::cout << domId1 << ' ' << domId2 << ' ' << dom1 << ' ' << dom2 << ' ' << vTrigSignals.size() << std::endl;
31  if (domId1 == domId2) continue;
32  const long long int time1 = vTrigSignals[dom1].GetSignals()[0].GetStart();
33  const long long int time2 = vTrigSignals[dom2].GetSignals()[0].GetStart();
34  //std::cout << domId1 << ' ' << domId2 << ' ' << time2 - time1 << std::endl;
35  if (fabs(time1 - time2) > domTimeWindow) break;
36  for (unsigned int j = 0; j < vTrigSignals[dom1].GetSignals().size(); ++j)
37  vEventSignals.push_back(vTrigSignals[dom1].GetSignals()[j]);
38  for (unsigned int j = 0; j < vTrigSignals[dom2].GetSignals().size(); ++j)
39  vEventSignals.push_back(vTrigSignals[dom2].GetSignals()[j]);
40  triggeredSignals trigEv("");
41  trigEv.SetSignals(vEventSignals);
42  vFinalEvent.push_back(trigEv);
43  vEventSignals.clear();
44  skipped = dom2 - dom1 - 1;
45  break;
46  }
47  if (dom1 + skipped >= vTrigSignals.size()) break;
48  else dom1 += skipped;
49  }
50 }
51 
52 
53 void
54 DoEventTrigger(std::vector<triggeredSignals>& vEventList,
55  std::vector<triggeredSignals>& vFinalEvent,
56  const int domTimeWindow)
57 {
58  sort(vEventList.begin(), vEventList.end());
59  std::vector<signals> vEventSignals;
60  vEventSignals.clear();
61  for (unsigned int i = 0; i < vEventList.size() - 1; ++i) {
62  if (vEventList.size() == 0) break;
63  const int dom1 = vEventList[i].GetSignals()[0].GetDomId();
64  const int dom2 = vEventList[i + 1].GetSignals()[0].GetDomId();
65  if (dom1 != dom2) {
66  const long long int time1 = vEventList[i].GetSignals()[0].GetStart();
67  const long long int time2 = vEventList[i + 1].GetSignals()[0].GetStart();
68  if (fabs(time1 - time2) < domTimeWindow) {
69  for (unsigned int j = 0; j < vEventList[i].GetSignals().size(); ++j)
70  vEventSignals.push_back(vEventList[i].GetSignals()[j]);
71  for (unsigned int j = 0; j < vEventList[i + 1].GetSignals().size(); ++j)
72  vEventSignals.push_back(vEventList[i + 1].GetSignals()[j]);
73  } else {
74  triggeredSignals trigEv("");
75  trigEv.SetSignals(vEventSignals);
76  vFinalEvent.push_back(trigEv);
77  vEventSignals.clear();
78  }
79  } else {
80  triggeredSignals trigEv("");
81  trigEv.SetSignals(vEventSignals);
82  vFinalEvent.push_back(trigEv);
83  vEventSignals.clear();
84  }
85  }
86  //std::cout << vEventSignals.size() << std::endl;
87  //triggeredSignals trigEv("");
88  //trigEv.SetSignals(vEventSignals);
89  //vFinalEvent.push_back(trigEv);
90  //vEventSignals.clear();
91  //std::cout << vFinalEvent.size() << std::endl;
92 }
void Do2DomTrigger(std::vector< triggeredSignals > &vTrigSignals, std::vector< triggeredSignals > &vFinalEvent, const int domTimeWindow)
void AddDom2Event(std::vector< triggeredSignals > &vTriggeredDom, std::vector< triggeredSignals > &vEventList)
to come...
void SetSignals(const std::vector< signals > vSig)
const int domTimeWindow
Definition: constants.h:51
make the event trigger (coincidence between doms)
void DoEventTrigger(std::vector< triggeredSignals > &vEventList, std::vector< triggeredSignals > &vFinalEvent, const int domTimeWindow)
data of triggered pmt