CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_1/src/Geometry/CaloTopology/src/EcalPreshowerTopology.cc

Go to the documentation of this file.
00001 #include "Geometry/CaloTopology/interface/EcalPreshowerTopology.h"
00002 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
00003 #include <stdexcept>
00004 
00005 ESDetId EcalPreshowerTopology::incrementIy(const ESDetId& id) const {
00006   if (!(*theGeom_).getSubdetectorGeometry(DetId::Ecal,EcalPreshower)->present(id))
00007     {
00008       return ESDetId(0);
00009     }
00010 
00011   ESDetId nextPoint;
00012   //Strips orientend along x direction for plane 2
00013   if (id.plane() == 2)
00014     {
00015       if (id.strip() < 32 )
00016         {
00017           //Incrementing just strip number
00018           if (ESDetId::validDetId(id.strip()+1,id.six(),id.siy(),id.plane(),id.zside()))
00019             nextPoint=ESDetId(id.strip()+1,id.six(),id.siy(),id.plane(),id.zside());
00020           else
00021             return ESDetId(0); 
00022         }
00023       else
00024         {
00025           //Changing wafer
00026           if (ESDetId::validDetId(1,id.six(),id.siy()+1,id.plane(),id.zside()))
00027             nextPoint=ESDetId(1,id.six(),id.siy()+1,id.plane(),id.zside());
00028           else
00029             return ESDetId(0);
00030         }
00031     }
00032   //Strips orientend along y direction for plane 1
00033   else if (id.plane() == 1)
00034     {
00035       //Changing wafer
00036       if (ESDetId::validDetId(id.strip(),id.six(),id.siy()+1,id.plane(),id.zside()))
00037         nextPoint=ESDetId(id.strip(),id.six(),id.siy()+1,id.plane(),id.zside());
00038       else
00039         return ESDetId(0);
00040     }
00041   else
00042     return ESDetId(0);
00043   
00044   if ((*theGeom_).getSubdetectorGeometry(DetId::Ecal,EcalPreshower)->present(nextPoint))
00045     return nextPoint;
00046   else
00047     return ESDetId(0);
00048 } 
00049 
00050 
00051 ESDetId EcalPreshowerTopology::decrementIy(const ESDetId& id) const {
00052   if (!(*theGeom_).getSubdetectorGeometry(DetId::Ecal,EcalPreshower)->present(id))
00053     {
00054       return ESDetId(0);
00055     }
00056   ESDetId nextPoint;
00057   //Strips orientend along x direction for plane 2
00058   if (id.plane() == 2)
00059     {
00060       if (id.strip() >1 )
00061         {
00062           //Decrementing just strip number
00063           if (ESDetId::validDetId(id.strip()-1,id.six(),id.siy(),id.plane(),id.zside()))
00064             nextPoint=ESDetId(id.strip()-1,id.six(),id.siy(),id.plane(),id.zside());
00065           else
00066             return ESDetId(0);
00067         }
00068       else
00069         {
00070           //Changing wafer
00071           if (ESDetId::validDetId(32,id.six(),id.siy()-1,id.plane(),id.zside()))
00072             nextPoint=ESDetId(32,id.six(),id.siy()-1,id.plane(),id.zside());
00073           else
00074             return ESDetId(0);
00075         }
00076     }
00077   //Strips orientend along y direction for plane 1
00078   else if (id.plane() == 1)
00079     {
00080       //Changing wafer
00081       if (ESDetId::validDetId(id.strip(),id.six(),id.siy()-1,id.plane(),id.zside()))
00082         nextPoint=ESDetId(id.strip(),id.six(),id.siy()-1,id.plane(),id.zside());
00083       else
00084         return ESDetId(0);
00085     }
00086   else
00087     return ESDetId(0);
00088 
00089   if ((*theGeom_).getSubdetectorGeometry(DetId::Ecal,EcalPreshower)->present(nextPoint))
00090     return nextPoint;
00091   else
00092     return ESDetId(0);
00093 } 
00094 
00095 
00096 ESDetId EcalPreshowerTopology::incrementIx(const ESDetId& id) const {
00097 
00098   if (!(*theGeom_).getSubdetectorGeometry(DetId::Ecal,EcalPreshower)->present(id))
00099     {
00100       return ESDetId(0);
00101     }      
00102   ESDetId nextPoint;
00103 
00104   //Strips orientend along x direction for plane 2
00105   if (id.plane() == 2)
00106     {
00107       //Changing wafer
00108       if (ESDetId::validDetId(id.strip(),id.six()+1,id.siy(),id.plane(),id.zside()))
00109         nextPoint=ESDetId(id.strip(),id.six()+1,id.siy(),id.plane(),id.zside());
00110       else
00111         return ESDetId(0);
00112     }
00113   //Strips orientend along y direction for plane 1
00114   else if (id.plane() == 1)
00115     {
00116       if (id.strip() < 32 )
00117         {
00118         //Incrementing just strip number
00119           if (ESDetId::validDetId(id.strip()+1,id.six(),id.siy(),id.plane(),id.zside())) 
00120             nextPoint=ESDetId(id.strip()+1,id.six(),id.siy(),id.plane(),id.zside());
00121           else
00122             return ESDetId(0);
00123         }
00124       else
00125         {
00126         //Changing wafer
00127           if (ESDetId::validDetId(1,id.six()+1,id.siy(),id.plane(),id.zside()))
00128             nextPoint=ESDetId(1,id.six()+1,id.siy(),id.plane(),id.zside());
00129           else
00130             return ESDetId(0);
00131         }
00132     }
00133   else
00134     return ESDetId(0);
00135 
00136   if ((*theGeom_).getSubdetectorGeometry(DetId::Ecal,EcalPreshower)->present(nextPoint))
00137     return nextPoint;
00138   else
00139     return ESDetId(0);
00140 } 
00141 
00142 
00143 ESDetId EcalPreshowerTopology::decrementIx(const ESDetId& id) const {
00144 
00145   if (!(*theGeom_).getSubdetectorGeometry(DetId::Ecal,EcalPreshower)->present(id))
00146     {
00147       return ESDetId(0);
00148     }      
00149   ESDetId nextPoint;
00150   //Strips orientend along x direction for plane 2
00151   if (id.plane() == 2)
00152     {
00153       //Changing wafer
00154       if (ESDetId::validDetId(id.strip(),id.six()-1,id.siy(),id.plane(),id.zside()))
00155         nextPoint=ESDetId(id.strip(),id.six()-1,id.siy(),id.plane(),id.zside());
00156       else
00157         return ESDetId(0);
00158     }
00159   //Strips orientend along y direction for plane 1
00160   else if (id.plane() == 1)
00161     {
00162       if (id.strip() > 1 )
00163         {
00164           //Decrementing just strip number
00165           if (ESDetId::validDetId(id.strip()-1,id.six(),id.siy(),id.plane(),id.zside()))
00166             nextPoint=ESDetId(id.strip()-1,id.six(),id.siy(),id.plane(),id.zside());
00167           else
00168             return ESDetId(0);
00169         }
00170       else
00171         {
00172           //Changing wafer
00173           if (ESDetId::validDetId(32,id.six()-1,id.siy(),id.plane(),id.zside()))
00174             nextPoint=ESDetId(32,id.six()-1,id.siy(),id.plane(),id.zside());
00175           else
00176             return ESDetId(0);
00177         }
00178     }
00179   else
00180     return ESDetId(0);
00181   
00182   if ((*theGeom_).getSubdetectorGeometry(DetId::Ecal,EcalPreshower)->present(nextPoint))
00183     return nextPoint;
00184   else
00185     return ESDetId(0);
00186 } 
00187 
00188 
00189 ESDetId EcalPreshowerTopology::incrementIz(const ESDetId& id) const {
00190 
00191   if (!(*theGeom_).getSubdetectorGeometry(DetId::Ecal,EcalPreshower)->present(id))
00192     {
00193       return ESDetId(0);
00194     }      
00195   ESDetId nextPoint;
00196   if (ESDetId::validDetId(id.strip(),id.six(),id.siy(),id.plane()+1,id.zside()))
00197     nextPoint=ESDetId(id.strip(),id.six(),id.siy(),id.plane()+1,id.zside());
00198   else
00199     return ESDetId(0);
00200 
00201   if ((*theGeom_).getSubdetectorGeometry(DetId::Ecal,EcalPreshower)->present(nextPoint))
00202     return nextPoint;
00203   else
00204     return ESDetId(0);
00205 } 
00206 
00207 
00208 
00209 ESDetId EcalPreshowerTopology::decrementIz(const ESDetId& id) const {
00210 
00211   if (!(*theGeom_).getSubdetectorGeometry(DetId::Ecal,EcalPreshower)->present(id))
00212     {
00213       return ESDetId(0);
00214     }      
00215   ESDetId nextPoint;
00216   if (ESDetId::validDetId(id.strip(),id.six(),id.siy(),id.plane()-1,id.zside()))
00217     nextPoint=ESDetId(id.strip(),id.six(),id.siy(),id.plane()-1,id.zside());
00218   else
00219     return ESDetId(0);
00220   
00221   if ((*theGeom_).getSubdetectorGeometry(DetId::Ecal,EcalPreshower)->present(nextPoint))
00222     return nextPoint;
00223   else
00224     return ESDetId(0);
00225 } 
00226 
00227 
00228 
00229 
00230 
00231 
00232