CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
edm::RandomXiThetaGunProducer Class Reference

#include <RandomXiThetaGunProducer.h>

Inheritance diagram for edm::RandomXiThetaGunProducer:
edm::one::EDProducer<> edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 RandomXiThetaGunProducer (const ParameterSet &)
 
 ~RandomXiThetaGunProducer () override=default
 
- Public Member Functions inherited from edm::one::EDProducer<>
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void generateParticle (double z_sign, double mass, unsigned int barcode, HepMC::GenVertex *vtx) const
 
void produce (Event &, const EventSetup &) override
 

Private Attributes

double energy_
 
CLHEP::HepRandomEngine * engine_
 
unsigned int nParticlesSector45_
 
unsigned int nParticlesSector56_
 
unsigned int particleId_
 
double theta_x_mean_
 
double theta_x_sigma_
 
double theta_y_mean_
 
double theta_y_sigma_
 
unsigned int verbosity_
 
double xi_max_
 
double xi_min_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 19 of file RandomXiThetaGunProducer.h.

Constructor & Destructor Documentation

RandomXiThetaGunProducer::RandomXiThetaGunProducer ( const ParameterSet iConfig)

Definition at line 24 of file RandomXiThetaGunProducer.cc.

24  :
25  verbosity_ (iConfig.getUntrackedParameter<unsigned int>("verbosity", 0)),
26  particleId_ (iConfig.getParameter<unsigned int>("particleId")),
27  energy_ (iConfig.getParameter<double>("energy")),
28  xi_min_ (iConfig.getParameter<double>("xi_min")),
29  xi_max_ (iConfig.getParameter<double>("xi_max")),
30  theta_x_mean_ (iConfig.getParameter<double>("theta_x_mean")),
31  theta_x_sigma_ (iConfig.getParameter<double>("theta_x_sigma")),
32  theta_y_mean_ (iConfig.getParameter<double>("theta_y_mean")),
33  theta_y_sigma_ (iConfig.getParameter<double>("theta_y_sigma")),
34  nParticlesSector45_(iConfig.getParameter<unsigned int>("nParticlesSector45")),
35  nParticlesSector56_(iConfig.getParameter<unsigned int>("nParticlesSector56")),
36  engine_(nullptr)
37 {
38  produces<HepMCProduct>("unsmeared");
39 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::RandomXiThetaGunProducer::~RandomXiThetaGunProducer ( )
overridedefault

Member Function Documentation

void RandomXiThetaGunProducer::generateParticle ( double  z_sign,
double  mass,
unsigned int  barcode,
HepMC::GenVertex *  vtx 
) const
private

Definition at line 79 of file RandomXiThetaGunProducer.cc.

References MillePedeFileConverter_cfg::e, energy_, engine_, GenParticle::GenParticle, AlCaHLTBitMon_ParallelJobs::p, particleId_, mathSSE::sqrt(), theta_x_mean_, theta_x_sigma_, theta_y_mean_, theta_y_sigma_, verbosity_, protons_cff::xi, xi_max_, and xi_min_.

Referenced by produce().

81 {
82  const double xi = CLHEP::RandFlat::shoot(engine_, xi_min_, xi_max_);
83  const double theta_x = CLHEP::RandGauss::shoot(engine_, theta_x_mean_, theta_x_sigma_);
84  const double theta_y = CLHEP::RandGauss::shoot(engine_, theta_y_mean_, theta_y_sigma_);
85 
86  if (verbosity_)
87  LogInfo("RandomXiThetaGunProducer") << "xi = " << xi << ", theta_x = " << theta_x
88  << ", theta_y" << theta_y << ", z_sign = " << z_sign;
89 
90  const double cos_theta = sqrt(1. - theta_x*theta_x - theta_y*theta_y);
91 
92  const double p_nom = sqrt(energy_*energy_ - mass*mass);
93  const double p = p_nom * (1. - xi);
94  const double e = sqrt(p*p + mass*mass);
95 
96  HepMC::FourVector momentum(
97  p * theta_x,
98  p * theta_y,
99  z_sign * p * cos_theta,
100  e
101  );
102 
103  HepMC::GenParticle* particle = new HepMC::GenParticle(momentum, particleId_, 1);
104  particle->suggest_barcode(barcode);
105  vtx->add_particle_out(particle);
106 }
T sqrt(T t)
Definition: SSEVec.h:18
void RandomXiThetaGunProducer::produce ( edm::Event e,
const EventSetup es 
)
overrideprivate

Definition at line 43 of file RandomXiThetaGunProducer.cc.

References engine_, edm::EventID::event(), generateParticle(), edm::EventSetup::getData(), edm::RandomNumberGenerator::getEngine(), mps_fire::i, edm::EventBase::id(), ResonanceBuilder::mass, eostools::move(), nParticlesSector45_, nParticlesSector56_, convertSQLitetoXML_cfg::output, source_particleGun_cfi::ParticleID, particleId_, edm::Event::put(), edm::Event::streamID(), and extraflags_cff::vtx.

44 {
45  // get conditions
47  engine_ = &rng->getEngine(e.streamID());
48 
50  es.getData(pdgTable);
51 
52  // prepare HepMC event
53  HepMC::GenEvent *fEvt = new HepMC::GenEvent();
54  fEvt->set_event_number(e.id().event());
55 
56  HepMC::GenVertex *vtx = new HepMC::GenVertex(HepMC::FourVector(0., 0., 0., 0.));
57  fEvt->add_vertex(vtx);
58 
59  const HepPDT::ParticleData *pData = pdgTable->particle(HepPDT::ParticleID(particleId_));
60  double mass = pData->mass().value();
61 
62  // generate particles
63  unsigned int barcode = 0;
64 
65  for (unsigned int i = 0; i < nParticlesSector45_; ++i)
66  generateParticle(+1., mass, ++barcode, vtx);
67 
68  for (unsigned int i = 0; i < nParticlesSector56_; ++i)
69  generateParticle(-1., mass, ++barcode, vtx);
70 
71  // save output
72  std::unique_ptr<HepMCProduct> output(new HepMCProduct()) ;
73  output->addHepMCData(fEvt);
74  e.put(std::move(output), "unsmeared");
75 }
EventNumber_t event() const
Definition: EventID.h:41
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:125
virtual CLHEP::HepRandomEngine & getEngine(StreamID const &)=0
Use this engine in event methods.
bool getData(T &iHolder) const
Definition: EventSetup.h:111
void generateParticle(double z_sign, double mass, unsigned int barcode, HepMC::GenVertex *vtx) const
HepPDT::ParticleData ParticleData
edm::EventID id() const
Definition: EventBase.h:59
StreamID streamID() const
Definition: Event.h:95
def move(src, dest)
Definition: eostools.py:511

Member Data Documentation

double edm::RandomXiThetaGunProducer::energy_
private

Definition at line 32 of file RandomXiThetaGunProducer.h.

Referenced by generateParticle().

CLHEP::HepRandomEngine* edm::RandomXiThetaGunProducer::engine_
private

Definition at line 40 of file RandomXiThetaGunProducer.h.

Referenced by generateParticle(), and produce().

unsigned int edm::RandomXiThetaGunProducer::nParticlesSector45_
private

Definition at line 37 of file RandomXiThetaGunProducer.h.

Referenced by produce().

unsigned int edm::RandomXiThetaGunProducer::nParticlesSector56_
private

Definition at line 38 of file RandomXiThetaGunProducer.h.

Referenced by produce().

unsigned int edm::RandomXiThetaGunProducer::particleId_
private

Definition at line 30 of file RandomXiThetaGunProducer.h.

Referenced by generateParticle(), and produce().

double edm::RandomXiThetaGunProducer::theta_x_mean_
private

Definition at line 34 of file RandomXiThetaGunProducer.h.

Referenced by generateParticle().

double edm::RandomXiThetaGunProducer::theta_x_sigma_
private

Definition at line 34 of file RandomXiThetaGunProducer.h.

Referenced by generateParticle().

double edm::RandomXiThetaGunProducer::theta_y_mean_
private

Definition at line 35 of file RandomXiThetaGunProducer.h.

Referenced by generateParticle().

double edm::RandomXiThetaGunProducer::theta_y_sigma_
private

Definition at line 35 of file RandomXiThetaGunProducer.h.

Referenced by generateParticle().

unsigned int edm::RandomXiThetaGunProducer::verbosity_
private

Definition at line 29 of file RandomXiThetaGunProducer.h.

Referenced by generateParticle().

double edm::RandomXiThetaGunProducer::xi_max_
private

Definition at line 33 of file RandomXiThetaGunProducer.h.

Referenced by generateParticle().

double edm::RandomXiThetaGunProducer::xi_min_
private

Definition at line 33 of file RandomXiThetaGunProducer.h.

Referenced by generateParticle().