CMS 3D CMS Logo

L1RCTParameters.cc

Go to the documentation of this file.
00001 
00007 #include <iostream>
00008 #include <fstream>
00009 
00010 #include "CondFormats/L1TObjects/interface/L1RCTParameters.h"
00011 
00012 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00013 
00014 L1RCTParameters::L1RCTParameters(double eGammaLSB,
00015                                  double jetMETLSB,
00016                                  double eMinForFGCut,
00017                                  double eMaxForFGCut,
00018                                  double hOeCut,
00019                                  double eMinForHoECut,
00020                                  double eMaxForHoECut,
00021                                  double hMinForHoECut,
00022                                  double eActivityCut,
00023                                  double hActivityCut,
00024                                  unsigned eicIsolationThreshold,
00025                                  unsigned jscQuietThresholdBarrel,
00026                                  unsigned jscQuietThresholdEndcap,
00027                                  bool noiseVetoHB,
00028                                  bool noiseVetoHEplus,
00029                                  bool noiseVetoHEminus,
00030                                  std::vector<double> eGammaECalScaleFactors,
00031                                  std::vector<double> eGammaHCalScaleFactors,
00032                                  std::vector<double> jetMETECalScaleFactors,
00033                                  std::vector<double> jetMETHCalScaleFactors
00034                                  ) :
00035   eGammaLSB_(eGammaLSB),
00036   jetMETLSB_(jetMETLSB),
00037   eMinForFGCut_(eMinForFGCut),
00038   eMaxForFGCut_(eMaxForFGCut),
00039   hOeCut_(hOeCut),
00040   eMinForHoECut_(eMinForHoECut),
00041   eMaxForHoECut_(eMaxForHoECut),
00042   hMinForHoECut_(hMinForHoECut),
00043   eActivityCut_(eActivityCut),
00044   hActivityCut_(hActivityCut),
00045   eicIsolationThreshold_(eicIsolationThreshold),
00046   jscQuietThresholdBarrel_(jscQuietThresholdBarrel),
00047   jscQuietThresholdEndcap_(jscQuietThresholdEndcap),
00048   noiseVetoHB_(noiseVetoHB),
00049   noiseVetoHEplus_(noiseVetoHEplus),
00050   noiseVetoHEminus_(noiseVetoHEminus),
00051   eGammaECalScaleFactors_(eGammaECalScaleFactors),
00052   eGammaHCalScaleFactors_(eGammaHCalScaleFactors),
00053   jetMETECalScaleFactors_(jetMETECalScaleFactors),
00054   jetMETHCalScaleFactors_(jetMETHCalScaleFactors)
00055 {
00056 }
00057 
00058 // maps rct iphi, ieta of tower to crate
00059 unsigned short L1RCTParameters::calcCrate(unsigned short rct_iphi, short ieta) const
00060 {
00061   unsigned short crate = rct_iphi/8;
00062   if(abs(ieta) > 28) crate = rct_iphi / 2;
00063   if (ieta > 0){
00064     crate = crate + 9;
00065   }
00066   return crate;
00067 }
00068 
00069 //map digi rct iphi, ieta to card
00070 unsigned short L1RCTParameters::calcCard(unsigned short rct_iphi, 
00071                                          unsigned short absIeta) const
00072 {
00073   unsigned short card = 999;
00074   // Note absIeta counts from 1-32 (not 0-31)
00075   if (absIeta <= 24){
00076     card =  ((absIeta-1)/8)*2 + (rct_iphi%8)/4;
00077   }
00078   // 25 <= absIeta <= 28 (card 6)
00079   else if ((absIeta >= 25) && (absIeta <= 28)){
00080     card = 6;
00081   }
00082   else{}
00083   return card;
00084 }
00085 
00086 //map digi rct iphi, ieta to tower
00087 unsigned short L1RCTParameters::calcTower(unsigned short rct_iphi, 
00088                                           unsigned short absIeta) const
00089 {
00090   unsigned short tower = 999;
00091   unsigned short iphi = rct_iphi;
00092   unsigned short regionPhi = (iphi % 8)/4;
00093 
00094   // Note absIeta counts from 1-32 (not 0-31)
00095   if (absIeta <= 24){
00096     // assume iphi between 0 and 71; makes towers from 0-31, mod. 7Nov07
00097     tower = ((absIeta-1)%8)*4 + (iphi%4);  // REMOVED +1
00098   }
00099   // 25 <= absIeta <= 28 (card 6)
00100   else if ((absIeta >= 25) && (absIeta <= 28)){
00101     if (regionPhi == 0){
00102       // towers from 0-31, modified 7Nov07 Jessica Leonard
00103       tower = (absIeta-25)*4 + (iphi%4);  // REMOVED +1
00104     }
00105     else {
00106       tower = 28 + iphi % 4 + (25 - absIeta) * 4;  // mod. 7Nov07 JLL
00107     }
00108   }
00109   // absIeta >= 29 (HF regions)
00110   else if ((absIeta >= 29) && (absIeta <= 32)){
00111     // SPECIAL DEFINITION OF REGIONPHI FOR HF SINCE HF IPHI IS 0-17 
00112     // Sept. 19 J. Leonard
00113     regionPhi = iphi % 2;
00114     // HF MAPPING, just regions now, don't need to worry about towers
00115     // just calling it "tower" for convenience
00116     tower = (regionPhi) * 4 + absIeta - 29;
00117   }
00118   return tower;
00119 }
00120 
00121 // iCrate 0-17, iCard 0-6, NEW iTower 0-31
00122 short L1RCTParameters::calcIEta(unsigned short iCrate, unsigned short iCard, 
00123                                 unsigned short iTower) const
00124 {
00125   unsigned short absIEta = calcIAbsEta(iCrate, iCard, iTower);
00126   short iEta;
00127   if(iCrate < 9) iEta = -absIEta;
00128   else iEta = absIEta;
00129   return iEta;
00130 }
00131 
00132 // iCrate 0-17, iCard 0-6, NEW iTower 0-31
00133 unsigned short L1RCTParameters::calcIPhi(unsigned short iCrate, 
00134                                          unsigned short iCard, 
00135                                          unsigned short iTower) const
00136 {
00137   short iPhi;
00138   if(iCard < 6)
00139     iPhi = (iCrate % 9) * 8 + (iCard % 2) * 4 + (iTower % 4); // rm -1 7Nov07
00140   else if(iCard == 6){
00141     // region 0
00142     if(iTower < 16)  // 17->16
00143       iPhi = (iCrate % 9) * 8 + (iTower % 4);  // rm -1
00144     // region 1
00145     else
00146       iPhi = (iCrate % 9) * 8 + ((iTower - 16) % 4) + 4; // 17 -> 16
00147   }
00148   // HF regions
00149   else
00150     iPhi = (iCrate % 9) * 2 + iTower / 4;
00151   return iPhi;
00152 }
00153 
00154 // iCrate 0-17, iCard 0-6, NEW iTower 0-31
00155 unsigned short L1RCTParameters::calcIAbsEta(unsigned short iCrate, unsigned short iCard, 
00156                                             unsigned short iTower) const
00157 {
00158   unsigned short absIEta;
00159   if(iCard < 6) 
00160     absIEta = (iCard / 2) * 8 + (iTower / 4) + 1;  // rm -1 JLL 7Nov07
00161   else if(iCard == 6) {
00162     // card 6, region 0
00163     if(iTower < 16) // 17->16
00164       absIEta = 25 + iTower / 4;  // rm -1
00165     // card 6, region 1
00166     else
00167       absIEta = 28 - ((iTower - 16) / 4);  // 17->16
00168   }
00169   // HF regions
00170   else
00171     absIEta = 29 + iTower % 4;
00172   return absIEta;
00173 }
00174 

Generated on Tue Jun 9 17:26:39 2009 for CMSSW by  doxygen 1.5.4