Py8GunBase

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
// -*- C++ -*-
//
//

//
// This class is a "Hadronizer" template (see GeneratorInterface/Core)
//

#ifndef gen_Py8GunBase_h
#define gen_Py8GunBase_h

#include <memory>
#include <string>
#include <vector>

#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"

#include "SimDataFormats/GeneratorProducts/interface/GenRunInfoProduct.h"
#include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h"

#include "GeneratorInterface/Pythia8Interface/interface/Py8InterfaceBase.h"

#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Framework/interface/LuminosityBlock.h"

#include <Pythia8/Pythia.h>
#include <Pythia8Plugins/HepMC2.h>

// foward declarations
namespace edm {
  class Event;
}

namespace CLHEP {
  class HepRandomEngine;
}

namespace gen {

  class Py8GunBase : public Py8InterfaceBase {
  public:
    Py8GunBase(edm::ParameterSet const& ps);
    ~Py8GunBase() override {}

    virtual bool residualDecay();  // common func
    bool initializeForInternalPartons() override;
    void finalizeEvent() override;
    void statistics() override;

    void setRandomEngine(CLHEP::HepRandomEngine* v) { p8SetRandomEngine(v); }
    std::vector<std::string> const& sharedResources() const { return p8SharedResources; }
    void evtGenDecay();

  protected:
    // (some of) PGun parameters
    //
    std::vector<int> fPartIDs;
    double fMinPhi;
    double fMaxPhi;

  private:
    static const std::vector<std::string> p8SharedResources;
  };

}  // namespace gen

#endif  // gen_BaseHadronizer_h