5#ifndef BEAMEFFECTS_CRABKISSINGVERTEXPOSITIONER_H
6#define BEAMEFFECTS_CRABKISSINGVERTEXPOSITIONER_H 1
15#include "GaudiKernel/ServiceHandle.h"
29 class HepRandomEngine;
55 StatusCode
finalize() override final;
62 inline
double heaviside(
double val)
const {
return (val >= 0.0) ? 1.0 : 0.0;};
64 CLHEP::HepRandomEngine* rng)
const;
65 double beamspotFunction(
double displacement,
double angle1,
double angle2)
const;
70 Gaudi::Property<std::string>
m_randomEngineName{
this,
"RandomStream",
"VERTEX",
"Name of the random number stream"};
71 Gaudi::Property<std::string>
m_bunchShapeProp{
this,
"BunchShape",
"GAUSS",
"GAUSS or FLAT"};
75 Gaudi::Property<double>
m_bunchLength{
this,
"BunchLength", 75.,
"75.0 mm"};
77 Gaudi::Property<double>
m_betaStar{
this,
"BetaStar", 150.,
"beta* in the parallel (kissing) plane, we assume betax=betay, units: mm"};
78 Gaudi::Property<double>
m_epsilon{
this,
"Epsilon", 2.5e-3,
"Normalized emittance, unit: mm"};
79 Gaudi::Property<double>
m_alphaPar{
this,
"AlfasParallel", 0.,
"Kissing angle (Radians)"};
80 Gaudi::Property<double>
m_alphaX{
this,
"AlfaX", 295e-6};
81 Gaudi::Property<double>
m_thetaX{
this,
"ThetaX", 295e-6};
Define macros for attributes used to control the static checker.
A wrapper class for event-slot-local random engines.
StatusCode finalize() override final
Athena algtool's Hooks.
Gaudi::Property< std::string > m_randomEngineName
Gaudi::Property< double > m_thetaX
Gaudi::Property< double > m_alphaX
virtual ~CrabKissingVertexPositioner()=default
Destructor.
Gaudi::Property< double > m_betaStar
parameters according to S.Fartoukh Phys.Rev.ST Accel.Beams 17 (2014) no.11, 111001 ------------------...
double beamspotFunction(double displacement, double angle1, double angle2) const
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
CrabKissingVertexPositioner(const std::string &t, const std::string &n, const IInterface *p)
Constructor with parameters.
ATHRNG::RNGWrapper *m_randomEngine ATLAS_THREAD_SAFE
Slot-local RNG.
StatusCode initialize() override final
Athena algtool's Hooks.
double heaviside(double val) const
void BunchShapeHandler(Gaudi::Details::PropertyBase &)
ServiceHandle< IAthRNGSvc > m_rndGenSvc
double getDisplacement(double bunchSize, double angle1, double angle2, CLHEP::HepRandomEngine *rng) const
Gaudi::Property< double > m_bunchLength
Parameter in the Z distribution of the beamspot.
Gaudi::Property< double > m_alphaPar
Gaudi::Property< std::string > m_bunchShapeProp
Gaudi::Property< double > m_epsilon