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