11 : theGeometries(geos),
60 if (
theGeometries[idx]==0)
throw cms::Exception(
"NoGeometry") <<
"No Tracking Geometry is available for DetId " <<
id.rawId() << std::endl;
72 if( *
geom == 0 )
continue;
74 if(
detTypes.size() + ptr->size() < ptr->capacity()) ptr->resize(
detTypes.size() + ptr->size());
75 for(
auto detType =
detTypes.cbegin(), detTypeEnd =
detTypes.cend(); detType != detTypeEnd; ++detType )
76 ptr->push_back( *detType );
79 if(
theDetTypes.compare_exchange_strong(expect, ptr.get(), std::memory_order_acq_rel)) {
83 return *
theDetTypes.load(std::memory_order_acquire);
93 if( *
geom == 0 )
continue;
95 if(
detUnits.size() + ptr->size() < ptr->capacity()) ptr->resize(
detUnits.size() + ptr->size());
96 for(
auto detUnit =
detUnits.cbegin(), detUnitEnd =
detUnits.cend(); detUnit != detUnitEnd; ++detUnit )
97 ptr->push_back( *detUnit );
100 if(
theDetUnits.compare_exchange_strong(expect, ptr.get(), std::memory_order_acq_rel)) {
104 return *
theDetUnits.load(std::memory_order_acquire);
110 if (!
theDets.load(std::memory_order_acquire)) {
114 if( *
geom == 0 )
continue;
116 if(
dets.size() + ptr->size() < ptr->capacity()) ptr->resize(
dets.size() + ptr->size());
117 for(
auto det =
dets.cbegin(), detEnd =
dets.cend(); det != detEnd; ++det )
118 ptr->push_back( *det );
121 if(
theDets.compare_exchange_strong(expect, ptr.get(), std::memory_order_acq_rel)) {
125 return *
theDets.load(std::memory_order_acquire);
135 if( *
geom == 0 )
continue;
137 if(
detUnitIds.size() + ptr->size() < ptr->capacity()) ptr->resize(
detUnitIds.size() + ptr->size());
138 for(
auto detUnitId =
detUnitIds.cbegin(), detUnitIdEnd =
detUnitIds.cend(); detUnitId != detUnitIdEnd; ++detUnitId )
139 ptr->push_back( *detUnitId );
142 if(
theDetUnitIds.compare_exchange_strong(expect, ptr.get(), std::memory_order_acq_rel)) {
152 if (!
theDetIds.load(std::memory_order_acquire)) {
156 if( *
geom == 0 )
continue;
158 if(
detIds.size() + ptr->size() < ptr->capacity()) ptr->resize(
detIds.size() + ptr->size());
159 for(
auto detId =
detIds.cbegin(), detIdEnd =
detIds.cend(); detId != detIdEnd; ++detId )
160 ptr->push_back( *detId );
163 if(
theDetIds.compare_exchange_strong(expect, ptr.get(), std::memory_order_acq_rel)) {
167 return *
theDetIds.load(std::memory_order_acquire);
std::vector< const TrackingGeometry * > theGeometries
std::atomic< DetIdContainer * > theDetUnitIds
std::vector< GeomDet * > DetContainer
std::atomic< DetContainer * > theDets
virtual const GeomDet * idToDet(DetId) const
virtual const GeomDetUnit * idToDetUnit(DetId) const =0
Return the pointer to the GeomDetUnit corresponding to a given DetId.
virtual const GeomDetUnit * idToDetUnit(DetId) const
Return the pointer to the GeomDetUnit corresponding to a given DetId.
std::atomic< DetUnitContainer * > theDetUnits
std::atomic< DetIdContainer * > theDetIds
std::vector< GeomDetUnit * > DetUnitContainer
std::atomic< DetTypeContainer * > theDetTypes
const TrackingGeometry * slaveGeometry(DetId id) const
Return the pointer to the actual geometry for a given DetId.
virtual ~GlobalTrackingGeometry()
Destructor.
virtual const DetUnitContainer & detUnits() const
Returm a vector of all GeomDetUnit.
std::vector< GeomDetType * > DetTypeContainer
virtual const DetIdContainer & detIds() const
Returm a vector of all GeomDet DetIds (including those of GeomDetUnits)
virtual const DetContainer & dets() const
Returm a vector of all GeomDet (including all GeomDetUnits)
GlobalTrackingGeometry(std::vector< const TrackingGeometry * > &geos)
Constructor.
virtual const GeomDet * idToDet(DetId) const =0
tuple idx
DEBUGGING if hasattr(process,"trackMonIterativeTracking2012"): print "trackMonIterativeTracking2012 D...
virtual const DetTypeContainer & detTypes() const
Return a vector of all det types.
virtual const DetIdContainer & detUnitIds() const
Returm a vector of all GeomDetUnit DetIds.
std::vector< DetId > DetIdContainer