NSL
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
ChargeInRange.h
Go to the documentation of this file.
1 #ifndef NSL_SELECTIONS_TOF_CHARGEINRANGE_H
2 #define NSL_SELECTIONS_TOF_CHARGEINRANGE_H
3 
4 // our headers
5 #include "NSL/Selection.h"
6 
7 namespace NSL {
8 namespace Selections {
9 
10 namespace Tof {
11 class ChargeInRange : public Selection {
12 public:
13  ChargeInRange(float min, float max, NAIA::Tof::ChargeType type);
14 };
15 } // namespace Tof
16 
17 namespace { // hidden
18 namespace tof_base = ::NSL::Selections::Tof;
19 }
20 
21 namespace PG {
22 namespace Tof {
23 
24 namespace { // hidden
25 std::pair<float, float> chargeLimits(unsigned int charge) {
26  switch (charge) {
27  case 1:
28  return {static_cast<float>(charge) - 0.5f, static_cast<float>(charge) + 1.5f};
29  case 2:
30  return {static_cast<float>(charge) - 0.75f, std::numeric_limits<float>::max()};
31  default:
32  return {static_cast<float>(charge) - 0.625 - 0.0225 * (charge - 9), static_cast<float>(charge) + 1.5f};
33  }
34 }
35 } // namespace
36 
38 public:
39  explicit ChargeInRange(unsigned int charge, NAIA::Tof::ChargeType type)
40  : tof_base::ChargeInRange(chargeLimits(charge).first, chargeLimits(charge).second, type) {}
41 };
42 } // namespace Tof
43 } // namespace PG
44 
45 namespace Common {
46 namespace Tof {
47 
48 namespace { // hidden
49 std::pair<float, float> chargeLimits(unsigned int charge) {
50  switch (charge) {
51  case 1:
52  return {static_cast<float>(charge) - 0.5f, static_cast<float>(charge) + 1.5f};
53  case 2:
54  return {static_cast<float>(charge) - 0.75f, std::numeric_limits<float>::max()};
55  default:
56  return {static_cast<float>(charge) - 0.75f, static_cast<float>(charge) + 0.75f};
57  }
58 }
59 } // namespace
60 
62 public:
63  explicit ChargeInRange(unsigned int charge, NAIA::Tof::ChargeType type)
64  : tof_base::ChargeInRange(chargeLimits(charge).first, chargeLimits(charge).second, type) {}
65 };
66 } // namespace Tof
67 } // namespace Common
68 
69 } // namespace Selections
70 } // namespace NSL
71 
72 #endif
ChargeInRange(float min, float max, NAIA::Tof::ChargeType type)
ChargeInRange(unsigned int charge, NAIA::Tof::ChargeType type)
Definition: ChargeInRange.h:39
ChargeInRange(unsigned int charge, NAIA::Tof::ChargeType type)
Definition: ChargeInRange.h:63