00001 #ifndef FastSimulation_CaloGeometryTools_CaloDirectionOperations_h 00002 #define FastSimulation_CaloGeometryTools_CaloDirectionOperations_h 00003 00004 00005 #include "Geometry/CaloTopology/interface/CaloDirection.h" 00006 00007 // A set of "non standard" operations on CaloDirections 00008 // This is FastSimulation specific ! 00009 // F. Beaudette 23/10/06 00010 00011 class CaloDirectionOperations 00012 { 00013 public: 00014 CaloDirectionOperations(){;} 00015 ~CaloDirectionOperations(){;} 00016 00017 // add directions in 2D 00018 static CaloDirection add2d(const CaloDirection& dir1, const CaloDirection & dir2); 00019 00021 static CaloDirection Side(unsigned i) ; 00023 static unsigned Side(const CaloDirection& side); 00024 00026 static unsigned neighbourDirection(const CaloDirection& side); 00028 static CaloDirection neighbourDirection(unsigned i); 00029 00030 // returns the opposite side 00031 static CaloDirection oppositeSide(const CaloDirection& side) ; 00032 static unsigned oppositeDirection(unsigned iside); 00033 }; 00034 00035 00036 #endif