CMS 3D CMS Logo

CaloGeometryBuilder Class Reference

Description: <one line="" class="" summary>="">. More...

#include <tmp/CaloGeometryBuilder/interface/CaloGeometryBuilder.h>

Inheritance diagram for CaloGeometryBuilder:

edm::ESProducer edm::ESProxyFactoryProducer edm::eventsetup::DataProxyProvider

List of all members.

Public Types

typedef boost::shared_ptr
< CaloGeometry
ReturnType
typedef edm::ESHandle
< CaloSubdetectorGeometry
SubdType

Public Member Functions

 CaloGeometryBuilder (const edm::ParameterSet &iConfig)
ReturnType produceAligned (const CaloGeometryRecord &iRecord)
ReturnType produceIdeal (const IdealGeometryRecord &iRecord)
virtual ~CaloGeometryBuilder ()

Private Attributes

std::vector< std::string > theCaloList


Detailed Description

Description: <one line="" class="" summary>="">.

Implementation: <Notes on="" implementation>="">

Definition at line 38 of file CaloGeometryBuilder.h.


Member Typedef Documentation

typedef boost::shared_ptr<CaloGeometry> CaloGeometryBuilder::ReturnType

Definition at line 42 of file CaloGeometryBuilder.h.

typedef edm::ESHandle<CaloSubdetectorGeometry> CaloGeometryBuilder::SubdType

Definition at line 44 of file CaloGeometryBuilder.h.


Constructor & Destructor Documentation

CaloGeometryBuilder::CaloGeometryBuilder ( const edm::ParameterSet iConfig  ) 

Definition at line 30 of file CaloGeometryBuilder.cc.

References edm::ParameterSet::getParameter(), produceAligned(), edm::ESProducer::setWhatProduced(), and theCaloList.

00031 {
00032    //the following line is needed to tell the framework what
00033    // data is being produced
00034    setWhatProduced( this, 
00035                     &CaloGeometryBuilder::produceAligned );
00036 
00037 // disable
00038 //   setWhatProduced( this, 
00039 //                  &CaloGeometryBuilder::produceIdeal ) ;
00040 
00041    //now do what ever other initialization is needed
00042    
00043    theCaloList = iConfig.getParameter< std::vector<std::string> >("SelectedCalos");
00044    if ( theCaloList.size() == 0 ) throw cms::Exception("Configuration") 
00045       << "No calorimeter specified for geometry, aborting";
00046 }

virtual CaloGeometryBuilder::~CaloGeometryBuilder (  )  [inline, virtual]

Definition at line 48 of file CaloGeometryBuilder.h.

00048 {} ;


Member Function Documentation

CaloGeometryBuilder::ReturnType CaloGeometryBuilder::produceAligned ( const CaloGeometryRecord iRecord  ) 

Definition at line 122 of file CaloGeometryBuilder.cc.

References DetId::Calo, DetId::Ecal, EcalBarrel, EcalEndcap, EcalPreshower, edm::eventsetup::DependentRecordImplementation< RecordT, ListT >::getRecord(), DetId::Hcal, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, edm::ESHandle< T >::product(), HcalZDCDetId::SubdetectorId, and theCaloList.

Referenced by CaloGeometryBuilder().

00123 {
00124    edm::ESHandle< CaloSubdetectorGeometry > pG;
00125 
00126    ReturnType pCalo ( new CaloGeometry() ) ;
00127 
00128    // loop on selected calorimeters
00129 
00130    for ( std::vector<std::string>::const_iterator ite ( theCaloList.begin() ) ;
00131          ite != theCaloList.end(); ++ite ) 
00132    {
00133       // look for HCAL parts
00134       // assume 'HCAL' for all of HCAL.  
00135       if ( (*ite) == "HCAL" ) 
00136       {
00137          edm::LogInfo("CaloGeometryBuilder") << "Building HCAL reconstruction geometry";
00138 
00139          iRecord.getRecord< HcalGeometryRecord >().get("HCAL", pG);  
00140          pCalo->setSubdetGeometry( DetId::Hcal, HcalBarrel , pG.product() );
00141          pCalo->setSubdetGeometry( DetId::Hcal, HcalEndcap , pG.product() );
00142          pCalo->setSubdetGeometry( DetId::Hcal, HcalOuter  , pG.product() );
00143          pCalo->setSubdetGeometry( DetId::Hcal, HcalForward, pG.product() );
00144       }
00145       // look for zdc parts
00146       else if ( (*ite) == "ZDC" ) 
00147       {
00148          edm::LogInfo("CaloGeometryBuilder") << "Building ZDC reconstruction geometry";
00149          iRecord.getRecord< ZDCGeometryRecord >().get("ZDC", pG); 
00150          pCalo->setSubdetGeometry( DetId::Calo, HcalZDCDetId::SubdetectorId,pG.product());
00151       }
00152       // look for Ecal Barrel
00153       else if ( (*ite) == "EcalBarrel" ) 
00154       {
00155          edm::LogInfo("CaloGeometryBuilder") << "Building EcalBarrel reconstruction geometry";
00156          iRecord.getRecord<EcalBarrelGeometryRecord>().get("EcalBarrel", pG); 
00157          pCalo->setSubdetGeometry(DetId::Ecal,EcalBarrel,pG.product());
00158       }
00159       // look for Ecal Endcap
00160       else if ( (*ite) == "EcalEndcap" ) 
00161       {
00162          edm::LogInfo("CaloGeometryBuilder") << "Building EcalEndcap reconstruction geometry";
00163          iRecord.getRecord<EcalEndcapGeometryRecord>().get("EcalEndcap", pG); 
00164          pCalo->setSubdetGeometry(DetId::Ecal,EcalEndcap,pG.product());
00165       }
00166       // look for Ecal Preshower
00167       else if ( (*ite) == "EcalPreshower" ) 
00168       {
00169          edm::LogInfo("CaloGeometryBuilder") << "Building EcalPreshower reconstruction geometry";
00170          iRecord.getRecord<EcalPreshowerGeometryRecord>().get("EcalPreshower", pG); 
00171          pCalo->setSubdetGeometry(DetId::Ecal,EcalPreshower,pG.product());
00172       }
00173       // look for TOWER parts
00174       else if ( (*ite) == "TOWER" ) 
00175       {
00176          edm::LogInfo("CaloGeometryBuilder") << "Building TOWER reconstruction geometry";
00177          iRecord.getRecord<IdealGeometryRecord>().get("TOWER",pG);
00178          pCalo->setSubdetGeometry(DetId::Calo,1,pG.product());
00179       }
00180       else 
00181       {
00182          edm::LogWarning("CaloGeometryBuilder") 
00183             << "Reconstrcution geometry requested for a not implemented sub-detector: " 
00184             << (*ite); 
00185       }
00186    }
00187    return pCalo ;
00188 }

CaloGeometryBuilder::ReturnType CaloGeometryBuilder::produceIdeal ( const IdealGeometryRecord iRecord  ) 

Definition at line 51 of file CaloGeometryBuilder.cc.

References DetId::Calo, DetId::Ecal, EcalBarrel, EcalEndcap, EcalPreshower, edm::eventsetup::EventSetupRecordImplementation< T >::get(), DetId::Hcal, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, edm::ESHandle< T >::product(), HcalZDCDetId::SubdetectorId, and theCaloList.

00052 {
00053    edm::ESHandle<CaloSubdetectorGeometry> pG;
00054 
00055    ReturnType pCalo ( new CaloGeometry() );
00056 
00057    // loop on selected calorimeters
00058 
00059    for ( std::vector<std::string>::const_iterator ite ( theCaloList.begin() );
00060          ite != theCaloList.end(); ite++ ) 
00061    {
00062       // look for HCAL parts
00063       // assume 'HCAL' for all of HCAL.  
00064       if ( (*ite) == "HCAL" ) 
00065       {  
00066          edm::LogInfo("CaloGeometryBuilder") << "Building IDEAL HCAL reconstruction geometry";
00067          iRecord.get("HCAL", pG); 
00068          pCalo->setSubdetGeometry(DetId::Hcal,HcalBarrel,pG.product());
00069          pCalo->setSubdetGeometry(DetId::Hcal,HcalEndcap,pG.product());
00070          pCalo->setSubdetGeometry(DetId::Hcal,HcalOuter,pG.product());
00071          pCalo->setSubdetGeometry(DetId::Hcal,HcalForward,pG.product());
00072       } 
00073      
00074       // look for zdc parts
00075       else if ( (*ite) == "ZDC" ) 
00076       {
00077          edm::LogInfo("CaloGeometryBuilder") << "Building IDEAL ZDC reconstruction geometry";
00078          iRecord.get("ZDC", pG);
00079          pCalo->setSubdetGeometry(DetId::Calo, HcalZDCDetId::SubdetectorId,pG.product());
00080       }
00081      
00082       // look for Ecal Barrel
00083       else if ( (*ite) == "EcalBarrel" ) 
00084       {
00085          edm::LogInfo("CaloGeometryBuilder") << "Building IDEAL EcalBarrel reconstruction geometry";
00086          iRecord.get("EcalBarrel", pG); 
00087          pCalo->setSubdetGeometry(DetId::Ecal,EcalBarrel,pG.product());
00088       }
00089 
00090       // look for Ecal Endcap
00091       else if ( (*ite) == "EcalEndcap" ) 
00092       {
00093          edm::LogInfo("CaloGeometryBuilder") << "Building IDEAL EcalEndcap reconstruction geometry";
00094          iRecord.get("EcalEndcap", pG); 
00095          pCalo->setSubdetGeometry(DetId::Ecal,EcalEndcap,pG.product());
00096       }
00097 
00098       // look for Ecal Preshower
00099       else if ( (*ite) == "EcalPreshower" ) 
00100       {
00101          edm::LogInfo("CaloGeometryBuilder") << "Building IDEAL EcalPreshower reconstruction geometry";
00102          iRecord.get("EcalPreshower", pG); 
00103          pCalo->setSubdetGeometry(DetId::Ecal,EcalPreshower,pG.product());
00104       }
00105       else if ( (*ite) == "TOWER" ) 
00106       {
00107          edm::LogInfo("CaloGeometryBuilder") << "Building TOWER reconstruction geometry";
00108          iRecord.get("TOWER",pG);
00109          pCalo->setSubdetGeometry(DetId::Calo,1,pG.product());
00110       }
00111       else 
00112       { 
00113          edm::LogWarning("CaloGeometryBuilder") 
00114             << "IDEAL Reconstrcution geometry requested for a not implemented sub-detector: " 
00115             << (*ite); 
00116       }
00117    }
00118    return pCalo;
00119 }


Member Data Documentation

std::vector<std::string> CaloGeometryBuilder::theCaloList [private]

Definition at line 56 of file CaloGeometryBuilder.h.

Referenced by CaloGeometryBuilder(), produceAligned(), and produceIdeal().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:15:44 2009 for CMSSW by  doxygen 1.5.4