00001 #ifndef SiStripObjects_SiStripDetCabling_h
00002 #define SiStripObjects_SiStripDetCabling_h
00003
00004
00005
00006
00011
00012
00013
00014 #include "CondFormats/SiStripObjects/interface/SiStripFedCabling.h"
00015 #include "CondFormats/SiStripObjects/interface/FedChannelConnection.h"
00016 #include <boost/cstdint.hpp>
00017 #include <vector>
00018 #include <map>
00019 class SiStripDetCabling
00020 {
00021 public:
00022 SiStripDetCabling();
00023 virtual ~SiStripDetCabling();
00024 SiStripDetCabling(const SiStripFedCabling &);
00025 void addDevices(const FedChannelConnection &, std::map< uint32_t, std::vector<FedChannelConnection> >&);
00026 void addDevices(const FedChannelConnection &);
00027
00028 inline const std::map< uint32_t, std::vector<FedChannelConnection> >& getDetCabling() const { return fullcabling_; }
00029
00030 void addActiveDetectorsRawIds(std::vector<uint32_t> &) const;
00031 void addAllDetectorsRawIds(std::vector<uint32_t> & vector_to_fill_with_detids ) const;
00032 void getAllDetectorsContiguousIds(std::map<uint32_t, unsigned int>&) const;
00033 void getActiveDetectorsContiguousIds(std::map<uint32_t, unsigned int>&) const;
00034
00035 void addConnected ( std::map<uint32_t, std::vector<int> > &) const;
00036 void addDetected ( std::map<uint32_t, std::vector<int> > &) const;
00037 void addUnDetected( std::map<uint32_t, std::vector<int> > &) const;
00038 void addNotConnectedAPVs( std::map<uint32_t, std::vector<int> > &) const;
00039
00040 const std::vector<FedChannelConnection>& getConnections( uint32_t det_id ) const;
00041 const FedChannelConnection& getConnection( uint32_t det_id, unsigned short apv_pair ) const;
00042 const unsigned int getDcuId( uint32_t det_id ) const;
00043 const uint16_t nApvPairs(uint32_t det_id) const;
00044 bool IsConnected(const uint32_t& det_id) const;
00045 bool IsDetected(const uint32_t& det_id) const;
00046 bool IsUndetected(const uint32_t& det_id) const;
00047
00048 private:
00049 SiStripDetCabling(const SiStripDetCabling&);
00050 const SiStripDetCabling& operator=(const SiStripDetCabling&);
00051 void addFromSpecificConnection( std::map<uint32_t, std::vector<int> > & , const std::map< uint32_t, std::vector<int> > &) const;
00052 bool IsInMap(const uint32_t& det_id, const std::map<uint32_t, std::vector<int> > &) const;
00053
00054
00055 private:
00056
00057 std::map< uint32_t, std::vector<FedChannelConnection> > fullcabling_;
00058
00059 std::map< uint32_t, std::vector<int> > connected_;
00060 std::map< uint32_t, std::vector<int> > detected_;
00061 std::map< uint32_t, std::vector<int> > undetected_;
00062 };
00063 #endif