CaloDirectionOperations

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
#ifndef FastSimulation_CaloGeometryTools_CaloDirectionOperations_h
#define FastSimulation_CaloGeometryTools_CaloDirectionOperations_h

#include "Geometry/CaloTopology/interface/CaloDirection.h"

// A set of "non standard" operations on CaloDirections
// This is FastSimulation specific !
// F. Beaudette 23/10/06

class CaloDirectionOperations {
public:
  CaloDirectionOperations() { ; }
  ~CaloDirectionOperations() { ; }

  // add directions in 2D
  static CaloDirection add2d(const CaloDirection& dir1, const CaloDirection& dir2);

  /// unsigned int -> Side conversion
  static CaloDirection Side(unsigned i);
  /// Side -> unsigned conversion
  static unsigned Side(const CaloDirection& side);

  /// unsigned int -> Direction  for the neighbours
  static unsigned neighbourDirection(const CaloDirection& side);
  /// Direction -> unsigned conversion for the neighbours
  static CaloDirection neighbourDirection(unsigned i);

  // returns the opposite side
  static CaloDirection oppositeSide(const CaloDirection& side);
  static unsigned oppositeDirection(unsigned iside);
};

#endif