18 using namespace fastsim;
23 : cacheIdentifierTrackerRecoGeometry_(0),
24 cacheIdentifierIdealMagneticField_(0),
25 geometricSearchTracker_(nullptr),
26 magneticField_(nullptr),
27 useFixedMagneticFieldZ_(cfg.exists(
"magneticFieldZ")),
28 fixedMagneticFieldZ_(cfg.getUntrackedParameter<double>(
"magneticFieldZ", 0.)),
29 useTrackerRecoGeometryRecord_(cfg.getUntrackedParameter<bool>(
"useTrackerRecoGeometryRecord",
true)),
30 trackerAlignmentLabel_(cfg.getUntrackedParameter<std::
string>(
"trackerAlignmentLabel",
"")),
33 maxRadius_(cfg.getUntrackedParameter<double>(
"maxRadius", 500.)),
34 maxZ_(cfg.getUntrackedParameter<double>(
"maxZ", 1200.)),
35 barrelBoundary_(cfg.exists(
"trackerBarrelBoundary"))
37 forwardBoundary_(cfg.exists(
"trackerForwardBoundary"))
39 trackerBarrelBoundaryCfg_(barrelBoundary_
40 ? cfg.getParameter<edm::
ParameterSet>(
"trackerBarrelBoundary")
43 trackerForwardBoundaryCfg_(forwardBoundary_
44 ? cfg.getParameter<edm::
ParameterSet>(
"trackerForwardBoundary")
56 const std::map<std::string, fastsim::InteractionModel*>& interactionModelMap) {
112 <<
"barrel layers must be ordered according to increading radius"
113 <<
"\nbarrel layer " <<
index <<
" has radius smaller than or equal to radius of barrel layer " <<
index - 1
149 <<
"forward layers must be ordered according to increasing z"
150 <<
"forward layer " <<
index <<
" has z smaller than or equal to z of forward layer " <<
index - 1;
157 return magneticField_->inTesla(
GlobalPoint(position.X(), position.Y(), position.Z())).z();
162 <<
"\n# fastsim::Geometry"
163 <<
"\n## BarrelLayers:";
165 os <<
"\n " << *
layer <<
layer->getInteractionModels().size() <<
" interaction models";
167 os <<
"\n## ForwardLayers:";
169 os <<
"\n " << *
layer <<
layer->getInteractionModels().size() <<
" interaction models";
171 os <<
"\n-----------";
const bool useTrackerRecoGeometryRecord_
Use GeometricSearchTracker (active layers/reco geometry). Can be used to get position/radius of track...
unsigned long long cacheIdentifier() const
unsigned long long cacheIdentifierTrackerRecoGeometry_
Check interval of validity of the tracker geometry.
void update(const edm::EventSetup &iSetup, const std::map< std::string, InteractionModel * > &interactionModelMap)
Initializes the tracker geometry.
std::vector< std::unique_ptr< BarrelSimplifiedGeometry > > barrelLayers_
The vector of barrel layers (increasing radius)
const GeometricSearchTracker * geometricSearchTracker_
const MagneticField * magneticField_
The tracker geometry.
Global3DPoint GlobalPoint
const std::vector< edm::ParameterSet > forwardLayerCfg_
The config in which all parameters of the forward layers are defined.
const std::vector< edm::ParameterSet > barrelLayerCfg_
The config in which all parameters of the barrel layers are defined.
const double fixedMagneticFieldZ_
Use a uniform magnetic field or non-uniform from MagneticFieldRecord.
const double maxZ_
Upper bound of the radius of the whole tracker geometry.
constexpr std::array< uint8_t, layerIndexSize > layer
const edm::ParameterSet trackerForwardBoundaryCfg_
Hack to interface "old" calo to "new" tracking.
bool getData(T &iHolder) const
const std::string trackerAlignmentLabel_
The tracker alignment label.
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
std::unique_ptr< MagneticField > ownedMagneticField_
Needed to create a uniform magnetic field if speciefied in config.
edm::ESGetToken< GeometricSearchTracker, TrackerRecoGeometryRecord > geometricSearchTrackerESToken_
std::ostream & operator<<(std::ostream &os, const fastsim::Geometry &geometry)
const bool forwardBoundary_
Hack to interface "old" calo to "new" tracking.
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldESToken_
Constructs a tracker layer according to entry in python config (incl interaction models).
const edm::ParameterSet trackerBarrelBoundaryCfg_
Hack to interface "old" calo to "new" tracking.
Definition the tracker geometry (vectors of forward/barrel layers).
Geometry(const edm::ParameterSet &, edm::ConsumesCollector &&)
Constructor.
static int position[264][3]
std::vector< std::unique_ptr< ForwardSimplifiedGeometry > > forwardLayers_
The vector of forward layers (increasing Z-position)
std::unique_ptr< ForwardSimplifiedGeometry > createForwardSimplifiedGeometry(LayerType type, const edm::ParameterSet &cfg) const
Helper method for createSimplifiedGeometry(..) to create a forward layer (ForwardSimplifiedGeometry)...
std::unique_ptr< BarrelSimplifiedGeometry > createBarrelSimplifiedGeometry(const edm::ParameterSet &cfg) const
Helper method for createSimplifiedGeometry(..) to create a barrel layer (BarrelSimplifiedGeometry).
const bool useFixedMagneticFieldZ_
Needed to create a uniform magnetic field if speciefied in config.
~Geometry()
Default destructor.
double getMagneticFieldZ(const math::XYZTLorentzVector &position) const
Initializes the tracker geometry.
const bool barrelBoundary_
Upper bound of the length/2 (0 to +Z) of the whole tracker geometry.
unsigned long long cacheIdentifierIdealMagneticField_
Check interval of validity of the magnetic field.