21#ifndef GENERATORMODULESEVTDECAYINCLUSIVE_H
22#define GENERATORMODULESEVTDECAYINCLUSIVE_H
27#include "HepPDT/ParticleDataTable.hh"
29#include "EvtGenBase/EvtParticle.hh"
30#include "EvtGen/EvtGen.hh"
31#include "EvtGenBase/EvtRandomEngine.hh"
34#include "GaudiKernel/ISvcLocator.h"
40 class HepRandomEngine;
71 CLHEP::HepRandomEngine*
getRandomEngine(
const std::string& streamName,
unsigned long int randomSeedOffset,
const EventContext& ctx)
const;
72 CLHEP::HepRandomEngine*
getRandomEngineDuringInitialize(
const std::string& streamName,
unsigned long int randomSeedOffset,
unsigned int conditionsRun=1,
unsigned int lbn=1)
const;
77 std::set<HepMC::GenVertexPtr>& visited,
78 std::set<HepMC::GenParticlePtr,ParticleIdCompare>& toBeDecayed);
91 void printHepMC(HepMC::GenEvent* hepMC, std::set<HepMC::GenParticlePtr,ParticleIdCompare>* particleSet =
nullptr);
92 unsigned int printTree(
HepMC::GenParticlePtr p, std::set<HepMC::GenVertexPtr>& visited,
int level, std::set<HepMC::GenParticlePtr,ParticleIdCompare>* particleSet =
nullptr);
99 IntegerProperty
m_dsid{
this,
"Dsid", 999999};
102 IntegerProperty
m_randomSeed{
this,
"RandomSeed", 1234567,
"Random seed for the built-in random engine"};
CLHEP::HepRandomEngine * getEngine()
virtual ~EvtInclusiveAtRndmGen()=default
EvtInclusiveAtRndmGen(CLHEP::HepRandomEngine *engine)
CLHEP::HepRandomEngine * m_engine
bool m_applyUserSelection
void printHepMC(HepMC::GenEvent *hepMC, std::set< HepMC::GenParticlePtr, ParticleIdCompare > *particleSet=nullptr)
CLHEP::HepRandomEngine * getRandomEngine(const std::string &streamName, unsigned long int randomSeedOffset, const EventContext &ctx) const
bool m_setVMtransversePol
ServiceHandle< IAthRNGSvc > m_rndmSvc
double m_userSelMu1MaxEta
void removeDecayTree(HepMC::GenEvent *hepMC, HepMC::GenParticlePtr p)
bool m_userSelRequireOppositeSignedMu
void reseedRandomEngine(const std::string &streamName, const EventContext &ctx)
virtual ~EvtInclusiveDecay()
bool isDefaultB(const int pId) const
std::set< int > m_blackListSet
CLHEP::HepRandomEngine * getRandomEngineDuringInitialize(const std::string &streamName, unsigned long int randomSeedOffset, unsigned int conditionsRun=1, unsigned int lbn=1) const
bool m_printHepMCAfterEvtGen
bool m_checkDecayChannels
void addEvtGenDecayTree(HepMC::GenEvent *hepMC, HepMC::GenParticlePtr part, EvtParticle *evtPart, EvtVector4R treeStart, double momentumScaleFactor=1.0)
std::string m_randomStreamName
double m_userSelMaxDimuMass
StatusCode traverseDecayTree(HepMC::GenParticlePtr p, bool isToBeRemoved, std::set< HepMC::GenVertexPtr > &visited, std::set< HepMC::GenParticlePtr, ParticleIdCompare > &toBeDecayed)
bool passesUserSelection(HepMC::GenEvent *hepMC)
double m_userSelMinDimuMass
bool m_printHepMCBeforeEvtGen
double invMass(HepMC::ConstGenParticlePtr p1, HepMC::ConstGenParticlePtr p2)
McEventCollection * m_mcEvtColl
bool m_allowDefaultBDecays
std::string m_userDecayFile
std::string xmlpath(void)
std::set< int > m_whiteListSet
double m_userSelMu2MaxEta
IntegerProperty m_randomSeed
Seed for random number engine.
std::vector< int > m_blackList
bool m_prohibitRemoveSelfDecay
unsigned int printTree(HepMC::GenParticlePtr p, std::set< HepMC::GenVertexPtr > &visited, int level, std::set< HepMC::GenParticlePtr, ParticleIdCompare > *particleSet=nullptr)
std::string m_outputKeyName
bool isToBeDecayed(HepMC::ConstGenParticlePtr p, bool doCrossChecks)
bool m_printHepMCHighLightTopLevelDecays
std::string m_inputKeyName
bool m_allowAllKnownDecays
std::string pdgName(HepMC::ConstGenParticlePtr p, bool statusHighlighting=false, std::set< HepMC::GenParticlePtr, ParticleIdCompare > *particleSet=nullptr)
std::map< int, long > m_noDecayChannels
bool m_prohibitFinalStateDecay
bool m_printHepMCHighlighted
void decayParticle(HepMC::GenEvent *hepMC, HepMC::GenParticlePtr p)
EvtInclusiveAtRndmGen * m_evtAtRndmGen
EvtInclusiveDecay(const std::string &name, ISvcLocator *pSvcLocator)
std::vector< int > m_whiteList
GenBase(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
This defines the McEventCollection, which is really just an ObjectVector of McEvent objectsFile: Gene...
GenParticle * GenParticlePtr
const GenParticle * ConstGenParticlePtr
bool operator()(const HepMC::GenParticlePtr &a, const HepMC::GenParticlePtr &b) const