Go to the documentation of this file.00001
00002
00003
00004
00005
00015
00016
00017
00018
00019
00020
00021
00022 #include "FWCore/Framework/interface/Frameworkfwd.h"
00023 #include "FWCore/Framework/interface/EDProducer.h"
00024 #include "FWCore/Framework/interface/ESHandle.h"
00025
00026 #include "FWCore/Framework/interface/Event.h"
00027 #include "FWCore/Framework/interface/MakerMacros.h"
00028
00029 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00030
00031 #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h"
00032 #include "SimDataFormats/CaloHit/interface/PCaloHitContainer.h"
00033
00034 #include "SimDataFormats/Track/interface/SimTrackContainer.h"
00035 #include "SimDataFormats/Vertex/interface/SimVertexContainer.h"
00036
00037
00038
00039 class NeutronHitsCollector : public edm::EDProducer
00040 {
00041 public:
00042 explicit NeutronHitsCollector(const edm::ParameterSet&);
00043 ~NeutronHitsCollector() {};
00044
00045 private:
00046 virtual void beginJob();
00047 virtual void produce(edm::Event&, const edm::EventSetup&);
00048 virtual void endJob();
00049
00050 std::string neutron_label_csc;
00051 std::string neutron_label_dt;
00052 std::string neutron_label_rpc;
00053 };
00054
00055
00056
00057 NeutronHitsCollector::NeutronHitsCollector(const edm::ParameterSet& iConfig)
00058 {
00059 neutron_label_csc = iConfig.getUntrackedParameter<std::string>("neutronLabelCSC","");
00060 neutron_label_dt = iConfig.getUntrackedParameter<std::string>("neutronLabelDT","");
00061 neutron_label_rpc = iConfig.getUntrackedParameter<std::string>("neutronLabelRPC","");
00062
00063
00064
00065
00066 produces<edm::PSimHitContainer>("MuonDTHits");
00067 produces<edm::PSimHitContainer>("MuonCSCHits");
00068 produces<edm::PSimHitContainer>("MuonRPCHits");
00069
00070 produces<edm::SimTrackContainer>().setBranchAlias("SimTracks");
00071 produces<edm::SimVertexContainer>().setBranchAlias("SimVertices");
00072
00073 produces<edm::PSimHitContainer>("TrackerHitsPixelBarrelLowTof");
00074 produces<edm::PSimHitContainer>("TrackerHitsPixelBarrelHighTof");
00075 produces<edm::PSimHitContainer>("TrackerHitsTIBLowTof");
00076 produces<edm::PSimHitContainer>("TrackerHitsTIBHighTof");
00077 produces<edm::PSimHitContainer>("TrackerHitsTIDLowTof");
00078 produces<edm::PSimHitContainer>("TrackerHitsTIDHighTof");
00079 produces<edm::PSimHitContainer>("TrackerHitsPixelEndcapLowTof");
00080 produces<edm::PSimHitContainer>("TrackerHitsPixelEndcapHighTof");
00081 produces<edm::PSimHitContainer>("TrackerHitsTOBLowTof");
00082 produces<edm::PSimHitContainer>("TrackerHitsTOBHighTof");
00083 produces<edm::PSimHitContainer>("TrackerHitsTECLowTof");
00084 produces<edm::PSimHitContainer>("TrackerHitsTECHighTof");
00085
00086 produces<edm::PSimHitContainer>("TotemHitsT1");
00087 produces<edm::PSimHitContainer>("TotemHitsT2Gem");
00088 produces<edm::PSimHitContainer>("TotemHitsRP");
00089 produces<edm::PSimHitContainer>("FP420SI");
00090 produces<edm::PSimHitContainer>("BSCHits");
00091
00092 produces<edm::PCaloHitContainer>("EcalHitsEB");
00093 produces<edm::PCaloHitContainer>("EcalHitsEE");
00094 produces<edm::PCaloHitContainer>("EcalHitsES");
00095 produces<edm::PCaloHitContainer>("HcalHits");
00096 produces<edm::PCaloHitContainer>("CaloHitsTk");
00097 produces<edm::PCaloHitContainer>("CastorPL");
00098 produces<edm::PCaloHitContainer>("CastorFI");
00099 produces<edm::PCaloHitContainer>("CastorBU");
00100 produces<edm::PCaloHitContainer>("CastorTU");
00101 produces<edm::PCaloHitContainer>("EcalTBH4BeamHits");
00102 produces<edm::PCaloHitContainer>("HcalTB06BeamHits");
00103 produces<edm::PCaloHitContainer>("ZDCHITS");
00104
00105
00106
00107
00108 }
00109
00110
00111 void NeutronHitsCollector::produce(edm::Event& iEvent, const edm::EventSetup& iSetup)
00112 {
00113 edm::PSimHitContainer::const_iterator hit;
00114
00115
00116
00117 std::auto_ptr<edm::PSimHitContainer> simCSC(new edm::PSimHitContainer);
00118 if (neutron_label_csc.length()>0)
00119 {
00120 edm::Handle<edm::PSimHitContainer> MuonCSCHits;
00121 iEvent.getByLabel(neutron_label_csc,MuonCSCHits);
00122 for (hit = MuonCSCHits->begin(); hit != MuonCSCHits->end(); ++hit) simCSC->push_back(*hit);
00123 }
00124 iEvent.put(simCSC, "MuonCSCHits");
00125
00126
00127
00128 std::auto_ptr<edm::PSimHitContainer> simDT(new edm::PSimHitContainer);
00129 if (neutron_label_dt.length()>0)
00130 {
00131 edm::Handle<edm::PSimHitContainer> MuonDTHits;
00132 iEvent.getByLabel(neutron_label_dt,MuonDTHits);
00133 for (hit = MuonDTHits->begin(); hit != MuonDTHits->end(); ++hit) simDT->push_back(*hit);
00134 }
00135 iEvent.put(simDT, "MuonDTHits");
00136
00137
00138
00139 std::auto_ptr<edm::PSimHitContainer> simRPC(new edm::PSimHitContainer);
00140 if (neutron_label_rpc.length()>0)
00141 {
00142 edm::Handle<edm::PSimHitContainer> MuonRPCHits;
00143 iEvent.getByLabel(neutron_label_rpc,MuonRPCHits);
00144 for (hit = MuonRPCHits->begin(); hit != MuonRPCHits->end(); ++hit) simRPC->push_back(*hit);
00145 }
00146 iEvent.put(simRPC, "MuonRPCHits");
00147
00148
00149
00150
00151
00152 std::auto_ptr<edm::PCaloHitContainer> calout1(new edm::PCaloHitContainer);
00153 iEvent.put(calout1, "EcalHitsEB");
00154 std::auto_ptr<edm::PCaloHitContainer> calout2(new edm::PCaloHitContainer);
00155 iEvent.put(calout2, "EcalHitsEE");
00156 std::auto_ptr<edm::PCaloHitContainer> calout3(new edm::PCaloHitContainer);
00157 iEvent.put(calout3, "EcalHitsES");
00158 std::auto_ptr<edm::PCaloHitContainer> calout4(new edm::PCaloHitContainer);
00159 iEvent.put(calout4, "HcalHits");
00160 std::auto_ptr<edm::PCaloHitContainer> calout5(new edm::PCaloHitContainer);
00161 iEvent.put(calout5, "CaloHitsTk");
00162 std::auto_ptr<edm::PCaloHitContainer> calout6(new edm::PCaloHitContainer);
00163 iEvent.put(calout6, "CastorPL");
00164 std::auto_ptr<edm::PCaloHitContainer> calout7(new edm::PCaloHitContainer);
00165 iEvent.put(calout7, "CastorFI");
00166 std::auto_ptr<edm::PCaloHitContainer> calout8(new edm::PCaloHitContainer);
00167 iEvent.put(calout8, "CastorBU");
00168 std::auto_ptr<edm::PCaloHitContainer> calout9(new edm::PCaloHitContainer);
00169 iEvent.put(calout9, "CastorTU");
00170 std::auto_ptr<edm::PCaloHitContainer> calout10(new edm::PCaloHitContainer);
00171 iEvent.put(calout10, "EcalTBH4BeamHits");
00172 std::auto_ptr<edm::PCaloHitContainer> calout11(new edm::PCaloHitContainer);
00173 iEvent.put(calout11, "HcalTB06BeamHits");
00174 std::auto_ptr<edm::PCaloHitContainer> calout12(new edm::PCaloHitContainer);
00175 iEvent.put(calout12, "ZDCHITS");
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185 std::auto_ptr<edm::PSimHitContainer> trout1(new edm::PSimHitContainer);
00186 iEvent.put(trout1, "TrackerHitsPixelBarrelLowTof");
00187 std::auto_ptr<edm::PSimHitContainer> trout2(new edm::PSimHitContainer);
00188 iEvent.put(trout2, "TrackerHitsPixelBarrelHighTof");
00189 std::auto_ptr<edm::PSimHitContainer> trout3(new edm::PSimHitContainer);
00190 iEvent.put(trout3, "TrackerHitsTIBLowTof");
00191 std::auto_ptr<edm::PSimHitContainer> trout4(new edm::PSimHitContainer);
00192 iEvent.put(trout4, "TrackerHitsTIBHighTof");
00193 std::auto_ptr<edm::PSimHitContainer> trout5(new edm::PSimHitContainer);
00194 iEvent.put(trout5, "TrackerHitsTIDLowTof");
00195 std::auto_ptr<edm::PSimHitContainer> trout6(new edm::PSimHitContainer);
00196 iEvent.put(trout6, "TrackerHitsTIDHighTof");
00197 std::auto_ptr<edm::PSimHitContainer> trout7(new edm::PSimHitContainer);
00198 iEvent.put(trout7, "TrackerHitsPixelEndcapLowTof");
00199 std::auto_ptr<edm::PSimHitContainer> trout8(new edm::PSimHitContainer);
00200 iEvent.put(trout8, "TrackerHitsPixelEndcapHighTof");
00201 std::auto_ptr<edm::PSimHitContainer> trout9(new edm::PSimHitContainer);
00202 iEvent.put(trout9, "TrackerHitsTOBLowTof");
00203 std::auto_ptr<edm::PSimHitContainer> trout10(new edm::PSimHitContainer);
00204 iEvent.put(trout10, "TrackerHitsTOBHighTof");
00205 std::auto_ptr<edm::PSimHitContainer> trout11(new edm::PSimHitContainer);
00206 iEvent.put(trout11, "TrackerHitsTECLowTof");
00207 std::auto_ptr<edm::PSimHitContainer> trout12(new edm::PSimHitContainer);
00208 iEvent.put(trout12, "TrackerHitsTECHighTof");
00209
00210
00211
00212 std::auto_ptr<edm::PSimHitContainer> fwout1(new edm::PSimHitContainer);
00213 iEvent.put(fwout1, "TotemHitsT1");
00214 std::auto_ptr<edm::PSimHitContainer> fwout2(new edm::PSimHitContainer);
00215 iEvent.put(fwout2, "TotemHitsT2Gem");
00216 std::auto_ptr<edm::PSimHitContainer> fwout3(new edm::PSimHitContainer);
00217 iEvent.put(fwout3, "TotemHitsRP");
00218 std::auto_ptr<edm::PSimHitContainer> fwout4(new edm::PSimHitContainer);
00219 iEvent.put(fwout4, "FP420SI");
00220 std::auto_ptr<edm::PSimHitContainer> fwout5(new edm::PSimHitContainer);
00221 iEvent.put(fwout5, "BSCHits");
00222
00223
00224
00225 std::auto_ptr<edm::SimTrackContainer> simTr(new edm::SimTrackContainer);
00226 iEvent.put(simTr);
00227 std::auto_ptr<edm::SimVertexContainer> simVe(new edm::SimVertexContainer);
00228 iEvent.put(simVe);
00229
00230
00231 }
00232
00233
00234 void NeutronHitsCollector::beginJob() {}
00235
00236
00237 void NeutronHitsCollector::endJob() {}
00238
00239
00240
00241 DEFINE_FWK_MODULE(NeutronHitsCollector);