File indexing completed on 2024-07-30 22:15:24
0001 #ifndef IOMC_ParticleGun_CloseByParticleGunProducer_H
0002 #define IOMC_ParticleGun_CloseByParticleGunProducer_H
0003
0004 #include "IOMC/ParticleGuns/interface/BaseFlatGunProducer.h"
0005
0006 #include "MagneticField/Engine/interface/MagneticField.h"
0007 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
0008
0009 #include "FWCore/Framework/interface/ESHandle.h"
0010 #include "FWCore/Framework/interface/EventSetup.h"
0011 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0012 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0013
0014 namespace edm {
0015
0016 class CloseByParticleGunProducer : public BaseFlatGunProducer {
0017 public:
0018 CloseByParticleGunProducer(const ParameterSet&);
0019 ~CloseByParticleGunProducer() override;
0020
0021 static void fillDescriptions(ConfigurationDescriptions& descriptions);
0022
0023 private:
0024 void produce(Event& e, const EventSetup& es) override;
0025
0026 protected:
0027
0028 bool fControlledByEta, fControlledByREta;
0029 double fVarMin, fVarMax, fEtaMin, fEtaMax, fRMin, fRMax, fZMin, fZMax, fDelta, fPhiMin, fPhiMax, fTMin, fTMax,
0030 fOffsetFirst;
0031 double log_fVarMin = 0., log_fVarMax = 0.;
0032 int fNParticles;
0033 bool fLogSpacedVar = false;
0034 bool fMaxVarSpread = false;
0035 bool fFlatPtGeneration = false;
0036 bool fPointing = false;
0037 bool fOverlapping = false;
0038 bool fRandomShoot = false;
0039 bool fUseDeltaT = false;
0040 std::vector<int> fPartIDs;
0041
0042 const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> m_fieldToken;
0043 };
0044 }
0045
0046 #endif