Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:31:08

0001 #ifndef HECTOR_TRANSPORT
0002 #define HECTOR_TRANSPORT
0003 #include "SimTransport/PPSProtonTransport/interface/BaseProtonTransport.h"
0004 #include "CondFormats/BeamSpotObjects/interface/SimBeamSpotObjects.h"
0005 #include "CondFormats/DataRecord/interface/SimBeamSpotObjectsRcd.h"
0006 #include "CondFormats/DataRecord/interface/CTPPSBeamParametersRcd.h"
0007 #include "CondFormats/PPSObjects/interface/CTPPSBeamParameters.h"
0008 
0009 #include "FWCore/Framework/interface/EventSetup.h"
0010 #include "FWCore/Utilities/interface/EDGetToken.h"
0011 #include "FWCore/Framework/interface/ConsumesCollector.h"
0012 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0013 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0014 #include "FWCore/Utilities/interface/RandomNumberGenerator.h"
0015 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
0016 
0017 #include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h"
0018 
0019 #include <cmath>
0020 #include <iomanip>
0021 #include <cstdlib>
0022 
0023 // HepMC headers
0024 #include "HepMC/GenEvent.h"
0025 #include "HepMC/GenVertex.h"
0026 #include "HepMC/GenParticle.h"
0027 #include "HepMC/SimpleVector.h"
0028 
0029 // user include files
0030 #include <string>
0031 
0032 namespace CLHEP {
0033   class HepRandomEngine;
0034 }
0035 
0036 class H_BeamParticle;
0037 class H_BeamLine;
0038 
0039 class HectorTransport : public BaseProtonTransport {
0040 public:
0041   HectorTransport(const edm::ParameterSet& ps, edm::ConsumesCollector iC);
0042   ~HectorTransport() override;
0043 
0044   void process(const HepMC::GenEvent* ev, const edm::EventSetup& es, CLHEP::HepRandomEngine* engine) override;
0045 
0046 private:
0047   static constexpr double fPPSBeamLineLength_ = 250.;  // default beam line length
0048 
0049   //!propagate the particles through a beamline to PPS
0050   bool transportProton(const HepMC::GenParticle*);
0051 
0052   // function to calculate the LorentzBoost
0053   bool setBeamLine();
0054 
0055   // PPSHector
0056   std::unique_ptr<H_BeamLine> m_beamline45;
0057   std::unique_ptr<H_BeamLine> m_beamline56;
0058 
0059   edm::ESGetToken<CTPPSBeamParameters, CTPPSBeamParametersRcd> beamParametersToken_;
0060   edm::ESGetToken<SimBeamSpotObjects, SimBeamSpotObjectsRcd> beamspotToken_;
0061 
0062   const CTPPSBeamParameters* beamParameters_{nullptr};
0063   const SimBeamSpotObjects* beamspot_{nullptr};
0064 };
0065 #endif