CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/CalibCalorimetry/HcalAlgos/interface/HcalLogicalMapGenerator.h

Go to the documentation of this file.
00001 #ifndef HcalLogicalMapGenerator_h
00002 #define HcalLogicalMapGenerator_h
00003 
00004 #include "CondFormats/HcalObjects/interface/HcalLogicalMap.h"
00005 
00006 
00007 class HcalLogicalMapGenerator {
00008 
00009     
00010   public:
00011          
00012     HcalLogicalMapGenerator( );
00013     ~HcalLogicalMapGenerator( );
00014     HcalLogicalMap createMap(unsigned int mapIOV = 5);
00015 
00016   private:
00017 
00018     void buildHBEFTMap(std::vector <HBHEHFLogicalMapEntry>&,std::vector <HTLogicalMapEntry>&,std::vector <uint32_t>&,
00019                        std::vector <uint32_t>&,
00020                        std::vector <uint32_t>&,
00021                        std::vector <uint32_t>&,
00022                        std::vector <uint32_t>&);
00023     void buildHOXMap  (std::vector <HOHXLogicalMapEntry>&  ,std::vector <uint32_t>&,
00024                        std::vector <uint32_t>&,
00025                        std::vector <uint32_t>&);
00026     void buildCALIBMap(std::vector <CALIBLogicalMapEntry>& ,std::vector <uint32_t>&,
00027                        std::vector <uint32_t>&);
00028     void buildZDCMap  (std::vector <ZDCLogicalMapEntry>&   ,std::vector <uint32_t>&,
00029                        std::vector <uint32_t>&);
00030     void ConstructTriggerTower(
00031                                std::vector <HTLogicalMapEntry>&,
00032                                int i_side, int i_eta, int i_phi, int i_dphi, int i_depth, std::string i_det, int i_wedge, int i_rm,
00033                                int i_pixel, int i_qie, int i_adc, int i_rm_fi, int i_fi_ch, int i_crate, int i_htr, std::string i_fpga,
00034                                int i_htr_fi, int i_spigot, int i_slb, std::string i_slbin, std::string i_slbin2,
00035                                std::string i_slnam, int i_rctcra, int i_rctcar, int i_rctcon, std::string i_rctnam, int i_fed
00036                                );
00037 
00038     unsigned int mapIOV_;
00039 
00040 /*****************************Constants**************************/
00041 
00042     static const int NHBHECR    = 9;        //HB HE crates
00043     static const int NHTRS      = 3;          //Htrs 0, 1, 2 for HB HE
00044     static const int NHSETS     = 4;         //4 sets of HB/HE htrs
00045 
00046     static const int NHFCR      = 3;          //HF crates
00047 
00048     static const int NHOCR      = 4;          //HO crates
00049     static const int NHTRSHO    = 4;        //Htrs 0-3 for HO
00050     static const int NHSETSHO   = 3;       //3 sets of H0 htrs
00051     static const int NHOETA     = 16;
00052     static const int NHOPHI     = 72;  
00053 
00054     static const int NCALIBCR   = 13;        //CALIB crates
00055 
00056     static const int NZDCCAB    = 9;         // ZDC cables
00057 
00058     static const int NFBR       = 8;           //Fibers for htrs
00059     static const int NFCH       = 3;          //3 Fiber channels ranging 0-2
00060     static const int NTOPBOT    = 2;        //2 FPGAs (top/bottom)
00061     static const int NRMFIBR    = 6;        //6 rm fibers ranging 2-7
00062     static const int NRMSLOT    = 4;        //4 rm slots ranging 1-4
00063 
00064 
00065 
00066     //Global iterator variables
00067     int i, j;
00068 
00069 
00070     //Variables that need to be printed
00071     int irm,     irm_fi,  iwedge,  ipixel,  iqie,    iadc,  isector;
00072     int islb,    irctcra, irctcar, irctcon, irctnam, idphi;
00073     int iside,   ieta,    iphi,    idepth,  icrate,  ihtr;
00074     int ihtr_fi, ifi_ch,  ispigot, idcc,    idcc_sl, ifed;
00075     // indexing number
00076     int inum;
00077     //CALIB channel function
00078     int ich_type;
00079     std::string subdet;
00080     //ZDC channel function
00081     int ix, iy, idx, idet_ch, icab;
00082 
00083     std::string rbx, slbin, slbin2, slnam;
00084     std::string det,  fpga, rctnam, letter;
00085     char tempbuff[30];
00086   
00087     int hbhecrate[NHBHECR];
00088     int hfcrate[NHFCR];
00089     int hocrate[NHOCR];
00090     int fedhbhenum[NHBHECR][2];
00091     int fedhfnum[NHFCR][2];
00092     int fedhonum[NHOCR][2];
00093     int ihslot[NHSETS];
00094     int ihslotho[NHSETSHO][NHTRSHO];
00095     int ihbhephis[NHBHECR];
00096     int ihfphis[NHFCR];
00097     int ihophis[NHOCR];
00098     int ihbheetadepth[NHTRS][NTOPBOT][NFBR][NFCH][2];
00099     int ihfetadepth[NTOPBOT][NFBR][NFCH][2];
00100     int irm_rmfiHBHE[NHTRS][NTOPBOT][NFBR][2];
00101 
00102     int irm_rmfiHF[NHTRS][NTOPBOT][NFBR][2];
00103     int ipixelHB[NRMFIBR][NFCH][NRMSLOT];
00104                                      
00105     int ipixelHE[NRMFIBR][NFCH][NRMSLOT];
00106     int iadcquiHBHE[NRMFIBR][NFCH][2];
00107  
00108     const char* S_slbin_odd[8];
00109     const char* S_slbin_even[8];
00110     const char* rct_rackHBHE[18];
00111     const char* S_slbin_7[4];
00112     const char* S_slbin_3[4];
00113     const char* rct_rackHF[18];
00114  
00115     int slb_table[29];
00116     int HO_RM_table[24][16][2];
00117     int HO_RM_fi_eta5to15[11];
00118 
00119     int HO_RM_fi_eta16;
00120 
00121     int HO_htr_fi_450eta5to15[2][11];
00122     int HO_htr_fi_450eta16M[4];
00123     int HO_htr_fi_450eta16P[4][6];
00124     int HO_htr_fi_eta4[2][6];
00125     int HO_htr_fi_eta123[2][6];
00126     //static const int HO_Block3_LC[][6];
00127     int HO_RM_fi_eta1to4[72][2][2];
00128     int ipixelHO[NRMFIBR][NFCH][2];
00129     std::string letterHO[NRMFIBR][NFCH][2];
00130     int rmspecialeta[6][6];
00131     std::string rmspeciallet_code[6][6];  
00132     std::string rmspecialdet[6][6];
00133   
00134   
00135     //Associated variables
00136     int hfphi; 
00137     char sidesign, S_side;
00138   
00139     //For slb and rct
00140     int phi, phideg, etaslb, oddcard, eta2, eta3, phimod8, ietamod;
00141     int crazy;
00142 
00143     //For HO
00144     int phmod24, phmod6, sidear, iph, iet, isid, ring, sector;
00145     bool phi1458, phi271011, phir0v1, phir0v2, phir0v3, phir0v4;
00146     bool phmod6e450, phmod6e123;
00147 
00148     //HO Patch panel
00149 
00150     int ic,is,ih,itb,ifb,ifc,ifwtb;
00151 
00152     int calibcrate[NCALIBCR];
00153     int fedcalibnum[NCALIBCR][2];
00154     int icalibphis[NCALIBCR];
00155     int icalibsector_min[NCALIBCR];
00156     int icalibsector_max[NCALIBCR];
00157     std::string detIDCALIB[NCALIBCR][NTOPBOT];
00158     int nfbr_max[NCALIBCR][NTOPBOT];
00159     int calibHOinfo[NHOCR][NTOPBOT][NFBR][2];
00160 
00161 };
00162 
00163 #endif