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
 
void beginRun (const edm::Run &, const edm::EventSetup &) override
 
 BetafuncEvtVtxGenerator (const edm::ParameterSet &p)
 
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...
 
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
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Private Member Functions

 BetafuncEvtVtxGenerator (const BetafuncEvtVtxGenerator &p)=delete
 
BetafuncEvtVtxGeneratoroperator= (const BetafuncEvtVtxGenerator &rhs)=delete
 
void setBoost (double alpha, double phi)
 
void update (const edm::EventSetup &iEventSetup)
 

Private Attributes

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<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Definition at line 29 of file BetafuncEvtVtxGenerator.h.

Constructor & Destructor Documentation

◆ BetafuncEvtVtxGenerator() [1/2]

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

Definition at line 36 of file BetafuncEvtVtxGenerator.cc.

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

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

◆ ~BetafuncEvtVtxGenerator()

BetafuncEvtVtxGenerator::~BetafuncEvtVtxGenerator ( )
override

Definition at line 55 of file BetafuncEvtVtxGenerator.cc.

55 {}

◆ BetafuncEvtVtxGenerator() [2/2]

BetafuncEvtVtxGenerator::BetafuncEvtVtxGenerator ( const BetafuncEvtVtxGenerator p)
privatedelete

Copy constructor

Member Function Documentation

◆ beginLuminosityBlock()

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

Definition at line 57 of file BetafuncEvtVtxGenerator.cc.

57  {
58  update(iEventSetup);
59 }

References update().

◆ beginRun()

void BetafuncEvtVtxGenerator::beginRun ( const edm::Run ,
const edm::EventSetup iEventSetup 
)
override

Definition at line 60 of file BetafuncEvtVtxGenerator.cc.

60 { update(iEventSetup); }

References update().

◆ BetaFunction()

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

beta function

Definition at line 101 of file BetafuncEvtVtxGenerator.cc.

101  {
102  return sqrt(femittance * (fbetastar + (((z - z0) * (z - z0)) / fbetastar)));
103 }

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

Referenced by newVertex().

◆ betastar()

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

set beta_star

Definition at line 54 of file BetafuncEvtVtxGenerator.h.

54 { fbetastar = m; }

References fbetastar, and visualization-live-secondInstance_cfg::m.

◆ emittance()

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

emittance (no the normalized)

Definition at line 56 of file BetafuncEvtVtxGenerator.h.

56 { femittance = m; }

References femittance, and visualization-live-secondInstance_cfg::m.

◆ 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 147 of file BetafuncEvtVtxGenerator.cc.

147 { return &boost_; }

References boost_.

◆ newVertex()

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

return a new event vertex

Implements BaseEvtVtxGenerator.

Definition at line 79 of file BetafuncEvtVtxGenerator.cc.

79  {
80  double X, Y, Z;
81 
82  double tmp_sigz = CLHEP::RandGaussQ::shoot(engine, 0., fSigmaZ);
83  Z = tmp_sigz + fZ0;
84 
85  double tmp_sigx = BetaFunction(Z, fZ0);
86  // need sqrt(2) for beamspot width relative to single beam width
87  tmp_sigx /= sqrt(2.0);
88  X = CLHEP::RandGaussQ::shoot(engine, 0., tmp_sigx) + fX0; // + Z*fdxdz ;
89 
90  double tmp_sigy = BetaFunction(Z, fZ0);
91  // need sqrt(2) for beamspot width relative to single beam width
92  tmp_sigy /= sqrt(2.0);
93  Y = CLHEP::RandGaussQ::shoot(engine, 0., tmp_sigy) + fY0; // + Z*fdydz;
94 
95  double tmp_sigt = CLHEP::RandGaussQ::shoot(engine, 0., fSigmaZ);
96  double T = tmp_sigt + fTimeOffset;
97 
98  return HepMC::FourVector(X, Y, Z, T);
99 }

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

◆ operator=()

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

Copy assignment operator

◆ setBoost()

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

Definition at line 105 of file BetafuncEvtVtxGenerator.cc.

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

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

Referenced by BetafuncEvtVtxGenerator(), and update().

◆ sigmaZ()

void BetafuncEvtVtxGenerator::sigmaZ ( double  s = 1.0)

set resolution in Z in cm

Definition at line 138 of file BetafuncEvtVtxGenerator.cc.

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

References Exception, fSigmaZ, and alignCSCRings::s.

◆ update()

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

◆ X0()

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

set mean in X in cm

Definition at line 47 of file BetafuncEvtVtxGenerator.h.

47 { fX0 = m; }

References fX0, and visualization-live-secondInstance_cfg::m.

◆ Y0()

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

set mean in Y in cm

Definition at line 49 of file BetafuncEvtVtxGenerator.h.

49 { fY0 = m; }

References fY0, and visualization-live-secondInstance_cfg::m.

◆ Z0()

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

set mean in Z in cm

Definition at line 51 of file BetafuncEvtVtxGenerator.h.

51 { fZ0 = m; }

References fZ0, and visualization-live-secondInstance_cfg::m.

Member Data Documentation

◆ 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().

edm::ESWatcher::check
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:52
SimBeamSpotObjects::fTimeOffset
double fTimeOffset
Definition: SimBeamSpotObjects.h:27
BetafuncEvtVtxGenerator::fZ0
double fZ0
Definition: BetafuncEvtVtxGenerator.h:72
X
#define X(str)
Definition: MuonsGrabber.cc:38
zMuMuMuonUserData.alpha
alpha
zGenParticlesMatch = cms.InputTag(""),
Definition: zMuMuMuonUserData.py:9
BetafuncEvtVtxGenerator::fbetastar
double fbetastar
Definition: BetafuncEvtVtxGenerator.h:75
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
SimBeamSpotObjects::fX0
double fX0
Definition: SimBeamSpotObjects.h:21
BetafuncEvtVtxGenerator::fTimeOffset
double fTimeOffset
Definition: BetafuncEvtVtxGenerator.h:77
SimBeamSpotObjects::fY0
double fY0
Definition: SimBeamSpotObjects.h:21
BetafuncEvtVtxGenerator::BetaFunction
double BetaFunction(double z, double z0) const
beta function
Definition: BetafuncEvtVtxGenerator.cc:101
SimBeamSpotObjects::femittance
double femittance
Definition: SimBeamSpotObjects.h:25
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
BetafuncEvtVtxGenerator::fY0
double fY0
Definition: BetafuncEvtVtxGenerator.h:72
alignCSCRings.s
s
Definition: alignCSCRings.py:92
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
BetafuncEvtVtxGenerator::fSigmaZ
double fSigmaZ
Definition: BetafuncEvtVtxGenerator.h:73
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
BetafuncEvtVtxGenerator::setBoost
void setBoost(double alpha, double phi)
Definition: BetafuncEvtVtxGenerator.cc:105
BetafuncEvtVtxGenerator::femittance
double femittance
Definition: BetafuncEvtVtxGenerator.h:75
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:72
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
DDAxes::z
edm::ESHandle
Definition: DTSurvey.h:22
SimBeamSpotObjects::fbetastar
double fbetastar
Definition: SimBeamSpotObjects.h:25
HLTMuonOfflineAnalyzer_cfi.z0
z0
Definition: HLTMuonOfflineAnalyzer_cfi.py:98
BetafuncEvtVtxGenerator::parameterWatcher_
edm::ESWatcher< SimBeamSpotObjectsRcd > parameterWatcher_
Definition: BetafuncEvtVtxGenerator.h:82
BaseEvtVtxGenerator::BaseEvtVtxGenerator
BaseEvtVtxGenerator(const edm::ParameterSet &)
Definition: BaseEvtVtxGenerator.cc:29
SimBeamSpotObjects::fSigmaZ
double fSigmaZ
Definition: SimBeamSpotObjects.h:24
funct::tan
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
DOFs::Z
Definition: AlignPCLThresholdsWriter.cc:37
SimBeamSpotObjects::fAlpha
double fAlpha
Definition: SimBeamSpotObjects.h:26
SimBeamSpotObjects::fPhi
double fPhi
Definition: SimBeamSpotObjects.h:26
get
#define get
BetafuncEvtVtxGenerator::readDB_
bool readDB_
Definition: BetafuncEvtVtxGenerator.h:70
SimBeamSpotObjectsRcd
Definition: SimBeamSpotObjectsRcd.h:24
BetafuncEvtVtxGenerator::update
void update(const edm::EventSetup &iEventSetup)
Definition: BetafuncEvtVtxGenerator.cc:62
DDAxes::phi
DOFs::Y
Definition: AlignPCLThresholdsWriter.cc:37
T
long double T
Definition: Basic3DVectorLD.h:48
Exception
Definition: hltDiff.cc:246
SimBeamSpotObjects::fZ0
double fZ0
Definition: SimBeamSpotObjects.h:21
BetafuncEvtVtxGenerator::boost_
TMatrixD boost_
Definition: BetafuncEvtVtxGenerator.h:79
BetafuncEvtVtxGenerator::fX0
double fX0
Definition: BetafuncEvtVtxGenerator.h:72