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
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
00070 unsigned short L1RCTParameters::calcCard(unsigned short rct_iphi,
00071 unsigned short absIeta) const
00072 {
00073 unsigned short card = 999;
00074
00075 if (absIeta <= 24){
00076 card = ((absIeta-1)/8)*2 + (rct_iphi%8)/4;
00077 }
00078
00079 else if ((absIeta >= 25) && (absIeta <= 28)){
00080 card = 6;
00081 }
00082 else{}
00083 return card;
00084 }
00085
00086
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
00095 if (absIeta <= 24){
00096
00097 tower = ((absIeta-1)%8)*4 + (iphi%4);
00098 }
00099
00100 else if ((absIeta >= 25) && (absIeta <= 28)){
00101 if (regionPhi == 0){
00102
00103 tower = (absIeta-25)*4 + (iphi%4);
00104 }
00105 else {
00106 tower = 28 + iphi % 4 + (25 - absIeta) * 4;
00107 }
00108 }
00109
00110 else if ((absIeta >= 29) && (absIeta <= 32)){
00111
00112
00113 regionPhi = iphi % 2;
00114
00115
00116 tower = (regionPhi) * 4 + absIeta - 29;
00117 }
00118 return tower;
00119 }
00120
00121
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
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);
00140 else if(iCard == 6){
00141
00142 if(iTower < 16)
00143 iPhi = (iCrate % 9) * 8 + (iTower % 4);
00144
00145 else
00146 iPhi = (iCrate % 9) * 8 + ((iTower - 16) % 4) + 4;
00147 }
00148
00149 else
00150 iPhi = (iCrate % 9) * 2 + iTower / 4;
00151 return iPhi;
00152 }
00153
00154
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;
00161 else if(iCard == 6) {
00162
00163 if(iTower < 16)
00164 absIEta = 25 + iTower / 4;
00165
00166 else
00167 absIEta = 28 - ((iTower - 16) / 4);
00168 }
00169
00170 else
00171 absIEta = 29 + iTower % 4;
00172 return absIEta;
00173 }
00174