Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "RecoMET/METAlgorithms/interface/HcalNoiseRBXArray.h"
00011
00012 using namespace reco;
00013
00014
00015 HcalNoiseRBXArray::HcalNoiseRBXArray()
00016 {
00017 for(unsigned int i=0; i<size(); i++) {
00018 HcalNoiseRBX& rbx=at(i);
00019
00020
00021 rbx.idnumber_=i;
00022
00023
00024 boost::array<int, HcalHPDRBXMap::NUM_HPDS_PER_RBX> hpdindices;
00025 HcalHPDRBXMap::indicesHPDfromRBX(i, hpdindices);
00026 for(int j=0; j<HcalHPDRBXMap::NUM_HPDS_PER_RBX; j++) {
00027 rbx.hpds_[j].idnumber_=hpdindices[j];
00028 }
00029 }
00030 }
00031
00032 HcalNoiseRBXArray::~HcalNoiseRBXArray()
00033 {
00034 }
00035
00036 std::vector<HcalNoiseHPD>::const_iterator HcalNoiseRBXArray::endHPD(void) const
00037 {
00038
00039
00040 return at(0).hpds_.end();
00041 }
00042
00043
00044 std::vector<HcalNoiseHPD>::iterator HcalNoiseRBXArray::endHPD(void)
00045 {
00046
00047
00048 return at(0).hpds_.end();
00049 }
00050
00051 std::vector<HcalNoiseHPD>::iterator HcalNoiseRBXArray::findHPD(int hpdindex)
00052 {
00053
00054 if(!HcalHPDRBXMap::isValidHPD(hpdindex)) return endHPD();
00055
00056 int rbxindex=HcalHPDRBXMap::indexRBXfromHPD(hpdindex);
00057
00058
00059 HcalNoiseRBX& rbx=at(rbxindex);
00060 for(std::vector<HcalNoiseHPD>::iterator it=rbx.hpds_.begin(); it!=rbx.hpds_.end(); ++it) {
00061 if(it->idnumber_==hpdindex) return it;
00062 }
00063
00064
00065 throw edm::Exception(edm::errors::LogicError)
00066 << "Could not find hpdindex " << hpdindex << " in HcalNoiseRBXArray::findHPDfromDetID(). This is a bug.\n";
00067 return endHPD();
00068 }
00069
00070
00071 std::vector<HcalNoiseHPD>::const_iterator HcalNoiseRBXArray::findHPD(int hpdindex) const
00072 {
00073
00074 if(!HcalHPDRBXMap::isValidHPD(hpdindex)) return endHPD();
00075
00076 int rbxindex=HcalHPDRBXMap::indexRBXfromHPD(hpdindex);
00077
00078
00079 const HcalNoiseRBX& rbx=at(rbxindex);
00080 for(std::vector<HcalNoiseHPD>::const_iterator it=rbx.hpds_.begin(); it!=rbx.hpds_.end(); ++it) {
00081 if(it->idnumber_==hpdindex) return it;
00082 }
00083
00084
00085 throw edm::Exception(edm::errors::LogicError)
00086 << "Could not find hpdindex " << hpdindex << " in HcalNoiseRBXArray::findHPDfromDetID(). This is a bug.\n";
00087 return endHPD();
00088 }
00089
00090 HcalNoiseRBXArray::iterator
00091 HcalNoiseRBXArray::findRBX(int rbxindex)
00092 {
00093 if(!HcalHPDRBXMap::isValidRBX(rbxindex)) return endRBX();
00094 return begin()+rbxindex;
00095 }
00096
00097 HcalNoiseRBXArray::const_iterator
00098 HcalNoiseRBXArray::findRBX(int rbxindex) const
00099 {
00100 if(!HcalHPDRBXMap::isValidRBX(rbxindex)) return endRBX();
00101 return begin()+rbxindex;
00102 }
00103
00104 std::vector<HcalNoiseHPD>::iterator
00105 HcalNoiseRBXArray::findHPD(const HcalDetId& id)
00106 {
00107 if(!HcalHPDRBXMap::isValid(id)) return endHPD();
00108 return findHPD(HcalHPDRBXMap::indexHPD(id));
00109 }
00110
00111 std::vector<HcalNoiseHPD>::const_iterator
00112 HcalNoiseRBXArray::findHPD(const HcalDetId& id) const
00113 {
00114 if(!HcalHPDRBXMap::isValid(id)) return endHPD();
00115 return findHPD(HcalHPDRBXMap::indexHPD(id));
00116 }
00117
00118 HcalNoiseRBXArray::iterator
00119 HcalNoiseRBXArray::findRBX(const HcalDetId& id)
00120 {
00121 if(!HcalHPDRBXMap::isValid(id)) return endRBX();
00122 return findRBX(HcalHPDRBXMap::indexRBX(id));
00123 }
00124
00125 HcalNoiseRBXArray::const_iterator
00126 HcalNoiseRBXArray::findRBX(const HcalDetId& id) const
00127 {
00128 if(!HcalHPDRBXMap::isValid(id)) return endRBX();
00129 return findRBX(HcalHPDRBXMap::indexRBX(id));
00130 }
00131
00132 std::vector<HcalNoiseHPD>::iterator
00133 HcalNoiseRBXArray::findHPD(const HBHEDataFrame& f)
00134 { return findHPD(f.id()); }
00135
00136 std::vector<HcalNoiseHPD>::const_iterator
00137 HcalNoiseRBXArray::findHPD(const HBHEDataFrame& f) const
00138 { return findHPD(f.id()); }
00139
00140 HcalNoiseRBXArray::iterator
00141 HcalNoiseRBXArray::findRBX(const HBHEDataFrame& f)
00142 { return findRBX(f.id()); }
00143
00144 HcalNoiseRBXArray::const_iterator
00145 HcalNoiseRBXArray::findRBX(const HBHEDataFrame& f) const
00146 { return findRBX(f.id()); }
00147
00148 std::vector<HcalNoiseHPD>::iterator
00149 HcalNoiseRBXArray::findHPD(const HBHERecHit& h)
00150 { return findHPD(h.id()); }
00151
00152 std::vector<HcalNoiseHPD>::const_iterator
00153 HcalNoiseRBXArray::findHPD(const HBHERecHit& h) const
00154 { return findHPD(h.id()); }
00155
00156 HcalNoiseRBXArray::iterator
00157 HcalNoiseRBXArray::findRBX(const HBHERecHit& h)
00158 { return findRBX(h.id()); }
00159
00160 HcalNoiseRBXArray::const_iterator
00161 HcalNoiseRBXArray::findRBX(const HBHERecHit& h) const
00162 { return findRBX(h.id()); }
00163
00164
00165 void HcalNoiseRBXArray::findHPD(const CaloTower& tower, std::vector<std::vector<HcalNoiseHPD>::const_iterator>& vec) const
00166 {
00167
00168 vec.clear();
00169
00170
00171 if(!HcalHPDRBXMap::isValid(tower.ieta(), tower.iphi())) return;
00172
00173
00174 std::vector<int> hpdindices;
00175 HcalHPDRBXMap::indexHPDfromEtaPhi(tower.ieta(), tower.iphi(), hpdindices);
00176 for(std::vector<int>::const_iterator it=hpdindices.begin(); it!=hpdindices.end(); ++it)
00177 vec.push_back(findHPD(*it));
00178
00179 return;
00180 }
00181
00182 void HcalNoiseRBXArray::findHPD(const CaloTower& tower, std::vector<std::vector<HcalNoiseHPD>::iterator>& vec)
00183 {
00184
00185 vec.clear();
00186
00187
00188 if(!HcalHPDRBXMap::isValid(tower.ieta(), tower.iphi())) return;
00189
00190
00191 std::vector<int> hpdindices;
00192 HcalHPDRBXMap::indexHPDfromEtaPhi(tower.ieta(), tower.iphi(), hpdindices);
00193 for(std::vector<int>::const_iterator it=hpdindices.begin(); it!=hpdindices.end(); ++it)
00194 vec.push_back(findHPD(*it));
00195
00196 return;
00197 }
00198
00199 void HcalNoiseRBXArray::findRBX(const CaloTower& tower, std::vector<HcalNoiseRBXArray::iterator>& vec)
00200 {
00201
00202 vec.clear();
00203
00204
00205 if(!HcalHPDRBXMap::isValid(tower.ieta(), tower.iphi())) return;
00206
00207
00208 std::vector<int> rbxindices;
00209 HcalHPDRBXMap::indexRBXfromEtaPhi(tower.ieta(), tower.iphi(), rbxindices);
00210 for(std::vector<int>::const_iterator it=rbxindices.begin(); it!=rbxindices.end(); ++it)
00211 vec.push_back(findRBX(*it));
00212
00213 return;
00214 }
00215
00216 void HcalNoiseRBXArray::findRBX(const CaloTower& tower, std::vector<HcalNoiseRBXArray::const_iterator>& vec) const
00217 {
00218
00219 vec.clear();
00220
00221
00222 if(!HcalHPDRBXMap::isValid(tower.ieta(), tower.iphi())) return;
00223
00224
00225 std::vector<int> rbxindices;
00226 HcalHPDRBXMap::indexRBXfromEtaPhi(tower.ieta(), tower.iphi(), rbxindices);
00227 for(std::vector<int>::const_iterator it=rbxindices.begin(); it!=rbxindices.end(); ++it)
00228 vec.push_back(findRBX(*it));
00229
00230 return;
00231 }