7#ifndef PILEUPCOMPS_ARRAYBM
8#define PILEUPCOMPS_ARRAYBM 1
17#include "GaudiKernel/ContextSpecificPtr.h"
18#include "GaudiKernel/ServiceHandle.h"
19#include "Gaudi/Property.h"
33class ArrayBM :
public extends<AthService, IBeamIntensity>
38 ArrayBM(
const std::string& name,ISvcLocator* svc);
43 virtual StatusCode
initialize()
override final;
47 virtual float normFactor(
int iXing)
const override final;
49 virtual void selectT0(
unsigned int run,
unsigned long long event)
override final;
57 Gaudi::Hive::ContextSpecificData<unsigned int>
m_t0Offset;
59 Gaudi::Property<std::uint64_t>
m_seed{
this,
"Seed", 0,
"Seed for FastReseededPRNG. Zero seed switches to AthRNGSvc mode."};
69 std::unique_ptr<std::discrete_distribution<unsigned int>>
m_t0Dist{
nullptr};
provides the relative beam intensity as a function of the bunch xing.
Define macros for attributes used to control the static checker.
A wrapper class for event-slot-local random engines.
double * m_intensityPattern
normalized intensity pattern. C array to make clhep RandGeneral happy
virtual StatusCode initialize() override final
int m_emptyBunches
Empty bunch option.
Gaudi::Property< std::uint64_t > m_seed
seed for FastReseededPRNG. Non-zero switches to using FastReseededPRNG.
CLHEP::RandGeneral * m_biRandom
shoot random number proportionally to m_intensityPattern
virtual unsigned int getCurrentT0BunchCrossing() const override final
float m_largestElementInPattern
The largest value in the pattern assuming that the pattern has mean value 1.0.
unsigned int m_maxBunchCrossingPerOrbit
max bunch crossings per orbit
virtual float normFactor(int iXing) const override final
ArrayBM(const std::string &name, ISvcLocator *svc)
virtual void selectT0(unsigned int run, unsigned long long event) override final
virtual unsigned int getBeamPatternLength() const override final
Gaudi::Property< std::vector< float > > m_intensityPatternProp
user-defined intensity pattern
virtual float largestElementInPattern() const override final
ATHRNG::RNGWrapper *m_rngWrapper ATLAS_THREAD_SAFE
Gaudi::Hive::ContextSpecificData< unsigned int > m_t0Offset
offset of the t0 wrto our intensity pattern
unsigned int m_ipLength
length of the intensity pattern
std::unique_ptr< std::discrete_distribution< unsigned int > > m_t0Dist
as with m_biRandom, but for FastReseededPRNG
double * m_signalPattern
Additional array for keeping the locations we want signal in By default, will match the intensity pat...
ServiceHandle< IAthRNGSvc > m_randomSvc
the service managing our random seeds/sequences