 |
ATLAS Offline Software
|
Go to the documentation of this file.
40 return StatusCode::SUCCESS;
46 for(
long unsigned int i=0;
i<HitCollections.size();++
i){
48 ATH_CHECK(HitsWriteHandles[
i].record(std::make_unique<SiHitCollection>(HitCollections[
i])));
51 return StatusCode::SUCCESS;
56 return StatusCode::SUCCESS;
60 std::shared_ptr<const Acts::TrackingGeometry> trackingGeometry,
61 const std::vector<ActsFatras::Hit>&
hits,
70 auto hit_geoid = hit.geometryId();
73 auto acts_surface = trackingGeometry->findSurface(hit_geoid);
91 double thickness = hitSiDetElement->
thickness();
98 Amg::Vector3D localDirection = sTransform.inverse().linear() * particleDir;
99 localDirection *= thickness/
cos(localDirection.theta());
101 int movingDirection = localDirection.z() > 0. ? 1 : -1;
103 double distX = localDirection.x();
104 double distY = localDirection.y();
106 double localEntryX = interX-0.5*distX;
107 double localEntryY = interY-0.5*distY;
108 double localExitX = interX+0.5*distX;
109 double localExitY = interY+0.5*distY;
112 Amg::Vector3D localEntry(hitTransform * (sTransform *
Amg::Vector3D(localEntryX,localEntryY,-0.5*movingDirection*thickness)));
114 const HepGeom::Point3D<double> localEntryHep( localEntry.x(), localEntry.y(), localEntry.z() );
115 const HepGeom::Point3D<double> localExitHep( localExit.x(), localExit.y(), localExit.z() );
117 auto isPixel=hitSiDetElement->
isPixel();
118 ATH_MSG_VERBOSE(
name() <<
" localEntryHep|localExitHep (atlas)" << localEntryHep <<
"|" << localExitHep);
126 auto siHit =
SiHit(localEntryHep,
141 ATH_MSG_VERBOSE(
name() <<
" convert and store 1 hit, total " << pixelSiHits.
size() <<
" Pixel | "<<sctSiHits.
size()<<
" SCT hits stored for particle" << isp);
def retrieve(aClass, aKey=None)
ActsFatrasWriteHandler(const std::string &, const std::string &, const IInterface *)
Constructor.
const TrkDetElementBase * associatedDetectorElement() const
return associated Detector Element
virtual StatusCode initialize() override
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
StatusCode WriteHits(std::vector< SiHitCollection > &HitCollections, const EventContext &ctx) const
Identifier associatedDetectorElementIdentifier() const
return Identifier of the associated Detector Element
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
int phi_module(const Identifier &id) const
#define ATH_MSG_VERBOSE(x)
const Amg::Vector3D & center() const
Returns the center position of the Surface.
std::vector< std::string > intersection(std::vector< std::string > &v1, std::vector< std::string > &v2)
constexpr double timeToAthena(const double actsT)
Converts a time unit from Acts to Athena units.
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
~ActsFatrasWriteHandler()
Destructor.
virtual bool isOnSurface(const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const
This method returns true if the GlobalPosition is on the Surface for both, within or without check of...
virtual StatusCode finalize() override
::StatusCode StatusCode
StatusCode definition for legacy code.
const Trk::Surface & atlasSurface() const
Return a shared pointer on the ATLAS surface associated with this identifier,.
Eigen::Affine3d Transform3D
int layer_disk(const Identifier &id) const
int eta_module(const Identifier &id) const
int layer_disk(const Identifier &id) const
Eigen::Matrix< double, 3, 1 > Vector3D
const SCT_ID * m_sctIdHelper
the SCT ID helper
const HepMcParticleLink * getParticleLink() const
HepMcParticleLink accessors.
std::array< StringProperty, 2 > m_HitCollectionNames
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const =0
Specified by each surface type: GlobalToLocal method without dynamic memory allocation - boolean chec...
def time(flags, cells_name, *args, **kw)
int eta_module(const Identifier &id) const
int side(const Identifier &id) const
SG::WriteHandleKeyArray< SiHitCollection > m_HitCollectionKeys
int phi_module(const Identifier &id) const
const GeoTrf::Transform3D & transformHit() const
Local (simulation/hit frame) to global transform.
void createHits(const ISF::ISFParticle &isp, std::shared_ptr< const Acts::TrackingGeometry > trackingGeometry, const std::vector< ActsFatras::Hit > &hits, SiHitCollection &pixelSiHits, SiHitCollection &sctSiHits) const
Loop over the hits and call the hit creator, provide the ActsFatras::Particle to create the hits.
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
virtual const Amg::Vector3D & center() const =0
Return the center of the element.
const PixelID * m_pixIdHelper
the Pixel ID helper
void push_back(const T &t)