ATLAS Offline Software
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
FPGATrackSimSGToRawHitsTool Class Reference

Extract the raw hists from info in SG. More...

#include <FPGATrackSimSGToRawHitsTool.h>

Inheritance diagram for FPGATrackSimSGToRawHitsTool:
Collaboration diagram for FPGATrackSimSGToRawHitsTool:

Public Member Functions

 FPGATrackSimSGToRawHitsTool (const std::string &, const std::string &, const IInterface *)
 
virtual ~FPGATrackSimSGToRawHitsTool ()
 
virtual StatusCode initialize () override
 
virtual StatusCode finalize () override
 
virtual StatusCode readData (FPGATrackSimEventInputHeader *header, const EventContext &eventContext) override
 This function get from the SG the inner detector raw hits and prepares them for FPGATrackSim simulation. More...
 

Private Types

typedef std::map< Identifier, int > HitIndexMap
 

Private Member Functions

StatusCode readRawSilicon (HitIndexMap &hitIndexMap, const EventContext &eventContext)
 
StatusCode readTruthTracks (std::vector< FPGATrackSimTruthTrack > &truth, const EventContext &eventContext)
 
StatusCode readOfflineTracks (std::vector< FPGATrackSimOfflineTrack > &Track, const EventContext &eventContext)
 
StatusCode readOfflineClusters (std::vector< FPGATrackSimCluster > &Clusters, const EventContext &eventContext)
 
StatusCode readPixelSimulation (HitIndexMap &hitIndexMap, unsigned int &hitIndex, const EventContext &eventContext)
 
StatusCode readStripSimulation (HitIndexMap &hitIndexMap, unsigned int &hitIndex, const EventContext &eventContext)
 
StatusCode dumpPixelClusters (HitIndexMap &pixelClusterIndexMap, const EventContext &eventContext)
 
void getTruthInformation (InDetSimDataCollection::const_iterator &iter, FPGATrackSimInputUtils::ParentBitmask &parentMask, HepMcParticleLink::ExtendedBarCode &bestExtcode, HepMC::ConstGenParticlePtr &bestParent)
 

Private Attributes

ToolHandle< Trk::ITruthToTrackm_truthToTrack {this, "TruthToTrackTool", "Trk::TruthToTrack/InDetTruthToTrack" }
 tool to create track parameters from a gen particle More...
 
ToolHandle< Trk::IExtrapolatorm_extrapolator {this, "Extrapolator", "Trk::Extrapolator/AtlasExtrapolator"}
 ToolHandle for Extrapolator. More...
 
SG::ReadCondHandleKey< InDet::BeamSpotDatam_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }
 
SG::ReadHandleKey< xAOD::EventInfom_eventInfoKey { this, "EventInfo", "EventInfo" }
 
SG::ReadHandleKey< InDet::SiClusterContainerm_pixelClusterContainerKey { this, "pixelClustersName", "ITkPixelClusters" }
 
SG::ReadHandleKey< InDet::SiClusterContainerm_sctClusterContainerKey { this, "SCT_ClustersName", "SCT_Clusters" }
 
SG::ReadHandleKey< xAOD::TrackParticleContainerm_offlineTracksKey { this, "OfflineTracks", "InDetTrackParticles"}
 
SG::ReadHandleKey< McEventCollectionm_mcCollectionKey { this, "McTruth", "TruthEvent" }
 
SG::ReadHandleKey< InDetSimDataCollectionm_pixelSDOKey { this, "PixelSDO", "ITkPixelSDO_Map" }
 
SG::ReadHandleKey< InDetSimDataCollectionm_stripSDOKey { this, "StripSDO", "ITkStripSDO_Map" }
 
SG::ReadHandleKey< PixelRDO_Containerm_pixelRDOKey { this, "PixelRDO", "ITkPixelRDOs" }
 
SG::ReadHandleKey< SCT_RDO_Containerm_stripRDOKey { this, "StripRDO", "ITkStripRDOs" }
 
Gaudi::Property< std::string > m_tracksTruthName { this, "OfflineName", "InDetTrackParticles", "name of offline tracks collection" }
 
Gaudi::Property< bool > m_dumpHitsOnTracks { this, "dumpHitsOnTracks", false }
 
Gaudi::Property< bool > m_dumpTruthIntersections { this, "dumpTruthIntersections", false }
 
Gaudi::Property< bool > m_readOfflineClusters { this, "ReadOfflineClusters", true, "flag to enable the offline cluster save" }
 
Gaudi::Property< bool > m_readTruthTracks { this, "ReadTruthTracks", true, "flag to enable the truth tracking save" }
 
Gaudi::Property< bool > m_readOfflineTracks { this, "ReadOfflineTracks", true, "flag to enable the offline tracking save" }
 
Gaudi::Property< bool > m_UseNominalOrigin { this, "UseNominalOrigin", false, "if true truth values are always with respect to (0,0,0)" }
 
Gaudi::Property< double > m_maxEta { this, "maxEta", 3.3 }
 
Gaudi::Property< double > m_minPt { this, "minPt", .8*CLHEP::GeV }
 
const PixelIDm_pixelId = nullptr
 
const SCT_IDm_sctId = nullptr
 
const InDetDD::SiDetectorManagerm_PIX_mgr = nullptr
 
const InDetDD::SiDetectorManagerm_SCT_mgr = nullptr
 
const HepPDT::ParticleDataTable * m_particleDataTable = nullptr
 
FPGATrackSimEventInputHeaderm_eventHeader = nullptr
 

Detailed Description

Extract the raw hists from info in SG.

Definition at line 45 of file FPGATrackSimSGToRawHitsTool.h.

Member Typedef Documentation

◆ HitIndexMap

typedef std::map<Identifier, int> FPGATrackSimSGToRawHitsTool::HitIndexMap
private

Definition at line 94 of file FPGATrackSimSGToRawHitsTool.h.

Constructor & Destructor Documentation

◆ FPGATrackSimSGToRawHitsTool()

FPGATrackSimSGToRawHitsTool::FPGATrackSimSGToRawHitsTool ( const std::string &  algname,
const std::string &  name,
const IInterface *  ifc 
)

Definition at line 46 of file FPGATrackSimSGToRawHitsTool.cxx.

46  :
47  base_class(algname, name, ifc)
48 {}

◆ ~FPGATrackSimSGToRawHitsTool()

virtual FPGATrackSimSGToRawHitsTool::~FPGATrackSimSGToRawHitsTool ( )
inlinevirtual

Definition at line 49 of file FPGATrackSimSGToRawHitsTool.h.

49 { ; }

Member Function Documentation

◆ dumpPixelClusters()

StatusCode FPGATrackSimSGToRawHitsTool::dumpPixelClusters ( HitIndexMap pixelClusterIndexMap,
const EventContext &  eventContext 
)
private

Definition at line 411 of file FPGATrackSimSGToRawHitsTool.cxx.

411  {
412  unsigned int pixelClusterIndex = 0;
413  auto pixelSDOHandle = SG::makeHandle(m_pixelSDOKey, eventContext);
414  auto pixelClusterContainerHandle = SG::makeHandle(m_pixelClusterContainerKey, eventContext);
415  // Dump pixel clusters. They're in m_pixelContainer
416  for (const InDet::SiClusterCollection* pixelClusterCollection : *pixelClusterContainerHandle) {
417  if (pixelClusterCollection == nullptr) {
418  ATH_MSG_DEBUG("pixelClusterCollection not available!");
419  continue;
420  }
421 
422  for (const InDet::SiCluster* cluster : *pixelClusterCollection) {
423  Identifier theId = cluster->identify();
424  // if there is simulation truth available, try to retrieve the "most likely" barcode for this pixel cluster.
425  HepMC::ConstGenParticlePtr bestParent = nullptr;
428  if (!m_pixelSDOKey.empty()) {
429  for (const Identifier& rdoId : cluster->rdoList()) {
430  const InDetDD::SiDetectorElement* sielement = m_PIX_mgr->getDetectorElement(rdoId);
431  assert(sielement);
432  InDetDD::SiCellId cellID = sielement->cellIdFromIdentifier(rdoId);
433 
434  const int nCells = sielement->numberOfConnectedCells(cellID);
435  InDetSimDataCollection::const_iterator iter(pixelSDOHandle->find(rdoId));
436  // this might be the ganged pixel copy.
437  if (nCells > 1 && iter == pixelSDOHandle->end()) {
439  for (int ii = 0; ii < nCells && iter == pixelSDOHandle->end(); ++ii) {
440  iter = pixelSDOHandle->find(sielement->identifierFromCellId(sielement->design().connectedCell(SiRC, ii)));
441  }
442  } // end search for correct ganged pixel
443  // if SDO found for this pixel, associate the particle. otherwise leave unassociated.
444  if (iter != pixelSDOHandle->end()) getTruthInformation(iter, parentMask, bestExtcode, bestParent);
445  } // if we have pixel sdo's available
446  }
447  pixelClusterIndexMap[theId] = pixelClusterIndex;
448  pixelClusterIndex++;
449  } // End loop over pixel clusters
450  } // End loop over pixel cluster collection
451 
452  return StatusCode::SUCCESS;
453 }

◆ finalize()

StatusCode FPGATrackSimSGToRawHitsTool::finalize ( )
overridevirtual

Definition at line 85 of file FPGATrackSimSGToRawHitsTool.cxx.

85  {
86  return StatusCode::SUCCESS;
87 }

◆ getTruthInformation()

void FPGATrackSimSGToRawHitsTool::getTruthInformation ( InDetSimDataCollection::const_iterator &  iter,
FPGATrackSimInputUtils::ParentBitmask parentMask,
HepMcParticleLink::ExtendedBarCode bestExtcode,
HepMC::ConstGenParticlePtr bestParent 
)
private

Definition at line 755 of file FPGATrackSimSGToRawHitsTool.cxx.

758  {
759 
760  const InDetSimData& sdo(iter->second);
761  const std::vector<InDetSimData::Deposit>& deposits(sdo.getdeposits());
762  for (const InDetSimData::Deposit& dep : deposits) {
763 
764  const HepMcParticleLink& particleLink = dep.first;
765  // RDO's without SDO's are delta rays or detector noise.
766  if (!particleLink.isValid()) { continue; }
767  const float genEta = particleLink->momentum().pseudoRapidity();
768  const float genPt = particleLink->momentum().perp(); // MeV
769  // reject unstable particles
770  if (!MC::isStable(particleLink.cptr())) { continue; }
771  // reject secondaries and low pT (<400 MeV) pileup
772  if (HepMC::is_simulation_particle(particleLink.cptr()) ||particleLink.barcode() == 0) { continue; } // FIXME
773  // reject far forward particles
774  if (std::fabs(genEta) > m_maxEta) { continue; }
775  // "bestParent" is the highest pt particle
776  if (bestParent == nullptr || bestParent->momentum().perp() < genPt) {
777  bestParent = particleLink.cptr();
778  bestExtcode = HepMcParticleLink::ExtendedBarCode(particleLink.barcode(), particleLink.eventIndex(), HepMcParticleLink::IS_EVENTNUM, HepMcParticleLink::IS_BARCODE); // FIXME barcode-based-syntax
779  }
780  #ifdef HEPMC3
781  parentMask |= FPGATrackSimInputUtils::construct_truth_bitmap(std::shared_ptr<const HepMC3::GenParticle>(particleLink.cptr()));
782  #else
783  parentMask |= FPGATrackSimInputUtils::construct_truth_bitmap(particleLink.cptr());
784  #endif
785  // check SDO
786  } // end for each contributing particle
787 
788 }

◆ initialize()

StatusCode FPGATrackSimSGToRawHitsTool::initialize ( )
overridevirtual

Definition at line 50 of file FPGATrackSimSGToRawHitsTool.cxx.

50  {
51 
52  ATH_MSG_DEBUG("FPGATrackSimSGToRawHitsTool::initialize()");
53 
54  if(!m_truthToTrack.empty() ) ATH_CHECK(m_truthToTrack.retrieve());
55  if(!m_extrapolator.empty()) ATH_CHECK(m_extrapolator.retrieve());
57 
58 
59  IPartPropSvc* partPropSvc = nullptr;
60  ATH_CHECK(service("PartPropSvc", partPropSvc));
61  m_particleDataTable = partPropSvc->PDT();
62 
63  ATH_CHECK(detStore()->retrieve(m_PIX_mgr, "ITkPixel"));
64  ATH_CHECK(detStore()->retrieve(m_pixelId, "PixelID"));
65  ATH_CHECK(detStore()->retrieve(m_SCT_mgr, "ITkStrip"));
66  ATH_CHECK(detStore()->retrieve(m_sctId, "SCT_ID"));
67 
71 
73 
77  ATH_CHECK(m_pixelRDOKey.initialize());
78  ATH_CHECK(m_stripRDOKey.initialize());
79 
80  ATH_MSG_DEBUG("Initialization complete");
81  return StatusCode::SUCCESS;
82 }

◆ readData()

StatusCode FPGATrackSimSGToRawHitsTool::readData ( FPGATrackSimEventInputHeader header,
const EventContext &  eventContext 
)
overridevirtual

This function get from the SG the inner detector raw hits and prepares them for FPGATrackSim simulation.

Definition at line 92 of file FPGATrackSimSGToRawHitsTool.cxx.

93 {
94  m_eventHeader = header; //take the external pointer
95  auto eventInfo = SG::makeHandle(m_eventInfoKey, eventContext);
96  //Filled to variable / start event
97  FPGATrackSimEventInfo event_info;
98  event_info.setRunNumber(eventInfo->runNumber());
99  event_info.setEventNumber(eventInfo->eventNumber());
100  event_info.setLB(eventInfo->lumiBlock());
101  event_info.setBCID(eventInfo->bcid());
102  event_info.setaverageInteractionsPerCrossing(eventInfo->averageInteractionsPerCrossing());
103  event_info.setactualInteractionsPerCrossing(eventInfo->actualInteractionsPerCrossing());
104  event_info.setextendedLevel1ID(eventInfo->extendedLevel1ID());
105  event_info.setlevel1TriggerType(eventInfo->level1TriggerType());
106  // event_info.setlevel1TriggerInfo(eventInfo->level1TriggerInfo ()); // unclear if needed, TODO come back to it
107  m_eventHeader->newEvent(event_info);//this also reset all variables
108  HitIndexMap hitIndexMap; // keep running index event-unique to each hit
109  HitIndexMap pixelClusterIndexMap;
110  // get pixel and sct cluster containers
111  // dump raw silicon data
112  ATH_MSG_DEBUG("Dump raw silicon data");
113  ATH_CHECK(readRawSilicon(hitIndexMap, eventContext));
115  if (m_readOfflineClusters) {
116  std::vector <FPGATrackSimCluster> clusters;
117  ATH_CHECK(readOfflineClusters(clusters, eventContext));
118  for (const auto& cluster : clusters) optional.addOfflineCluster(cluster);
119  ATH_MSG_DEBUG("Saved " << optional.nOfflineClusters() << " offline clusters");
120  ATH_CHECK(dumpPixelClusters(pixelClusterIndexMap, eventContext));
121  }
122  if (m_readTruthTracks) {
123  std::vector <FPGATrackSimTruthTrack> truth;
124  ATH_CHECK(readTruthTracks(truth, eventContext));
125  for (const FPGATrackSimTruthTrack& trk : truth) optional.addTruthTrack(trk);
126  ATH_MSG_DEBUG("Saved " << optional.nTruthTracks() << " truth tracks");
127  }
128  std::vector <FPGATrackSimOfflineTrack> offline;
129  if (m_readOfflineTracks) {
130  ATH_CHECK(readOfflineTracks(offline, eventContext));
131  for (const FPGATrackSimOfflineTrack& trk : offline) optional.addOfflineTrack(trk);
132  ATH_MSG_DEBUG("Saved " << optional.nOfflineTracks() << " offline tracks");
133  }
134  m_eventHeader->setOptional(optional);
136  ATH_MSG_DEBUG("End of execute()");
137  return StatusCode::SUCCESS;
138 }

◆ readOfflineClusters()

StatusCode FPGATrackSimSGToRawHitsTool::readOfflineClusters ( std::vector< FPGATrackSimCluster > &  Clusters,
const EventContext &  eventContext 
)
private

Definition at line 456 of file FPGATrackSimSGToRawHitsTool.cxx.

457 {
458 
459  //Lets do the Pixel clusters first
460  //Loopover the pixel clusters and convert them into a FPGATrackSimCluster for storage
461  // Dump pixel clusters. They're in m_pixelContainer
462  auto pixelSDOHandle = SG::makeHandle(m_pixelSDOKey, eventContext);
463  auto pixelClusterContainerHandler = SG::makeHandle(m_pixelClusterContainerKey, eventContext);
464  for (const InDet::SiClusterCollection* pixelClusterCollection : *pixelClusterContainerHandler) {
465  if (pixelClusterCollection == nullptr) {
466  ATH_MSG_DEBUG("pixelClusterCollection not available!");
467  continue;
468  }
469  const int size = pixelClusterCollection->size();
470  ATH_MSG_DEBUG("PixelClusterCollection found with " << size << " clusters");
471  for (const InDet::SiCluster* cluster : *pixelClusterCollection) {
472 
473  // if there is simulation truth available, try to retrieve the "most likely" barcode for this pixel cluster.
474  HepMC::ConstGenParticlePtr bestParent = nullptr;
477  if (!m_pixelSDOKey.empty()) {
478  for (const Identifier& rdoId : cluster->rdoList()) {
479  const InDetDD::SiDetectorElement* sielement = m_PIX_mgr->getDetectorElement(rdoId);
480  assert(sielement);
481  InDetDD::SiCellId cellID = sielement->cellIdFromIdentifier(rdoId);
482  const int nCells = sielement->numberOfConnectedCells(cellID);
483  InDetSimDataCollection::const_iterator iter(pixelSDOHandle->find(rdoId));
484  // this might be the ganged pixel copy.
485  if (nCells > 1 && iter == pixelSDOHandle->end()) {
487  for (int ii = 0; ii < nCells && iter == pixelSDOHandle->end(); ++ii) {
488  iter = pixelSDOHandle->find(sielement->identifierFromCellId(sielement->design().connectedCell(SiRC, ii)));
489  }
490  } // end search for correct ganged pixel
491  // if SDO found for this pixel, associate the particle. otherwise leave unassociated.
492  if (iter != pixelSDOHandle->end()) getTruthInformation(iter, parentMask, bestExtcode, bestParent);
493  } // if we have pixel sdo's available
494  }
495 
496  Identifier theID = cluster->identify();
497  //cluster object to be written out
498  FPGATrackSimCluster clusterOut;
499  //Rawhit object to represent the cluster
500  FPGATrackSimHit clusterEquiv;
501  //Lets get the information of this pixel cluster
502  const InDetDD::SiDetectorElement* sielement = m_PIX_mgr->getDetectorElement(theID);
503  assert(sielement);
504  const InDetDD::SiLocalPosition localPos = sielement->rawLocalPositionOfCell(theID);
505  const Amg::Vector3D globalPos(sielement->globalPosition(localPos));
506  clusterEquiv.setHitType(HitType::clustered);
507  clusterEquiv.setX(globalPos.x());
508  clusterEquiv.setY(globalPos.y());
509  clusterEquiv.setZ(globalPos.z());
510  clusterEquiv.setDetType(SiliconTech::pixel);
511  clusterEquiv.setIdentifierHash(sielement->identifyHash());
512 
513  int barrel_ec = m_pixelId->barrel_ec(theID);
514  if (barrel_ec == 0)
516  else if (barrel_ec == 2)
518  else if (barrel_ec == -2)
520 
521  clusterEquiv.setLayerDisk(m_pixelId->layer_disk(theID));
522  clusterEquiv.setPhiModule(m_pixelId->phi_module(theID));
523  clusterEquiv.setEtaModule(m_pixelId->eta_module(theID));
524  clusterEquiv.setPhiIndex(m_pixelId->phi_index(theID));
525  clusterEquiv.setEtaIndex(m_pixelId->eta_index(theID));
526 
527  clusterEquiv.setPhiWidth(cluster->width().colRow()[1]);
528  clusterEquiv.setEtaWidth(cluster->width().colRow()[0]);
529  //Save the truth here as the MultiTruth object is only transient
530  index_type index, position;
531  bestExtcode.eventIndex(index, position);
532  if (bestParent)
533  clusterEquiv.setEventIndex(index);
534  else
536 
537  if (bestParent) {
538  unsigned int id2, barcode2;
539  bestExtcode.uniqueID(id2, barcode2);
540  clusterEquiv.setBarcode(id2);
541  }
542  else {
544  }
545 
546 
547  clusterEquiv.setBarcodePt(static_cast<unsigned long>(std::ceil(bestParent ? bestParent->momentum().perp() : 0.)));
548  clusterEquiv.setParentageMask(parentMask.to_ulong());
549  clusterOut.setClusterEquiv(clusterEquiv);
550  clusters.push_back(clusterOut);
551  }
552  }
553 
554  //Now lets do the strip clusters
555  //Loopover the pixel clusters and convert them into a FPGATrackSimCluster for storage
556  // Dump pixel clusters. They're in m_pixelContainer
557  auto stripSDOHandle = SG::makeHandle(m_stripSDOKey, eventContext);
558  ATH_MSG_DEBUG("Found SCT SDO Map");
559  auto stripRDOHandle = SG::makeHandle(m_stripRDOKey, eventContext);
560 
561  for (const InDetRawDataCollection<SCT_RDORawData>* SCT_Collection : *stripRDOHandle) {
562  if (SCT_Collection == nullptr) { continue; }
563  for (const SCT_RDORawData* sctRawData : *SCT_Collection) {
564  const Identifier rdoId = sctRawData->identify();
565  // get the det element from the det element collection
566  const InDetDD::SiDetectorElement* sielement = m_SCT_mgr->getDetectorElement(rdoId);
567  const InDetDD::SiDetectorDesign& design = dynamic_cast<const InDetDD::SiDetectorDesign&>(sielement->design());
568  const InDetDD::SiLocalPosition localPos = design.localPositionOfCell(m_sctId->strip(rdoId));
569  const Amg::Vector3D gPos = sielement->globalPosition(localPos);
570  // if there is simulation truth available, try to retrieve the
571  // "most likely" barcode for this strip.
572  HepMC::ConstGenParticlePtr bestParent = nullptr;
575  if (!m_stripSDOKey.empty()) {
576  InDetSimDataCollection::const_iterator iter(stripSDOHandle->find(rdoId));
577  // if SDO found for this pixel, associate the particle
578  if (iter != stripSDOHandle->end()) getTruthInformation(iter, parentMask, bestExtcode, bestParent);
579  } // end if sct truth available
580 
581  // push back the hit information to DataInput for HitList , copy from RawInput.cxx
582  FPGATrackSimCluster clusterOut;
583  FPGATrackSimHit clusterEquiv;
584  clusterEquiv.setHitType(HitType::clustered);
585  clusterEquiv.setX(gPos.x());
586  clusterEquiv.setY(gPos.y());
587  clusterEquiv.setZ(gPos.z());
588  clusterEquiv.setDetType(SiliconTech::strip);
589  clusterEquiv.setIdentifierHash(sielement->identifyHash());
590 
591  int barrel_ec = m_sctId->barrel_ec(rdoId);
592  if (barrel_ec == 0)
594  else if (barrel_ec == 2)
596  else if (barrel_ec == -2)
598 
599  clusterEquiv.setLayerDisk(m_sctId->layer_disk(rdoId));
600  clusterEquiv.setPhiModule(m_sctId->phi_module(rdoId));
601  clusterEquiv.setEtaModule(m_sctId->eta_module(rdoId));
602  clusterEquiv.setPhiIndex(m_sctId->strip(rdoId));
603  clusterEquiv.setEtaIndex(m_sctId->row(rdoId));
604  clusterEquiv.setSide(m_sctId->side(rdoId));
605  //I think this is the strip "cluster" width
606  clusterEquiv.setPhiWidth(sctRawData->getGroupSize());
607  //Save the truth here as the MultiTruth object is only transient
608  index_type index, position;
609  bestExtcode.eventIndex(index, position);
610  if (bestParent)
611  clusterEquiv.setEventIndex(index);
612  else
614 
615  if (bestParent) {
616  unsigned int id2, barcode2;
617  bestExtcode.uniqueID(id2, barcode2);
618  clusterEquiv.setBarcode(id2);
619  }
620  else {
622  }
623 
624  clusterEquiv.setBarcodePt(static_cast<unsigned long>(std::ceil(bestParent ? bestParent->momentum().perp() : 0.)));
625  clusterEquiv.setParentageMask(parentMask.to_ulong());
626  clusterOut.setClusterEquiv(clusterEquiv);
627  clusters.push_back(clusterOut);
628  } // end for each RDO in the strip collection
629  } // end for each strip RDO collection
630  // dump all RDO's and SDO's for a given event, for debugging purposes
631 
632  return StatusCode::SUCCESS;
633 }

◆ readOfflineTracks()

StatusCode FPGATrackSimSGToRawHitsTool::readOfflineTracks ( std::vector< FPGATrackSimOfflineTrack > &  Track,
const EventContext &  eventContext 
)
private

Definition at line 141 of file FPGATrackSimSGToRawHitsTool.cxx.

142 {
143  auto offlineTracksHandle = SG::makeHandle(m_offlineTracksKey, eventContext);
144  ATH_MSG_DEBUG("read Offline tracks, size= " << offlineTracksHandle->size());
145 
146  int iTrk = -1;
147  for (const xAOD::TrackParticle* trackParticle : *offlineTracksHandle) {
148  iTrk++;
149  FPGATrackSimOfflineTrack tmpOfflineTrack;
150  tmpOfflineTrack.setQOverPt(trackParticle->pt() > 0 ? trackParticle->charge() / trackParticle->pt() : 0);
151  tmpOfflineTrack.setEta(trackParticle->eta());
152  tmpOfflineTrack.setPhi(trackParticle->phi());
153  tmpOfflineTrack.setD0(trackParticle->d0());
154  tmpOfflineTrack.setZ0(trackParticle->z0());
155 
156  const Trk::TrackStates* trackStates = trackParticle->track()->trackStateOnSurfaces();
157  if (trackStates == nullptr) {
158  ATH_MSG_ERROR("missing trackStatesOnSurface");
159  return StatusCode::FAILURE;
160  }
161  for (const Trk::TrackStateOnSurface* tsos : *trackStates) {
162  if (tsos == nullptr) continue;
163  if (tsos->type(Trk::TrackStateOnSurface::Measurement)) {
164  const Trk::MeasurementBase* measurement = tsos->measurementOnTrack();
165  if (tsos->trackParameters() != nullptr &&
166  tsos->trackParameters()->associatedSurface().associatedDetectorElement() != nullptr &&
167  tsos->trackParameters()->associatedSurface().associatedDetectorElement()->identify() != 0
168  ) {
169  const Trk::RIO_OnTrack* hit = dynamic_cast <const Trk::RIO_OnTrack*>(measurement);
170  const Identifier& hitId = hit->identify();
171  FPGATrackSimOfflineHit tmpOfflineHit;
172  if (m_pixelId->is_pixel(hitId)) {
173  tmpOfflineHit.setIsPixel(true);
174  tmpOfflineHit.setIsBarrel(m_pixelId->is_barrel(hitId));
175 
176  const InDetDD::SiDetectorElement* sielement = m_PIX_mgr->getDetectorElement(hitId);
177  tmpOfflineHit.setClusterID(sielement->identifyHash());
178  tmpOfflineHit.setTrackNumber(iTrk);
179  tmpOfflineHit.setLayer(m_pixelId->layer_disk(hitId));
180  tmpOfflineHit.setLocX((float)measurement->localParameters()[Trk::locX]);
181  tmpOfflineHit.setLocY((float)measurement->localParameters()[Trk::locY]);
182  }
183  else if (m_sctId->is_sct(hitId)) {
184  tmpOfflineHit.setIsPixel(false);
185  tmpOfflineHit.setIsBarrel(m_sctId->is_barrel(hitId));
186  const InDetDD::SiDetectorElement* sielement = m_SCT_mgr->getDetectorElement(hitId);
187  tmpOfflineHit.setClusterID(sielement->identifyHash());
188  tmpOfflineHit.setTrackNumber(iTrk);
189  tmpOfflineHit.setLayer(m_sctId->layer_disk(hitId));
190  tmpOfflineHit.setLocX(((float)measurement->localParameters()[Trk::locX]));
191  tmpOfflineHit.setLocY(-99999.9);
192  }
193  tmpOfflineTrack.addHit(tmpOfflineHit);
194  }
195  }
196  }
197  offline.push_back(tmpOfflineTrack);
198  }//end of loop over tracks
199 
200 
201  return StatusCode::SUCCESS;
202 }

◆ readPixelSimulation()

StatusCode FPGATrackSimSGToRawHitsTool::readPixelSimulation ( HitIndexMap hitIndexMap,
unsigned int &  hitIndex,
const EventContext &  eventContext 
)
private

Definition at line 221 of file FPGATrackSimSGToRawHitsTool.cxx.

221  {
222 
223  auto pixelSDOHandle = SG::makeHandle(m_pixelSDOKey, eventContext);
224  auto pixelRDOHandle = SG::makeHandle(m_pixelRDOKey, eventContext);
225 
226  ATH_MSG_DEBUG("Found Pixel SDO Map");
227 
228  for (const InDetRawDataCollection<PixelRDORawData>* pixel_rdoCollection : *pixelRDOHandle) {
229  if (pixel_rdoCollection == nullptr) { continue; }
230  // loop on all RDOs
231  for (const PixelRDORawData* pixelRawData : *pixel_rdoCollection) {
232  Identifier rdoId = pixelRawData->identify();
233  // get the det element from the det element collection
234  const InDetDD::SiDetectorElement* sielement = m_PIX_mgr->getDetectorElement(rdoId); assert(sielement);
235 
236  Amg::Vector2D LocalPos = sielement->rawLocalPositionOfCell(rdoId);
237  Amg::Vector3D globalPos = sielement->globalPosition(LocalPos);
238  InDetDD::SiCellId cellID = sielement->cellIdFromIdentifier(rdoId);
239 
240  // update map between pixel identifier and event-unique hit index.
241  // ganged pixels (nCells==2) get two entries.
242  hitIndexMap[rdoId] = hitIndex;
243  const int nCells = sielement->numberOfConnectedCells(cellID);
244  if (nCells == 2) {
245  const InDetDD::SiCellId tmpCell = sielement->connectedCell(cellID, 1);
246  const Identifier tmpId = sielement->identifierFromCellId(tmpCell);
247  hitIndexMap[tmpId] = hitIndex; // add second entry for ganged pixel ID
248  }
249  // if there is simulation truth available, try to retrieve the "most likely" barcode for this pixel.
250  HepMC::ConstGenParticlePtr bestParent = nullptr;
253  if (!m_pixelSDOKey.empty()) {
254  InDetSimDataCollection::const_iterator iter(pixelSDOHandle->find(rdoId));
255  if (nCells > 1 && iter == pixelSDOHandle->end()) {
257  for (int ii = 0; ii < nCells && iter == pixelSDOHandle->end(); ++ii) {
258  iter = pixelSDOHandle->find(sielement->identifierFromCellId(sielement->design().connectedCell(SiRC, ii)));
259  }
260  } // end search for correct ganged pixel
261  // if SDO found for this pixel, associate the particle. otherwise leave unassociated.
262  if (iter != pixelSDOHandle->end()) getTruthInformation(iter, parentMask, bestExtcode, bestParent);
263  } // end if pixel truth available
264  ++hitIndex;
265 
266  // push back the hit information to DataInput for HitList
267  FPGATrackSimHit tmpSGhit;
268  tmpSGhit.setHitType(HitType::unmapped);
269  tmpSGhit.setDetType(SiliconTech::pixel);
270  tmpSGhit.setIdentifierHash(sielement->identifyHash());
271 
272  int barrel_ec = m_pixelId->barrel_ec(rdoId);
273  if (barrel_ec == 0)
275  else if (barrel_ec == 2)
277  else if (barrel_ec == -2)
279 
280  tmpSGhit.setLayerDisk(m_pixelId->layer_disk(rdoId));
281  tmpSGhit.setPhiModule(m_pixelId->phi_module(rdoId));
282  tmpSGhit.setEtaModule(m_pixelId->eta_module(rdoId));
283  tmpSGhit.setPhiIndex(m_pixelId->phi_index(rdoId));
284  tmpSGhit.setEtaIndex(m_pixelId->eta_index(rdoId));
285  tmpSGhit.setEtaWidth(0);
286  tmpSGhit.setPhiWidth(0);
287  tmpSGhit.setX(globalPos[Amg::x]);
288  tmpSGhit.setY(globalPos[Amg::y]);
289  tmpSGhit.setZ(globalPos[Amg::z]);
290  tmpSGhit.setToT(pixelRawData->getToT());
291  index_type index, position;
292  bestExtcode.eventIndex(index, position);
293  if (bestParent)
294  tmpSGhit.setEventIndex(index);
295  else
297 
298  if (bestParent) {
299  unsigned int id2, barcode2;
300  bestExtcode.uniqueID(id2, barcode2);
301  tmpSGhit.setBarcode(id2);
302  }
303  else {
305  }
306 
307  tmpSGhit.setBarcodePt(static_cast<unsigned long>(std::ceil(bestParent ? bestParent->momentum().perp() : 0.)));
308  tmpSGhit.setParentageMask(parentMask.to_ulong());
309 
310  // Add truth
312  FPGATrackSimMultiTruth::Barcode uniquecode(tmpSGhit.getEventIndex(), tmpSGhit.getBarcode());
313  mt.maximize(uniquecode, tmpSGhit.getBarcodePt());
314  tmpSGhit.setTruth(mt);
315 
316  m_eventHeader->addHit(tmpSGhit);
317  } // end for each RDO in the collection
318  } // for each pixel RDO collection
319 
320  return StatusCode::SUCCESS;
321 }

◆ readRawSilicon()

StatusCode FPGATrackSimSGToRawHitsTool::readRawSilicon ( HitIndexMap hitIndexMap,
const EventContext &  eventContext 
)
private

Definition at line 208 of file FPGATrackSimSGToRawHitsTool.cxx.

209 {
210  ATH_MSG_DEBUG("read silicon hits");
211  unsigned int hitIndex = 0u;
212 
213  ATH_CHECK(readPixelSimulation(hitIndexMap, hitIndex, eventContext));
214  ATH_CHECK(readStripSimulation(hitIndexMap, hitIndex, eventContext));
215 
216  return StatusCode::SUCCESS;
217 }

◆ readStripSimulation()

StatusCode FPGATrackSimSGToRawHitsTool::readStripSimulation ( HitIndexMap hitIndexMap,
unsigned int &  hitIndex,
const EventContext &  eventContext 
)
private

Definition at line 324 of file FPGATrackSimSGToRawHitsTool.cxx.

324  {
325 
326  auto stripSDOHandle = SG::makeHandle(m_stripSDOKey, eventContext);
327  ATH_MSG_DEBUG("Found SCT SDO Map");
328  auto stripRDOHandle = SG::makeHandle(m_stripRDOKey, eventContext);
329  for (const InDetRawDataCollection<SCT_RDORawData>* SCT_Collection : *stripRDOHandle) {
330  if (SCT_Collection == nullptr) { continue; }
331  for (const SCT_RDORawData* sctRawData : *SCT_Collection) {
332  const Identifier rdoId = sctRawData->identify();
333  // get the det element from the det element collection
334  const InDetDD::SiDetectorElement* sielement = m_SCT_mgr->getDetectorElement(rdoId);
335  Amg::Vector2D LocalPos = sielement->rawLocalPositionOfCell(rdoId);
336  std::pair<Amg::Vector3D, Amg::Vector3D> endsOfStrip = sielement->endsOfStrip(LocalPos);
337 
338  hitIndexMap[rdoId] = hitIndex;
339  ++hitIndex;
340  // if there is simulation truth available, try to retrieve the
341  // "most likely" barcode for this strip.
342  HepMC::ConstGenParticlePtr bestParent = nullptr;
345  if (!m_stripSDOKey.empty()) {
346  InDetSimDataCollection::const_iterator iter(stripSDOHandle->find(rdoId));
347  // if SDO found for this strip, associate the particle
348  if (iter != stripSDOHandle->end()) getTruthInformation(iter, parentMask, bestExtcode, bestParent);
349  } // end if sct truth available
350  // push back the hit information to DataInput for HitList , copy from RawInput.cxx
351 
352  FPGATrackSimHit tmpSGhit;
353  tmpSGhit.setHitType(HitType::unmapped);
354  tmpSGhit.setDetType(SiliconTech::strip);
355  tmpSGhit.setIdentifierHash(sielement->identifyHash());
356 
357  int barrel_ec = m_sctId->barrel_ec(rdoId);
358  if (barrel_ec == 0)
360  else if (barrel_ec == 2)
362  else if (barrel_ec == -2)
364 
365  tmpSGhit.setLayerDisk(m_sctId->layer_disk(rdoId));
366  tmpSGhit.setPhiModule(m_sctId->phi_module(rdoId));
367  tmpSGhit.setEtaModule(m_sctId->eta_module(rdoId));
368  tmpSGhit.setPhiIndex(m_sctId->strip(rdoId));
369  tmpSGhit.setEtaIndex(m_sctId->row(rdoId));
370  tmpSGhit.setSide(m_sctId->side(rdoId));
371  tmpSGhit.setEtaWidth(sctRawData->getGroupSize());
372  tmpSGhit.setPhiWidth(0);
373  index_type index, position;
374  bestExtcode.eventIndex(index, position);
375  if (bestParent)
376  tmpSGhit.setEventIndex(index);
377  else
379 
380  if (bestParent) {
381  unsigned int id2, barcode2;
382  bestExtcode.uniqueID(id2, barcode2);
383  tmpSGhit.setBarcode(id2);
384  }
385  else {
387  }
388 
389  tmpSGhit.setBarcodePt(static_cast<unsigned long>(std::ceil(bestParent ? bestParent->momentum().perp() : 0.)));
390  tmpSGhit.setParentageMask(parentMask.to_ulong());
391  tmpSGhit.setX(0.5 * (endsOfStrip.first.x() + endsOfStrip.second.x()));
392  tmpSGhit.setY(0.5 * (endsOfStrip.first.y() + endsOfStrip.second.y()));
393  tmpSGhit.setZ(0.5 * (endsOfStrip.first.z() + endsOfStrip.second.z()));
394 
395  // Add truth
397  FPGATrackSimMultiTruth::Barcode uniquecode(tmpSGhit.getEventIndex(), tmpSGhit.getBarcode());
398  mt.maximize(uniquecode, tmpSGhit.getBarcodePt());
399  tmpSGhit.setTruth(mt);
400 
401  m_eventHeader->addHit(tmpSGhit);
402  } // end for each RDO in the strip collection
403  } // end for each strip RDO collection
404  // dump all RDO's and SDO's for a given event, for debugging purposes
405 
406  return StatusCode::SUCCESS;
407 }

◆ readTruthTracks()

StatusCode FPGATrackSimSGToRawHitsTool::readTruthTracks ( std::vector< FPGATrackSimTruthTrack > &  truth,
const EventContext &  eventContext 
)
private

Definition at line 636 of file FPGATrackSimSGToRawHitsTool.cxx.

637 {
638  auto simTracksHandle = SG::makeHandle(m_mcCollectionKey, eventContext);
639  ATH_MSG_DEBUG("Dump truth tracks, size " << simTracksHandle->size());
640 
641  // dump each truth track
642  for (unsigned int ievt = 0; ievt < simTracksHandle->size(); ++ievt) {
643  const HepMC::GenEvent* genEvent = simTracksHandle->at(ievt);
644  // retrieve the primary interaction vertex here. for now, use the dummy origin.
645  HepGeom::Point3D<double> primaryVtx(0., 0., 0.);
646  // the event should have signal process vertex unless it was generated as single particles.
647  // if it exists, use it for the primary vertex.
649  if (spv) {
650  primaryVtx.set(spv->position().x(),
651  spv->position().y(),
652  spv->position().z());
653  ATH_MSG_DEBUG("using signal process vertex for eventIndex " << ievt << ":"
654  << primaryVtx.x() << "\t" << primaryVtx.y() << "\t" << primaryVtx.z());
655  }
656  for (const auto& particle: *genEvent) {
657  const int pdgcode = particle->pdg_id();
658  // reject generated particles without a production vertex.
659  if (particle->production_vertex() == nullptr) {
660  continue;
661  }
662  // reject neutral or unstable particles
663  const HepPDT::ParticleData* pd = m_particleDataTable->particle(abs(pdgcode));
664  if (pd == nullptr) {
665  continue;
666  }
667  float charge = pd->charge();
668  if (pdgcode < 0) charge *= -1.; // since we took absolute value above
669  if (std::abs(charge) < 0.5) {
670  continue;
671  }
672  if (!MC::isStable(particle)) {
673  continue;
674  }
675  // truth-to-track tool
676  const Amg::Vector3D momentum(particle->momentum().px(), particle->momentum().py(), particle->momentum().pz());
677  const Amg::Vector3D position(particle->production_vertex()->position().x(), particle->production_vertex()->position().y(), particle->production_vertex()->position().z());
678  const Trk::CurvilinearParameters cParameters(position, momentum, charge);
679  Trk::PerigeeSurface persf;
680  if (m_UseNominalOrigin) {
681  Amg::Vector3D origin(0, 0, 0);
682  persf = Trk::PerigeeSurface(origin);
683  }
684  else {
685  SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle{ m_beamSpotKey, eventContext };
686  Trk::PerigeeSurface persf(beamSpotHandle->beamPos());
687  }
688  const Trk::TrackParameters* tP = m_extrapolator->extrapolate(eventContext, cParameters, persf, Trk::anyDirection, false).release();
689  const double track_truth_d0 = tP ? tP->parameters()[Trk::d0] : 999.;
690  const double track_truth_phi = tP ? tP->parameters()[Trk::phi] : 999.;
691  const double track_truth_p = (tP && fabs(tP->parameters()[Trk::qOverP]) > 1.e-8) ?
692  tP->charge() / tP->parameters()[Trk::qOverP] : 10E7;
693  const double track_truth_x0 = tP ? tP->position().x() : 999.;
694  const double track_truth_y0 = tP ? tP->position().y() : 999.;
695  const double track_truth_z0 = tP ? tP->parameters()[Trk::z0] : 999.;
696  const double track_truth_q = tP ? tP->charge() : 0.;
697  const double track_truth_sinphi = tP ? std::sin(tP->parameters()[Trk::phi]) : -1.;
698  const double track_truth_cosphi = tP ? std::cos(tP->parameters()[Trk::phi]) : -1.;
699  const double track_truth_sintheta = tP ? std::sin(tP->parameters()[Trk::theta]) : -1.;
700  const double track_truth_costheta = tP ? std::cos(tP->parameters()[Trk::theta]) : -1.;
701  double truth_d0corr = track_truth_d0 - (primaryVtx.y() * cos(track_truth_phi) - primaryVtx.x() * sin(track_truth_phi));
702  double truth_zvertex = 0.;
703  const HepGeom::Point3D<double> startVertex(particle->production_vertex()->position().x(), particle->production_vertex()->position().y(), particle->production_vertex()->position().z());
704  // categorize particle (prompt, secondary, etc.) based on InDetPerformanceRTT/detector paper criteria.
705  bool isPrimary = true;
706  if (std::abs(truth_d0corr) > 2.) { isPrimary = false; }
707  const int bc = HepMC::barcode(particle); // FIXME update barcode-based syntax
708  if (HepMC::is_simulation_particle(particle) || bc == 0) { isPrimary = false; } // FIXME update barcode-based syntax
709  if (isPrimary && particle->production_vertex()) {
710  const HepGeom::Point3D<double> startVertex(particle->production_vertex()->position().x(), particle->production_vertex()->position().y(), particle->production_vertex()->position().z());
711  if (std::abs(startVertex.z() - truth_zvertex) > 100.) { isPrimary = false; }
712  if (particle->end_vertex()) {
713  HepGeom::Point3D<double> endVertex(particle->end_vertex()->position().x(), particle->end_vertex()->position().y(), particle->end_vertex()->position().z());
714  if (endVertex.perp() < FPGATrackSim_PT_TRUTHMIN && std::abs(endVertex.z()) < FPGATrackSim_Z_TRUTHMIN) { isPrimary = false; }
715  }
716  }
717  else {
718  isPrimary = false;
719  }
720 
721  HepMcParticleLink::ExtendedBarCode extBarcode2(bc, ievt,
723  HepMcParticleLink::IS_BARCODE); // FIXME update barcode-based syntax
724 
725  FPGATrackSimTruthTrack tmpSGTrack;
726  tmpSGTrack.setVtxX(track_truth_x0);
727  tmpSGTrack.setVtxY(track_truth_y0);
728  tmpSGTrack.setVtxZ(track_truth_z0);
729  tmpSGTrack.setD0(track_truth_d0);
730  tmpSGTrack.setZ0(track_truth_z0);
731  tmpSGTrack.setVtxZ(primaryVtx.z());
732  tmpSGTrack.setQ(track_truth_q);
733  tmpSGTrack.setPX(track_truth_p * (track_truth_cosphi * track_truth_sintheta));
734  tmpSGTrack.setPY(track_truth_p * (track_truth_sinphi * track_truth_sintheta));
735  tmpSGTrack.setPZ(track_truth_p * track_truth_costheta);
736  tmpSGTrack.setPDGCode(pdgcode);
737  tmpSGTrack.setStatus(particle->status());
738 
739  unsigned int id2, barcode2;
740  extBarcode2.uniqueID(id2, barcode2);
741  tmpSGTrack.setBarcode(id2);
742 
743  index_type index2, position2;
744  extBarcode2.eventIndex(index2, position2);
745  tmpSGTrack.setEventIndex(index2);
746 
747  truth.push_back(tmpSGTrack);
748  } // end for each GenParticle in this GenEvent
749  } // end for each GenEvent
750 
751 
752  return StatusCode::SUCCESS;
753 }

Member Data Documentation

◆ m_beamSpotKey

SG::ReadCondHandleKey<InDet::BeamSpotData> FPGATrackSimSGToRawHitsTool::m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }
private

Definition at line 60 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_dumpHitsOnTracks

Gaudi::Property<bool> FPGATrackSimSGToRawHitsTool::m_dumpHitsOnTracks { this, "dumpHitsOnTracks", false }
private

Definition at line 77 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_dumpTruthIntersections

Gaudi::Property<bool> FPGATrackSimSGToRawHitsTool::m_dumpTruthIntersections { this, "dumpTruthIntersections", false }
private

Definition at line 78 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_eventHeader

FPGATrackSimEventInputHeader* FPGATrackSimSGToRawHitsTool::m_eventHeader = nullptr
private

Definition at line 105 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_eventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> FPGATrackSimSGToRawHitsTool::m_eventInfoKey { this, "EventInfo", "EventInfo" }
private

Definition at line 61 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_extrapolator

ToolHandle<Trk::IExtrapolator> FPGATrackSimSGToRawHitsTool::m_extrapolator {this, "Extrapolator", "Trk::Extrapolator/AtlasExtrapolator"}
private

ToolHandle for Extrapolator.

Definition at line 58 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_maxEta

Gaudi::Property<double> FPGATrackSimSGToRawHitsTool::m_maxEta { this, "maxEta", 3.3 }
private

Definition at line 83 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_mcCollectionKey

SG::ReadHandleKey<McEventCollection> FPGATrackSimSGToRawHitsTool::m_mcCollectionKey { this, "McTruth", "TruthEvent" }
private

Definition at line 66 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_minPt

Gaudi::Property<double> FPGATrackSimSGToRawHitsTool::m_minPt { this, "minPt", .8*CLHEP::GeV }
private

Definition at line 84 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_offlineTracksKey

SG::ReadHandleKey<xAOD::TrackParticleContainer> FPGATrackSimSGToRawHitsTool::m_offlineTracksKey { this, "OfflineTracks", "InDetTrackParticles"}
private

Definition at line 65 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_particleDataTable

const HepPDT::ParticleDataTable* FPGATrackSimSGToRawHitsTool::m_particleDataTable = nullptr
private

Definition at line 92 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_PIX_mgr

const InDetDD::SiDetectorManager* FPGATrackSimSGToRawHitsTool::m_PIX_mgr = nullptr
private

Definition at line 90 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_pixelClusterContainerKey

SG::ReadHandleKey<InDet::SiClusterContainer> FPGATrackSimSGToRawHitsTool::m_pixelClusterContainerKey { this, "pixelClustersName", "ITkPixelClusters" }
private

Definition at line 62 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_pixelId

const PixelID* FPGATrackSimSGToRawHitsTool::m_pixelId = nullptr
private

Definition at line 87 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_pixelRDOKey

SG::ReadHandleKey<PixelRDO_Container> FPGATrackSimSGToRawHitsTool::m_pixelRDOKey { this, "PixelRDO", "ITkPixelRDOs" }
private

Definition at line 69 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_pixelSDOKey

SG::ReadHandleKey<InDetSimDataCollection> FPGATrackSimSGToRawHitsTool::m_pixelSDOKey { this, "PixelSDO", "ITkPixelSDO_Map" }
private

Definition at line 67 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_readOfflineClusters

Gaudi::Property<bool> FPGATrackSimSGToRawHitsTool::m_readOfflineClusters { this, "ReadOfflineClusters", true, "flag to enable the offline cluster save" }
private

Definition at line 79 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_readOfflineTracks

Gaudi::Property<bool> FPGATrackSimSGToRawHitsTool::m_readOfflineTracks { this, "ReadOfflineTracks", true, "flag to enable the offline tracking save" }
private

Definition at line 81 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_readTruthTracks

Gaudi::Property<bool> FPGATrackSimSGToRawHitsTool::m_readTruthTracks { this, "ReadTruthTracks", true, "flag to enable the truth tracking save" }
private

Definition at line 80 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_SCT_mgr

const InDetDD::SiDetectorManager* FPGATrackSimSGToRawHitsTool::m_SCT_mgr = nullptr
private

Definition at line 91 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_sctClusterContainerKey

SG::ReadHandleKey<InDet::SiClusterContainer> FPGATrackSimSGToRawHitsTool::m_sctClusterContainerKey { this, "SCT_ClustersName", "SCT_Clusters" }
private

Definition at line 63 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_sctId

const SCT_ID* FPGATrackSimSGToRawHitsTool::m_sctId = nullptr
private

Definition at line 88 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_stripRDOKey

SG::ReadHandleKey<SCT_RDO_Container> FPGATrackSimSGToRawHitsTool::m_stripRDOKey { this, "StripRDO", "ITkStripRDOs" }
private

Definition at line 70 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_stripSDOKey

SG::ReadHandleKey<InDetSimDataCollection> FPGATrackSimSGToRawHitsTool::m_stripSDOKey { this, "StripSDO", "ITkStripSDO_Map" }
private

Definition at line 68 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_tracksTruthName

Gaudi::Property<std::string> FPGATrackSimSGToRawHitsTool::m_tracksTruthName { this, "OfflineName", "InDetTrackParticles", "name of offline tracks collection" }
private

Definition at line 76 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_truthToTrack

ToolHandle<Trk::ITruthToTrack> FPGATrackSimSGToRawHitsTool::m_truthToTrack {this, "TruthToTrackTool", "Trk::TruthToTrack/InDetTruthToTrack" }
private

tool to create track parameters from a gen particle

Definition at line 57 of file FPGATrackSimSGToRawHitsTool.h.

◆ m_UseNominalOrigin

Gaudi::Property<bool> FPGATrackSimSGToRawHitsTool::m_UseNominalOrigin { this, "UseNominalOrigin", false, "if true truth values are always with respect to (0,0,0)" }
private

Definition at line 82 of file FPGATrackSimSGToRawHitsTool.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
AtlasDetectorID::is_pixel
bool is_pixel(Identifier id) const
Definition: AtlasDetectorID.h:760
Trk::anyDirection
@ anyDirection
Definition: PropDirection.h:22
FPGATrackSimHit::getEventIndex
long getEventIndex() const
Definition: FPGATrackSimHit.h:140
FPGATrackSimSGToRawHitsTool::m_readTruthTracks
Gaudi::Property< bool > m_readTruthTracks
Definition: FPGATrackSimSGToRawHitsTool.h:80
FPGATrackSimOfflineTrack::addHit
void addHit(FPGATrackSimOfflineHit s)
Definition: FPGATrackSimOfflineTrack.h:36
getMenu.algname
algname
Definition: getMenu.py:53
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:76
PixelID::phi_index
int phi_index(const Identifier &id) const
Definition: PixelID.h:658
InDetDD::SolidStateDetectorElementBase::connectedCell
SiCellId connectedCell(const SiCellId cellId, int number) const
Get the cell ids sharing the readout for this cell.
Definition: SolidStateDetectorElementBase.cxx:250
InDetDD::SiDetectorManager::getDetectorElement
virtual SiDetectorElement * getDetectorElement(const Identifier &id) const =0
access to individual elements using Identifier or IdentiferHash
FPGATrackSimInputUtils::ParentBitmask
std::bitset< NBITS > ParentBitmask
Definition: FPGATrackSimInputUtils.h:16
FPGATrackSimSGToRawHitsTool::m_truthToTrack
ToolHandle< Trk::ITruthToTrack > m_truthToTrack
tool to create track parameters from a gen particle
Definition: FPGATrackSimSGToRawHitsTool.h:57
SiliconTech::strip
@ strip
max
#define max(a, b)
Definition: cfImp.cxx:41
FPGATrackSimSGToRawHitsTool::m_UseNominalOrigin
Gaudi::Property< bool > m_UseNominalOrigin
Definition: FPGATrackSimSGToRawHitsTool.h:82
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
FPGATrackSimEventInputHeader::newEvent
void newEvent(FPGATrackSimEventInfo const &event)
Definition: FPGATrackSimEventInputHeader.h:27
Trk::locX
@ locX
Definition: ParamDefs.h:43
Trk::ParametersBase::charge
double charge() const
Returns the charge.
Trk::locY
@ locY
local cartesian
Definition: ParamDefs.h:44
FPGATrackSimCluster
Definition: FPGATrackSimCluster.h:25
FPGATrackSimEventInfo::setBCID
void setBCID(const int &val)
Definition: FPGATrackSimEventInfo.h:60
FPGATrackSimHit::setEtaIndex
void setEtaIndex(unsigned v)
Definition: FPGATrackSimHit.h:98
Trk::PerigeeSurface
Definition: PerigeeSurface.h:43
AtlasDetectorID::is_sct
bool is_sct(Identifier id) const
Definition: AtlasDetectorID.h:770
PixelID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: PixelID.h:619
DetectorZone::posEndcap
@ posEndcap
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
MatchToEnum::offline
@ offline
index
Definition: index.py:1
FPGATrackSimHit::setIdentifierHash
void setIdentifierHash(unsigned v)
Definition: FPGATrackSimHit.h:68
FPGATrackSimTruthTrack
Definition: FPGATrackSimTruthTrack.h:13
FPGATrackSimHit::getBarcodePt
float getBarcodePt() const
Definition: FPGATrackSimHit.h:141
FPGATrackSimTruthTrack::setPX
void setPX(double v)
Definition: FPGATrackSimTruthTrack.h:23
InDetDD::DetectorDesign::localPositionOfCell
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const =0
readout or diode id -> position.
FPGATrackSimOfflineHit::setClusterID
void setClusterID(int clus)
Definition: FPGATrackSimOfflineHit.h:21
FPGATrackSimOfflineTrack::setZ0
void setZ0(double v)
Definition: FPGATrackSimOfflineTrack.h:20
FPGATrackSimTruthTrack::setBarcode
void setBarcode(unsigned long v)
Definition: FPGATrackSimTruthTrack.h:31
Amg::y
@ y
Definition: GeoPrimitives.h:35
FPGATrackSimSGToRawHitsTool::m_offlineTracksKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_offlineTracksKey
Definition: FPGATrackSimSGToRawHitsTool.h:65
FPGATrackSimSGToRawHitsTool::dumpPixelClusters
StatusCode dumpPixelClusters(HitIndexMap &pixelClusterIndexMap, const EventContext &eventContext)
Definition: FPGATrackSimSGToRawHitsTool.cxx:411
FPGATrackSimEventInfo::setRunNumber
void setRunNumber(const unsigned long &val)
Definition: FPGATrackSimEventInfo.h:55
FPGATrackSimSGToRawHitsTool::HitIndexMap
std::map< Identifier, int > HitIndexMap
Definition: FPGATrackSimSGToRawHitsTool.h:94
FPGATrackSimSGToRawHitsTool::m_pixelClusterContainerKey
SG::ReadHandleKey< InDet::SiClusterContainer > m_pixelClusterContainerKey
Definition: FPGATrackSimSGToRawHitsTool.h:62
FPGATrackSimHit::setBarcode
void setBarcode(unsigned long v)
Definition: FPGATrackSimHit.h:134
Trk::z0
@ z0
Definition: ParamDefs.h:70
FPGATrackSimHit::setEtaWidth
void setEtaWidth(unsigned v)
Definition: FPGATrackSimHit.h:74
FPGATrackSimSGToRawHitsTool::readTruthTracks
StatusCode readTruthTracks(std::vector< FPGATrackSimTruthTrack > &truth, const EventContext &eventContext)
Definition: FPGATrackSimSGToRawHitsTool.cxx:636
FPGATrackSimOfflineHit::setTrackNumber
void setTrackNumber(int track)
Definition: FPGATrackSimOfflineHit.h:22
InDetDD::DetectorDesign::connectedCell
virtual SiCellId connectedCell(const SiReadoutCellId &readoutId, int number) const =0
readout id -> id of connected diodes.
FPGATrackSimHit::setSide
void setSide(unsigned v)
Definition: FPGATrackSimHit.h:70
offline
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
SCT_RDORawData
Definition: SCT_RDORawData.h:24
FPGATrackSimSGToRawHitsTool::m_stripSDOKey
SG::ReadHandleKey< InDetSimDataCollection > m_stripSDOKey
Definition: FPGATrackSimSGToRawHitsTool.h:68
SCT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: SCT_ID.h:728
FPGATrackSimTruthTrack::setPZ
void setPZ(double v)
Definition: FPGATrackSimTruthTrack.h:25
SCT_ID::phi_module
int phi_module(const Identifier &id) const
Definition: SCT_ID.h:740
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
FPGATrackSimHit::getBarcode
unsigned long getBarcode() const
Definition: FPGATrackSimHit.h:139
FPGATrackSimHit::setY
void setY(float v)
Definition: FPGATrackSimHit.h:123
SG::VarHandleKey::empty
bool empty() const
Test if the key is blank.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:150
FPGATrackSimTruthTrack::setVtxZ
void setVtxZ(double v)
Definition: FPGATrackSimTruthTrack.h:22
FPGATrackSimCluster::setClusterEquiv
void setClusterEquiv(const FPGATrackSimHit &input)
Definition: FPGATrackSimCluster.h:35
FPGATrackSimHit::setDetectorZone
void setDetectorZone(DetectorZone detZone)
Definition: FPGATrackSimHit.h:53
FPGATrackSimSGToRawHitsTool::m_pixelId
const PixelID * m_pixelId
Definition: FPGATrackSimSGToRawHitsTool.h:87
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
InDetDD::SolidStateDetectorElementBase::identifyHash
virtual IdentifierHash identifyHash() const override final
identifier hash (inline)
FPGATrackSimEventInfo::setextendedLevel1ID
void setextendedLevel1ID(const unsigned int &val)
Definition: FPGATrackSimEventInfo.h:61
FPGATrackSimSGToRawHitsTool::m_readOfflineClusters
Gaudi::Property< bool > m_readOfflineClusters
Definition: FPGATrackSimSGToRawHitsTool.h:79
FPGATrackSimOptionalEventInfo::nTruthTracks
size_t nTruthTracks() const
Definition: FPGATrackSimOptionalEventInfo.h:38
FPGATrackSimHit
Definition: FPGATrackSimHit.h:38
InDet::SiClusterCollection
Trk::PrepRawDataCollection< InDet::SiCluster > SiClusterCollection
Definition: SiClusterCollection.h:26
FPGATrackSimSGToRawHitsTool::m_maxEta
Gaudi::Property< double > m_maxEta
Definition: FPGATrackSimSGToRawHitsTool.h:83
FPGATrackSimOptionalEventInfo::nOfflineClusters
size_t nOfflineClusters() const
Definition: FPGATrackSimOptionalEventInfo.h:28
FPGATrackSimOfflineHit::setLocX
void setLocX(float locx)
Definition: FPGATrackSimOfflineHit.h:16
InDetDD::SiLocalPosition
Definition: SiLocalPosition.h:31
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:269
FPGATrackSimSGToRawHitsTool::m_readOfflineTracks
Gaudi::Property< bool > m_readOfflineTracks
Definition: FPGATrackSimSGToRawHitsTool.h:81
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
FPGATrackSimSGToRawHitsTool::m_particleDataTable
const HepPDT::ParticleDataTable * m_particleDataTable
Definition: FPGATrackSimSGToRawHitsTool.h:92
FPGATrackSimHit::setDetType
void setDetType(SiliconTech detType)
Definition: FPGATrackSimHit.h:52
FPGATrackSimHit::setX
void setX(float v)
Definition: FPGATrackSimHit.h:122
FPGATrackSimSGToRawHitsTool::m_eventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Definition: FPGATrackSimSGToRawHitsTool.h:61
FPGATrackSimEventInfo
Definition: FPGATrackSimEventInfo.h:14
FPGATrackSimHit::setToT
void setToT(unsigned v)
Definition: FPGATrackSimHit.h:133
FPGATrackSimEventInfo::setEventNumber
void setEventNumber(const unsigned long &val)
Definition: FPGATrackSimEventInfo.h:56
Amg::z
@ z
Definition: GeoPrimitives.h:36
PixelID::is_barrel
bool is_barrel(const Identifier &id) const
Test for barrel - WARNING: id MUST be pixel id, otherwise answer is not accurate. Use SiliconID for g...
Definition: PixelID.h:605
InDetDD::SiDetectorElement::cellIdFromIdentifier
virtual SiCellId cellIdFromIdentifier(const Identifier &identifier) const override final
SiCellId from Identifier.
Definition: SiDetectorElement.cxx:120
InDetDD::SolidStateDetectorElementBase::numberOfConnectedCells
int numberOfConnectedCells(const SiCellId cellId) const
Test if readout cell has more than one diode associated with it.
Definition: SolidStateDetectorElementBase.cxx:243
FPGATrackSimOfflineHit::setLayer
void setLayer(int lay)
Definition: FPGATrackSimOfflineHit.h:20
FPGATrackSimHit::setPhiIndex
void setPhiIndex(unsigned v)
Definition: FPGATrackSimHit.h:97
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
FPGATrackSimSGToRawHitsTool::readRawSilicon
StatusCode readRawSilicon(HitIndexMap &hitIndexMap, const EventContext &eventContext)
Definition: FPGATrackSimSGToRawHitsTool.cxx:208
ParticleGun_EoverP_Config.momentum
momentum
Definition: ParticleGun_EoverP_Config.py:63
id2
HWIdentifier id2
Definition: LArRodBlockPhysicsV0.cxx:564
HepMC::is_simulation_particle
bool is_simulation_particle(const T &p)
Method to establish if a particle (or barcode) was created during the simulation (TODO update to be s...
Definition: MagicNumbers.h:299
xAOD::nCells
setRawEt setRawPhi nCells
Definition: TrigCaloCluster_v1.cxx:33
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
Trk::theta
@ theta
Definition: ParamDefs.h:72
FPGATrackSimOfflineHit::setLocY
void setLocY(float locy)
Definition: FPGATrackSimOfflineHit.h:17
FPGATrackSimEventInputHeader::addHit
void addHit(FPGATrackSimHit const &s)
Definition: FPGATrackSimEventInputHeader.h:38
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
HepMC::barcode
int barcode(const T *p)
Definition: Barcode.h:16
Amg::x
@ x
Definition: GeoPrimitives.h:34
SCT_ID::row
int row(const Identifier &id) const
Definition: SCT_ID.h:758
FPGATrackSimSGToRawHitsTool::m_SCT_mgr
const InDetDD::SiDetectorManager * m_SCT_mgr
Definition: FPGATrackSimSGToRawHitsTool.h:91
FPGATrackSimSGToRawHitsTool::getTruthInformation
void getTruthInformation(InDetSimDataCollection::const_iterator &iter, FPGATrackSimInputUtils::ParentBitmask &parentMask, HepMcParticleLink::ExtendedBarCode &bestExtcode, HepMC::ConstGenParticlePtr &bestParent)
Definition: FPGATrackSimSGToRawHitsTool.cxx:755
FPGATrackSimHit::setEtaModule
void setEtaModule(int v)
Definition: FPGATrackSimHit.h:72
InDetDD::SiDetectorElement::identifierFromCellId
virtual Identifier identifierFromCellId(const SiCellId &cellId) const override final
Identifier <-> SiCellId (ie strip number or pixel eta_index,phi_index) Identifier from SiCellId (ie s...
Definition: SiDetectorElement.cxx:89
InDetSimData
Definition: InDetSimData.h:42
FPGATrackSimMultiTruth::Barcode
std::pair< unsigned long, unsigned long > Barcode
Definition: FPGATrackSimMultiTruth.h:49
FPGATrackSimOptionalEventInfo::addOfflineTrack
void addOfflineTrack(const FPGATrackSimOfflineTrack &t)
Definition: FPGATrackSimOptionalEventInfo.h:34
FPGATrackSimTruthTrack::setD0
void setD0(double v)
Definition: FPGATrackSimTruthTrack.h:17
InDetRawDataCollection
Definition: InDetRawDataCollection.h:31
FPGATrackSimTruthTrack::setEventIndex
void setEventIndex(int v)
Definition: FPGATrackSimTruthTrack.h:32
PixelID::eta_index
int eta_index(const Identifier &id) const
Definition: PixelID.h:664
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
FPGATrackSimInputUtils::construct_truth_bitmap
const ParentBitmask construct_truth_bitmap(HepMC::ConstGenParticlePtr p)
Definition: FPGATrackSimInputUtils.cxx:10
FPGATrackSimOptionalEventInfo
Definition: FPGATrackSimOptionalEventInfo.h:17
Trk::ParametersBase
Definition: ParametersBase.h:55
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
Trk::CurvilinearParametersT
Definition: CurvilinearParametersT.h:48
FPGATrackSimHit::setPhiModule
void setPhiModule(unsigned v)
Definition: FPGATrackSimHit.h:73
DataVector< const Trk::TrackStateOnSurface >
FPGATrackSimOfflineTrack
Definition: FPGATrackSimOfflineTrack.h:12
FPGATrackSimSGToRawHitsTool::m_PIX_mgr
const InDetDD::SiDetectorManager * m_PIX_mgr
Definition: FPGATrackSimSGToRawHitsTool.h:90
FPGATrackSimOfflineTrack::setD0
void setD0(double v)
Definition: FPGATrackSimOfflineTrack.h:19
FPGATrackSimOptionalEventInfo::nOfflineTracks
size_t nOfflineTracks() const
Definition: FPGATrackSimOptionalEventInfo.h:33
FPGATrackSimSGToRawHitsTool::m_pixelRDOKey
SG::ReadHandleKey< PixelRDO_Container > m_pixelRDOKey
Definition: FPGATrackSimSGToRawHitsTool.h:69
Trk::MeasurementBase
Definition: MeasurementBase.h:58
FPGATrackSimSGToRawHitsTool::m_sctClusterContainerKey
SG::ReadHandleKey< InDet::SiClusterContainer > m_sctClusterContainerKey
Definition: FPGATrackSimSGToRawHitsTool.h:63
PixelID::layer_disk
int layer_disk(const Identifier &id) const
Definition: PixelID.h:626
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
InDetDD::SiDetectorElement::endsOfStrip
std::pair< Amg::Vector3D, Amg::Vector3D > endsOfStrip(const Amg::Vector2D &position) const
Special method for SCT to retrieve the two ends of a "strip" Returned coordinates are in global frame...
Definition: SiDetectorElement.cxx:339
FPGATrackSimHit::setLayerDisk
void setLayerDisk(unsigned v)
Definition: FPGATrackSimHit.h:69
HepMC::ConstGenParticlePtr
const GenParticle * ConstGenParticlePtr
Definition: GenParticle.h:38
FPGATrackSimOfflineHit::setIsPixel
void setIsPixel(bool is)
Definition: FPGATrackSimOfflineHit.h:18
PixelID::eta_module
int eta_module(const Identifier &id) const
Definition: PixelID.h:651
FPGATrackSimSGToRawHitsTool::m_mcCollectionKey
SG::ReadHandleKey< McEventCollection > m_mcCollectionKey
Definition: FPGATrackSimSGToRawHitsTool.h:66
Trk::index2
@ index2
Definition: BoundarySurfaceFace.h:49
FPGATrackSimMultiTruth::maximize
void maximize(const FPGATrackSimMultiTruth::Barcode &code, const FPGATrackSimMultiTruth::Weight &weight)
Definition: FPGATrackSimMultiTruth.cxx:37
FPGATrackSimMultiTruth
Definition: FPGATrackSimMultiTruth.h:46
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
Trk::d0
@ d0
Definition: ParamDefs.h:69
FPGATrackSimOfflineTrack::setEta
void setEta(double v)
Definition: FPGATrackSimOfflineTrack.h:17
FPGATrackSimSGToRawHitsTool::m_pixelSDOKey
SG::ReadHandleKey< InDetSimDataCollection > m_pixelSDOKey
Definition: FPGATrackSimSGToRawHitsTool.h:67
FPGATrackSimSGToRawHitsTool::readStripSimulation
StatusCode readStripSimulation(HitIndexMap &hitIndexMap, unsigned int &hitIndex, const EventContext &eventContext)
Definition: FPGATrackSimSGToRawHitsTool.cxx:324
charge
double charge(const T &p)
Definition: AtlasPID.h:494
SCT_ID::layer_disk
int layer_disk(const Identifier &id) const
Definition: SCT_ID.h:734
HitType::clustered
@ clustered
FPGATrackSimHit::setPhiWidth
void setPhiWidth(unsigned v)
Definition: FPGATrackSimHit.h:75
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
FPGATrackSimTruthTrack::setZ0
void setZ0(double v)
Definition: FPGATrackSimTruthTrack.h:18
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
FPGATrackSimSGToRawHitsTool::readOfflineClusters
StatusCode readOfflineClusters(std::vector< FPGATrackSimCluster > &Clusters, const EventContext &eventContext)
Definition: FPGATrackSimSGToRawHitsTool.cxx:456
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
FPGATrackSimEventInputHeader::setOptional
void setOptional(FPGATrackSimOptionalEventInfo const &optional)
Definition: FPGATrackSimEventInputHeader.h:28
FPGATrackSimHit::setEventIndex
void setEventIndex(long v)
Definition: FPGATrackSimHit.h:136
Trk::MeasurementBase::localParameters
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
Definition: MeasurementBase.h:132
FPGATrackSimTruthTrack::setPY
void setPY(double v)
Definition: FPGATrackSimTruthTrack.h:24
FPGATrackSimHit::setZ
void setZ(float v)
Definition: FPGATrackSimHit.h:124
FPGATrackSimOptionalEventInfo::addTruthTrack
void addTruthTrack(const FPGATrackSimTruthTrack &t)
Definition: FPGATrackSimOptionalEventInfo.h:39
FPGATrackSimSGToRawHitsTool::m_sctId
const SCT_ID * m_sctId
Definition: FPGATrackSimSGToRawHitsTool.h:88
InDetDD::SiCellId
Definition: SiCellId.h:29
DetectorZone::negEndcap
@ negEndcap
DeMoScan.index
string index
Definition: DeMoScan.py:362
FPGATrackSimEventInfo::setaverageInteractionsPerCrossing
void setaverageInteractionsPerCrossing(const int &val)
Definition: FPGATrackSimEventInfo.h:57
InDetDD::SolidStateDetectorElementBase::rawLocalPositionOfCell
Amg::Vector2D rawLocalPositionOfCell(const SiCellId &cellId) const
Returns position (center) of cell.
Definition: SolidStateDetectorElementBase.cxx:230
MC::isStable
bool isStable(const T &p)
Definition: HepMCHelpers.h:30
FPGATrackSimTruthTrack::setVtxY
void setVtxY(double v)
Definition: FPGATrackSimTruthTrack.h:21
FPGATrackSimEventInfo::setlevel1TriggerType
void setlevel1TriggerType(const unsigned int &val)
Definition: FPGATrackSimEventInfo.h:62
FPGATrackSimSGToRawHitsTool::readOfflineTracks
StatusCode readOfflineTracks(std::vector< FPGATrackSimOfflineTrack > &Track, const EventContext &eventContext)
Definition: FPGATrackSimSGToRawHitsTool.cxx:141
SCT_ID::strip
int strip(const Identifier &id) const
Definition: SCT_ID.h:764
InDetDD::SolidStateDetectorElementBase::globalPosition
HepGeom::Point3D< double > globalPosition(const HepGeom::Point3D< double > &localPos) const
transform a reconstruction local position into a global position (inline):
SCT_ID::eta_module
int eta_module(const Identifier &id) const
Definition: SCT_ID.h:746
FPGATrackSimOptionalEventInfo::addOfflineCluster
void addOfflineCluster(const FPGATrackSimCluster &c)
Definition: FPGATrackSimOptionalEventInfo.h:29
FPGATrackSimTruthTrack::setPDGCode
void setPDGCode(int v)
Definition: FPGATrackSimTruthTrack.h:29
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:73
FPGATrackSimSGToRawHitsTool::m_eventHeader
FPGATrackSimEventInputHeader * m_eventHeader
Definition: FPGATrackSimSGToRawHitsTool.h:105
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
DetectorZone::barrel
@ barrel
Trk::RIO_OnTrack::identify
virtual Identifier identify() const final
return the identifier -extends MeasurementBase
Definition: RIO_OnTrack.h:155
FPGATrackSimOfflineTrack::setQOverPt
void setQOverPt(double v)
Definition: FPGATrackSimOfflineTrack.h:16
FPGATrackSimSGToRawHitsTool::readPixelSimulation
StatusCode readPixelSimulation(HitIndexMap &hitIndexMap, unsigned int &hitIndex, const EventContext &eventContext)
Definition: FPGATrackSimSGToRawHitsTool.cxx:221
FPGATrackSimTruthTrack::setStatus
void setStatus(int v)
Definition: FPGATrackSimTruthTrack.h:30
FPGATrackSimSGToRawHitsTool::m_beamSpotKey
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
Definition: FPGATrackSimSGToRawHitsTool.h:60
FPGATrackSimOfflineHit::setIsBarrel
void setIsBarrel(bool is)
Definition: FPGATrackSimOfflineHit.h:19
SCT_ID::side
int side(const Identifier &id) const
Definition: SCT_ID.h:752
PixelRDORawData
Definition: PixelRDORawData.h:23
LVL1::gFEXPos
Definition: gFexPos.h:11
Trk::phi
@ phi
Definition: ParamDefs.h:81
FPGATrackSimOfflineHit
Definition: FPGATrackSimOfflineHit.h:12
FPGATrackSimEventInfo::setactualInteractionsPerCrossing
void setactualInteractionsPerCrossing(const int &val)
Definition: FPGATrackSimEventInfo.h:58
HepMC::ConstGenVertexPtr
const HepMC::GenVertex * ConstGenVertexPtr
Definition: GenVertex.h:60
InDetDD::SiReadoutCellId
Definition: SiReadoutCellId.h:42
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
FPGATrackSimHit::setTruth
void setTruth(const FPGATrackSimMultiTruth &v)
Definition: FPGATrackSimHit.h:138
InDetDD::SiDetectorDesign
Definition: SiDetectorDesign.h:50
FPGATrackSimHit::setParentageMask
void setParentageMask(unsigned long v)
Definition: FPGATrackSimHit.h:137
makeTOC.header
header
Definition: makeTOC.py:28
InDetSimData::Deposit
std::pair< HepMcParticleLink, float > Deposit
Definition: InDetSimData.h:48
InDetDD::SiDetectorElement::design
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
PixelID::phi_module
int phi_module(const Identifier &id) const
Definition: PixelID.h:644
FPGATrackSimSGToRawHitsTool::m_stripRDOKey
SG::ReadHandleKey< SCT_RDO_Container > m_stripRDOKey
Definition: FPGATrackSimSGToRawHitsTool.h:70
SG::AllowEmpty
@ AllowEmpty
Definition: StoreGate/StoreGate/VarHandleKey.h:30
FPGATrackSimTruthTrack::setQ
void setQ(int v)
Definition: FPGATrackSimTruthTrack.h:27
FPGATrackSimHit::setBarcodePt
void setBarcodePt(float v)
Definition: FPGATrackSimHit.h:135
FPGATrackSimOfflineTrack::setPhi
void setPhi(double v)
Definition: FPGATrackSimOfflineTrack.h:18
InDet::SiCluster
Definition: InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/SiCluster.h:40
Trk::TrackStateOnSurface::Measurement
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
Definition: TrackStateOnSurface.h:101
FPGATrackSimTruthTrack::setVtxX
void setVtxX(double v)
Definition: FPGATrackSimTruthTrack.h:20
SiliconTech::pixel
@ pixel
HitType::unmapped
@ unmapped
FPGATrackSimEventInfo::setLB
void setLB(const int &val)
Definition: FPGATrackSimEventInfo.h:59
egammaParameters::isPrimary
@ isPrimary
true if matched track has a hit in first or second pixel layer
Definition: egammaParamDefs.h:225
SCT_ID::is_barrel
bool is_barrel(const Identifier &id) const
Test for barrel - WARNING: id MUST be sct id, otherwise answer is not accurate. Use SiliconID for gen...
Definition: SCT_ID.h:721
FPGATrackSimHit::setHitType
void setHitType(HitType type)
Definition: FPGATrackSimHit.h:51
index_type
unsigned int index_type
Definition: FPGATrackSimSGToRawHitsTool.h:37
FPGATrackSimSGToRawHitsTool::m_extrapolator
ToolHandle< Trk::IExtrapolator > m_extrapolator
ToolHandle for Extrapolator.
Definition: FPGATrackSimSGToRawHitsTool.h:58
HepMC::signal_process_vertex
GenVertex * signal_process_vertex(const GenEvent *e)
Definition: GenEvent.h:503