|
ATLAS Offline Software
|
Cosmic generator. The output will be stored in the transient event store so it can be passed to the simulation.
More...
#include <CosmicGenerator.h>
|
| CosmicGenerator (const std::string &name, ISvcLocator *pSvcLocator) |
|
virtual | ~CosmicGenerator ()=default |
|
virtual StatusCode | genInitialize () |
| For initializing the generator, if required. More...
|
|
virtual StatusCode | callGenerator () |
| For calling the generator on each iteration of the event loop. More...
|
|
virtual StatusCode | genFinalize () |
| For finalising the generator, if required. More...
|
|
virtual StatusCode | fillEvt (HepMC::GenEvent *evt) |
| For filling the HepMC event object. More...
|
|
CLHEP::HepLorentzVector | generateVertex (void) |
|
CLHEP::HepLorentzVector | generateVertexReweighted (void) |
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
bool | exzCut (const CLHEP::Hep3Vector &pos, const CLHEP::HepLorentzVector &p) |
|
double | pathLengthInRock (double xgen, double ygen, double zgen, double theta, double phi) |
|
bool | pointsAtPixels (double xgen, double ygen, double zgen, double theta, double phi) |
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
|
int | m_events {0} |
|
int | m_rejected {0} |
|
int | m_accepted {0} |
|
std::vector< int > | m_pdgCode |
|
IntegerProperty | m_dsid {this, "Dsid", 999999, "Dataset ID number"} |
|
FloatProperty | m_emin {this, "emin", 10.*m_GeV} |
|
FloatProperty | m_emax {this, "emax", 100.*m_GeV} |
|
FloatProperty | m_ctcut {this, "ctcut", 0.35} |
|
FloatProperty | m_xlow {this, "xvert_low", 0.*m_mm} |
|
FloatProperty | m_xhig {this, "xvert_hig", 10.*m_mm} |
|
FloatProperty | m_zlow {this, "zvert_low", 0.*m_mm} |
|
FloatProperty | m_zhig {this, "zvert_hig", 10.*m_mm} |
|
FloatProperty | m_yval {this, "yvert_val", 81.*m_mm} |
|
FloatProperty | m_IPx {this, "IPx", 0.f} |
|
FloatProperty | m_IPy {this, "IPy", 0.f} |
|
FloatProperty | m_IPz {this, "IPz", 0.f} |
|
FloatProperty | m_radius {this, "Radius", 0.f} |
|
FloatProperty | m_zpos {this, "Zposition", 14500.f} |
|
FloatProperty | m_tmin {this, "tmin", 0.f} |
|
FloatProperty | m_tmax {this, "tmax", 0.f} |
|
BooleanProperty | m_cavOpt {this, "OptimizeForCavern", false} |
|
IntegerProperty | m_srOneOpt {this, "OptimizeForSR1", 0} |
|
BooleanProperty | m_srOnePixECOpt {this, "OptimizeForSR1PixelEndCap", false} |
|
BooleanProperty | m_swapYZAxis {this, "SwapYZAxis", false} |
|
BooleanProperty | m_muonECOpt {this, "OptimizeForMuonEndCap", false} |
|
IntegerProperty | m_printEvent {this, "PrintEvent", 10} |
|
IntegerProperty | m_printMod {this, "PrintMod", 100} |
|
FloatProperty | m_thetamin {this, "ThetaMin", 0.f} |
|
FloatProperty | m_thetamax {this, "ThetaMax", 1.f} |
|
FloatProperty | m_phimin {this, "PhiMin", -1.*M_PI} |
|
FloatProperty | m_phimax {this, "PhiMax", M_PI} |
|
bool | m_readfile {false} |
|
StringProperty | m_infile {this, "eventfile", "NONE"} |
|
std::ifstream | m_ffile |
|
std::vector< CLHEP::HepLorentzVector > | m_fourPos |
|
std::vector< CLHEP::HepLorentzVector > | m_fourMom |
|
CLHEP::Hep3Vector | m_center |
|
std::vector< HepMC::Polarization > | m_polarization |
|
BooleanProperty | m_exzCut {this, "ExzCut", false} |
|
FloatProperty | m_rmax {this, "RMax", 10000000.f} |
|
BooleanProperty | m_doPathlengthCut {this, "doPathLengthCut", false} |
|
BooleanProperty | m_doAimedAtPixelsCut {this, "doAimedAtPixelsCut", false} |
|
BooleanProperty | m_doReweighting {this, "doReweighting", false} |
|
DoubleProperty | m_energyCutThreshold {this, "energyCutThreshold", 1.0} |
|
DoubleProperty | m_ysurface {this, "ysurface", 81.*m_mm} |
|
DoubleProperty | m_rvertmax {this, "rvert_max", 300.*m_mm} |
|
DoubleProperty | m_pixelplanemaxx {this, "pixelplane_maxx", 1150.} |
|
DoubleProperty | m_pixelplanemaxz {this, "pixelplane_maxz", 1650.} |
|
DataObjIDColl | m_extendedExtraObjects |
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
|
static constexpr float | m_GeV = 1000.f |
|
static constexpr float | m_mm = 10.f |
|
|
ServiceHandle< IAthRNGSvc > | m_rndmSvc {this, "RndmSvc", "AthRNGSvc"} |
| Data members. More...
|
|
ServiceHandle< IIncidentSvc > | m_incidentSvc {this, "IncidentSvc", "IncidentSvc"} |
| Handle on the incident service. More...
|
|
IntegerProperty | m_randomSeed {this, "RandomSeed", 1234567, "Random seed for the built-in random engine"} |
| Seed for random number engine. More...
|
|
BooleanProperty | m_isAfterburner {this, "IsAfterburner", false, "Set true if generator modifies existing events rather than creating new ones"} |
| Flag for normal vs. afterburner generators. More...
|
|
CLHEP::HepRandomEngine * | getRandomEngine (const std::string &streamName, const EventContext &ctx) const |
|
CLHEP::HepRandomEngine * | getRandomEngine (const std::string &streamName, unsigned long int randomSeedOffset, const EventContext &ctx) const |
|
CLHEP::HepRandomEngine * | getRandomEngineDuringInitialize (const std::string &streamName, unsigned long int randomSeedOffset, unsigned int conditionsRun=1, unsigned int lbn=1) const |
|
Cosmic generator. The output will be stored in the transient event store so it can be passed to the simulation.
- Author
- W. Seligman: Initial Code 08-Nov-2002, based on work by M. Shapiro and I. Hinchliffe
Modification for increasing efficiency of muon hitting the detector: H. Ma. March 17, 2006 Property: ExzCut:
if true, the method exzCut(...) will be called to apply a energy dependent position cut on the surface. This rejects low energy muons at large distance. Property: RMax Used by exzCut to reject non-projective muons, which are too far out on the surface
Modifications to accomodate Pixel EndCap C Cosmic Test needs Marian Zdrazil June 7, 2006 mzdra.nosp@m.zil@.nosp@m.lbl.g.nosp@m.ov
Modifications to accomodate replacement of Pixel EndCap C by a Pixel EndCap A Marian Zdrazil November 24, 2006 mzdra.nosp@m.zil@.nosp@m.lbl.g.nosp@m.ov
It is easier and actually more useful to leave the EndCap A in the vertical position (the way it is positioned in the ATLAS detector) instead of rotating it clockwise by 90deg which corresponds to the placement during the Pixel EndCap A cosmic test in SR1 in November 2006. This is why we will generate cosmic muons coming from the positive Z-axis direction better than rotating the whole setup in PixelGeoModel.
Modifications July 3rd 2007, Rob McPherson
- Fix mu+/mu- bug (always present in Athena versions)
- Fix sign of Py (since tag CosmicGenerator-00-00-21, muons only upward-going)
Optimize selection of events passed to Geant4 for full simulation:
Definition at line 75 of file CosmicGenerator.h.
◆ StoreGateSvc_t
◆ CosmicGenerator()
CosmicGenerator::CosmicGenerator |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ ~CosmicGenerator()
virtual CosmicGenerator::~CosmicGenerator |
( |
| ) |
|
|
virtualdefault |
◆ ATLAS_NOT_CONST_THREAD_SAFE() [1/2]
HepMC::GenEvent* event GenBase::ATLAS_NOT_CONST_THREAD_SAFE |
( |
| ) |
|
|
inlineinherited |
Access the current signal event (first in the McEventCollection)
- Note
- This function will make a new McEventCollection if there is not already a valid one and MakeMcEvent=True.
Definition at line 76 of file GenBase.h.
78 ATH_MSG_ERROR(
"McEventCollection is empty during first event access");
79 return *(
events()->begin());
◆ ATLAS_NOT_CONST_THREAD_SAFE() [2/2]
◆ callGenerator()
StatusCode CosmicGenerator::callGenerator |
( |
| ) |
|
|
virtual |
For calling the generator on each iteration of the event loop.
Reimplemented from GenModule.
Definition at line 214 of file CosmicGenerator.cxx.
223 const EventContext& ctx = Gaudi::Hive::currentContext();
244 HepMC::Polarization thePolarization(0.0,0.0);
259 return StatusCode::FAILURE;
266 CLHEP::HepLorentzVector pp;
268 CLHEP::HepLorentzVector vert;
269 CLHEP::Hep3Vector vert3;
280 vert3 = CLHEP::Hep3Vector(vert.x(),vert.y(),vert.z());
282 double vert_radius=sqrt(vert3.x()*vert3.x() + vert3.z()*vert3.z());
291 phi1=atan2(vert.z(),vert.x())+
M_PI;
300 vert3 = CLHEP::Hep3Vector(vert.x(),vert.y(),vert.z());
309 CLHEP::Hep3Vector pp_corr(mag1*
sin(theta1)*
std::cos(phi1),
312 CLHEP::Hep3Vector direction(pp_corr.x(),pp_corr.y(), pp_corr.z());
317 CLHEP::Hep3Vector center_dir=
m_center-vert3;
318 double beta=direction.angle(center_dir);
319 double alpha=std::asin(
m_radius/center_dir.r());
321 if(std::abs(
beta)<alpha) {
325 CLHEP::HepLorentzVector pp2(pp_corr.x(),pp_corr.y(), pp_corr.z(), pp.e());
334 <<
", y0 = " << vert3.y()
335 <<
", z0 = " << vert3.z()
336 <<
", theta = " << pp.theta()
337 <<
", phi = " << pp.phi()
338 <<
", energy = " << pp.e()*
m_GeV );
342 double energyLoss = 2.33e-3 * 244. *
path;
344 <<
" --> " << (energyLoss>pp.e()*
m_GeV ?
"REJECTED" :
"ACCEPTED") <<
" by pathlength cut");
349 bool aimedAtPixels =
pointsAtPixels(vert3.x(),vert3.y(),vert3.z(),pp.theta(),pp.phi());
350 ATH_MSG_DEBUG( (aimedAtPixels ?
"AIMED AT PIXELS" :
"NOT AIMED AT PIXELS") );
351 if (!aimedAtPixels) accepted =
false;
356 ATH_MSG_VERBOSE(
"The following event has been accepted for simulation:");
357 ATH_MSG_VERBOSE(
"x0 = " << vert3.x() <<
", y0 = " << vert3.y() <<
", z0 = " << vert3.z()
358 <<
", theta = " << pp.theta() <<
", phi = " << pp.phi() <<
", energy = " << pp.e()*
m_GeV );
362 double energyLoss = 2.33e-3 * 244. *
path;
364 <<
" --> " << (energyLoss>pp.e()*
m_GeV ?
"REJECTED" :
"ACCEPTED") <<
" by pathlength cut" );
368 bool aimedAtPixels =
pointsAtPixels(vert3.x(),vert3.y(),vert3.z(),pp.theta(),pp.phi());
369 ATH_MSG_VERBOSE( (aimedAtPixels ?
"AIMED AT PIXELS" :
"NOT AIMED AT PIXELS") );
385 CLHEP::Hep3Vector srOneVec(direction.x(), direction.y(), direction.z());
389 if( (srOneVec.phi() >= -2.25) && (srOneVec.phi() <= -1.7) &&
390 (srOneVec.theta() >= 0.85) && (srOneVec.theta() <= 2.25) ) {
395 ATH_MSG_DEBUG(
"Rejected muon due to SR1 SCT/TRT optimization request!");
400 CLHEP::Hep3Vector srOneVec(direction.x(), direction.y(), direction.z());
404 if( (srOneVec.phi() >= -1.68) && (srOneVec.phi() <= -1.08) &&
405 (srOneVec.theta() >= 0.29) && (srOneVec.theta() <= 0.72) ) {
408 ATH_MSG_DEBUG(
"Muon accepted by SR1 SCT/TRT EndCapC optimization!");
410 ATH_MSG_DEBUG(
"Rejected muon due to SR1 SCT/TRT EndcapC optimization request!");
416 CLHEP::Hep3Vector srOneVec(direction.x(), direction.y(), direction.z());
424 ATH_MSG_DEBUG(
"Muon accepted by SR1 Pixel EndCap optimization!");
426 ATH_MSG_DEBUG(
"Rejected muon due to SR1 Pixel EndCap optimization request!");
432 double coor_x, coor_y, coor_z;
434 coor_x = direction.x()*(coor_z - vert.z())/direction.z() +vert.x();
435 coor_y = direction.y()*(coor_z - vert.z())/direction.z() +vert.y();
441 coor_x = direction.x()*(coor_z - vert.z())/direction.z() +vert.x();
442 coor_y = direction.y()*(coor_z - vert.z())/direction.z() +vert.y();
447 ATH_MSG_DEBUG(
"Rejected muon due to Muon EndCap optimization request!");
456 pp.setX(pp.x()*
m_GeV);
457 pp.setY(pp.y()*
m_GeV);
458 pp.setZ(pp.z()*
m_GeV);
459 pp.setT(pp.t()*
m_GeV);
469 return StatusCode::FAILURE;
493 HepMC::Polarization thePolarization(0.0);
500 double theta = pp.theta();
501 double phi = pp.phi();
510 <<
" E=" <<
e <<
", mass=" <<
mass
511 <<
" -- you have generated a tachyon! Increase energy or change particle ID." );
512 return StatusCode::FAILURE;
515 double p = std::sqrt(
p2);
539 <<
m_fourPos.back().t() <<
"), (Px,Py,Pz,E) = ("
545 " (theta,phi) = (" <<
theta <<
"," <<
phi <<
"), "
548 return StatusCode::SUCCESS;
◆ cmTomm()
void GenBase::cmTomm |
( |
HepMC::GenEvent * |
evt | ) |
|
|
protectedinherited |
Scale event lengths by x 10.
Definition at line 78 of file GenBase.cxx.
79 for (HepMC::GenEvent::vertex_iterator vtx =
evt->vertices_begin(); vtx !=
evt->vertices_end(); ++vtx) {
80 const HepMC::FourVector fv((*vtx)->position().x() * 10,
81 (*vtx)->position().y() * 10,
82 (*vtx)->position().z() * 10,
83 (*vtx)->position().t() * 10);
84 (*vtx)->set_position(fv);
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ event_const()
const HepMC::GenEvent* GenBase::event_const |
( |
| ) |
const |
|
inlineinherited |
Access the current signal event (const)
Definition at line 83 of file GenBase.h.
85 ATH_MSG_ERROR(
"Const McEventCollection is empty during first event access");
◆ events_const() [1/2]
◆ events_const() [2/2]
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode GenModule::execute |
( |
| ) |
|
|
virtualinherited |
- Todo:
- Remove hard-coded alg name checking (already incomplete)
Reimplemented from GenBase.
Definition at line 70 of file GenModule.cxx.
105 if (
name() ==
"ParticleDecayer") {
112 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
const DataObjIDColl & AthAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 50 of file AthAlgorithm.cxx.
57 return Algorithm::extraOutputDeps();
◆ exzCut()
bool CosmicGenerator::exzCut |
( |
const CLHEP::Hep3Vector & |
pos, |
|
|
const CLHEP::HepLorentzVector & |
p |
|
) |
| |
|
private |
◆ fillEvt()
StatusCode CosmicGenerator::fillEvt |
( |
HepMC::GenEvent * |
evt | ) |
|
|
virtual |
For filling the HepMC event object.
Implements GenModule.
Definition at line 622 of file CosmicGenerator.cxx.
644 event->add_vertex(
vertex );
649 if (
event->weights().empty()){
650 event->weights().push_back(1.0);
652 return StatusCode::SUCCESS;
654 ATH_MSG_ERROR(
"Wrong different number of vertexes/momenta/polaritazions!");
655 return StatusCode::FAILURE;
◆ finalize()
StatusCode GenModule::finalize |
( |
| ) |
|
|
inlineinherited |
◆ generateVertex()
CLHEP::HepLorentzVector CosmicGenerator::generateVertex |
( |
void |
| ) |
|
◆ generateVertexReweighted()
CLHEP::HepLorentzVector CosmicGenerator::generateVertexReweighted |
( |
void |
| ) |
|
Definition at line 158 of file CosmicGenerator.cxx.
180 float ran_one = CLHEP::RandFlat::shoot(engine,0.,1.);
182 r_val = ran_one*max_r;
183 float ran_two = CLHEP::RandFlat::shoot(engine,0.,1.);
190 r_val = std::sqrt(
m_radius*max_r*ran_one);
194 float ran_three= CLHEP::RandFlat::shoot(engine, 0.,2*
M_PI);
195 float x_val = r_val*
cos(ran_three);
196 float z_val = r_val*
sin(ran_three);
◆ genFinalize()
StatusCode CosmicGenerator::genFinalize |
( |
| ) |
|
|
virtual |
For finalising the generator, if required.
Reimplemented from GenModule.
Definition at line 554 of file CosmicGenerator.cxx.
560 ATH_MSG_INFO(
"********************************************");
561 ATH_MSG_INFO(
"** you have run CosmicGenerator with some ");
565 ATH_MSG_INFO(
"********************************************");
570 ATH_MSG_INFO(
"**********************************************");
571 ATH_MSG_INFO(
"** you have run CosmicGenerator with some ");
572 ATH_MSG_INFO(
"** optimizations for SR1 SCT/TRT simulation");
575 ATH_MSG_INFO(
"**********************************************");
580 ATH_MSG_INFO(
"**********************************************");
581 ATH_MSG_INFO(
"** you have run CosmicGenerator with some ");
582 ATH_MSG_INFO(
"** optimizations for SR1 SCT/TRT EndcapC simulation");
585 ATH_MSG_INFO(
"**********************************************");
591 ATH_MSG_INFO(
"***************************************************");
592 ATH_MSG_INFO(
"** you have run CosmicGenerator with some ");
593 ATH_MSG_INFO(
"** optimizations for SR1 Pixel EndCap simulation");
596 ATH_MSG_INFO(
"***************************************************");
599 ATH_MSG_INFO(
"***************************************************");
600 ATH_MSG_INFO(
" You have swapped Y- and Z-axis, i.e. muons are ");
602 ATH_MSG_INFO(
"***************************************************");
609 ATH_MSG_INFO(
"***************************************************");
610 ATH_MSG_INFO(
"** you have run CosmicGenerator with some " );
614 ATH_MSG_INFO(
"***************************************************");
617 return StatusCode::SUCCESS;
◆ genInitialize()
StatusCode CosmicGenerator::genInitialize |
( |
| ) |
|
|
virtual |
For initializing the generator, if required.
Reimplemented from GenModule.
Definition at line 88 of file CosmicGenerator.cxx.
108 ATH_MSG_INFO(
"Accepted diff flux after E and cos(theta) cuts = " << flux_withCT <<
" /cm^2/s" );
111 ATH_MSG_INFO(
"Accepted total flux after E and cos(theta) cuts = " <<
121 return StatusCode::FAILURE;
128 return StatusCode::SUCCESS;
◆ genuserInitialize()
virtual StatusCode GenModule::genuserInitialize |
( |
| ) |
|
|
inlinevirtualinherited |
For initialization of user code, if required. Called after genInitialize.
Reimplemented in Pythia8B_i.
Definition at line 64 of file GenModule.h.
64 {
return StatusCode::SUCCESS; }
◆ getRandomEngine() [1/2]
CLHEP::HepRandomEngine * GenModule::getRandomEngine |
( |
const std::string & |
streamName, |
|
|
const EventContext & |
ctx |
|
) |
| const |
|
protectedinherited |
◆ getRandomEngine() [2/2]
CLHEP::HepRandomEngine * GenModule::getRandomEngine |
( |
const std::string & |
streamName, |
|
|
unsigned long int |
randomSeedOffset, |
|
|
const EventContext & |
ctx |
|
) |
| const |
|
protectedinherited |
◆ getRandomEngineDuringInitialize()
CLHEP::HepRandomEngine * GenModule::getRandomEngineDuringInitialize |
( |
const std::string & |
streamName, |
|
|
unsigned long int |
randomSeedOffset, |
|
|
unsigned int |
conditionsRun = 1 , |
|
|
unsigned int |
lbn = 1 |
|
) |
| const |
|
protectedinherited |
Definition at line 53 of file GenModule.cxx.
58 ctx.setEventID (EventIDBase (conditionsRun,
59 EventIDBase::UNDEFEVT,
60 EventIDBase::UNDEFNUM,
61 EventIDBase::UNDEFNUM,
◆ GeVToMeV()
void GenBase::GeVToMeV |
( |
HepMC::GenEvent * |
evt | ) |
|
|
protectedinherited |
Scale event energies/momenta by x 1000.
- Todo:
- Add HepMC units awareness and do it differently when HepMC provides this functionality directly (and reference-based FourVector accessors)
Definition at line 58 of file GenBase.cxx.
59 for (HepMC::GenEvent::particle_iterator
p =
evt->particles_begin();
p !=
evt->particles_end(); ++
p) {
60 const HepMC::FourVector fv((*p)->momentum().px() * 1000,
61 (*p)->momentum().py() * 1000,
62 (*p)->momentum().pz() * 1000,
63 (*p)->momentum().e() * 1000);
64 (*p)->set_momentum(fv);
65 (*p)->set_generated_mass(1000 * (*p)->generated_mass());
◆ initialize()
StatusCode GenModule::initialize |
( |
| ) |
|
|
virtualinherited |
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ MeVToGeV()
void GenBase::MeVToGeV |
( |
HepMC::GenEvent * |
evt | ) |
|
|
protectedinherited |
Scale event energies/momenta by x 1/1000.
Definition at line 68 of file GenBase.cxx.
69 for (HepMC::GenEvent::particle_iterator
p =
evt->particles_begin();
p !=
evt->particles_end(); ++
p) {
70 const HepMC::FourVector fv((*p)->momentum().px() / 1000,
71 (*p)->momentum().py() / 1000,
72 (*p)->momentum().pz() / 1000,
73 (*p)->momentum().e() / 1000);
74 (*p)->set_momentum(fv);
75 (*p)->set_generated_mass((*p)->generated_mass() / 1000);
◆ mmTocm()
void GenBase::mmTocm |
( |
HepMC::GenEvent * |
evt | ) |
|
|
protectedinherited |
Scale event lengths by x 1/10.
Definition at line 87 of file GenBase.cxx.
88 for (HepMC::GenEvent::vertex_iterator vtx =
evt->vertices_begin(); vtx !=
evt->vertices_end(); ++vtx) {
89 const HepMC::FourVector fv((*vtx)->position().x() / 10,
90 (*vtx)->position().y() / 10,
91 (*vtx)->position().z() / 10,
92 (*vtx)->position().t() / 10);
93 (*vtx)->set_position(fv);
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ particleData()
const HepPDT::ParticleData* GenBase::particleData |
( |
int |
pid | ) |
const |
|
inlineinherited |
Access an element in the particle data table.
Definition at line 126 of file GenBase.h.
◆ particleTable()
const HepPDT::ParticleDataTable& GenBase::particleTable |
( |
| ) |
const |
|
inlineinherited |
Get a particle data table.
Definition at line 118 of file GenBase.h.
◆ partPropSvc()
Access the particle property service.
Definition at line 113 of file GenBase.h.
◆ pathLengthInRock()
double CosmicGenerator::pathLengthInRock |
( |
double |
xgen, |
|
|
double |
ygen, |
|
|
double |
zgen, |
|
|
double |
theta, |
|
|
double |
phi |
|
) |
| |
|
private |
Definition at line 694 of file CosmicGenerator.cxx.
699 double p14_z = 13500;
700 double p14_radius = 9000.;
702 double p16_z = -20000;
703 double p16_radius = 6300.;
714 double t = (ygen-
y0)/costh;
715 double x0 = xgen +
t*sinth*cosphi;
716 double z0 = zgen +
t*sinth*sinphi;
719 double full_distance = (
y0-
y1)/costh;
722 double z_mid14 = (
x0-p14_x)*sinphi-(
z0-p14_z)*cosphi;
723 double min_dist14 = std::abs(z_mid14);
724 double shaft_distance14 = 0.;
725 if (min_dist14<p14_radius) {
728 double z_plus14 = -cosphi*z_mid14+sinphi*std::sqrt(
std::pow(p14_radius,2.)-
std::pow(z_mid14,2.)) + p14_z;
729 double z_minus14 = -cosphi*z_mid14-sinphi*std::sqrt(
std::pow(p14_radius,2.)-
std::pow(z_mid14,2.)) + p14_z;
732 double y_plus14 =
y0-costh*(z_plus14-
z0)/sinth/sinphi;
733 double y_minus14 =
y0-costh*(z_minus14-
z0)/sinth/sinphi;
734 double y_great14 = y_plus14>y_minus14 ? y_plus14 : y_minus14;
735 double y_less14 = y_plus14>y_minus14 ? y_minus14 : y_plus14;
738 if ( (y_great14>
y1) && (y_less14<
y0) ) {
739 double y_top14 = y_great14<
y0 ? y_great14 :
y0;
740 double y_bottom14 = y_less14>
y1 ? y_less14 :
y1;
741 shaft_distance14 = (y_top14-y_bottom14)/costh;
746 double z_mid16 = (
x0-p16_x)*sinphi-(
z0-p16_z)*cosphi;
747 double min_dist16 = std::abs(z_mid16);
748 double shaft_distance16 = 0.;
749 if (min_dist16<p16_radius) {
752 double z_plus16 = -cosphi*z_mid16+sinphi*std::sqrt(
std::pow(p16_radius,2.)-
std::pow(z_mid16,2.)) + p16_z;
753 double z_minus16 = -cosphi*z_mid16-sinphi*std::sqrt(
std::pow(p16_radius,2.)-
std::pow(z_mid16,2.)) + p16_z;
756 double y_plus16 =
y0-costh*(z_plus16-
z0)/sinth/sinphi;
757 double y_minus16 =
y0-costh*(z_minus16-
z0)/sinth/sinphi;
758 double y_great16 = y_plus16>y_minus16 ? y_plus16 : y_minus16;
759 double y_less16 = y_plus16>y_minus16 ? y_minus16 : y_plus16;
762 if ( (y_great16>
y1) && (y_less16<
y0) ) {
763 double y_top16 = y_great16<
y0 ? y_great16 :
y0;
764 double y_bottom16 = y_less16>
y1 ? y_less16 :
y1;
765 shaft_distance16 = (y_top16-y_bottom16)/costh;
769 double rock_distance = full_distance - shaft_distance14-shaft_distance16;
770 return rock_distance;
◆ pdt()
const HepPDT::ParticleDataTable& GenBase::pdt |
( |
| ) |
const |
|
inlineinherited |
Shorter alias to get a particle data table.
Definition at line 123 of file GenBase.h.
◆ pointsAtPixels()
bool CosmicGenerator::pointsAtPixels |
( |
double |
xgen, |
|
|
double |
ygen, |
|
|
double |
zgen, |
|
|
double |
theta, |
|
|
double |
phi |
|
) |
| |
|
private |
Definition at line 775 of file CosmicGenerator.cxx.
785 double t = ygen/costh;
786 double x_pos = xgen +
t*sinth*cosphi;
787 double z_pos = zgen +
t*sinth*sinphi;
◆ renounce()
◆ renounceArray()
◆ sysInitialize()
StatusCode AthAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ COSMIC_RANDOM_ENGINE
CLHEP::HepRandomEngine * CosmicGenerator::COSMIC_RANDOM_ENGINE {} |
|
static |
Static pointer to random number generator for use by.
Definition at line 89 of file CosmicGenerator.h.
◆ m_accepted
int CosmicGenerator::m_accepted {0} |
|
private |
◆ m_cavOpt
BooleanProperty CosmicGenerator::m_cavOpt {this, "OptimizeForCavern", false} |
|
private |
◆ m_center
CLHEP::Hep3Vector CosmicGenerator::m_center |
|
private |
◆ m_ctcut
FloatProperty CosmicGenerator::m_ctcut {this, "ctcut", 0.35} |
|
private |
◆ m_detStore
◆ m_doAimedAtPixelsCut
BooleanProperty CosmicGenerator::m_doAimedAtPixelsCut {this, "doAimedAtPixelsCut", false} |
|
private |
◆ m_doPathlengthCut
BooleanProperty CosmicGenerator::m_doPathlengthCut {this, "doPathLengthCut", false} |
|
private |
◆ m_doReweighting
BooleanProperty CosmicGenerator::m_doReweighting {this, "doReweighting", false} |
|
private |
◆ m_dsid
IntegerProperty CosmicGenerator::m_dsid {this, "Dsid", 999999, "Dataset ID number"} |
|
private |
◆ m_emax
FloatProperty CosmicGenerator::m_emax {this, "emax", 100.*m_GeV} |
|
private |
◆ m_emin
FloatProperty CosmicGenerator::m_emin {this, "emin", 10.*m_GeV} |
|
private |
◆ m_energyCutThreshold
DoubleProperty CosmicGenerator::m_energyCutThreshold {this, "energyCutThreshold", 1.0} |
|
private |
◆ m_events
int CosmicGenerator::m_events {0} |
|
private |
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthAlgorithm::m_extendedExtraObjects |
|
privateinherited |
◆ m_exzCut
BooleanProperty CosmicGenerator::m_exzCut {this, "ExzCut", false} |
|
private |
◆ m_ffile
std::ifstream CosmicGenerator::m_ffile |
|
private |
◆ m_fourMom
std::vector<CLHEP::HepLorentzVector> CosmicGenerator::m_fourMom |
|
private |
◆ m_fourPos
std::vector<CLHEP::HepLorentzVector> CosmicGenerator::m_fourPos |
|
private |
◆ m_GeV
constexpr float CosmicGenerator::m_GeV = 1000.f |
|
staticconstexprprivate |
◆ m_incidentSvc
ServiceHandle<IIncidentSvc> GenModule::m_incidentSvc {this, "IncidentSvc", "IncidentSvc"} |
|
privateinherited |
Handle on the incident service.
Definition at line 101 of file GenModule.h.
◆ m_infile
StringProperty CosmicGenerator::m_infile {this, "eventfile", "NONE"} |
|
private |
◆ m_IPx
FloatProperty CosmicGenerator::m_IPx {this, "IPx", 0.f} |
|
private |
◆ m_IPy
FloatProperty CosmicGenerator::m_IPy {this, "IPy", 0.f} |
|
private |
◆ m_IPz
FloatProperty CosmicGenerator::m_IPz {this, "IPz", 0.f} |
|
private |
◆ m_isAfterburner
BooleanProperty GenModule::m_isAfterburner {this, "IsAfterburner", false, "Set true if generator modifies existing events rather than creating new ones"} |
|
protectedinherited |
Flag for normal vs. afterburner generators.
Definition at line 87 of file GenModule.h.
◆ m_mcEventKey
std::string GenBase::m_mcEventKey {} |
|
protectedinherited |
StoreGate key for the MC event collection (defaults to GEN_EVENT)
Definition at line 137 of file GenBase.h.
◆ m_mcevents_const
Const handle to the MC event collection.
Definition at line 163 of file GenBase.h.
◆ m_mkMcEvent
BooleanProperty GenBase::m_mkMcEvent {this, "MakeMcEvent", false, "Create a new MC event collection if it doesn't exist"} |
|
protectedinherited |
Flag to determine if a new MC event collection should be made if it doesn't exist.
Definition at line 139 of file GenBase.h.
◆ m_mm
constexpr float CosmicGenerator::m_mm = 10.f |
|
staticconstexprprivate |
◆ m_muonECOpt
BooleanProperty CosmicGenerator::m_muonECOpt {this, "OptimizeForMuonEndCap", false} |
|
private |
◆ m_pdgCode
std::vector<int> CosmicGenerator::m_pdgCode |
|
private |
◆ m_phimax
FloatProperty CosmicGenerator::m_phimax {this, "PhiMax", M_PI} |
|
private |
◆ m_phimin
FloatProperty CosmicGenerator::m_phimin {this, "PhiMin", -1.*M_PI} |
|
private |
◆ m_pixelplanemaxx
DoubleProperty CosmicGenerator::m_pixelplanemaxx {this, "pixelplane_maxx", 1150.} |
|
private |
◆ m_pixelplanemaxz
DoubleProperty CosmicGenerator::m_pixelplanemaxz {this, "pixelplane_maxz", 1650.} |
|
private |
◆ m_polarization
std::vector<HepMC::Polarization> CosmicGenerator::m_polarization |
|
private |
◆ m_ppSvc
ServiceHandle<IPartPropSvc> GenBase::m_ppSvc {this, "PartPropSvc", "PartPropSvc"} |
|
privateinherited |
Handle on the particle property service.
Definition at line 160 of file GenBase.h.
◆ m_printEvent
IntegerProperty CosmicGenerator::m_printEvent {this, "PrintEvent", 10} |
|
private |
◆ m_printMod
IntegerProperty CosmicGenerator::m_printMod {this, "PrintMod", 100} |
|
private |
◆ m_radius
FloatProperty CosmicGenerator::m_radius {this, "Radius", 0.f} |
|
private |
◆ m_randomSeed
IntegerProperty GenModule::m_randomSeed {this, "RandomSeed", 1234567, "Random seed for the built-in random engine"} |
|
protectedinherited |
Seed for random number engine.
Definition at line 84 of file GenModule.h.
◆ m_readfile
bool CosmicGenerator::m_readfile {false} |
|
private |
◆ m_rejected
int CosmicGenerator::m_rejected {0} |
|
private |
◆ m_rmax
FloatProperty CosmicGenerator::m_rmax {this, "RMax", 10000000.f} |
|
private |
◆ m_rndmSvc
◆ m_rvertmax
DoubleProperty CosmicGenerator::m_rvertmax {this, "rvert_max", 300.*m_mm} |
|
private |
◆ m_srOneOpt
IntegerProperty CosmicGenerator::m_srOneOpt {this, "OptimizeForSR1", 0} |
|
private |
◆ m_srOnePixECOpt
BooleanProperty CosmicGenerator::m_srOnePixECOpt {this, "OptimizeForSR1PixelEndCap", false} |
|
private |
◆ m_swapYZAxis
BooleanProperty CosmicGenerator::m_swapYZAxis {this, "SwapYZAxis", false} |
|
private |
◆ m_thetamax
FloatProperty CosmicGenerator::m_thetamax {this, "ThetaMax", 1.f} |
|
private |
◆ m_thetamin
FloatProperty CosmicGenerator::m_thetamin {this, "ThetaMin", 0.f} |
|
private |
◆ m_tmax
FloatProperty CosmicGenerator::m_tmax {this, "tmax", 0.f} |
|
private |
◆ m_tmin
FloatProperty CosmicGenerator::m_tmin {this, "tmin", 0.f} |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
◆ m_xhig
FloatProperty CosmicGenerator::m_xhig {this, "xvert_hig", 10.*m_mm} |
|
private |
◆ m_xlow
FloatProperty CosmicGenerator::m_xlow {this, "xvert_low", 0.*m_mm} |
|
private |
◆ m_ysurface
DoubleProperty CosmicGenerator::m_ysurface {this, "ysurface", 81.*m_mm} |
|
private |
◆ m_yval
FloatProperty CosmicGenerator::m_yval {this, "yvert_val", 81.*m_mm} |
|
private |
◆ m_zhig
FloatProperty CosmicGenerator::m_zhig {this, "zvert_hig", 10.*m_mm} |
|
private |
◆ m_zlow
FloatProperty CosmicGenerator::m_zlow {this, "zvert_low", 0.*m_mm} |
|
private |
◆ m_zpos
FloatProperty CosmicGenerator::m_zpos {this, "Zposition", 14500.f} |
|
private |
The documentation for this class was generated from the following files:
HepMC::GenVertex * GenVertexPtr
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
path
python interpreter configuration --------------------------------------—
Scalar phi() const
phi method
const_pointer_type cptr()
Dereference the pointer.
void SetCosCut(float ctcut)
virtual StatusCode fillEvt(HepMC::GenEvent *evt)=0
For filling the HepMC event object.
virtual StatusCode callGenerator()
For calling the generator on each iteration of the event loop.
const McEventCollection * events_const() const
Access the current event's McEventCollection (const)
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
DoubleProperty m_pixelplanemaxx
BooleanProperty m_doPathlengthCut
std::vector< int > m_pdgCode
DoubleProperty m_ysurface
StatusCode accept(const xAOD::Muon *mu)
Scalar theta() const
theta method
GenParticle * GenParticlePtr
ServiceHandle< IIncidentSvc > m_incidentSvc
Handle on the incident service.
void set_polarization(T &a, const Polarization &b)
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
static CLHEP::HepRandomEngine * COSMIC_RANDOM_ENGINE
Static pointer to random number generator for use by.
GenEvent * newGenEvent(const int a, const int b)
BooleanProperty m_srOnePixECOpt
#define ATH_MSG_VERBOSE(x)
const std::string & key() const
Return the StoreGate ID for the referenced object.
bool pointsAtPixels(double xgen, double ygen, double zgen, double theta, double phi)
void fillBarcodesAttribute(GenEvent *)
std::vector< CLHEP::HepLorentzVector > m_fourMom
CLHEP::HepRandomEngine * getRandomEngine(const std::string &streamName, const EventContext &ctx) const
virtual void setOwner(IDataHandleHolder *o)=0
CLHEP::HepLorentzVector GenerateEvent(void)
DoubleProperty m_pixelplanemaxz
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
IntegerProperty m_printEvent
virtual StatusCode genuserInitialize()
For initialization of user code, if required. Called after genInitialize.
ServiceHandle< IAthRNGSvc > m_rndmSvc
Data members.
ServiceHandle< IPartPropSvc > m_ppSvc
Handle on the particle property service.
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
std::vector< CLHEP::HepLorentzVector > m_fourPos
virtual StatusCode genInitialize()
For initializing the generator, if required.
BooleanProperty m_swapYZAxis
virtual StatusCode sysInitialize() override
Override sysInitialize.
POOL::TEvent event(POOL::TEvent::kClassAccess)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
GenVertexPtr newGenVertexPtr(const HepMC::FourVector &pos=HepMC::FourVector(0.0, 0.0, 0.0, 0.0), const int i=0)
BooleanProperty m_doAimedAtPixelsCut
DoubleProperty m_energyCutThreshold
::StatusCode StatusCode
StatusCode definition for legacy code.
SG::ReadHandleKey< McEventCollection > m_mcevents_const
Const handle to the MC event collection.
BooleanProperty m_isAfterburner
Flag for normal vs. afterburner generators.
static CosmicGun * GetCosmicGun(void)
cut
This script demonstrates how to call a C++ class from Python Also how to use PyROOT is shown.
virtual StatusCode genFinalize()
For finalising the generator, if required.
#define CHECK(...)
Evaluate an expression and check for errors.
CLHEP::Hep3Vector m_center
BooleanProperty m_doReweighting
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
CLHEP::HepLorentzVector generateVertex(void)
IntegerProperty m_srOneOpt
virtual bool isValid() override final
Can the handle be successfully dereferenced?
float InitializeGenerator()
virtual void renounce()=0
const HepPDT::ParticleDataTable & particleTable() const
Get a particle data table.
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
std::vector< HepMC::Polarization > m_polarization
GenModule(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
A wrapper class for event-slot-local random engines.
double charge(const T &p)
CLHEP::HepLorentzVector generateVertexReweighted(void)
void PrintLevel(int printevt, int printmod)
IntegerProperty m_printMod
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
DataObjIDColl m_extendedExtraObjects
DoubleProperty m_rvertmax
GenParticlePtr newGenParticlePtr(const HepMC::FourVector &mom=HepMC::FourVector(0.0, 0.0, 0.0, 0.0), int pid=0, int status=0)
#define ATH_MSG_WARNING(x)
IntegerProperty m_randomSeed
Seed for random number engine.
def delta_phi(phi1, phi2)
static constexpr float m_GeV
void SetEnergyRange(float emin, float emax)
const HepPDT::ParticleDataTable & pdt() const
Shorter alias to get a particle data table.
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
void calculateSeedsMC21(long *seeds, const std::string &algName, uint64_t ev, uint64_t run, uint64_t offset=0)
Set the random seed using a string (e.g.
bool exzCut(const CLHEP::Hep3Vector &pos, const CLHEP::HepLorentzVector &p)
static constexpr float m_mm
BooleanProperty m_muonECOpt
constexpr int pow(int base, int exp) noexcept
const HepPDT::ParticleData * particleData(int pid) const
Access an element in the particle data table.
double pathLengthInRock(double xgen, double ygen, double zgen, double theta, double phi)
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
void setExtendedEventContext(EventContext &ctx, ExtendedEventContext &&ectx)
Move an extended context into a context object.
virtual StatusCode initialize() override
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
CLHEP::HepRandomEngine * getRandomEngineDuringInitialize(const std::string &streamName, unsigned long int randomSeedOffset, unsigned int conditionsRun=1, unsigned int lbn=1) const