CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC4_patch1/src/DataFormats/HcalDetId/src/HcalGenericDetId.cc

Go to the documentation of this file.
00001 
00006 #include "DataFormats/HcalDetId/interface/HcalGenericDetId.h"
00007 #include "DataFormats/HcalDetId/interface/HcalDetId.h"
00008 #include "DataFormats/HcalDetId/interface/HcalTrigTowerDetId.h"
00009 #include "DataFormats/HcalDetId/interface/HcalZDCDetId.h"
00010 #include "DataFormats/HcalDetId/interface/HcalCastorDetId.h"
00011 #include "DataFormats/HcalDetId/interface/HcalCalibDetId.h"
00012 #include <iostream>
00013 #include <cstdlib>
00014 
00015 HcalOtherSubdetector HcalGenericDetId::otherSubdet () const {
00016   if (HcalSubdetector(subdetId()) != HcalOther) return HcalOtherEmpty;
00017   return HcalOtherSubdetector ((rawId()>>20)&0x1F);
00018 }
00019 
00020 HcalGenericDetId::HcalGenericSubdetector HcalGenericDetId::genericSubdet () const {
00021   if (null()) return HcalGenEmpty;
00022   switch (det()) {
00023   case Calo : 
00024     switch (subdetId()) {
00025     case HcalZDCDetId::SubdetectorId : return HcalGenZDC;
00026     case HcalCastorDetId::SubdetectorId : return HcalGenCastor;
00027     default: return HcalGenUnknown;
00028     } 
00029   case Hcal :
00030     switch (HcalSubdetector(subdetId())) {
00031     case 0: return HcalGenEmpty;
00032     case HcalBarrel: return HcalGenBarrel;
00033     case HcalEndcap: return HcalGenEndcap;
00034     case HcalOuter: return HcalGenOuter;
00035     case HcalForward: return HcalGenForward;
00036     case HcalTriggerTower: return HcalGenTriggerTower;
00037     case HcalOther:
00038       switch (otherSubdet ()) {
00039       case HcalCalibration: return HcalGenCalibration;
00040       default: return HcalGenUnknown;
00041     }
00042     default: return HcalGenUnknown;
00043     }
00044     default: return HcalGenUnknown;
00045   }
00046   return HcalGenUnknown;
00047 }
00048   
00049 bool HcalGenericDetId::isHcalDetId () const {
00050   HcalGenericSubdetector subdet = genericSubdet ();
00051   return subdet == HcalGenBarrel || subdet == HcalGenEndcap || subdet == HcalGenOuter || subdet == HcalGenForward; 
00052 }
00053 
00054 bool HcalGenericDetId::isHcalCalibDetId () const {
00055   HcalGenericSubdetector subdet = genericSubdet ();
00056   return subdet == HcalGenCalibration;
00057 }
00058 
00059 bool HcalGenericDetId::isHcalTrigTowerDetId () const {
00060   HcalGenericSubdetector subdet = genericSubdet ();
00061   return subdet == HcalGenTriggerTower;
00062 }
00063 
00064 bool HcalGenericDetId::isHcalZDCDetId () const {
00065   HcalGenericSubdetector subdet = genericSubdet ();
00066   return subdet == HcalGenZDC;
00067 }
00068 
00069 bool HcalGenericDetId::isHcalCastorDetId () const {
00070   HcalGenericSubdetector subdet = genericSubdet ();
00071   return subdet == HcalGenCastor;
00072 }
00073 
00074 std::ostream& operator<<(std::ostream& s,const HcalGenericDetId& id) {
00075   if (id.null()) s << "(Null Id)";
00076   else 
00077     switch (id.genericSubdet()) {
00078     case HcalGenericDetId::HcalGenBarrel: 
00079     case HcalGenericDetId::HcalGenEndcap: 
00080     case HcalGenericDetId::HcalGenOuter: 
00081     case HcalGenericDetId::HcalGenForward: s << HcalDetId(id); break;
00082     case HcalGenericDetId::HcalGenTriggerTower: s << HcalTrigTowerDetId(id); break;
00083     case HcalGenericDetId::HcalGenZDC: s << HcalZDCDetId(id); break;
00084     case HcalGenericDetId::HcalGenCastor: s << HcalCastorDetId(id); break;
00085     case HcalGenericDetId::HcalGenCalibration: s << HcalCalibDetId(id); break;
00086     default: s << "(Hcal Unknown Id: 0x" << std::hex << id.rawId() << std::dec << ')';
00087     }
00088   return s;
00089 }
00090