File indexing completed on 2024-04-06 12:15:19
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #include <memory>
0021
0022
0023 #include "FWCore/Framework/interface/Frameworkfwd.h"
0024 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0025
0026 #include "FWCore/Framework/interface/Event.h"
0027 #include "FWCore/Framework/interface/MakerMacros.h"
0028
0029 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0030 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0031
0032 #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h"
0033 #include "SimDataFormats/TrackingHit/interface/PSimHit.h"
0034
0035 #include <DataFormats/RPCDigi/interface/RPCDigi.h>
0036 #include <DataFormats/RPCDigi/interface/RPCDigiCollection.h>
0037
0038 #include <DataFormats/MuonDetId/interface/RPCDetId.h>
0039 #include <Geometry/RPCGeometry/interface/RPCGeometry.h>
0040 #include <Geometry/CommonTopologies/interface/RectangularStripTopology.h>
0041 #include <Geometry/CommonTopologies/interface/TrapezoidalStripTopology.h>
0042
0043 #include <Geometry/Records/interface/MuonGeometryRecord.h>
0044
0045 #include <Geometry/RPCGeometry/interface/RPCGeomServ.h>
0046
0047
0048
0049
0050
0051 class RPCGEO2 : public edm::one::EDAnalyzer<> {
0052 public:
0053 explicit RPCGEO2(const edm::ParameterSet&);
0054 ~RPCGEO2() override;
0055
0056 void beginJob() override {}
0057 void analyze(edm::Event const& iEvent, edm::EventSetup const&) override;
0058 void endJob() override {}
0059
0060 private:
0061 const edm::ESGetToken<RPCGeometry, MuonGeometryRecord> tokRPC_;
0062 };
0063
0064 RPCGEO2::RPCGEO2(const edm::ParameterSet& )
0065 : tokRPC_{esConsumes<RPCGeometry, MuonGeometryRecord>(edm::ESInputTag{})} {}
0066
0067 RPCGEO2::~RPCGEO2() {}
0068
0069
0070 void RPCGEO2::analyze(const edm::Event& , const edm::EventSetup& iSetup) {
0071 using namespace edm;
0072
0073 edm::LogVerbatim("RPCGeometry") << " Getting the RPC Geometry";
0074 const RPCGeometry* rpcGeo = &iSetup.getData(tokRPC_);
0075
0076 for (TrackingGeometry::DetContainer::const_iterator it = rpcGeo->dets().begin(); it < rpcGeo->dets().end(); it++) {
0077 if (dynamic_cast<const RPCChamber*>(*it) != nullptr) {
0078 const RPCChamber* ch = dynamic_cast<const RPCChamber*>(*it);
0079 std::vector<const RPCRoll*> roles = (ch->rolls());
0080
0081 for (std::vector<const RPCRoll*>::const_iterator r = roles.begin(); r != roles.end(); ++r) {
0082 RPCDetId rpcId = (*r)->id();
0083 RPCGeomServ rpcsrv(rpcId);
0084 if (rpcId.region() == 0) {
0085 const BoundPlane& RPCSurface = (*r)->surface();
0086 GlobalPoint CenterPointRollGlobal = RPCSurface.toGlobal(LocalPoint(0, 0, 0));
0087 edm::LogVerbatim("RPCGeometry") << rpcsrv.name() << " " << CenterPointRollGlobal.x() << " "
0088 << CenterPointRollGlobal.y() << " " << CenterPointRollGlobal.z();
0089 GlobalPoint i = RPCSurface.toGlobal(LocalPoint(1, 0, 0));
0090 GlobalPoint j = RPCSurface.toGlobal(LocalPoint(0, 1, 0));
0091 edm::LogVerbatim("RPCGeometry") << " i " << i.x() << " " << i.y() << " " << i.z();
0092 edm::LogVerbatim("RPCGeometry") << " j " << j.x() << " " << j.y() << " " << j.z();
0093
0094 } else {
0095 const BoundPlane& RPCSurface = (*r)->surface();
0096 GlobalPoint CenterPointRollGlobal = RPCSurface.toGlobal(LocalPoint(0, 0, 0));
0097 edm::LogVerbatim("RPCGeometry") << rpcsrv.name() << " " << CenterPointRollGlobal.x() << " "
0098 << CenterPointRollGlobal.y() << " " << CenterPointRollGlobal.z();
0099 }
0100 }
0101 }
0102 }
0103 }
0104
0105
0106 DEFINE_FWK_MODULE(RPCGEO2);