Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:02:12

0001 #ifndef CondFormats_GEMObjects_GEMeMap_h
0002 #define CondFormats_GEMObjects_GEMeMap_h
0003 
0004 #include "CondFormats/Serialization/interface/Serializable.h"
0005 #include <string>
0006 #include <vector>
0007 
0008 class GEMROMapping;
0009 
0010 class GEMeMap {
0011 public:
0012   GEMeMap();
0013   explicit GEMeMap(const std::string& version);
0014 
0015   virtual ~GEMeMap();
0016 
0017   const std::string& version() const;
0018   void convert(GEMROMapping& romap);
0019   void convertDummy(GEMROMapping& romap);
0020 
0021   struct GEMChamberMap {
0022     std::vector<unsigned int> fedId;
0023     std::vector<uint8_t> amcNum;
0024     std::vector<uint8_t> gebId;
0025     std::vector<int> gemNum;
0026     std::vector<int> vfatVer;
0027 
0028     COND_SERIALIZABLE;
0029   };
0030 
0031   struct GEMVFatMap {
0032     std::vector<int> gemNum;
0033     std::vector<uint16_t> vfatAdd;
0034     std::vector<int> vfatType;
0035     std::vector<int> iEta;
0036     std::vector<int> localPhi;
0037 
0038     COND_SERIALIZABLE;
0039   };
0040   struct GEMStripMap {
0041     std::vector<int> vfatType;
0042     std::vector<int> vfatCh;
0043     std::vector<int> vfatStrip;
0044 
0045     COND_SERIALIZABLE;
0046   };
0047 
0048   std::vector<GEMChamberMap> theChamberMap_;
0049   std::vector<GEMVFatMap> theVFatMap_;
0050   std::vector<GEMStripMap> theStripMap_;
0051 
0052 private:
0053   std::string theVersion;
0054 
0055   COND_SERIALIZABLE;
0056 
0057 public:
0058   // size of ID bits
0059   static const int vfatVerV3_ = 3;       // VFAT v3
0060   static const int vfatTypeV3_ = 11;     // VFAT v3
0061   static const int chipIdMask_ = 0xfff;  // chipId mask for 12 bits
0062   static const int maxGEBs_ = 24;        // 5 bits for GEB id
0063   static const int maxGEB1_ = 12;        // 5 bits for GEB id
0064   static const int maxGEB2_ = 12;        // 5 bits for GEB id
0065   static const int maxAMCs_ = 15;        // 4 bits for AMC no.
0066   static const int maxVFatGE0_ = 12;     // vFat per eta partition, not known yet for ME0
0067   static const int maxVFatGE11_ = 3;     // vFat per eta partition in GE11
0068   static const int maxVFatGE21_ = 6;     // vFat per eta partition in GE21
0069   static const int maxiEtaIdGE0_ = 8;    // no. eta partitions for GE0
0070   static const int maxiEtaIdGE11_ = 8;   // no. eta partitions for GE11
0071   static const int maxiEtaIdGE21_ = 16;  // no. eta partitions for GE21
0072   static const int maxChan_ = 128;       // channels per vFat
0073 };
0074 #endif  // GEMeMap_H