QwAnalysis
QwHitContainer.cc
Go to the documentation of this file.
1 #include "QwHitContainer.h"
2 
4 
5 #include <boost/bind.hpp>
6 
7 static struct logical_not_s{
8  bool operator()(bool a){return !a;};
10 
11 // Iterator methods to obtain subsets of QwHitContainer elements - rakitha (08/2008)
12 QwHitContainer::iterator QwHitContainer::GetStartOfHits (
13  EQwRegionID region,
14  EQwDetectorPackage package,
15  EQwDirectionID direction)
16 {
17  return find_if (begin(), end(),
18  boost::bind(&QwHit::DirMatches, _1,
19  boost::ref(region),
20  boost::ref(package),
21  boost::ref(direction)));
22 }
23 
24 QwHitContainer::iterator QwHitContainer::GetEndOfHits (
25  EQwRegionID region,
26  EQwDetectorPackage package,
27  EQwDirectionID direction)
28 {
29  iterator first = GetStartOfHits(region, package, direction);
30  return find_if (first, end(),
31  boost::bind<bool>(logical_not_,
32  boost::bind(&QwHit::DirMatches, _1,
33  boost::ref(region),
34  boost::ref(package),
35  boost::ref(direction))));
36 }
37 
38 
39 QwHitContainer::iterator QwHitContainer::GetStartOfHits1 (
40  EQwRegionID region,
41  EQwDetectorPackage package,
42  Int_t plane)
43 {
44  return find_if (begin(), end(),
45  boost::bind(&QwHit::PlaneMatches, _1,
46  boost::ref(region),
47  boost::ref(package),
48  boost::ref(plane)));
49 }
50 
51 QwHitContainer::iterator QwHitContainer::GetEndOfHits1 (
52  EQwRegionID region,
53  EQwDetectorPackage package,
54  Int_t plane)
55 {
56  iterator first = GetStartOfHits1(region, package, plane);
57  return find_if (first, end(),
58  boost::bind<bool>(logical_not_,
59  boost::bind(&QwHit::PlaneMatches, _1,
60  boost::ref(region),
61  boost::ref(package),
62  boost::ref(plane))));
63 }
64 
65 
66 void QwHitContainer::GetSubList_Dir(EQwRegionID region, EQwDetectorPackage package, EQwDirectionID direction, std::vector<QwHit> & sublist) {
67  iterator p;
68  for (p=GetStartOfHits(region,package,direction);p !=GetEndOfHits(region,package,direction);p++){
69  sublist.push_back(*p);
70  }
71 }
72 
73 void QwHitContainer::GetSubList_Plane(EQwRegionID region, EQwDetectorPackage package, Int_t plane, std::vector<QwHit> & sublist) {
74  iterator p;
75  for (p=GetStartOfHits1(region,package,plane);p !=GetEndOfHits1(region,package,plane);p++){
76  sublist.push_back(*p);
77  }
78 }
79 
80 
81 // Return the sublist of hits only in specified package, region, and detector plane
83  QwHitContainer* sublist = new QwHitContainer;
84  for (iterator hit = begin(); hit != end(); hit++)
85  if (hit->PlaneMatches(region, package, plane))
86  sublist->push_back(*hit);
87  return sublist;
88 }
89 
90 // Return the sublist of hits only in specified package, region, and detector plane
92  QwHitContainer* sublist = new QwHitContainer;
93  for (iterator hit = begin(); hit != end(); hit++)
94  if (hit->DirMatches(region, package, dir))
95  sublist->push_back(*hit);
96  return sublist;
97 }
98 
99 
100 void QwHitContainer::Print (const Option_t* option) const
101 {
102  if (! this) return;
103  std::cout << *this << std::endl;
104 }
105 
106 std::ostream& operator<< (std::ostream& stream, const QwHitContainer& hitlist)
107 {
108  for (QwHitContainer::const_iterator hit = hitlist.begin(); hit != hitlist.end(); hit++)
109  stream << *hit << std::endl;
110  return stream;
111 }
std::ostream & operator<<(std::ostream &out, const QwColor &color)
Output stream operator which uses the enum-to-escape-code mapping.
Definition: QwColor.h:153
iterator GetEndOfHits1(EQwRegionID region, EQwDetectorPackage package, Int_t plane)
Bool_t DirMatches(EQwRegionID region, EQwDetectorPackage package, EQwDirectionID dir)
Definition: QwHit.cc:348
iterator GetStartOfHits1(EQwRegionID region, EQwDetectorPackage package, Int_t plane)
EQwDetectorPackage
Definition: QwTypes.h:70
static struct logical_not_s logical_not_
iterator GetStartOfHits(EQwRegionID region, EQwDetectorPackage package, EQwDirectionID direction)
EQwRegionID
Definition: QwTypes.h:16
bool operator()(bool a)
void GetSubList_Dir(EQwRegionID region, EQwDetectorPackage package, EQwDirectionID direction, std::vector< QwHit > &sublist)
void Print(const Option_t *option=0) const
EQwDirectionID
Definition: QwTypes.h:41
ClassImp(QwF1TDC)
iterator GetEndOfHits(EQwRegionID region, EQwDetectorPackage package, EQwDirectionID direction)
Bool_t PlaneMatches(EQwRegionID region, EQwDetectorPackage package, Int_t plane)
Definition: QwHit.cc:341
void GetSubList_Plane(EQwRegionID region, EQwDetectorPackage package, Int_t plane, std::vector< QwHit > &sublist)