File indexing completed on 2023-03-17 11:10:12
0001 #ifndef IOMC_BeamProfileVtxGenerator_H
0002 #define IOMC_BeamProfileVtxGenerator_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #include "IOMC/EventVertexGenerators/interface/BaseEvtVtxGenerator.h"
0013 #include <vector>
0014
0015 namespace CLHEP {
0016 class HepRandomEngine;
0017 }
0018
0019 class BeamProfileVtxGenerator : public BaseEvtVtxGenerator {
0020 public:
0021 BeamProfileVtxGenerator(const edm::ParameterSet& p);
0022
0023 BeamProfileVtxGenerator(const BeamProfileVtxGenerator& p) = delete;
0024
0025 BeamProfileVtxGenerator& operator=(const BeamProfileVtxGenerator& rhs) = delete;
0026 ~BeamProfileVtxGenerator() override;
0027
0028
0029
0030 HepMC::FourVector newVertex(CLHEP::HepRandomEngine*) const override;
0031
0032 TMatrixD const* GetInvLorentzBoost() const override { return nullptr; }
0033
0034
0035 void sigmaX(double s = 1.0);
0036
0037 void sigmaY(double s = 1.0);
0038
0039
0040 void meanX(double m = 0) { fMeanX = m; }
0041
0042 void meanY(double m = 0) { fMeanY = m; }
0043
0044 void beamPos(double m = 0) { fMeanZ = m; }
0045
0046
0047 void eta(double m = 0);
0048
0049 void phi(double m = 0) { fPhi = m; }
0050
0051 void psi(double m = 999) { fPsi = m; }
0052
0053 void setType(bool m = true);
0054
0055 private:
0056 double fSigmaX, fSigmaY;
0057 double fMeanX, fMeanY, fMeanZ;
0058 double fEta, fPhi, fTheta;
0059
0060 double fPsi;
0061
0062 bool fType, ffile;
0063 int nBinx, nBiny;
0064 std::vector<double> fdistn;
0065 double fTimeOffset;
0066 };
0067
0068 #endif