00001 #ifndef CSC_GANGED_WIRE_GROUPING_H 00002 #define CSC_GANGED_WIRE_GROUPING_H 00003 00015 #include "Geometry/CSCGeometry/src/CSCWireGrouping.h" 00016 #include <vector> 00017 00018 class CSCGangedWireGrouping : public CSCWireGrouping { 00019 00020 public: 00021 00022 typedef std::vector<int> Container; 00023 typedef Container::const_iterator CIterator; 00024 00025 virtual ~CSCGangedWireGrouping() {} 00026 00030 CSCGangedWireGrouping( const Container& consecutiveGroups, 00031 const Container& wiresInConsecutiveGroups, 00032 int numberOfGroups ); 00033 00040 int numberOfWires() const { 00041 return theNumberOfWires; } 00042 00046 int numberOfWireGroups() const { 00047 return theNumberOfGroups; } 00048 00052 int numberOfWiresPerGroup( int wireGroup ) const; 00053 00057 int wireGroup( int wire ) const; 00058 00065 float middleWireOfGroup( int wireGroup ) const; 00066 00071 CSCWireGrouping* clone() const { 00072 return new CSCGangedWireGrouping(*this); 00073 } 00074 00075 private: 00076 // Expanded information from DDD 00077 int theNumberOfWires; 00078 int theNumberOfGroups; 00079 Container theFirstWireOfEachWireGroup; 00080 Container theNumberOfWiresPerWireGroup; 00081 00082 }; 00083 00084 #endif