Belle II Software  release-05-02-19
Modulo.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2012 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Oliver Frost *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #pragma once
11 
12 namespace Belle2 {
17  namespace TrackFindingCDC {
22  inline int modulo(int numerator, int denominator)
23  {
24  return ((numerator % denominator) + denominator) % denominator;
25  }
26 
34  inline int moduloFast(int numerator, int denominator)
35  {
36  while (numerator < 0) numerator += denominator;
37  while (numerator >= denominator) numerator -= denominator;
38  return numerator;
39  }
40 
46  inline int symmetricModulo(int numerator, int denominator)
47  {
48  return modulo(numerator + denominator / 2, denominator) - denominator / 2;
49  }
50 
59  inline int symmetricModuloFast(int numerator, int denominator)
60  {
61  return moduloFast(numerator + denominator / 2, denominator) - denominator / 2;
62  }
63 
65  template<class AInt>
66  inline bool isEven(const AInt& x)
67  {
68  return (x % 2) == 0;
69  }
70 
72  template<class AInt>
73  inline bool isOdd(const AInt& x)
74  {
75  return (x % 2) != 0;
76  }
77  }
79 }
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19