CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
MuonDetLayerGeometryESProducer.cc
Go to the documentation of this file.
1 
10 
15 
20 
23 
26 
27 #include <memory>
28 
29 using namespace edm;
30 
32  setWhatProduced(this);
33 }
34 
35 
37 
38 
39 boost::shared_ptr<MuonDetLayerGeometry>
41 
42  const std::string metname = "Muon|RecoMuon|RecoMuonDetLayers|MuonDetLayerGeometryESProducer";
43  MuonDetLayerGeometry* muonDetLayerGeometry = new MuonDetLayerGeometry();
44 
45  // Build DT layers
47  record.getRecord<MuonGeometryRecord>().get(dt);
48  if (dt.isValid()) {
49  muonDetLayerGeometry->addDTLayers(MuonDTDetLayerGeometryBuilder::buildLayers(*dt));
50  } else {
51  LogInfo(metname) << "No DT geometry is available.";
52  }
53 
54  // Build CSC layers
56  record.getRecord<MuonGeometryRecord>().get(csc);
57  if (csc.isValid()) {
58  muonDetLayerGeometry->addCSCLayers(MuonCSCDetLayerGeometryBuilder::buildLayers(*csc));
59  } else {
60  LogInfo(metname) << "No CSC geometry is available.";
61  }
62 
63  // Build GEM layers
65  record.getRecord<MuonGeometryRecord>().get(gem);
66  if (gem.isValid()) {
68  } else {
69  LogInfo(metname) << "No GEM geometry is available.";
70  }
71 
72 
73  // Build RPC layers
75  record.getRecord<MuonGeometryRecord>().get(rpc);
76  if (rpc.isValid()) {
78  } else {
79  LogInfo(metname) << "No RPC geometry is available.";
80  }
81 
82 
83  // Sort layers properly
84  muonDetLayerGeometry->sortLayers();
85 
86  return boost::shared_ptr<MuonDetLayerGeometry>(muonDetLayerGeometry);
87 }
float dt
Definition: AMPTWrapper.h:126
JetCorrectorParameters::Record record
Definition: classes.h:7
const std::string metname
void addDTLayers(const std::vector< DetLayer * > &dtlayers)
static std::pair< std::vector< DetLayer * >, std::vector< DetLayer * > > buildLayers(const CSCGeometry &geo)
static std::vector< DetLayer * > buildLayers(const DTGeometry &geo)
Operations.
void addGEMLayers(const std::pair< std::vector< DetLayer * >, std::vector< DetLayer * > > &gemlayers)
boost::shared_ptr< MuonDetLayerGeometry > produce(const MuonRecoGeometryRecord &record)
Produce MuonDeLayerGeometry.
static std::pair< std::vector< DetLayer * >, std::vector< DetLayer * > > buildEndcapLayers(const RPCGeometry &geo)
void addRPCLayers(const std::vector< DetLayer * > &barrelRPCLayers, const std::pair< std::vector< DetLayer * >, std::vector< DetLayer * > > &endcapRPCLayers)
MuonDetLayerGeometryESProducer(const edm::ParameterSet &p)
Constructor.
bool isValid() const
Definition: ESHandle.h:47
void addCSCLayers(const std::pair< std::vector< DetLayer * >, std::vector< DetLayer * > > &csclayers)
static std::pair< std::vector< DetLayer * >, std::vector< DetLayer * > > buildEndcapLayers(const GEMGeometry &geo)
static std::vector< DetLayer * > buildBarrelLayers(const RPCGeometry &geo)
Builds the barrel layers. Result vector is sorted inside-out.