CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
BetafuncEvtVtxGenerator Class Reference

#include <BetafuncEvtVtxGenerator.h>

Inheritance diagram for BetafuncEvtVtxGenerator:
BaseEvtVtxGenerator edm::stream::EDProducer<>

Public Member Functions

void beginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) override
 
 BetafuncEvtVtxGenerator (const edm::ParameterSet &p)
 
 BetafuncEvtVtxGenerator (const BetafuncEvtVtxGenerator &p)=delete
 
double BetaFunction (double z, double z0) const
 beta function More...
 
void betastar (double m=0)
 set beta_star More...
 
void emittance (double m=0)
 emittance (no the normalized) More...
 
TMatrixD const * GetInvLorentzBoost () const override
 
HepMC::FourVector newVertex (CLHEP::HepRandomEngine *) const override
 return a new event vertex More...
 
BetafuncEvtVtxGeneratoroperator= (const BetafuncEvtVtxGenerator &rhs)=delete
 
void sigmaZ (double s=1.0)
 set resolution in Z in cm More...
 
void X0 (double m=0)
 set mean in X in cm More...
 
void Y0 (double m=0)
 set mean in Y in cm More...
 
void Z0 (double m=0)
 set mean in Z in cm More...
 
 ~BetafuncEvtVtxGenerator () override
 
- Public Member Functions inherited from BaseEvtVtxGenerator
 BaseEvtVtxGenerator (const edm::ParameterSet &)
 
void produce (edm::Event &, const edm::EventSetup &) override
 
 ~BaseEvtVtxGenerator () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Private Member Functions

void setBoost (double alpha, double phi)
 
void update (const edm::EventSetup &iEventSetup)
 

Private Attributes

edm::ESGetToken< SimBeamSpotObjects, SimBeamSpotObjectsRcdbeamToken_
 
TMatrixD boost_
 
double fbetastar
 
double femittance
 
double fSigmaZ
 
double fTimeOffset
 
double fX0
 
double fY0
 
double fZ0
 
edm::ESWatcher< SimBeamSpotObjectsRcdparameterWatcher_
 
bool readDB_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

Definition at line 31 of file BetafuncEvtVtxGenerator.h.

Constructor & Destructor Documentation

◆ BetafuncEvtVtxGenerator() [1/2]

BetafuncEvtVtxGenerator::BetafuncEvtVtxGenerator ( const edm::ParameterSet p)

Definition at line 33 of file BetafuncEvtVtxGenerator.cc.

References beamToken_, Exception, fbetastar, femittance, fSigmaZ, fTimeOffset, fX0, fY0, fZ0, AlCaHLTBitMon_ParallelJobs::p, readDB_, and setBoost().

33  : BaseEvtVtxGenerator(p), boost_(4, 4) {
34  readDB_ = p.getParameter<bool>("readDB");
35  if (!readDB_) {
36  fX0 = p.getParameter<double>("X0") * cm;
37  fY0 = p.getParameter<double>("Y0") * cm;
38  fZ0 = p.getParameter<double>("Z0") * cm;
39  fSigmaZ = p.getParameter<double>("SigmaZ") * cm;
40  fbetastar = p.getParameter<double>("BetaStar") * cm;
41  femittance = p.getParameter<double>("Emittance") * cm; // this is not the normalized emittance
42  fTimeOffset = p.getParameter<double>("TimeOffset") * ns * c_light; // HepMC time units are mm
43 
44  setBoost(p.getParameter<double>("Alpha") * radian, p.getParameter<double>("Phi") * radian);
45  if (fSigmaZ <= 0) {
46  throw cms::Exception("Configuration") << "Error in BetafuncEvtVtxGenerator: "
47  << "Illegal resolution in Z (SigmaZ is negative)";
48  }
49  }
50  if (readDB_) {
51  beamToken_ = esConsumes<SimBeamSpotObjects, SimBeamSpotObjectsRcd, edm::Transition::BeginLuminosityBlock>();
52  }
53 }
void setBoost(double alpha, double phi)
BaseEvtVtxGenerator(const edm::ParameterSet &)
edm::ESGetToken< SimBeamSpotObjects, SimBeamSpotObjectsRcd > beamToken_

◆ BetafuncEvtVtxGenerator() [2/2]

BetafuncEvtVtxGenerator::BetafuncEvtVtxGenerator ( const BetafuncEvtVtxGenerator p)
delete

Copy constructor

◆ ~BetafuncEvtVtxGenerator()

BetafuncEvtVtxGenerator::~BetafuncEvtVtxGenerator ( )
override

Definition at line 55 of file BetafuncEvtVtxGenerator.cc.

55 {}

Member Function Documentation

◆ beginLuminosityBlock()

void BetafuncEvtVtxGenerator::beginLuminosityBlock ( edm::LuminosityBlock const &  ,
edm::EventSetup const &  iEventSetup 
)
override

Definition at line 57 of file BetafuncEvtVtxGenerator.cc.

References update().

57  {
58  update(iEventSetup);
59 }
void update(const edm::EventSetup &iEventSetup)

◆ BetaFunction()

double BetafuncEvtVtxGenerator::BetaFunction ( double  z,
double  z0 
) const

beta function

Definition at line 99 of file BetafuncEvtVtxGenerator.cc.

References fbetastar, femittance, mathSSE::sqrt(), z, and HLTMuonOfflineAnalyzer_cfi::z0.

Referenced by newVertex().

◆ betastar()

void BetafuncEvtVtxGenerator::betastar ( double  m = 0)
inline

◆ emittance()

void BetafuncEvtVtxGenerator::emittance ( double  m = 0)
inline

◆ GetInvLorentzBoost()

TMatrixD const * BetafuncEvtVtxGenerator::GetInvLorentzBoost ( ) const
overridevirtual

This method - and the comment - is a left-over from COBRA-OSCAR time : return the last generated event vertex. If no vertex has been generated yet, a NULL pointer is returned.

Implements BaseEvtVtxGenerator.

Definition at line 145 of file BetafuncEvtVtxGenerator.cc.

References boost_.

145 { return &boost_; }

◆ newVertex()

HepMC::FourVector BetafuncEvtVtxGenerator::newVertex ( CLHEP::HepRandomEngine *  engine) const
overridevirtual

return a new event vertex

Implements BaseEvtVtxGenerator.

Definition at line 77 of file BetafuncEvtVtxGenerator.cc.

References BetaFunction(), fSigmaZ, fTimeOffset, fX0, fY0, fZ0, mathSSE::sqrt(), X, BeamSpotPI::Y, and BeamSpotPI::Z.

77  {
78  double X, Y, Z;
79 
80  double tmp_sigz = CLHEP::RandGaussQ::shoot(engine, 0., fSigmaZ);
81  Z = tmp_sigz + fZ0;
82 
83  double tmp_sigx = BetaFunction(Z, fZ0);
84  // need sqrt(2) for beamspot width relative to single beam width
85  tmp_sigx /= sqrt(2.0);
86  X = CLHEP::RandGaussQ::shoot(engine, 0., tmp_sigx) + fX0; // + Z*fdxdz ;
87 
88  double tmp_sigy = BetaFunction(Z, fZ0);
89  // need sqrt(2) for beamspot width relative to single beam width
90  tmp_sigy /= sqrt(2.0);
91  Y = CLHEP::RandGaussQ::shoot(engine, 0., tmp_sigy) + fY0; // + Z*fdydz;
92 
93  double tmp_sigt = CLHEP::RandGaussQ::shoot(engine, 0., fSigmaZ);
94  double T = tmp_sigt + fTimeOffset;
95 
96  return HepMC::FourVector(X, Y, Z, T);
97 }
double BetaFunction(double z, double z0) const
beta function
#define X(str)
Definition: MuonsGrabber.cc:38
T sqrt(T t)
Definition: SSEVec.h:19
long double T

◆ operator=()

BetafuncEvtVtxGenerator& BetafuncEvtVtxGenerator::operator= ( const BetafuncEvtVtxGenerator rhs)
delete

Copy assignment operator

◆ setBoost()

void BetafuncEvtVtxGenerator::setBoost ( double  alpha,
double  phi 
)
private

Definition at line 103 of file BetafuncEvtVtxGenerator.cc.

References alpha, boost_, funct::cos(), phi, funct::sin(), and funct::tan().

Referenced by BetafuncEvtVtxGenerator(), and update().

103  {
104  //boost_.ResizeTo(4,4);
105  //boost_ = new TMatrixD(4,4);
106  TMatrixD tmpboost(4, 4);
107 
108  //if ( (alpha_ == 0) && (phi_==0) ) { boost_->Zero(); return boost_; }
109 
110  // Lorentz boost to frame where the collision is head-on
111  // phi is the half crossing angle in the plane ZS
112  // alpha is the angle to the S axis from the X axis in the XY plane
113 
114  tmpboost(0, 0) = 1. / cos(phi);
115  tmpboost(0, 1) = -cos(alpha) * sin(phi);
116  tmpboost(0, 2) = -tan(phi) * sin(phi);
117  tmpboost(0, 3) = -sin(alpha) * sin(phi);
118  tmpboost(1, 0) = -cos(alpha) * tan(phi);
119  tmpboost(1, 1) = 1.;
120  tmpboost(1, 2) = cos(alpha) * tan(phi);
121  tmpboost(1, 3) = 0.;
122  tmpboost(2, 0) = 0.;
123  tmpboost(2, 1) = -cos(alpha) * sin(phi);
124  tmpboost(2, 2) = cos(phi);
125  tmpboost(2, 3) = -sin(alpha) * sin(phi);
126  tmpboost(3, 0) = -sin(alpha) * tan(phi);
127  tmpboost(3, 1) = 0.;
128  tmpboost(3, 2) = sin(alpha) * tan(phi);
129  tmpboost(3, 3) = 1.;
130 
131  tmpboost.Invert();
132  boost_ = tmpboost;
133  //boost_->Print();
134 }
float alpha
Definition: AMPTWrapper.h:105
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
Tan< T >::type tan(const T &t)
Definition: Tan.h:22

◆ sigmaZ()

void BetafuncEvtVtxGenerator::sigmaZ ( double  s = 1.0)

set resolution in Z in cm

Definition at line 136 of file BetafuncEvtVtxGenerator.cc.

References Exception, fSigmaZ, and alignCSCRings::s.

136  {
137  if (s >= 0) {
138  fSigmaZ = s;
139  } else {
140  throw cms::Exception("LogicError") << "Error in BetafuncEvtVtxGenerator::sigmaZ: "
141  << "Illegal resolution in Z (negative)";
142  }
143 }

◆ update()

void BetafuncEvtVtxGenerator::update ( const edm::EventSetup iEventSetup)
private

Definition at line 61 of file BetafuncEvtVtxGenerator.cc.

References beamToken_, edm::ESWatcher< T >::check(), SimBeamSpotObjects::fAlpha, SimBeamSpotObjects::fbetastar, fbetastar, SimBeamSpotObjects::femittance, femittance, SimBeamSpotObjects::fPhi, SimBeamSpotObjects::fSigmaZ, fSigmaZ, SimBeamSpotObjects::fTimeOffset, fTimeOffset, SimBeamSpotObjects::fX0, fX0, SimBeamSpotObjects::fY0, fY0, SimBeamSpotObjects::fZ0, fZ0, edm::EventSetup::getHandle(), parameterWatcher_, readDB_, and setBoost().

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), beginLuminosityBlock(), progressbar.ProgressBar::finish(), and MatrixUtil.Steps::overwrite().

61  {
62  if (readDB_ && parameterWatcher_.check(iEventSetup)) {
63  edm::ESHandle<SimBeamSpotObjects> beamhandle = iEventSetup.getHandle(beamToken_);
64 
65  fX0 = beamhandle->fX0;
66  fY0 = beamhandle->fY0;
67  fZ0 = beamhandle->fZ0;
68  // falpha=beamhandle->fAlpha;
69  fSigmaZ = beamhandle->fSigmaZ;
70  fTimeOffset = beamhandle->fTimeOffset;
71  fbetastar = beamhandle->fbetastar;
72  femittance = beamhandle->femittance;
73  setBoost(beamhandle->fAlpha, beamhandle->fPhi);
74  }
75 }
void setBoost(double alpha, double phi)
edm::ESGetToken< SimBeamSpotObjects, SimBeamSpotObjectsRcd > beamToken_
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:151
edm::ESWatcher< SimBeamSpotObjectsRcd > parameterWatcher_
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:57

◆ X0()

void BetafuncEvtVtxGenerator::X0 ( double  m = 0)
inline

◆ Y0()

void BetafuncEvtVtxGenerator::Y0 ( double  m = 0)
inline

◆ Z0()

void BetafuncEvtVtxGenerator::Z0 ( double  m = 0)
inline

Member Data Documentation

◆ beamToken_

edm::ESGetToken<SimBeamSpotObjects, SimBeamSpotObjectsRcd> BetafuncEvtVtxGenerator::beamToken_
private

Definition at line 83 of file BetafuncEvtVtxGenerator.h.

Referenced by BetafuncEvtVtxGenerator(), and update().

◆ boost_

TMatrixD BetafuncEvtVtxGenerator::boost_
private

Definition at line 79 of file BetafuncEvtVtxGenerator.h.

Referenced by GetInvLorentzBoost(), and setBoost().

◆ fbetastar

double BetafuncEvtVtxGenerator::fbetastar
private

Definition at line 75 of file BetafuncEvtVtxGenerator.h.

Referenced by BetafuncEvtVtxGenerator(), BetaFunction(), betastar(), and update().

◆ femittance

double BetafuncEvtVtxGenerator::femittance
private

Definition at line 75 of file BetafuncEvtVtxGenerator.h.

Referenced by BetafuncEvtVtxGenerator(), BetaFunction(), emittance(), and update().

◆ fSigmaZ

double BetafuncEvtVtxGenerator::fSigmaZ
private

Definition at line 73 of file BetafuncEvtVtxGenerator.h.

Referenced by BetafuncEvtVtxGenerator(), newVertex(), sigmaZ(), and update().

◆ fTimeOffset

double BetafuncEvtVtxGenerator::fTimeOffset
private

Definition at line 77 of file BetafuncEvtVtxGenerator.h.

Referenced by BetafuncEvtVtxGenerator(), newVertex(), and update().

◆ fX0

double BetafuncEvtVtxGenerator::fX0
private

Definition at line 72 of file BetafuncEvtVtxGenerator.h.

Referenced by BetafuncEvtVtxGenerator(), newVertex(), update(), and X0().

◆ fY0

double BetafuncEvtVtxGenerator::fY0
private

Definition at line 72 of file BetafuncEvtVtxGenerator.h.

Referenced by BetafuncEvtVtxGenerator(), newVertex(), update(), and Y0().

◆ fZ0

double BetafuncEvtVtxGenerator::fZ0
private

Definition at line 72 of file BetafuncEvtVtxGenerator.h.

Referenced by BetafuncEvtVtxGenerator(), newVertex(), update(), and Z0().

◆ parameterWatcher_

edm::ESWatcher<SimBeamSpotObjectsRcd> BetafuncEvtVtxGenerator::parameterWatcher_
private

Definition at line 82 of file BetafuncEvtVtxGenerator.h.

Referenced by update().

◆ readDB_

bool BetafuncEvtVtxGenerator::readDB_
private

Definition at line 70 of file BetafuncEvtVtxGenerator.h.

Referenced by BetafuncEvtVtxGenerator(), and update().