Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "TrackingTools/RoadSearchHitAccess/interface/RoadSearchDetIdHelper.h"
00016
00017 #include <sstream>
00018
00019 RoadSearchDetIdHelper::RoadSearchDetIdHelper() {
00020 }
00021
00022 RoadSearchDetIdHelper::~RoadSearchDetIdHelper() {
00023 }
00024
00025 std::string RoadSearchDetIdHelper::Print(const DetId id) {
00026
00027
00028
00029
00030 std::ostringstream output;
00031
00032 if ( (unsigned int)id.subdetId() == StripSubdetector::TIB ) {
00033 TIBDetId tibid(id.rawId());
00034 output << "TIB ring Detid: " << id.rawId()
00035 << " layer: " << tibid.layer()
00036 << " fw(0)/bw(1): " << tibid.string()[0]
00037 << " int(0)/ext(1): " << tibid.string()[1]
00038 << " string: " << tibid.string()[2]
00039 << " module: " << tibid.module();
00040 if ( IsMatched(tibid) ) {
00041 output << " corresponding to matched detunit of glued sensor";
00042 } else if ( IsGluedRPhi(tibid) ) {
00043 output << " corresponding to rphi detunit of glued sensor";
00044 } else if ( IsStereo(tibid) ) {
00045 output << " corresponding to stereo detunit of glued sensor";
00046 } else if ( IsSingleRPhi(tibid) ) {
00047 output << " corresponding to rphi detunit of single sensor";
00048 }
00049 output << std::endl;
00050 } else if ( (unsigned int)id.subdetId() == StripSubdetector::TOB ) {
00051 TOBDetId tobid(id.rawId());
00052 output << "TOB ring Detid: " << id.rawId()
00053 << " layer: " << tobid.layer()
00054 << " fw(0)/bw(1): " << tobid.rod()[0]
00055 << " rod: " << tobid.rod()[1]
00056 << " detector: " << tobid.module();
00057 if ( IsMatched(tobid) ) {
00058 output << " corresponding to matched detunit of glued sensor";
00059 } else if ( IsGluedRPhi(tobid) ) {
00060 output << " corresponding to rphi detunit of glued sensor";
00061 } else if ( IsStereo(tobid) ) {
00062 output << " corresponding to stereo detunit of glued sensor";
00063 } else if ( IsSingleRPhi(tobid) ) {
00064 output << " corresponding to rphi detunit of single sensor";
00065 }
00066 output << std::endl;
00067 } else if ( (unsigned int)id.subdetId() == StripSubdetector::TID ) {
00068 TIDDetId tidid(id.rawId());
00069 output << "TID ring Detid: " << id.rawId()
00070 << " side neg(1)/pos(2): " << tidid.side()
00071 << " wheel: " << tidid.wheel()
00072 << " ring: " << tidid.ring()
00073 << " detector fw(0)/bw(1): " << tidid.module()[0]
00074 << " detector: " << tidid.module()[1];
00075 if ( IsMatched(tidid) ) {
00076 output << " corresponding to matched detunit of glued sensor";
00077 } else if ( IsGluedRPhi(tidid) ) {
00078 output << " corresponding to rphi detunit of glued sensor";
00079 } else if ( IsStereo(tidid) ) {
00080 output << " corresponding to stereo detunit of glued sensor";
00081 } else if ( IsSingleRPhi(tidid) ) {
00082 output << " corresponding to rphi detunit of single sensor";
00083 }
00084 output << std::endl;
00085 } else if ( (unsigned int)id.subdetId() == StripSubdetector::TEC ) {
00086 TECDetId tecid(id.rawId());
00087 output << "TEC ring DetId: " << id.rawId()
00088 << " side neg(1)/pos(2): " << tecid.side()
00089 << " wheel: " << tecid.wheel()
00090 << " petal fw(0)/bw(1): " << tecid.petal()[0]
00091 << " petal: " << tecid.petal()[1]
00092 << " ring: " << tecid.ring()
00093 << " module: " << tecid.module();
00094 if ( IsMatched(tecid) ) {
00095 output << " corresponding to matched detunit of glued sensor";
00096 } else if ( IsGluedRPhi(tecid) ) {
00097 output << " corresponding to rphi detunit of glued sensor";
00098 } else if ( IsStereo(tecid) ) {
00099 output << " corresponding to stereo detunit of glued sensor";
00100 } else if ( IsSingleRPhi(tecid) ) {
00101 output << " corresponding to rphi detunit of single sensor";
00102 }
00103 output << std::endl;
00104 } else if ( (unsigned int)id.subdetId() == PixelSubdetector::PixelBarrel ) {
00105 PXBDetId pxbid(id.rawId());
00106 output << "PXB ring DetId: " << id.rawId()
00107 << " layer: " << pxbid.layer()
00108 << " ladder: " << pxbid.ladder()
00109 << " detector: " << pxbid.module()
00110 << std::endl;
00111 } else if ( (unsigned int)id.subdetId() == PixelSubdetector::PixelEndcap ) {
00112 PXFDetId pxfid(id.rawId());
00113 output << "PXF ring DetId: " << id.rawId()
00114 << " side: " << pxfid.side()
00115 << " disk: " << pxfid.disk()
00116 << " blade: " << pxfid.blade()
00117 << " detector: " << pxfid.module()
00118 << std::endl;
00119 }
00120
00121
00122 return output.str();
00123 }
00124
00125 bool RoadSearchDetIdHelper::IsMatched(const DetId id) {
00126
00127
00128 bool result = false;
00129
00130 if ( (unsigned int)id.subdetId() == StripSubdetector::TIB ) {
00131 TIBDetId tibid(id.rawId());
00132 if ( !tibid.glued() ) {
00133 if ( tibid.layer() == 1 ||
00134 tibid.layer() == 2 ) {
00135 result = true;
00136 }
00137 }
00138 } else if ( (unsigned int)id.subdetId() == StripSubdetector::TOB ) {
00139 TOBDetId tobid(id.rawId());
00140 if ( !tobid.glued() ) {
00141 if ( tobid.layer() == 1 ||
00142 tobid.layer() == 2 ) {
00143 result = true;
00144 }
00145 }
00146 } else if ( (unsigned int)id.subdetId() == StripSubdetector::TID ) {
00147 TIDDetId tidid(id.rawId());
00148 if ( !tidid.glued() ) {
00149 if ( tidid.ring() == 1 ||
00150 tidid.ring() == 2 ) {
00151 result = true;
00152 }
00153 }
00154 } else if ( (unsigned int)id.subdetId() == StripSubdetector::TEC ) {
00155 TECDetId tecid(id.rawId());
00156 if ( !tecid.glued() ) {
00157 if ( tecid.ring() == 1 ||
00158 tecid.ring() == 2 ||
00159 tecid.ring() == 5 ) {
00160 result = true;
00161 }
00162 }
00163 }
00164
00165 return result;
00166 }
00167
00168 bool RoadSearchDetIdHelper::IsSingleRPhi(const DetId id) {
00169
00170
00171 bool result = true;
00172
00173 if ( (unsigned int)id.subdetId() == StripSubdetector::TIB ) {
00174 TIBDetId tibid(id.rawId());
00175 if ( !tibid.glued() ) {
00176 if ( tibid.layer() == 1 ||
00177 tibid.layer() == 2 ) {
00178 result = false;
00179 }
00180 } else {
00181 result = false;
00182 }
00183 } else if ( (unsigned int)id.subdetId() == StripSubdetector::TOB ) {
00184 TOBDetId tobid(id.rawId());
00185 if ( !tobid.glued() ) {
00186 if ( tobid.layer() == 1 ||
00187 tobid.layer() == 2 ) {
00188 result = false;
00189 }
00190 } else {
00191 if ( (tobid.rawId()-2) != tobid.glued() ) {
00192 result = false;
00193 }
00194 }
00195 } else if ( (unsigned int)id.subdetId() == StripSubdetector::TID ) {
00196 TIDDetId tidid(id.rawId());
00197 if ( !tidid.glued() ) {
00198 if ( tidid.ring() == 1 ||
00199 tidid.ring() == 2 ) {
00200 result = false;
00201 }
00202 } else {
00203 if ( (tidid.rawId()-2) != tidid.glued() ) {
00204 result = false;
00205 }
00206 }
00207 } else if ( (unsigned int)id.subdetId() == StripSubdetector::TEC ) {
00208 TECDetId tecid(id.rawId());
00209 if ( !tecid.glued() ) {
00210 if ( tecid.ring() == 1 ||
00211 tecid.ring() == 2 ||
00212 tecid.ring() == 5 ) {
00213 result = false;
00214 }
00215 } else {
00216 if ( (tecid.rawId()-2) != tecid.glued() ) {
00217 result = false;
00218 }
00219 }
00220 }
00221
00222 return result;
00223 }
00224
00225 bool RoadSearchDetIdHelper::IsGluedRPhi(const DetId id) {
00226
00227
00228 bool result = true;
00229
00230 if ( (unsigned int)id.subdetId() == StripSubdetector::TIB ) {
00231 TIBDetId tibid(id.rawId());
00232 if ( !tibid.glued() ) {
00233 result = false;
00234 } else {
00235 if ( (tibid.rawId()-2) != tibid.glued() ) {
00236 result = false;
00237 }
00238 }
00239 } else if ( (unsigned int)id.subdetId() == StripSubdetector::TOB ) {
00240 TOBDetId tobid(id.rawId());
00241 if ( !tobid.glued() ) {
00242 result = false;
00243 } else {
00244 if ( (tobid.rawId()-2) != tobid.glued() ) {
00245 result = false;
00246 }
00247 }
00248 } else if ( (unsigned int)id.subdetId() == StripSubdetector::TID ) {
00249 TIDDetId tidid(id.rawId());
00250 if ( !tidid.glued() ) {
00251 result = false;
00252 } else {
00253 if ( (tidid.rawId()-2) != tidid.glued() ) {
00254 result = false;
00255 }
00256 }
00257 } else if ( (unsigned int)id.subdetId() == StripSubdetector::TEC ) {
00258 TECDetId tecid(id.rawId());
00259 if ( !tecid.glued() ) {
00260 result = false;
00261 } else {
00262 if ( (tecid.rawId()-2) != tecid.glued() ) {
00263 result = false;
00264 }
00265 }
00266 } else if ( (unsigned int)id.subdetId() == PixelSubdetector::PixelBarrel ) {
00267 result = false;
00268 } else if ( (unsigned int)id.subdetId() == PixelSubdetector::PixelEndcap ) {
00269 result = false;
00270 }
00271
00272 return result;
00273 }
00274
00275 bool RoadSearchDetIdHelper::IsStereo(const DetId id) {
00276
00277
00278 bool result = true;
00279
00280 if ( (unsigned int)id.subdetId() == StripSubdetector::TIB ) {
00281 TIBDetId tibid(id.rawId());
00282 if ( !tibid.glued() ) {
00283 result = false;
00284 } else {
00285 if ( (tibid.rawId()-1) != tibid.glued() ) {
00286 result = false;
00287 }
00288 }
00289 } else if ( (unsigned int)id.subdetId() == StripSubdetector::TOB ) {
00290 TOBDetId tobid(id.rawId());
00291 if ( !tobid.glued() ) {
00292 result = false;
00293 } else {
00294 if ( (tobid.rawId()-1) != tobid.glued() ) {
00295 result = false;
00296 }
00297 }
00298 } else if ( (unsigned int)id.subdetId() == StripSubdetector::TID ) {
00299 TIDDetId tidid(id.rawId());
00300 if ( !tidid.glued() ) {
00301 result = false;
00302 } else {
00303 if ( (tidid.rawId()-1) != tidid.glued() ) {
00304 result = false;
00305 }
00306 }
00307 } else if ( (unsigned int)id.subdetId() == StripSubdetector::TEC ) {
00308 TECDetId tecid(id.rawId());
00309 if ( !tecid.glued() ) {
00310 result = false;
00311 } else {
00312 if ( (tecid.rawId()-1) != tecid.glued() ) {
00313 result = false;
00314 }
00315 }
00316 } else if ( (unsigned int)id.subdetId() == PixelSubdetector::PixelBarrel ) {
00317 result = false;
00318 } else if ( (unsigned int)id.subdetId() == PixelSubdetector::PixelEndcap ) {
00319 result = false;
00320 }
00321
00322 return result;
00323 }
00324
00325 DetId RoadSearchDetIdHelper::ReturnRPhiId(const DetId id) {
00326
00327
00328
00329
00330 if ( IsMatched(id) ) {
00331 return DetId(id.rawId()+2);
00332 } else if ( IsStereo(id) ) {
00333 return DetId(id.rawId()+1);
00334 } else {
00335 return id;
00336 }
00337
00338 return id;
00339 }
00340
00341
00342 bool RoadSearchDetIdHelper::detIdsOnSameLayer(DetId id1, DetId id2) {
00343
00344
00345
00346
00347
00348 bool result = false;
00349
00350
00351 if ( (unsigned int)id1.subdetId() == StripSubdetector::TIB &&
00352 (unsigned int)id2.subdetId() == StripSubdetector::TIB ) {
00353
00354 TIBDetId id1TIB(id1.rawId());
00355 TIBDetId id2TIB(id2.rawId());
00356
00357 if ( id1TIB.layer() == id2TIB.layer() ) {
00358 result = true;
00359 }
00360 } else if ( (unsigned int)id1.subdetId() == StripSubdetector::TOB &&
00361 (unsigned int)id2.subdetId() == StripSubdetector::TOB ) {
00362
00363 TOBDetId id1TOB(id1.rawId());
00364 TOBDetId id2TOB(id2.rawId());
00365
00366 if ( id1TOB.layer() == id2TOB.layer() ) {
00367 result = true;
00368 }
00369 } else if ( (unsigned int)id1.subdetId() == StripSubdetector::TID &&
00370 (unsigned int)id2.subdetId() == StripSubdetector::TID) {
00371
00372 TIDDetId id1TID(id1.rawId());
00373 TIDDetId id2TID(id2.rawId());
00374
00375 if ( id1TID.wheel() == id2TID.wheel() ) {
00376 result = true;
00377 }
00378 } else if ( (unsigned int)id1.subdetId() == StripSubdetector::TEC &&
00379 (unsigned int)id2.subdetId() == StripSubdetector::TEC ) {
00380
00381 TECDetId id1TEC(id1.rawId());
00382 TECDetId id2TEC(id2.rawId());
00383
00384 if ( id1TEC.wheel() == id2TEC.wheel() ) {
00385 result = true;
00386 }
00387 } else if ( (unsigned int)id1.subdetId() == PixelSubdetector::PixelBarrel &&
00388 (unsigned int)id2.subdetId() == PixelSubdetector::PixelBarrel) {
00389
00390 PXBDetId id1PXB(id1.rawId());
00391 PXBDetId id2PXB(id2.rawId());
00392
00393 if ( id1PXB.layer() == id2PXB.layer() ) {
00394 result = true;
00395 }
00396 } else if ( (unsigned int)id1.subdetId() == PixelSubdetector::PixelEndcap &&
00397 (unsigned int)id2.subdetId() == PixelSubdetector::PixelEndcap) {
00398
00399 PXFDetId id1PXF(id1.rawId());
00400 PXFDetId id2PXF(id2.rawId());
00401
00402 if ( id1PXF.disk() == id2PXF.disk() ) {
00403 result = true;
00404 }
00405 }
00406
00407 return result;
00408 }