File indexing completed on 2024-12-10 02:31:53
0001 #ifndef IOMC_HLLHCEvtVtxGenerator_H
0002 #define IOMC_HLLHCEvtVtxGenerator_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include "IOMC/EventVertexGenerators/interface/BaseEvtVtxGenerator.h"
0015 #include "FWCore/Framework/interface/ESWatcher.h"
0016 #include "FWCore/Utilities/interface/ESGetToken.h"
0017 #include "CondFormats/DataRecord/interface/SimBeamSpotHLLHCObjectsRcd.h"
0018 #include "CondFormats/BeamSpotObjects/interface/SimBeamSpotHLLHCObjects.h"
0019
0020 #include <string>
0021
0022 namespace CLHEP {
0023 class RandFlat;
0024 }
0025
0026 namespace edm {
0027 class ConfigurationDescriptions;
0028 }
0029
0030 class HLLHCEvtVtxGenerator : public BaseEvtVtxGenerator {
0031 public:
0032 HLLHCEvtVtxGenerator(const edm::ParameterSet& p);
0033
0034
0035 HLLHCEvtVtxGenerator(const HLLHCEvtVtxGenerator& p) = delete;
0036
0037
0038 HLLHCEvtVtxGenerator& operator=(const HLLHCEvtVtxGenerator& rhs) = delete;
0039
0040 ~HLLHCEvtVtxGenerator() override = default;
0041
0042 void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override;
0043
0044 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0045
0046
0047 ROOT::Math::XYZTVector vertexShift(CLHEP::HepRandomEngine*) const override;
0048
0049 TMatrixD const* GetInvLorentzBoost() const override { return nullptr; };
0050
0051 private:
0052
0053 double fMeanX, fMeanY, fMeanZ, fTimeOffset_c_light;
0054 double fEProton;
0055 double fCrossingAngle;
0056 double fCrabFrequency;
0057 bool fRF800;
0058 double fBetaCrossingPlane;
0059 double fBetaSeparationPlane;
0060 double fHorizontalEmittance;
0061 double fVerticalEmittance;
0062 double fBunchLength;
0063 double fCrabbingAngleCrossing;
0064 double fCrabbingAngleSeparation;
0065
0066
0067 double gamma;
0068 double beta;
0069 double betagamma;
0070 double oncc;
0071 double epsx;
0072 double epss;
0073 double sigx;
0074 double phiCR;
0075
0076
0077 double sigma(double z, double epsilon, double beta, double betagamma) const;
0078
0079
0080 double integrandCC(double x, double z, double t) const;
0081
0082
0083 double intensity(double x, double y, double z, double t) const;
0084
0085
0086 bool readDB_;
0087 void update(const edm::EventSetup& iEventSetup);
0088 edm::ESWatcher<SimBeamSpotHLLHCObjectsRcd> parameterWatcher_;
0089 edm::ESGetToken<SimBeamSpotHLLHCObjects, SimBeamSpotHLLHCObjectsRcd> beamToken_;
0090 };
0091
0092 #endif