13 MinP(pset.getParameter<double>(
"MinP")),
14 MinP_CMS(pset.getParameter<double>(
"MinP_CMS")),
15 MaxP(pset.getParameter<double>(
"MaxP")),
16 MinT(pset.getParameter<double>(
"MinTheta")),
17 MaxT(pset.getParameter<double>(
"MaxTheta")),
18 MinPh(pset.getParameter<double>(
"MinPhi")),
19 MaxPh(pset.getParameter<double>(
"MaxPhi")),
20 MinS(pset.getParameter<double>(
"MinT0")),
21 MaxS(pset.getParameter<double>(
"MaxT0")),
22 ELSF(pset.getParameter<double>(
"ElossScaleFactor")),
23 RTarget(pset.getParameter<double>(
"RadiusOfTarget")),
24 ZTarget(pset.getParameter<double>(
"ZDistOfTarget")),
25 ZCTarget(pset.getParameter<double>(
"ZCentrOfTarget")),
34 PlugVtx(pset.getParameter<double>(
"PlugVx")),
35 PlugVtz(pset.getParameter<double>(
"PlugVz")),
36 VarRhoAir(pset.getParameter<double>(
"RhoAir")),
37 VarRhoWall(pset.getParameter<double>(
"RhoWall")),
38 VarRhoRock(pset.getParameter<double>(
"RhoRock")),
39 VarRhoClay(pset.getParameter<double>(
"RhoClay")),
40 VarRhoPlug(pset.getParameter<double>(
"RhoPlug")),
41 ClayLayerWidth(pset.getParameter<double>(
"ClayWidth")),
42 MinEn(pset.getParameter<double>(
"MinEnu")),
43 MaxEn(pset.getParameter<double>(
"MaxEnu")),
44 NuPrdAlt(pset.getParameter<double>(
"NuProdAlt")),
45 AllMu(pset.getParameter<
bool>(
"AcptAllMu")),
46 extCrossSect(pset.getUntrackedParameter<double>(
"crossSection", -1.)),
47 extFilterEff(pset.getUntrackedParameter<double>(
"filterEfficiency", -1.)),
48 cmVerbosity_(pset.getParameter<
bool>(
"Verbosity")),
49 isInitialized_(
false) {
55 CosMuoGen = std::make_unique<CosmicMuonGenerator>();
94 produces<HepMCProduct>(
"unsmeared");
95 produces<GenEventInfoProduct>();
96 produces<GenRunInfoProduct, edm::Transition::EndRun>();
105 CosMuoGen->initialize(randomEngineSentry.randomEngine());
114 genRunInfo->setInternalXSec(0.);
116 genRunInfo->setInternalXSec(cs);
136 std::cout <<
"CosMuoGenProducer.cc: CosMuoGen->nextMultiEvent() failed!" << std::endl;
140 std::cout <<
"CosMuoGenProducer.cc: CosMuoGen->EventWeight=" <<
CosMuoGen->EventWeight
141 <<
" CosMuoGen: Nmuons=" <<
CosMuoGen->Id_sf.size() << std::endl;
143 <<
" CosMuoGen->Vy_at=" <<
CosMuoGen->Vy_at <<
" CosMuoGen->Vz_at=" <<
CosMuoGen->Vz_at
144 <<
" CosMuoGen->T0_at=" <<
CosMuoGen->T0_at << std::endl;
146 for (
unsigned int i = 0;
i <
CosMuoGen->Id_sf.size(); ++
i) {
161 auto fEvt = std::make_unique<HepMC::GenEvent>();
163 HepMC::GenVertex* Vtx_at =
new HepMC::GenVertex(HepMC::FourVector(
CosMuoGen->Vx_at,
170 Vtx_at->add_particle_in(Part_at);
173 for (
unsigned int i = 0;
i <
CosMuoGen->Id_sf.size(); ++
i) {
176 Vtx_at->add_particle_out(Part_sf_in);
178 HepMC::GenVertex* Vtx_sf =
new HepMC::GenVertex(
182 Vtx_sf->add_particle_in(Part_sf_in);
183 Vtx_sf->add_particle_out(Part_sf_out);
185 fEvt->add_vertex(Vtx_sf);
187 HepMC::GenVertex* Vtx_ug =
new HepMC::GenVertex(
193 Vtx_ug->add_particle_in(Part_sf_out);
194 Vtx_ug->add_particle_out(Part_ug);
196 fEvt->add_vertex(Vtx_ug);
199 fEvt->add_vertex(Vtx_at);
200 fEvt->set_signal_process_vertex(Vtx_at);
202 fEvt->set_event_number(e.
id().
event());
203 fEvt->set_signal_process_id(13);
205 fEvt->weights().push_back(
CosMuoGen->EventWeight);
206 fEvt->weights().push_back(
CosMuoGen->Trials);
215 std::unique_ptr<HepMCProduct> CMProduct(
new HepMCProduct());
216 CMProduct->addHepMCData(fEvt.release());
EventNumber_t event() const
void endRunProduce(Run &r, const EventSetup &es) override
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
std::string MultiMuonFileName
LuminosityBlockIndex index() const
unique_ptr< ClusterSequence > cs
std::unique_ptr< CosmicMuonGenerator > CosMuoGen
CosMuoGenProducer(const ParameterSet &)
int32_t MultiMuonFileFirstEvent
void produce(Event &e, const EventSetup &es) override
void beginLuminosityBlock(LuminosityBlock const &, EventSetup const &) override
~CosMuoGenProducer() override
MaxP
negative means MinP_CMS = MinP.
void put(std::unique_ptr< PROD > product)
Put a new product.
StreamID streamID() const