CMS 3D CMS Logo

Classes | Public Types | Public Member Functions | Static Public Member Functions | Private Attributes

HcalTopologyIdealEP Class Reference

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

Inheritance diagram for HcalTopologyIdealEP:
edm::ESProducer edm::ESProxyFactoryProducer edm::eventsetup::DataProxyProvider

List of all members.

Classes

struct  RingSegmentation

Public Types

typedef boost::shared_ptr
< HcalTopology
ReturnType

Public Member Functions

 HcalTopologyIdealEP (const edm::ParameterSet &)
ReturnType produce (const IdealGeometryRecord &)
 ~HcalTopologyIdealEP ()

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)

Private Attributes

const edm::ParameterSet m_pSet
std::string m_restrictions
std::vector< RingSegmentationm_segmentation

Detailed Description

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

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

Definition at line 25 of file HcalTopologyIdealEP.h.


Member Typedef Documentation

typedef boost::shared_ptr<HcalTopology> HcalTopologyIdealEP::ReturnType

Definition at line 31 of file HcalTopologyIdealEP.h.


Constructor & Destructor Documentation

HcalTopologyIdealEP::HcalTopologyIdealEP ( const edm::ParameterSet conf)

Definition at line 37 of file HcalTopologyIdealEP.cc.

References edm::ParameterSet::existsAs(), edm::ParameterSet::getUntrackedParameter(), m_segmentation, mergeVDriftHistosByStation::name, HcalTopologyIdealEP::RingSegmentation::ring, HcalTopologyIdealEP::RingSegmentation::segmentation, and edm::ESProducer::setWhatProduced().

  : m_restrictions(conf.getUntrackedParameter<std::string>("Exclude")),
    m_pSet( conf )
{
  //std::cout << "HcalTopologyIdealEP::HcalTopologyIdealEP" << std::endl;
  edm::LogInfo("HCAL") << "HcalTopologyIdealEP::HcalTopologyIdealEP";

  // copied from HcalHitRelabeller, input like {1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4}
  m_segmentation.resize(29);
  std::vector<int> segmentation;
  for (int iring=1; iring<=29; ++iring) {
    char name[10];
    snprintf(name,10,"Eta%d",iring);
    if(conf.existsAs<std::vector<int> >(name, false)) {
      RingSegmentation entry;
      entry.ring = iring;
      entry.segmentation = conf.getUntrackedParameter<std::vector<int> >(name);
      m_segmentation.push_back(entry);
    }
  }
  setWhatProduced(this);
}
HcalTopologyIdealEP::~HcalTopologyIdealEP ( )

Definition at line 61 of file HcalTopologyIdealEP.cc.

{ 
}

Member Function Documentation

void HcalTopologyIdealEP::fillDescriptions ( edm::ConfigurationDescriptions descriptions) [static]

Definition at line 66 of file HcalTopologyIdealEP.cc.

References edm::ParameterSetDescription::add(), edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::addOptional(), edm::ParameterSetDescription::addUntracked(), hcalSLHCTopologyConstants_cfi::hcalTopologyConstants, and AlCaHLTBitMon_QueryRunRegistry::string.

{
  edm::ParameterSetDescription hcalTopologyConstants;
  hcalTopologyConstants.add<std::string>( "mode", "HcalTopologyMode::LHC" );
  hcalTopologyConstants.add<int>( "maxDepthHB", 2 );
  hcalTopologyConstants.add<int>( "maxDepthHE", 3 );  

  edm::ParameterSetDescription hcalSLHCTopologyConstants;
  hcalSLHCTopologyConstants.add<std::string>( "mode", "HcalTopologyMode::SLHC" );
  hcalSLHCTopologyConstants.add<int>( "maxDepthHB", 7 );
  hcalSLHCTopologyConstants.add<int>( "maxDepthHE", 7 );

  edm::ParameterSetDescription desc;
  desc.addUntracked<std::string>( "Exclude", "" );
  desc.addOptional<edm::ParameterSetDescription>( "hcalTopologyConstants", hcalTopologyConstants );
  descriptions.add( "hcalTopologyIdeal", desc );

  edm::ParameterSetDescription descSLHC;
  descSLHC.addUntracked<std::string>( "Exclude", "" );
  descSLHC.addOptional<edm::ParameterSetDescription>( "hcalTopologyConstants", hcalSLHCTopologyConstants );
  descriptions.add( "hcalTopologyIdealSLHC", descSLHC );  
}
HcalTopologyIdealEP::ReturnType HcalTopologyIdealEP::produce ( const IdealGeometryRecord iRecord)

Definition at line 95 of file HcalTopologyIdealEP.cc.

References error, Exception, edm::ParameterSet::exists(), edm::ParameterSet::getParameter(), HcalTopology::HcalTopology(), HcalTopologyMode::LHC, m_pSet, m_restrictions, m_segmentation, HcalTopology::maxDepthHB(), HcalTopology::maxDepthHE(), alignBH_cfg::mode, HcalTopologyRestrictionParser::parse(), geometryXMLtoCSV::parser, StringToEnumParser< T >::parseString(), and AlCaHLTBitMon_QueryRunRegistry::string.

{
  //   std::cout << "HcalTopologyIdealEP::produce(const IdealGeometryRecord& iRecord)" << std::endl;
  edm::LogInfo("HCAL") <<  "HcalTopologyIdealEP::produce(const IdealGeometryRecord& iRecord)";
    
  using namespace edm::es;

  HcalTopologyMode::Mode mode = HcalTopologyMode::LHC;
  int maxDepthHB = 2;
  int maxDepthHE = 3;
  if( m_pSet.exists( "hcalTopologyConstants" ))
  {
    const edm::ParameterSet hcalTopoConsts( m_pSet.getParameter<edm::ParameterSet>( "hcalTopologyConstants" ));
    StringToEnumParser<HcalTopologyMode::Mode> eparser;
    mode = (HcalTopologyMode::Mode) eparser.parseString(hcalTopoConsts.getParameter<std::string>("mode"));
    maxDepthHB = hcalTopoConsts.getParameter<int>("maxDepthHB");
    maxDepthHE = hcalTopoConsts.getParameter<int>("maxDepthHE");
  }
  //  std::cout << "mode = " << mode << ", maxDepthHB = " << maxDepthHB << ", maxDepthHE = " << maxDepthHE << std::endl;
  edm::LogInfo("HCAL") << "mode = " << mode << ", maxDepthHB = " << maxDepthHB << ", maxDepthHE = " << maxDepthHE;

  ReturnType myTopo(new HcalTopology( mode, maxDepthHB, maxDepthHE ));

  HcalTopologyRestrictionParser parser(*myTopo);
  if (!m_restrictions.empty()) {
    std::string error=parser.parse(m_restrictions);
    if (!error.empty()) {
      throw cms::Exception("Parse Error","Parse error on Exclude "+error);
    }
  }

  // see if any depth segmentation needs to be added
  for(std::vector<RingSegmentation>::const_iterator ringSegItr = m_segmentation.begin();
      ringSegItr != m_segmentation.end(); ++ringSegItr) {
    myTopo->setDepthSegmentation(ringSegItr->ring, ringSegItr->segmentation);
  } 
  return myTopo ;
}

Member Data Documentation

Definition at line 40 of file HcalTopologyIdealEP.h.

Referenced by produce().

std::string HcalTopologyIdealEP::m_restrictions [private]

Definition at line 39 of file HcalTopologyIdealEP.h.

Referenced by produce().

Definition at line 47 of file HcalTopologyIdealEP.h.

Referenced by HcalTopologyIdealEP(), and produce().