ATLAS Offline Software
Loading...
Searching...
No Matches
InDet::DumpObjects Class Reference

#include <DumpObjects.h>

Inheritance diagram for InDet::DumpObjects:

Public Member Functions

 DumpObjects (const std::string &name, ISvcLocator *pSvcLocator)
 ~DumpObjects ()
virtual StatusCode initialize () override final
virtual StatusCode execute (const EventContext &ctx) override final
 Execute method.
virtual StatusCode finalize () override final
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
 Get filter decision:
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 Set filter decision:
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

virtual bool isReEntrant () const override final
 Legacy algorithms are not thread-safe.
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

bool isPassed (HepMC::ConstGenParticlePtr particle, float &px, float &py, float &pz, float &pt, float &eta, float &vx, float &vy, float &vz, float &radius, float &status, float &charge, std::vector< int > &vParentID, std::vector< int > &vParentBarcode, int &vProdNin, int &vProdNout, int &vProdStatus, int &vProdBarcode)
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

const PixelIDm_pixelID {}
const SCT_IDm_SCT_ID {}
const InDetDD::PixelDetectorManagerm_pixelManager {}
const InDetDD::SCT_DetectorManagerm_SCT_Manager {}
int m_event {}
int m_selected {}
std::string m_name
SG::ReadHandleKey< xAOD::EventInfom_eventInfoKey {this, "EventInfoKey", "EventInfo"}
SG::ReadHandleKey< McEventCollectionm_mcEventCollectionKey {this, "TruthEventKey", "TruthEvent"}
SG::ReadHandleKey< InDet::PixelClusterContainer > m_pixelClusterKey {this, "PixelClusterKey", "ITkPixelClusters"}
SG::ReadHandleKey< InDet::SCT_ClusterContainer > m_stripClusterKey {this, "StripClusterKey", "ITkStripClusters"}
SG::ReadHandleKey< InDetSimDataCollectionm_pixelSDOKey {this, "PixelSDOKey", "ITkPixelSDO_Map"}
SG::ReadHandleKey< InDetSimDataCollectionm_stripSDOKey {this, "StripSDOKey", "ITkStripSDO_Map"}
SG::ReadHandleKey< xAOD::SpacePointContainerm_xaodPixelSpacePointContainerKey {this,"xAODInputPixelSpacePoints", "ITkPixelSpacePoints"}
SG::ReadHandleKey< xAOD::SpacePointContainerm_xaodStripSpacePointContainerKey {this,"xAODInputSpacePointsContainerKey", "ITkStripSpacePoints"}
SG::ReadHandleKey< xAOD::SpacePointContainerm_xaodStripSpacePointOverlapContainerKey {this,"xAODInputSpacePointsOverlapContainerKey", "ITkStripOverlapSpacePoints"}
SG::ReadHandleKey< TrackCollectionm_tracksKey {this, "TracksKey", "CombinedITkTracks"}
SG::ReadHandleKey< TrackTruthCollectionm_tracksTruthKey {this, "TracksTruthKey", "CombinedITkTracksTruthCollection"}
SG::ReadHandleKey< DetailedTrackTruthCollectionm_detailedTracksTruthKey
int m_offset {}
float m_max_eta = 4.0
float m_min_pt = 1000.
int m_max_barcode = 200e3
float m_maxProdVertex = 260.
std::string m_ntupleFileName
 jobOption: Ntuple file name
std::string m_ntupleDirName
 jobOption: Ntuple directory name
std::string m_ntupleTreeName
 jobOption: Ntuple tree name
int m_maxCL {}
 jobOption: maximum number of clusters
int m_maxPart {}
 jobOption: maximum number of particles
int m_maxSP {}
 jobOption: maximum number of space points
int m_maxTRK {}
int m_maxDTT {}
bool m_rootFile {}
 jobOption: save data in root format
TTree * m_nt {}
unsigned int m_run_number {}
unsigned long long m_event_number {}
int m_nSE {}
int * m_SEID {}
int m_nCL {}
int * m_CLindex {}
std::vector< std::string > * m_CLhardware {}
double * m_CLx {}
double * m_CLy {}
double * m_CLz {}
int * m_CLbarrel_endcap {}
int * m_CLlayer_disk {}
int * m_CLeta_module {}
int * m_CLphi_module {}
int * m_CLside {}
uint64_t * m_CLmoduleID {}
std::vector< std::vector< int > > * m_CLparticleLink_eventIndex {}
std::vector< std::vector< int > > * m_CLparticleLink_barcode {}
std::vector< std::vector< bool > > * m_CLbarcodesLinked {}
std::vector< std::vector< float > > * m_CLparticle_charge {}
std::vector< std::vector< int > > * m_CLphis {}
std::vector< std::vector< int > > * m_CLetas {}
std::vector< std::vector< int > > * m_CLtots {}
double * m_CLloc_direction1 {}
double * m_CLloc_direction2 {}
double * m_CLloc_direction3 {}
double * m_CLJan_loc_direction1 {}
double * m_CLJan_loc_direction2 {}
double * m_CLJan_loc_direction3 {}
int * m_CLpixel_count {}
float * m_CLcharge_count {}
float * m_CLloc_eta {}
float * m_CLloc_phi {}
float * m_CLglob_eta {}
float * m_CLglob_phi {}
double * m_CLeta_angle {}
double * m_CLphi_angle {}
float * m_CLnorm_x {}
float * m_CLnorm_y {}
float * m_CLnorm_z {}
std::vector< std::vector< double > > * m_CLlocal_cov {}
int m_nPartEVT {}
int * m_Part_event_number {}
int * m_Part_barcode {}
float * m_Part_px {}
float * m_Part_py {}
float * m_Part_pz {}
float * m_Part_pt {}
float * m_Part_eta {}
float * m_Part_vx {}
float * m_Part_vy {}
float * m_Part_vz {}
float * m_Part_radius {}
float * m_Part_status {}
float * m_Part_charge {}
int * m_Part_pdg_id {}
int * m_Part_passed {}
int * m_Part_vProdNin {}
int * m_Part_vProdNout {}
int * m_Part_vProdStatus {}
int * m_Part_vProdBarcode {}
std::vector< std::vector< int > > * m_Part_vParentID {}
std::vector< std::vector< int > > * m_Part_vParentBarcode {}
int m_nSP {}
int * m_SPindex {}
double * m_SPx {}
double * m_SPy {}
double * m_SPz {}
int * m_SPCL1_index {}
int * m_SPCL2_index {}
int * m_SPisOverlap {}
double * m_SPradius {}
double * m_SPcovr {}
double * m_SPcovz {}
float * m_SPhl_topstrip {}
float * m_SPhl_botstrip {}
std::vector< std::vector< float > > * m_SPtopStripDirection {}
std::vector< std::vector< float > > * m_SPbottomStripDirection {}
std::vector< std::vector< float > > * m_SPstripCenterDistance {}
std::vector< std::vector< float > > * m_SPtopStripCenterPosition {}
int m_nTRK {}
int * m_TRKindex {}
int * m_TRKtrack_fitter {}
int * m_TRKparticle_hypothesis {}
std::vector< std::vector< int > > * m_TRKproperties {}
std::vector< std::vector< int > > * m_TRKpattern {}
int * m_TRKndof {}
int * m_TRKmot {}
int * m_TRKoot {}
float * m_TRKchiSq {}
std::vector< std::vector< int > > * m_TRKmeasurementsOnTrack_pixcl_sctcl_index {}
std::vector< std::vector< int > > * m_TRKoutliersOnTrack_pixcl_sctcl_index {}
int * m_TRKcharge {}
std::vector< std::vector< double > > * m_TRKperigee_position {}
std::vector< std::vector< double > > * m_TRKperigee_momentum {}
int * m_TTCindex {}
int * m_TTCevent_index {}
int * m_TTCparticle_link {}
float * m_TTCprobability {}
int m_nDTT {}
int * m_DTTindex {}
int * m_DTTsize {}
std::vector< std::vector< int > > * m_DTTtrajectory_eventindex {}
std::vector< std::vector< int > > * m_DTTtrajectory_barcode {}
std::vector< std::vector< int > > * m_DTTstTruth_subDetType {}
std::vector< std::vector< int > > * m_DTTstTrack_subDetType {}
std::vector< std::vector< int > > * m_DTTstCommon_subDetType {}
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 43 of file DumpObjects.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ DumpObjects()

InDet::DumpObjects::DumpObjects ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 58 of file DumpObjects.cxx.

60 : AthAlgorithm(name, pSvcLocator) {
61 declareProperty("Offset", m_offset);
62 declareProperty("FileName", m_name = "");
63 //
64 declareProperty("NtupleFileName", m_ntupleFileName);
65 declareProperty("NtupleDirectoryName", m_ntupleDirName);
66 declareProperty("NtupleTreeName", m_ntupleTreeName);
67 declareProperty("maxCL", m_maxCL = 1500000);
68 declareProperty("maxPart", m_maxPart = 1500000);
69 declareProperty("maxSP", m_maxSP = 1500000);
70 declareProperty("maxTRK", m_maxTRK = 1500000);
71 declareProperty("maxDTT", m_maxDTT = 1500000);
72
73 declareProperty("rootFile", m_rootFile);
74}
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
int m_maxCL
jobOption: maximum number of clusters
Definition DumpObjects.h:99
int m_maxSP
jobOption: maximum number of space points
std::string m_name
Definition DumpObjects.h:63
std::string m_ntupleDirName
jobOption: Ntuple directory name
Definition DumpObjects.h:97
std::string m_ntupleFileName
jobOption: Ntuple file name
Definition DumpObjects.h:96
bool m_rootFile
jobOption: save data in root format
std::string m_ntupleTreeName
jobOption: Ntuple tree name
Definition DumpObjects.h:98
int m_maxPart
jobOption: maximum number of particles

◆ ~DumpObjects()

InDet::DumpObjects::~DumpObjects ( )
inline

Definition at line 46 of file DumpObjects.h.

46{}

Member Function Documentation

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode InDet::DumpObjects::execute ( const EventContext & ctx)
finaloverridevirtual

Execute method.

Implements AthAlgorithm.

Definition at line 362 of file DumpObjects.cxx.

362 {
363 //-------------------------------
364 //
365 m_event++;
366
367 // map cluster ID to an index
368 // in order to connect the cluster to spacepoints
369 std::map<Identifier, long int> clusterIDMapIdx;
370 m_selected = 0; // global indices for clusters
371
372 std::map<Identifier, long int> clusterIDMapSpacePointIdx; // key: cluster indentifier, value: spacepoint index
373
374 // create a container with HepMcParticleLink and list of clusters
375 // particle barcode --> is accepted and number of clusters
376 std::map<std::pair<int, int>, std::pair<bool, int>> allTruthParticles;
377
378 const McEventCollection *mcCollptr = nullptr;
379 SG::ReadHandle<McEventCollection> mcEventCollectionHandle{m_mcEventCollectionKey, ctx};
380 if (not mcEventCollectionHandle.isValid()) {
381 ATH_MSG_WARNING(" McEventCollection not found: " << m_mcEventCollectionKey.key());
382 return StatusCode::FAILURE;
383 }
384 mcCollptr = mcEventCollectionHandle.cptr();
385
386 // dump out event ID
387 const xAOD::EventInfo *eventInfo = nullptr;
388 SG::ReadHandle<xAOD::EventInfo> eventInfoHandle(m_eventInfoKey, ctx);
389 if (not eventInfoHandle.isValid()) {
390 ATH_MSG_WARNING(" EventInfo not found: " << m_eventInfoKey.key());
391 return StatusCode::FAILURE;
392 }
393 eventInfo = eventInfoHandle.cptr();
394
395 m_run_number = eventInfo->runNumber();
396 m_event_number = eventInfo->eventNumber();
397
398 std::map<int, int> allSubEvents;
399
400 m_nSE = 0;
401
402 bool duplicateSubeventID = false;
403 for (unsigned int cntr = 0; cntr < mcCollptr->size(); ++cntr) {
404 int ID = mcCollptr->at(cntr)->event_number();
405 if (m_rootFile)
406 m_SEID[m_nSE++] = ID;
407
408 if (m_nSE == m_maxCL) {
409 ATH_MSG_WARNING("DUMP : hit max number of subevent ID");
410 break;
411 }
412 std::map<int, int>::iterator it = allSubEvents.find(ID);
413 if (it == allSubEvents.end())
414 allSubEvents.insert(std::make_pair(ID, 1));
415 else {
416 it->second++;
417 duplicateSubeventID = true;
418 }
419 }
420
421 if (duplicateSubeventID) {
422 ATH_MSG_WARNING("Duplicate subevent ID in event " << m_event);
423 }
424
425 m_nPartEVT = 0;
426
427 if (m_rootFile) {
428 (*m_Part_vParentID).clear();
429 (*m_Part_vParentBarcode).clear();
430 }
431
432 for (unsigned int cntr = 0; cntr < mcCollptr->size(); ++cntr) {
433 const HepMC::GenEvent *genEvt = (mcCollptr->at(cntr));
434
435 // for ( HepMC::GenEvent::particle_const_iterator p = genEvt->particles_begin(); p != genEvt->particles_end(); ++p )
436 // {
437
441
442 for (auto p : *genEvt) {
443 //*p is a GenParticle
444 float px, py, pz, pt, eta, vx, vy, vz, radius, status, charge = 0.;
445 std::vector<int> vParentID;
446 std::vector<int> vParentBarcode;
447
448 int vProdNin, vProdNout, vProdStatus, vProdBarcode;
449 bool passed = isPassed(p, px, py, pz, pt, eta, vx, vy, vz, radius, status, charge, vParentID, vParentBarcode,
450 vProdNin, vProdNout, vProdStatus, vProdBarcode);
451 allTruthParticles.insert(std::make_pair(std::make_pair(genEvt->event_number(), HepMC::barcode(p)),
452 std::make_pair(passed, 0)));
453 // subevent, barcode, px, py, pz, pt, eta, vx, vy, vz, radius, status, charge
454 if (m_rootFile) {
455 m_Part_event_number[m_nPartEVT] = genEvt->event_number();
462 m_Part_vx[m_nPartEVT] = vx;
463 m_Part_vy[m_nPartEVT] = vy;
464 m_Part_vz[m_nPartEVT] = vz;
468 m_Part_pdg_id[m_nPartEVT] = p->pdg_id();
469 m_Part_passed[m_nPartEVT] = (passed ? true : false);
470 m_Part_vProdNin[m_nPartEVT] = vProdNin;
471 m_Part_vProdNout[m_nPartEVT] = vProdNout;
472 m_Part_vProdStatus[m_nPartEVT] = vProdStatus;
473 m_Part_vProdBarcode[m_nPartEVT] = vProdBarcode;
474 (*m_Part_vParentID).push_back(std::move(vParentID));
475 (*m_Part_vParentBarcode).push_back(std::move(vParentBarcode));
476 }
477
478 m_nPartEVT++;
479 if (m_nPartEVT == m_maxPart) {
480 ATH_MSG_WARNING("DUMP : hit max number of particle events");
481 break;
482 }
483 }
484 }
485
487 SG::ReadHandle<InDet::PixelClusterContainer> pixelClusterContainerHandle{m_pixelClusterKey, ctx};
488 if (not pixelClusterContainerHandle.isValid()) {
489 ATH_MSG_WARNING(" PixelClusterContainer not found: " << m_pixelClusterKey.key());
490 return StatusCode::FAILURE;
491 }
492 PixelClusterContainer = pixelClusterContainerHandle.cptr();
493
494 const InDet::SCT_ClusterContainer *SCT_ClusterContainer = 0;
495 SG::ReadHandle<InDet::SCT_ClusterContainer> stripClusterContainerHandle{m_stripClusterKey, ctx};
496 if (not stripClusterContainerHandle.isValid()) {
497 ATH_MSG_WARNING(" SCT_ClusterContainer not found: " << m_stripClusterKey.key());
498 return StatusCode::FAILURE;
499 }
500 SCT_ClusterContainer = stripClusterContainerHandle.cptr();
501
502 auto cartesion_to_spherical = [](const Amg::Vector3D &xyzVec, float &eta_, float &phi_) {
503 float r3 = 0;
504 for (int idx = 0; idx < 3; ++idx) {
505 r3 += xyzVec[idx] * xyzVec[idx];
506 }
507 r3 = sqrt(r3);
508 phi_ = atan2(xyzVec[1], xyzVec[0]);
509 float theta_ = acos(xyzVec[2] / r3);
510 eta_ = log(tan(0.5 * theta_));
511 };
512
516
517 m_nCL = 0;
518 if (m_rootFile) {
519 (*m_CLhardware).clear();
520 (*m_CLparticleLink_eventIndex).clear();
521 (*m_CLparticleLink_barcode).clear();
522 (*m_CLbarcodesLinked).clear();
523 (*m_CLparticle_charge).clear();
524 (*m_CLphis).clear();
525 (*m_CLetas).clear();
526 (*m_CLtots).clear();
527 (*m_CLlocal_cov).clear();
528 }
529
530 if (PixelClusterContainer->size() > 0) {
531
532 const InDetSimDataCollection *sdoCollection = 0;
533 SG::ReadHandle<InDetSimDataCollection> sdoCollectionHandle{m_pixelSDOKey, ctx};
534 if (not sdoCollectionHandle.isValid()) {
535 ATH_MSG_WARNING(" InDetSimDataCollection not found: " << m_pixelSDOKey.key());
536 return StatusCode::FAILURE;
537 }
538 sdoCollection = sdoCollectionHandle.cptr();
539
540 for (const auto clusterCollection : *PixelClusterContainer) {
541 // skip empty collections
542 if (clusterCollection->empty())
543 continue;
544
545 int barrel_endcap = m_pixelID->barrel_ec(clusterCollection->identify());
546 int layer_disk = m_pixelID->layer_disk(clusterCollection->identify());
547 int eta_module = m_pixelID->eta_module(clusterCollection->identify());
548 int phi_module = m_pixelID->phi_module(clusterCollection->identify());
549
550 const InDetDD::SiDetectorElement *element = m_pixelManager->getDetectorElement(clusterCollection->identify());
551
552 Amg::Vector3D my_normal = element->normal();
553 float norm_x = fabs(my_normal.x()) > 1e-5 ? my_normal.x() : 0.;
554 float norm_y = fabs(my_normal.y()) > 1e-5 ? my_normal.y() : 0.;
555 float norm_z = fabs(my_normal.z()) > 1e-5 ? my_normal.z() : 0.;
556
557 const InDetDD::PixelModuleDesign *design(dynamic_cast<const InDetDD::PixelModuleDesign *>(&element->design()));
558
559 if (not design) {
560 ATH_MSG_ERROR("Dynamic cast failed at " << __LINE__ << " of MergedPixelsTool.cxx.");
561 return StatusCode::FAILURE;
562 }
563
564 // loop over collection
565 for (const auto cluster : *clusterCollection) {
566 Identifier clusterId = cluster->identify();
567 if (!clusterId.is_valid()) {
568 ATH_MSG_WARNING("Pixel cluster identifier is not valid");
569 }
570
571 const Amg::MatrixX &local_cov = cluster->localCovariance();
572
573 std::vector<std::pair<int, int>> barcodes = {};
574 std::vector<int> particleLink_eventIndex = {};
575 std::vector<int> particleLink_barcode = {};
576 std::vector<bool> barcodesLinked = {};
577 std::vector<float> charge = {};
578 std::vector<int> phis = {};
579 std::vector<int> etas = {};
580 std::vector<int> tots = {};
581 int min_eta = 999;
582 int min_phi = 999;
583 int max_eta = -999;
584 int max_phi = -999;
585
586 float charge_count = 0;
587 int pixel_count = 0;
588
589 for (unsigned int rdo = 0; rdo < cluster->rdoList().size(); rdo++) {
590 const auto &rdoID = cluster->rdoList().at(rdo);
591 int phi = m_pixelID->phi_index(rdoID);
592 int eta = m_pixelID->eta_index(rdoID);
593 if (min_eta > eta)
594 min_eta = eta;
595 if (min_phi > phi)
596 min_phi = phi;
597 if (max_eta < eta)
598 max_eta = eta;
599 if (max_phi < phi)
600 max_phi = phi;
601
602 ++pixel_count;
603 charge_count += cluster->totList().at(rdo);
604
605 phis.push_back(phi);
606 etas.push_back(eta);
607 tots.push_back(cluster->totList().at(rdo));
608
609 auto pos = sdoCollection->find(rdoID);
610 if (pos != sdoCollection->end()) {
611 for (const auto & deposit : pos->second.getdeposits()) {
612 const HepMcParticleLink &particleLink = deposit.first;
613 std::pair<int, int> barcode(particleLink.eventIndex(), particleLink.barcode());
614 // if (particleLink.isValid()) allTruthParticles.at(barcode).second++; // JB comment this out
615 if (std::find(barcodes.begin(), barcodes.end(), barcode) == barcodes.end()) {
616 barcodes.push_back(barcode);
617 particleLink_eventIndex.push_back(particleLink.eventIndex());
618 particleLink_barcode.push_back(particleLink.barcode());
619 charge.push_back(deposit.second);
620 barcodesLinked.push_back(particleLink.isValid());
621 }
622 }
623 }
624 }
625
626 InDetDD::SiLocalPosition localPos_entry = design->localPositionOfCell(InDetDD::SiCellId(min_phi, min_eta));
627 InDetDD::SiLocalPosition localPos_exit = design->localPositionOfCell(InDetDD::SiCellId(max_phi, max_eta));
628
629 Amg::Vector3D localStartPosition(localPos_entry.xEta() - 0.5 * element->etaPitch(),
630 localPos_entry.xPhi() - 0.5 * element->phiPitch(),
631 -0.5 * element->thickness());
632 Amg::Vector3D localEndPosition(localPos_exit.xEta() + 0.5 * element->etaPitch(),
633 localPos_exit.xPhi() + 0.5 * element->phiPitch(), 0.5 * element->thickness());
634
635 // local direction in local coordinates
636 // clusterShape: [lx, ly, lz]
637 Amg::Vector3D localDirection = localEndPosition - localStartPosition;
638
639 float loc_eta = 0, loc_phi = 0; // clusterShape: [leta, lphi]
640 cartesion_to_spherical(localDirection, loc_eta, loc_phi);
641
642 Amg::Vector3D globalStartPosition = element->globalPosition(localStartPosition);
643 Amg::Vector3D globalEndPosition = element->globalPosition(localEndPosition);
644
645 Amg::Vector3D direction = globalEndPosition - globalStartPosition;
646 float glob_eta = 0, glob_phi = 0; // clusterShape: [geta, gphi]
647 cartesion_to_spherical(direction, glob_eta, glob_phi);
648
649 Amg::Vector3D my_phiax = element->phiAxis();
650 Amg::Vector3D my_etaax = element->etaAxis();
651
652 float trkphicomp = direction.dot(my_phiax);
653 float trketacomp = direction.dot(my_etaax);
654 float trknormcomp = direction.dot(my_normal);
655 double phi_angle = atan2(trknormcomp, trkphicomp);
656 double eta_angle = atan2(trknormcomp, trketacomp);
657 // now dumping all the values now
658 clusterIDMapIdx[cluster->identify()] = m_selected;
659 std::vector<double> v_local_cov;
660 if (local_cov.size() > 0) {
661 for (size_t i = 0, nRows = local_cov.rows(), nCols = local_cov.cols(); i < nRows; i++) {
662 for (size_t j = 0; j < nCols; ++j) {
663 v_local_cov.push_back(local_cov(i, j));
664 }
665 }
666 }
667 if (m_rootFile) {
668 // fill TTree
670 (*m_CLhardware).push_back("PIXEL");
671 m_CLx[m_nCL] = cluster->globalPosition().x();
672 m_CLy[m_nCL] = cluster->globalPosition().y();
673 m_CLz[m_nCL] = cluster->globalPosition().z();
674 m_CLbarrel_endcap[m_nCL] = barrel_endcap;
675 m_CLlayer_disk[m_nCL] = layer_disk;
676 m_CLeta_module[m_nCL] = eta_module;
677 m_CLphi_module[m_nCL] = phi_module;
678 m_CLside[m_nCL] = 0;
679 m_CLmoduleID[m_nCL] = clusterCollection->identify().get_compact();
680 (*m_CLparticleLink_eventIndex).push_back(std::move(particleLink_eventIndex));
681 (*m_CLparticleLink_barcode).push_back(std::move(particleLink_barcode));
682 (*m_CLbarcodesLinked).push_back(std::move(barcodesLinked));
683 (*m_CLparticle_charge).push_back(std::move(charge));
684 (*m_CLetas).push_back(std::move(etas));
685 (*m_CLphis).push_back(std::move(phis));
686 (*m_CLtots).push_back(std::move(tots));
687 m_CLloc_direction1[m_nCL] = localDirection[0];
688 m_CLloc_direction2[m_nCL] = localDirection[1];
689 m_CLloc_direction3[m_nCL] = localDirection[2];
693 m_CLpixel_count[m_nCL] = pixel_count;
694 m_CLcharge_count[m_nCL] = charge_count;
695 m_CLloc_eta[m_nCL] = loc_eta;
696 m_CLloc_phi[m_nCL] = loc_phi;
697 m_CLglob_eta[m_nCL] = glob_eta;
698 m_CLglob_phi[m_nCL] = glob_phi;
699 m_CLeta_angle[m_nCL] = eta_angle;
700 m_CLphi_angle[m_nCL] = phi_angle;
701 m_CLnorm_x[m_nCL] = norm_x;
702 m_CLnorm_y[m_nCL] = norm_y;
703 m_CLnorm_z[m_nCL] = norm_z;
704 (*m_CLlocal_cov).push_back(std::move(v_local_cov));
705 }
706 m_nCL++;
707 m_selected++;
708 if (m_nCL == m_maxCL) {
709 ATH_MSG_WARNING("DUMP : hit max number of clusters");
710 break;
711 }
712 }
713 }
714 }
715
719
720 if (SCT_ClusterContainer->size() > 0) {
721 const InDetSimDataCollection *sdoCollection = 0;
722 SG::ReadHandle<InDetSimDataCollection> sdoCollectionHandle{m_stripSDOKey, ctx};
723 if (not sdoCollectionHandle.isValid()) {
724 ATH_MSG_WARNING(" InDetSimDataCollection not found: " << m_stripSDOKey.key());
725 return StatusCode::FAILURE;
726 }
727 sdoCollection = sdoCollectionHandle.cptr();
728
729 for (const auto clusterCollection : *SCT_ClusterContainer) {
730 // skip empty collections
731 if (clusterCollection->empty())
732 continue;
733
734 int barrel_endcap = m_SCT_ID->barrel_ec(clusterCollection->identify());
735 int layer_disk = m_SCT_ID->layer_disk(clusterCollection->identify());
736 int eta_module = m_SCT_ID->eta_module(clusterCollection->identify());
737 int phi_module = m_SCT_ID->phi_module(clusterCollection->identify());
738 int side = m_SCT_ID->side(clusterCollection->identify());
739
740 const InDetDD::SiDetectorElement *element = m_SCT_Manager->getDetectorElement(clusterCollection->identify());
741
742 Amg::Vector3D my_normal = element->normal();
743 float norm_x = fabs(my_normal.x()) > 1e-5 ? my_normal.x() : 0.;
744 float norm_y = fabs(my_normal.y()) > 1e-5 ? my_normal.y() : 0.;
745 float norm_z = fabs(my_normal.z()) > 1e-5 ? my_normal.z() : 0.;
746
747 // loop over collection
748 for (const auto cluster : *clusterCollection) {
749 Identifier clusterId = cluster->identify();
750 if (!clusterId.is_valid()) {
751 ATH_MSG_WARNING("SCT cluster identifier is not valid");
752 }
753
754 const Amg::MatrixX &local_cov = cluster->localCovariance();
755
756 std::vector<std::pair<int, int>> barcodes = {};
757 std::vector<int> particleLink_eventIndex = {};
758 std::vector<int> particleLink_barcode = {};
759 std::vector<bool> barcodesLinked = {};
760 std::vector<float> charge = {};
761
762 std::vector<int> tots = {};
763 std::vector<int> strip_ids = {};
764 int min_strip = 999;
765 int max_strip = -999;
766
767 float charge_count = 0;
768 int pixel_count = 0;
769
770 for (unsigned int rdo = 0; rdo < cluster->rdoList().size(); rdo++) {
771 const auto &rdoID = cluster->rdoList().at(rdo);
772
773 int strip = m_SCT_ID->strip(rdoID);
774
775 if (min_strip > strip)
776 min_strip = strip;
777 if (max_strip < strip)
778 max_strip = strip;
779 strip_ids.push_back(strip);
780 // tots.push_back(cluster->totList().at(rdo));
781 tots.push_back(0); // FIXME
782 ++pixel_count;
783 // find barcodes of the truth particles
784 auto pos = sdoCollection->find(rdoID);
785 if (pos != sdoCollection->end()) {
786 for (auto deposit : pos->second.getdeposits()) {
787 const HepMcParticleLink &particleLink = deposit.first;
788 std::pair<int, int> barcode(particleLink.eventIndex(), particleLink.barcode());
789 // note that we are not filling the map allTruthParticles here - OK, we are not using this map for
790 // anything
791 if (std::find(barcodes.begin(), barcodes.end(), barcode) == barcodes.end()) {
792 barcodes.push_back(barcode);
793 particleLink_eventIndex.push_back(particleLink.eventIndex());
794 particleLink_barcode.push_back(particleLink.barcode());
795 charge.push_back(deposit.second);
796 barcodesLinked.push_back(particleLink.isValid());
797 }
798 }
799 }
800 }
801
802 // retrieve cluster shape
803 const InDetDD::SCT_ModuleSideDesign *design(
804 dynamic_cast<const InDetDD::SCT_ModuleSideDesign *>(&element->design()));
805 if (not design) {
806 ATH_MSG_ERROR("Failed at " << __LINE__ << " of accessing SCT ModuleSide Design");
807 return StatusCode::FAILURE;
808 }
809
810 Amg::Vector2D locpos = cluster->localPosition();
811 std::pair<Amg::Vector3D, Amg::Vector3D> ends(
812 element->endsOfStrip(InDetDD::SiLocalPosition(locpos.y(), locpos.x(), 0)));
813
814 Amg::Vector3D JanDirection = ends.second - ends.first;
815
816 InDetDD::SiLocalPosition localPos_entry = design->localPositionOfCell(InDetDD::SiCellId(min_strip));
817 InDetDD::SiLocalPosition localPos_exit = design->localPositionOfCell(InDetDD::SiCellId(max_strip));
818
819 Amg::Vector3D localStartPosition(localPos_entry.xEta() - 0.5 * element->etaPitch(),
820 localPos_entry.xPhi() - 0.5 * element->phiPitch(),
821 -0.5 * element->thickness());
822 Amg::Vector3D localEndPosition(localPos_exit.xEta() + 0.5 * element->etaPitch(),
823 localPos_exit.xPhi() + 0.5 * element->phiPitch(), 0.5 * element->thickness());
824
825 Amg::Vector3D localDirection = localEndPosition - localStartPosition;
826 float loc_eta = 0, loc_phi = 0; // clusterShape: [leta, lphi]
827 cartesion_to_spherical(localDirection, loc_eta, loc_phi);
828
829 Amg::Vector3D globalStartPosition = element->globalPosition(localStartPosition);
830 Amg::Vector3D globalEndPosition = element->globalPosition(localEndPosition);
831
832 Amg::Vector3D direction = globalEndPosition - globalStartPosition;
833 float glob_eta = 0, glob_phi = 0; // clusterShape: [geta, gphi]
834 cartesion_to_spherical(direction, glob_eta, glob_phi);
835
836 Amg::Vector3D my_phiax = element->phiAxis();
837 Amg::Vector3D my_etaax = element->etaAxis();
838
839 float trkphicomp = direction.dot(my_phiax);
840 float trketacomp = direction.dot(my_etaax);
841 float trknormcomp = direction.dot(my_normal);
842 double phi_angle = atan2(trknormcomp, trkphicomp);
843 double eta_angle = atan2(trknormcomp, trketacomp);
844
845 // now dumping all the values now
846 clusterIDMapIdx[cluster->identify()] = m_selected;
847 // cluster shape
848 std::vector<int> cst;
849 for (unsigned strip = 0; strip < strip_ids.size(); strip++) {
850 cst.push_back(-1);
851 }
852 std::vector<double> v_local_cov;
853 if (local_cov.size() > 0) {
854 for (size_t i = 0, nRows = local_cov.rows(), nCols = local_cov.cols(); i < nRows; i++) {
855 for (size_t j = 0; j < nCols; ++j) {
856 v_local_cov.push_back(local_cov(i, j));
857 }
858 }
859 }
860 if (m_rootFile) {
862 (*m_CLhardware).push_back("STRIP");
863 m_CLx[m_nCL] = cluster->globalPosition().x();
864 m_CLy[m_nCL] = cluster->globalPosition().y();
865 m_CLz[m_nCL] = cluster->globalPosition().z();
866 m_CLbarrel_endcap[m_nCL] = barrel_endcap;
867 m_CLlayer_disk[m_nCL] = layer_disk;
868 m_CLeta_module[m_nCL] = eta_module;
869 m_CLphi_module[m_nCL] = phi_module;
871 m_CLmoduleID[m_nCL] = clusterCollection->identify().get_compact();
872 (*m_CLparticleLink_eventIndex).push_back(std::move(particleLink_eventIndex));
873 (*m_CLparticleLink_barcode).push_back(std::move(particleLink_barcode));
874 (*m_CLbarcodesLinked).push_back(std::move(barcodesLinked));
875 (*m_CLparticle_charge).push_back(std::move(charge));
876 (*m_CLetas).push_back(std::move(strip_ids));
877 (*m_CLphis).push_back(std::move(cst));
878 (*m_CLtots).push_back(std::move(tots));
879 m_CLloc_direction1[m_nCL] = localDirection[0];
880 m_CLloc_direction2[m_nCL] = localDirection[1];
881 m_CLloc_direction3[m_nCL] = localDirection[2];
882 m_CLJan_loc_direction1[m_nCL] = JanDirection[0];
883 m_CLJan_loc_direction2[m_nCL] = JanDirection[1];
884 m_CLJan_loc_direction3[m_nCL] = JanDirection[2];
885 m_CLpixel_count[m_nCL] = pixel_count;
886 m_CLcharge_count[m_nCL] = charge_count;
887 m_CLloc_eta[m_nCL] = loc_eta;
888 m_CLloc_phi[m_nCL] = loc_phi;
889 m_CLglob_eta[m_nCL] = glob_eta;
890 m_CLglob_phi[m_nCL] = glob_phi;
891 m_CLeta_angle[m_nCL] = eta_angle;
892 m_CLphi_angle[m_nCL] = phi_angle;
893 m_CLnorm_x[m_nCL] = norm_x;
894 m_CLnorm_y[m_nCL] = norm_y;
895 m_CLnorm_z[m_nCL] = norm_z;
896 (*m_CLlocal_cov).push_back(v_local_cov);
897 }
898
899 m_nCL++;
900 m_selected++;
901 if (m_nCL == m_maxCL) {
902 ATH_MSG_WARNING("DUMP : hit max number of clusters");
903 break;
904 }
905 }
906 }
907 }
908
909
913
914 static const SG::Accessor< ElementLink<SpacePointCollection> > linkAcc("pixelSpacePointLink");
915 static const SG::Accessor< ElementLink< ::SpacePointCollection > > striplinkAcc("sctSpacePointLink");
916 static const SG::Accessor< ElementLink< ::SpacePointOverlapCollection > > stripOverlaplinkAcc("stripOverlapSpacePointLink");
917
918 // xAOD Containers
919 const xAOD::SpacePointContainer *xAODPixelSPContainer = nullptr;
920
921 SG::ReadHandle<xAOD::SpacePointContainer> xAODPixelSpacePointContainerHandle{m_xaodPixelSpacePointContainerKey,ctx};
922
923 if (not xAODPixelSpacePointContainerHandle.isValid()) {
924 ATH_MSG_ERROR(" SpacePointContainer not found: " << m_xaodPixelSpacePointContainerKey.key());
925 return StatusCode::FAILURE;
926 }
927
928 xAODPixelSPContainer = xAODPixelSpacePointContainerHandle.cptr();
929
930
931 const xAOD::SpacePointContainer *xAODStripSPContainer = 0;
932 SG::ReadHandle<xAOD::SpacePointContainer> xAODStripSpacePointContainerHandle{m_xaodStripSpacePointContainerKey, ctx};
933 if (not xAODStripSpacePointContainerHandle.isValid()) {
934 ATH_MSG_ERROR(" SpacePointContainer not found: " << m_xaodStripSpacePointContainerKey.key());
935 return StatusCode::FAILURE;
936 }
937 xAODStripSPContainer = xAODStripSpacePointContainerHandle.cptr();
938
939
940 const xAOD::SpacePointContainer *xAODStripSPOverlapContainer = 0;
941 SG::ReadHandle<xAOD::SpacePointContainer> xAODStripSpacePointOverlapContainerHandle{m_xaodStripSpacePointOverlapContainerKey, ctx};
942 if (not xAODStripSpacePointOverlapContainerHandle.isValid()) {
943 ATH_MSG_ERROR(" SpacePointContainer not found: " << m_xaodStripSpacePointOverlapContainerKey.key());
944 return StatusCode::FAILURE;
945 }
946 xAODStripSPOverlapContainer = xAODStripSpacePointOverlapContainerHandle.cptr();
947
948 int sp_index = 0;
949 m_nSP = 0;
950
951 if (xAODPixelSPContainer && xAODPixelSPContainer->size() > 0) {
952 for (const auto sp : *xAODPixelSPContainer) {
953
954 if (not linkAcc.isAvailable(*sp))
955 ATH_MSG_FATAL("no pixel SpacePoint link for xAOD::SpacePoint");
956
957
958 auto trk_sp = *linkAcc(*sp);
959 const InDet::SiCluster *cl = static_cast<const InDet::SiCluster*>(trk_sp->clusterList().first);
960
961 if (m_rootFile) {
962 m_SPindex[m_nSP] = sp_index;
963 m_SPx[m_nSP] = sp->globalPosition().x();
964 m_SPy[m_nSP] = sp->globalPosition().y();
965 m_SPz[m_nSP] = sp->globalPosition().z();
966 m_SPradius[m_nSP] = sp->radius();
967 m_SPcovr[m_nSP] = sp->varianceR();
968 m_SPcovz[m_nSP] = sp->varianceZ();
969 m_SPCL1_index[m_nSP] = clusterIDMapIdx[cl->identify()];
970 m_SPCL2_index[m_nSP] = -1;
971 m_SPisOverlap[m_nSP] = -1;
972 }
973
974 sp_index++;
975 m_nSP++;
976 if (m_nSP == m_maxSP) {
977 ATH_MSG_WARNING("DUMP : hit max number of space points");
978 break;
979 }
980 } // loop on container
981 } // container not empty
982
983 if (xAODStripSPContainer && xAODStripSPContainer->size() > 0) {
984
985 //loop over collection
986 for (const auto sp : *xAODStripSPContainer) {
987
988 ATH_CHECK(striplinkAcc.isAvailable(*sp));
989
990 auto trk_sp = *striplinkAcc(*sp);
991 const InDet::SiCluster *cl_1 = static_cast<const InDet::SiCluster *>(trk_sp->clusterList().first);
992 const InDet::SiCluster *cl_2 = static_cast<const InDet::SiCluster *>(trk_sp->clusterList().second);
993
994 if (m_rootFile) {
995
996 m_SPindex[m_nSP] = sp_index;
997 m_SPx[m_nSP] = sp->globalPosition().x();
998 m_SPy[m_nSP] = sp->globalPosition().y();
999 m_SPz[m_nSP] = sp->globalPosition().z();
1000 m_SPradius[m_nSP] = sp->radius();
1001 m_SPcovr[m_nSP] = sp->varianceR();
1002 m_SPcovz[m_nSP] = sp->varianceZ();
1003 m_SPCL1_index[m_nSP] = clusterIDMapIdx[cl_1->identify()];
1004 m_SPCL2_index[m_nSP] = clusterIDMapIdx[cl_2->identify()];
1005 m_SPisOverlap[m_nSP] = 0;
1006 m_SPhl_topstrip[m_nSP] = sp->topHalfStripLength();
1007 m_SPhl_botstrip[m_nSP] = sp->bottomHalfStripLength();
1008
1009
1010 std::vector<float> topstripDir(sp->topStripDirection().data(),
1011 sp->topStripDirection().data() +
1012 sp->topStripDirection().size());
1013
1014 std::vector<float> botstripDir(sp->bottomStripDirection().data(),
1015 sp->bottomStripDirection().data() +
1016 sp->bottomStripDirection().size());
1017
1018 std::vector<float> DstripCnt(sp->stripCenterDistance().data(),
1019 sp->stripCenterDistance().data() +
1020 sp->stripCenterDistance().size());
1021
1022 std::vector<float> topstripCnt(sp->topStripCenter().data(),
1023 sp->topStripCenter().data() +
1024 sp->topStripCenter().size());
1025
1026 (*m_SPtopStripDirection).push_back(std::move(topstripDir));
1027 (*m_SPbottomStripDirection).push_back(std::move(botstripDir));
1028 (*m_SPstripCenterDistance).push_back(std::move(DstripCnt));
1029 (*m_SPtopStripCenterPosition).push_back(std::move(topstripCnt));
1030
1031 }
1032
1033 sp_index++;
1034 m_nSP++;
1035
1036 if (m_nSP == m_maxSP) {
1037 ATH_MSG_WARNING("DUMP : hit max number of space points");
1038 break;
1039 }
1040 }
1041 }
1042
1043
1044 if (xAODStripSPOverlapContainer && xAODStripSPOverlapContainer->size() > 0) {
1045
1046 //loop over collection
1047 for (const auto sp : *xAODStripSPOverlapContainer) {
1048
1049 ATH_CHECK(stripOverlaplinkAcc.isAvailable(*sp));
1050
1051 auto trk_sp = *stripOverlaplinkAcc(*sp);
1052 const InDet::SiCluster *cl_1 = static_cast<const InDet::SiCluster *>(trk_sp->clusterList().first);
1053 const InDet::SiCluster *cl_2 = static_cast<const InDet::SiCluster *>(trk_sp->clusterList().second);
1054
1055 if (m_rootFile) {
1056
1057 m_SPindex[m_nSP] = sp_index;
1058 m_SPx[m_nSP] = sp->globalPosition().x();
1059 m_SPy[m_nSP] = sp->globalPosition().y();
1060 m_SPz[m_nSP] = sp->globalPosition().z();
1061 m_SPradius[m_nSP] = sp->radius();
1062 m_SPcovr[m_nSP] = sp->varianceR();
1063 m_SPcovz[m_nSP] = sp->varianceZ();
1064 m_SPCL1_index[m_nSP] = clusterIDMapIdx[cl_1->identify()];
1065 m_SPCL2_index[m_nSP] = clusterIDMapIdx[cl_2->identify()];
1066
1067 int flag = compute_overlap_SP_flag(m_CLeta_module[clusterIDMapIdx[cl_1->identify()]],
1068 m_CLphi_module[clusterIDMapIdx[cl_1->identify()]],
1069 m_CLeta_module[clusterIDMapIdx[cl_2->identify()]],
1070 m_CLphi_module[clusterIDMapIdx[cl_2->identify()]]);
1071
1072 if ( flag<1 || flag > 3 )
1073 ATH_MSG_WARNING("Unexpected overlap SP flag: "<<flag);
1074
1075
1077 m_SPhl_topstrip[m_nSP] = sp->topHalfStripLength();
1078 m_SPhl_botstrip[m_nSP] = sp->bottomHalfStripLength();
1079
1080
1081 std::vector<float> topstripDir(sp->topStripDirection().data(),
1082 sp->topStripDirection().data() +
1083 sp->topStripDirection().size());
1084
1085 std::vector<float> botstripDir(sp->bottomStripDirection().data(),
1086 sp->bottomStripDirection().data() +
1087 sp->bottomStripDirection().size());
1088
1089 std::vector<float> DstripCnt(sp->stripCenterDistance().data(),
1090 sp->stripCenterDistance().data() +
1091 sp->stripCenterDistance().size());
1092
1093 std::vector<float> topstripCnt(sp->topStripCenter().data(),
1094 sp->topStripCenter().data() +
1095 sp->topStripCenter().size());
1096
1097 (*m_SPtopStripDirection).push_back(topstripDir);
1098 (*m_SPbottomStripDirection).push_back(botstripDir);
1099 (*m_SPstripCenterDistance).push_back(DstripCnt);
1100 (*m_SPtopStripCenterPosition).push_back(topstripCnt);
1101
1102 }
1103
1104 sp_index++;
1105 m_nSP++;
1106 if (m_nSP == m_maxSP) {
1107 ATH_MSG_WARNING("DUMP : hit max number of space points");
1108 break;
1109 }
1110 } // loop on container
1111 } // container not empty
1112
1113
1117
1118 const TrackCollection *trackCollection = 0;
1119 SG::ReadHandle<TrackCollection> trackCollectionHandle{m_tracksKey, ctx};
1120 if (not trackCollectionHandle.isValid()) {
1121 ATH_MSG_WARNING(" TrackCollection not found: " << m_tracksKey.key());
1122 return StatusCode::FAILURE;
1123 }
1124 trackCollection = trackCollectionHandle.cptr();
1125
1126 const TrackTruthCollection *trackTruthCollection = 0;
1127 SG::ReadHandle<TrackTruthCollection> trackTruthCollectionHandle{m_tracksTruthKey, ctx};
1128 if (not trackTruthCollectionHandle.isValid()) {
1129 ATH_MSG_WARNING(" TrackTruthCollection not found: " << m_tracksTruthKey.key());
1130 return StatusCode::FAILURE;
1131 }
1132 trackTruthCollection = trackTruthCollectionHandle.cptr();
1133
1134 int trk_index = 0;
1135
1136 // loop over tracks (and track truth) objects
1137 TrackCollection::const_iterator trackIterator = (*trackCollection).begin();
1138 m_nTRK = 0;
1139 if (m_rootFile) {
1140 (*m_TRKproperties).clear();
1141 (*m_TRKpattern).clear();
1142 (*m_TRKperigee_position).clear();
1143 (*m_TRKperigee_momentum).clear();
1144 (*m_TRKmeasurementsOnTrack_pixcl_sctcl_index).clear();
1145 (*m_TRKoutliersOnTrack_pixcl_sctcl_index).clear();
1146 }
1147
1148 for (; trackIterator < (*trackCollection).end(); ++trackIterator) {
1149 if (!((*trackIterator))) {
1150 ATH_MSG_WARNING("TrackCollection contains empty entries");
1151 continue;
1152 }
1153 const Trk::TrackInfo &info = (*trackIterator)->info();
1154 const Trk::FitQuality *fitQuality = (*trackIterator)->fitQuality();
1155 const Trk::Perigee *perigeeParameters = (*trackIterator)->perigeeParameters();
1156 const DataVector<const Trk::MeasurementBase> *measurementsOnTrack = (*trackIterator)->measurementsOnTrack();
1157 const DataVector<const Trk::MeasurementBase> *outliersOnTrack = (*trackIterator)->outliersOnTrack();
1158
1159 ElementLink<TrackCollection> tracklink;
1160 tracklink.setElement(const_cast<Trk::Track *>(*trackIterator));
1161 tracklink.setStorableObject(*trackCollection);
1162 const ElementLink<TrackCollection> tracklink2 = tracklink;
1163 TrackTruthCollection::const_iterator found = trackTruthCollection->find(tracklink2);
1164
1165 const std::bitset<Trk::TrackInfo::NumberOfTrackProperties> &properties = info.properties();
1166 std::vector<int> v_properties;
1167 for (std::size_t i = 0; i < properties.size(); i++) {
1168 if (properties[i]) {
1169 v_properties.push_back(i);
1170 }
1171 }
1172
1173 const std::bitset<Trk::TrackInfo::NumberOfTrackRecoInfo> &pattern = info.patternRecognition();
1174 std::vector<int> v_pattern;
1175 for (std::size_t i = 0; i < pattern.size(); i++) {
1176 if (pattern[i]) {
1177 v_pattern.push_back(i);
1178 }
1179 }
1180
1181 int ndof = -1;
1182 float chiSq = 0;
1183 if (fitQuality) {
1185 chiSq = fitQuality->chiSquared();
1186 }
1187 std::vector<double> position, momentum;
1188 int charge = 0;
1189 if (perigeeParameters) {
1190 position.push_back(perigeeParameters->position()[0]);
1191 position.push_back(perigeeParameters->position()[1]);
1192 position.push_back(perigeeParameters->position()[2]);
1193 momentum.push_back(perigeeParameters->momentum()[0]);
1194 momentum.push_back(perigeeParameters->momentum()[1]);
1195 momentum.push_back(perigeeParameters->momentum()[2]);
1196 charge = perigeeParameters->charge();
1197 } else {
1198 position.push_back(0);
1199 position.push_back(0);
1200 position.push_back(0);
1201 momentum.push_back(0);
1202 momentum.push_back(0);
1203 momentum.push_back(0);
1204 }
1205 int mot = 0;
1206 int oot = 0;
1207 if (measurementsOnTrack)
1208 mot = measurementsOnTrack->size();
1209 if (outliersOnTrack)
1210 oot = outliersOnTrack->size();
1211 std::vector<int> measurementsOnTrack_pixcl_sctcl_index, outliersOnTrack_pixcl_sctcl_index;
1212 int TTCindex, TTCevent_index, TTCparticle_link;
1213 float TTCprobability;
1214 if (measurementsOnTrack) {
1215 for (size_t i = 0; i < measurementsOnTrack->size(); i++) {
1216 const Trk::MeasurementBase *mb = (*measurementsOnTrack)[i];
1217 const InDet::PixelClusterOnTrack *pixcl = dynamic_cast<const InDet::PixelClusterOnTrack *>(mb);
1218 const InDet::SCT_ClusterOnTrack *sctcl = dynamic_cast<const InDet::SCT_ClusterOnTrack *>(mb);
1219 if (pixcl) {
1220 measurementsOnTrack_pixcl_sctcl_index.push_back(clusterIDMapIdx[pixcl->prepRawData()->identify()]);
1221 }
1222 else if (sctcl) {
1223 measurementsOnTrack_pixcl_sctcl_index.push_back(clusterIDMapIdx[sctcl->prepRawData()->identify()]);
1224 } else {
1225 measurementsOnTrack_pixcl_sctcl_index.push_back(-1);
1226 }
1227 }
1228 }
1229 if (outliersOnTrack) {
1230 for (size_t i = 0; i < outliersOnTrack->size(); i++) {
1231 const Trk::MeasurementBase *mb = (*outliersOnTrack)[i];
1232 const InDet::PixelClusterOnTrack *pixcl = dynamic_cast<const InDet::PixelClusterOnTrack *>(mb);
1233 const InDet::SCT_ClusterOnTrack *sctcl = dynamic_cast<const InDet::SCT_ClusterOnTrack *>(mb);
1234 if (pixcl) {
1235 outliersOnTrack_pixcl_sctcl_index.push_back(clusterIDMapIdx[pixcl->prepRawData()->identify()]);
1236 } else if (sctcl) {
1237 outliersOnTrack_pixcl_sctcl_index.push_back(clusterIDMapIdx[sctcl->prepRawData()->identify()]);
1238 } else {
1239 outliersOnTrack_pixcl_sctcl_index.push_back(-1);
1240 }
1241 }
1242 }
1243 if (found != trackTruthCollection->end()) {
1244 TTCindex = found->first.index();
1245 TTCevent_index = found->second.particleLink().eventIndex();
1246 TTCparticle_link = found->second.particleLink().barcode();
1247 TTCprobability = found->second.probability();
1248 } else {
1249 TTCindex = TTCevent_index = TTCparticle_link = -999;
1250 TTCprobability = -1;
1251 }
1252
1253 if (m_rootFile) {
1254 m_TRKindex[m_nTRK] = trk_index;
1255 m_TRKtrack_fitter[m_nTRK] = info.trackFitter();
1256 m_TRKndof[m_nTRK] = info.trackFitter();
1257 m_TRKparticle_hypothesis[m_nTRK] = info.particleHypothesis();
1258 (*m_TRKproperties).push_back(std::move(v_properties));
1259 (*m_TRKpattern).push_back(std::move(v_pattern));
1261 m_TRKchiSq[m_nTRK] = chiSq;
1262 (*m_TRKmeasurementsOnTrack_pixcl_sctcl_index).push_back(std::move(measurementsOnTrack_pixcl_sctcl_index));
1263 (*m_TRKoutliersOnTrack_pixcl_sctcl_index).push_back(std::move(outliersOnTrack_pixcl_sctcl_index));
1265 (*m_TRKperigee_position).push_back(std::move(position));
1266 (*m_TRKperigee_momentum).push_back(std::move(momentum));
1267 m_TRKmot[m_nTRK] = mot;
1268 m_TRKoot[m_nTRK] = oot;
1269 m_TTCindex[m_nTRK] = TTCindex;
1270 m_TTCevent_index[m_nTRK] = TTCevent_index;
1271 m_TTCparticle_link[m_nTRK] = TTCparticle_link;
1272 m_TTCprobability[m_nTRK] = TTCprobability;
1273 }
1274
1275 trk_index++;
1276 // index
1277 m_nTRK++;
1278 if (m_nTRK == m_maxTRK) {
1279 ATH_MSG_WARNING("DUMP : hit max number of track events");
1280 break;
1281 }
1282 }
1283
1284 const DetailedTrackTruthCollection *detailedTrackTruthCollection = 0;
1285 SG::ReadHandle<DetailedTrackTruthCollection> detailedTrackTruthCollectionHandle{m_detailedTracksTruthKey, ctx};
1286 if (not detailedTrackTruthCollectionHandle.isValid()) {
1287 ATH_MSG_WARNING(" DetailedTrackTruthCollection not found: " << m_detailedTracksTruthKey.key());
1288 return StatusCode::FAILURE;
1289 }
1290 detailedTrackTruthCollection = detailedTrackTruthCollectionHandle.cptr();
1291
1292 m_nDTT = 0;
1293 if (m_rootFile) {
1294 (*m_DTTtrajectory_eventindex).clear();
1295 (*m_DTTtrajectory_barcode).clear();
1296 (*m_DTTstTruth_subDetType).clear();
1297 (*m_DTTstTrack_subDetType).clear();
1298 (*m_DTTstCommon_subDetType).clear();
1299 }
1300
1301 // loop over DetailedTrackTruth objects
1302 DetailedTrackTruthCollection::const_iterator detailedTrackTruthIterator = (*detailedTrackTruthCollection).begin();
1303 for (; detailedTrackTruthIterator != (*detailedTrackTruthCollection).end(); ++detailedTrackTruthIterator) {
1304 std::vector<int> DTTtrajectory_eventindex, DTTtrajectory_barcode, DTTstTruth_subDetType, DTTstTrack_subDetType,
1305 DTTstCommon_subDetType;
1306 const TruthTrajectory &traj = detailedTrackTruthIterator->second.trajectory();
1307 for (size_t j = 0; j < traj.size(); j++) {
1308 DTTtrajectory_eventindex.push_back(traj[j].eventIndex());
1309 DTTtrajectory_barcode.push_back(traj[j].barcode());
1310 }
1311 const SubDetHitStatistics &stTruth = detailedTrackTruthIterator->second.statsTruth();
1312 const SubDetHitStatistics &stTrack = detailedTrackTruthIterator->second.statsTrack();
1313 const SubDetHitStatistics &stCommon = detailedTrackTruthIterator->second.statsCommon();
1314 for (unsigned j = 0; j < SubDetHitStatistics::NUM_SUBDETECTORS; j++) {
1315 DTTstTruth_subDetType.push_back(stTruth[SubDetHitStatistics::SubDetType(j)]);
1316 }
1317 for (unsigned j = 0; j < SubDetHitStatistics::NUM_SUBDETECTORS; j++) {
1318 DTTstTrack_subDetType.push_back(stTrack[SubDetHitStatistics::SubDetType(j)]);
1319 }
1320 for (unsigned j = 0; j < SubDetHitStatistics::NUM_SUBDETECTORS; j++) {
1321 DTTstCommon_subDetType.push_back(stCommon[SubDetHitStatistics::SubDetType(j)]);
1322 }
1323
1324 if (m_rootFile) {
1325 m_DTTindex[m_nDTT] = detailedTrackTruthIterator->first.index();
1326 m_DTTsize[m_nDTT] = traj.size();
1327 (*m_DTTtrajectory_eventindex).push_back(std::move(DTTtrajectory_eventindex));
1328 (*m_DTTtrajectory_barcode).push_back(std::move(DTTtrajectory_barcode));
1329 (*m_DTTstTruth_subDetType).push_back(std::move(DTTstTruth_subDetType));
1330 (*m_DTTstTrack_subDetType).push_back(std::move(DTTstTrack_subDetType));
1331 (*m_DTTstCommon_subDetType).push_back(std::move(DTTstCommon_subDetType));
1332 }
1333
1334 m_nDTT++;
1335 }
1336
1337 // Once all the information for this event has been filled in the arrays,
1338 // copy content of the arrays to the TTree
1339 if (m_rootFile)
1340 m_nt->Fill();
1341
1342 return StatusCode::SUCCESS;
1343}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_FATAL(x)
#define ATH_MSG_WARNING(x)
double charge(const T &p)
Definition AtlasPID.h:997
bool passed(DecisionID id, const DecisionIDContainer &)
checks if required decision ID is in the set of IDs in the container
static Double_t sp
size_t size() const
Number of registered mappings.
DataVector< Trk::Track > TrackCollection
This typedef represents a collection of Trk::Track objects.
DetailedTrackTruthCollection
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
const T * at(size_type n) const
Access an element, as an rvalue.
size_type size() const noexcept
Returns the number of elements in the collection.
bool is_valid() const
Check if id is in a valid state.
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
double phiPitch() const
Pitch (inline methods).
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...
double xPhi() const
position along phi direction:
double xEta() const
position along eta direction:
virtual const Amg::Vector3D & normal() const override final
Get reconstruction local normal axes in global frame.
HepGeom::Point3D< double > globalPosition(const HepGeom::Point3D< double > &localPos) const
transform a reconstruction local position into a global position (inline):
double etaPitch() const
Pitch (inline methods).
double * m_CLloc_direction3
SG::ReadHandleKey< DetailedTrackTruthCollection > m_detailedTracksTruthKey
Definition DumpObjects.h:83
bool isPassed(HepMC::ConstGenParticlePtr particle, float &px, float &py, float &pz, float &pt, float &eta, float &vx, float &vy, float &vz, float &radius, float &status, float &charge, std::vector< int > &vParentID, std::vector< int > &vParentBarcode, int &vProdNin, int &vProdNout, int &vProdStatus, int &vProdBarcode)
unsigned int m_run_number
double * m_CLloc_direction2
SG::ReadHandleKey< InDet::SCT_ClusterContainer > m_stripClusterKey
Definition DumpObjects.h:70
const SCT_ID * m_SCT_ID
Definition DumpObjects.h:58
SG::ReadHandleKey< TrackTruthCollection > m_tracksTruthKey
Definition DumpObjects.h:82
SG::ReadHandleKey< TrackCollection > m_tracksKey
Definition DumpObjects.h:81
unsigned long long m_event_number
double * m_CLJan_loc_direction3
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Definition DumpObjects.h:66
double * m_CLJan_loc_direction2
uint64_t * m_CLmoduleID
int * m_TRKparticle_hypothesis
const InDetDD::SCT_DetectorManager * m_SCT_Manager
Definition DumpObjects.h:60
const PixelID * m_pixelID
Definition DumpObjects.h:57
double * m_CLloc_direction1
double * m_CLJan_loc_direction1
SG::ReadHandleKey< McEventCollection > m_mcEventCollectionKey
Definition DumpObjects.h:67
SG::ReadHandleKey< xAOD::SpacePointContainer > m_xaodPixelSpacePointContainerKey
Definition DumpObjects.h:75
SG::ReadHandleKey< InDetSimDataCollection > m_stripSDOKey
Definition DumpObjects.h:73
const InDetDD::PixelDetectorManager * m_pixelManager
Definition DumpObjects.h:59
SG::ReadHandleKey< xAOD::SpacePointContainer > m_xaodStripSpacePointContainerKey
Definition DumpObjects.h:77
SG::ReadHandleKey< InDetSimDataCollection > m_pixelSDOKey
Definition DumpObjects.h:72
SG::ReadHandleKey< InDet::PixelClusterContainer > m_pixelClusterKey
Definition DumpObjects.h:69
SG::ReadHandleKey< xAOD::SpacePointContainer > m_xaodStripSpacePointOverlapContainerKey
Definition DumpObjects.h:79
virtual const PixelCluster * prepRawData() const override final
returns the PrepRawData - is a SiCluster in this scope
virtual const InDet::SCT_Cluster * prepRawData() const override final
returns the PrepRawData - is a SCT_Cluster in this scope
Trk::PrepRawDataContainer< SCT_ClusterCollection > SCT_ClusterContainer
Trk::PrepRawDataContainer< PixelClusterCollection > PixelClusterContainer
virtual bool isValid() override final
Can the handle be successfully dereferenced?
const_pointer_type cptr()
Dereference the pointer.
int numberDoF() const
returns the number of degrees of freedom of the overall track or vertex fit as integer
Definition FitQuality.h:60
double chiSquared() const
returns the of the overall track fit
Definition FitQuality.h:56
Identifier identify() const
return the identifier
uint32_t runNumber() const
The current event's run number.
uint64_t eventNumber() const
The current event's event number.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
event_number_t eventIndex
const std::string barcode
const std::string barcodes
int barcode(const T *p)
Definition Barcode.h:15
HepMC3::GenEvent GenEvent
Definition GenEvent.h:39
float ndof(const U &p)
int compute_overlap_SP_flag(const int &eta_module_cl1, const int &phi_module_cl1, const int &eta_module_cl2, const int &phi_module_cl2)
unsigned int constexpr nCols
Definition RPDUtils.h:25
SG::Accessor< T, ALLOC > Accessor
Definition AuxElement.h:573
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)
FitQualityOnSurface fitQuality(const MultiComponentState &, const MeasurementBase &)
Method for determining the chi2 of the multi-component state and the number of degrees of freedom.
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
@ perigeeParameters
const Amg::Vector3D & direction() const
Method to retrieve the direction at the Intersection.
const Amg::Vector3D & position() const
Method to retrieve the position of the Intersection.
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
bool flag
Definition master.py:29
status
Definition merge.py:16
ID
//////////////////////////////////////// JetAlgorithmType::ID defines most common physics jet finding...
PixelClusterContainer_v1 PixelClusterContainer
Define the version of the pixel cluster container.
EventInfo_v1 EventInfo
Definition of the latest event info version.
SpacePointContainer_v1 SpacePointContainer
Define the version of the space point container.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

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 & AthCommonAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 89 of file AthCommonAlgorithm.cxx.

54{
55 // If we didn't find any symlinks to add, just return the collection
56 // from the base class. Otherwise, return the extended collection.
57 if (!m_extendedExtraObjects.empty()) {
59 }
61}
Common base class for algorithms.

◆ filterPassed()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Get filter decision:

Definition at line 93 of file AthCommonAlgorithm.h.

93 {
94 return execState( ctx ).filterPassed();
95 }
virtual bool filterPassed(const EventContext &ctx) const
Get filter decision:

◆ finalize()

StatusCode InDet::DumpObjects::finalize ( )
finaloverridevirtual

Definition at line 1346 of file DumpObjects.cxx.

1346 {
1347 //--------------------------------
1348 if (m_rootFile) {
1349 delete[] m_SEID;
1350
1351 delete[] m_CLindex;
1352 delete m_CLhardware;
1353 delete[] m_CLx;
1354 delete[] m_CLy;
1355 delete[] m_CLz;
1356 delete[] m_CLbarrel_endcap;
1357 delete[] m_CLlayer_disk;
1358 delete[] m_CLeta_module;
1359 delete[] m_CLphi_module;
1360 delete[] m_CLside;
1361 delete[] m_CLmoduleID;
1364 delete m_CLbarcodesLinked;
1365 delete m_CLparticle_charge;
1366 delete m_CLphis;
1367 delete m_CLetas;
1368 delete m_CLtots;
1369 delete[] m_CLloc_direction1;
1370 delete[] m_CLloc_direction2;
1371 delete[] m_CLloc_direction3;
1372 delete[] m_CLJan_loc_direction1;
1373 delete[] m_CLJan_loc_direction2;
1374 delete[] m_CLJan_loc_direction3;
1375 delete[] m_CLpixel_count;
1376 delete[] m_CLcharge_count;
1377 delete[] m_CLloc_eta;
1378 delete[] m_CLloc_phi;
1379 delete[] m_CLglob_eta;
1380 delete[] m_CLglob_phi;
1381 delete[] m_CLeta_angle;
1382 delete[] m_CLphi_angle;
1383 delete[] m_CLnorm_x;
1384 delete[] m_CLnorm_y;
1385 delete[] m_CLnorm_z;
1386 delete m_CLlocal_cov;
1387
1388 delete[] m_Part_event_number;
1389 delete[] m_Part_barcode;
1390 delete[] m_Part_px;
1391 delete[] m_Part_py;
1392 delete[] m_Part_pz;
1393 delete[] m_Part_pt;
1394 delete[] m_Part_eta;
1395 delete[] m_Part_vx;
1396 delete[] m_Part_vy;
1397 delete[] m_Part_vz;
1398 delete[] m_Part_radius;
1399 delete[] m_Part_status;
1400 delete[] m_Part_charge;
1401 delete[] m_Part_pdg_id;
1402 delete[] m_Part_passed;
1403
1404 delete[] m_Part_vProdNin;
1405 delete[] m_Part_vProdNout;
1406 delete[] m_Part_vProdStatus;
1407 delete[] m_Part_vProdBarcode;
1408 delete m_Part_vParentID;
1409 delete m_Part_vParentBarcode;
1410
1411 delete[] m_SPindex;
1412 delete[] m_SPx;
1413 delete[] m_SPy;
1414 delete[] m_SPz;
1415 delete[] m_SPCL1_index;
1416 delete[] m_SPCL2_index;
1417 delete[] m_SPisOverlap;
1418 delete[] m_SPradius;
1419 delete[] m_SPcovr;
1420 delete[] m_SPcovz;
1421 delete[] m_SPhl_topstrip;
1422 delete[] m_SPhl_botstrip;
1423 delete m_SPtopStripDirection;
1427
1428 delete[] m_TRKindex;
1429 delete[] m_TRKtrack_fitter;
1430 delete[] m_TRKparticle_hypothesis;
1431 delete m_TRKproperties;
1432 delete m_TRKpattern;
1433 delete[] m_TRKndof;
1434 delete[] m_TRKmot;
1435 delete[] m_TRKoot;
1436 delete[] m_TRKchiSq;
1439 delete[] m_TRKcharge;
1440 delete m_TRKperigee_position;
1441 delete m_TRKperigee_momentum;
1442 delete[] m_TTCindex;
1443 delete[] m_TTCevent_index;
1444 delete[] m_TTCparticle_link;
1445 delete[] m_TTCprobability;
1446
1447 delete[] m_DTTindex;
1448 delete[] m_DTTsize;
1454 }
1455
1456 return StatusCode::SUCCESS;
1457}
std::vector< std::vector< int > > * m_CLtots
std::vector< std::vector< int > > * m_DTTtrajectory_eventindex
std::vector< std::vector< bool > > * m_CLbarcodesLinked
std::vector< std::vector< int > > * m_TRKpattern
std::vector< std::vector< int > > * m_DTTstTruth_subDetType
std::vector< std::vector< int > > * m_CLparticleLink_barcode
std::vector< std::vector< int > > * m_TRKoutliersOnTrack_pixcl_sctcl_index
std::vector< std::vector< double > > * m_TRKperigee_momentum
std::vector< std::vector< float > > * m_SPtopStripDirection
std::vector< std::vector< float > > * m_SPstripCenterDistance
std::vector< std::vector< double > > * m_TRKperigee_position
std::vector< std::vector< int > > * m_Part_vParentID
std::vector< std::vector< int > > * m_DTTstTrack_subDetType
std::vector< std::vector< int > > * m_CLphis
std::vector< std::vector< int > > * m_DTTtrajectory_barcode
std::vector< std::vector< int > > * m_TRKmeasurementsOnTrack_pixcl_sctcl_index
std::vector< std::vector< int > > * m_DTTstCommon_subDetType
std::vector< std::vector< int > > * m_TRKproperties
std::vector< std::string > * m_CLhardware
std::vector< std::vector< int > > * m_CLparticleLink_eventIndex
std::vector< std::vector< int > > * m_CLetas
std::vector< std::vector< float > > * m_CLparticle_charge
std::vector< std::vector< float > > * m_SPtopStripCenterPosition
std::vector< std::vector< double > > * m_CLlocal_cov
std::vector< std::vector< int > > * m_Part_vParentBarcode
std::vector< std::vector< float > > * m_SPbottomStripDirection

◆ initialize()

StatusCode InDet::DumpObjects::initialize ( )
finaloverridevirtual

Definition at line 77 of file DumpObjects.cxx.

77 {
78//-------------------------------------------
80
81 // ReadHandle keys
82 ATH_CHECK(m_eventInfoKey.initialize());
84 ATH_CHECK(m_stripClusterKey.initialize());
85 ATH_CHECK(m_pixelClusterKey.initialize());
86 ATH_CHECK(m_pixelSDOKey.initialize());
87 ATH_CHECK(m_stripSDOKey.initialize());
91
92 ATH_CHECK(m_tracksKey.initialize());
93 ATH_CHECK(m_tracksTruthKey.initialize());
95
96
97
98
99 // Grab PixelID helper
100 ATH_CHECK (detStore()->retrieve(m_pixelID, "PixelID") );
101
103 detStore()->retrieve(m_pixelManager, "Pixel").isFailure()) {
104 // if Pixel retrieval fails, try ITkPixel
106 detStore()->retrieve(m_pixelManager, "ITkPixel").isFailure()) {
107 return StatusCode::FAILURE;
108 }
109 }
110
111 // Grab SCT_ID helper
112 ATH_CHECK (detStore()->retrieve(m_SCT_ID,"SCT_ID") );
113
115 detStore()->retrieve(m_SCT_Manager, "SCT").isFailure()) {
116 // if SCT retrieval fails, try ITkStrip
118 detStore()->retrieve(m_SCT_Manager, "ITkStrip").isFailure()) {
119 return StatusCode::FAILURE;
120 }
121 }
122
123 // Define the TTree
124 //
125 SmartIF<ITHistSvc> tHistSvc{Gaudi::svcLocator()->service("THistSvc")};
126 ATH_CHECK(tHistSvc.isValid());
127 m_nt = new TTree(TString(m_ntupleTreeName), "Athena Dump for GNN4ITk");
128 // NB: we must not delete the tree, this is done by THistSvc
129 std::string fullNtupleName = m_ntupleFileName + m_ntupleDirName + m_ntupleTreeName;
130 StatusCode sc = tHistSvc->regTree(fullNtupleName, m_nt);
131 if (sc.isFailure()) {
132 ATH_MSG_ERROR("Unable to register TTree: " << fullNtupleName);
133 return sc;
134 }
135
136 if (m_rootFile) {
137 m_SEID = new int[m_maxCL];
138
139 m_CLindex = new int[m_maxCL];
140 m_CLhardware = new std::vector<std::string>;
141 m_CLx = new double[m_maxCL];
142 m_CLy = new double[m_maxCL];
143 m_CLz = new double[m_maxCL];
144 m_CLbarrel_endcap = new int[m_maxCL];
145 m_CLlayer_disk = new int[m_maxCL];
146 m_CLeta_module = new int[m_maxCL];
147 m_CLphi_module = new int[m_maxCL];
148 m_CLside = new int[m_maxCL];
150 m_CLparticleLink_eventIndex = new std::vector<std::vector<int>>;
151 m_CLparticleLink_barcode = new std::vector<std::vector<int>>;
152 m_CLbarcodesLinked = new std::vector<std::vector<bool>>;
153 m_CLparticle_charge = new std::vector<std::vector<float>>;
154 m_CLphis = new std::vector<std::vector<int>>;
155 m_CLetas = new std::vector<std::vector<int>>;
156 m_CLtots = new std::vector<std::vector<int>>;
157 m_CLloc_direction1 = new double[m_maxCL];
158 m_CLloc_direction2 = new double[m_maxCL];
159 m_CLloc_direction3 = new double[m_maxCL];
160 m_CLJan_loc_direction1 = new double[m_maxCL];
161 m_CLJan_loc_direction2 = new double[m_maxCL];
162 m_CLJan_loc_direction3 = new double[m_maxCL];
163 m_CLpixel_count = new int[m_maxCL];
164 m_CLcharge_count = new float[m_maxCL];
165 m_CLloc_eta = new float[m_maxCL];
166 m_CLloc_phi = new float[m_maxCL];
167 m_CLglob_eta = new float[m_maxCL];
168 m_CLglob_phi = new float[m_maxCL];
169 m_CLeta_angle = new double[m_maxCL];
170 m_CLphi_angle = new double[m_maxCL];
171 m_CLnorm_x = new float[m_maxCL];
172 m_CLnorm_y = new float[m_maxCL];
173 m_CLnorm_z = new float[m_maxCL];
174 m_CLlocal_cov = new std::vector<std::vector<double>>;
175
177 m_Part_barcode = new int[m_maxPart];
178 m_Part_px = new float[m_maxPart];
179 m_Part_py = new float[m_maxPart];
180 m_Part_pz = new float[m_maxPart];
181 m_Part_pt = new float[m_maxPart];
182 m_Part_eta = new float[m_maxPart];
183 m_Part_vx = new float[m_maxPart];
184 m_Part_vy = new float[m_maxPart];
185 m_Part_vz = new float[m_maxPart];
186 m_Part_radius = new float[m_maxPart];
187 m_Part_status = new float[m_maxPart];
188 m_Part_charge = new float[m_maxPart];
189 m_Part_pdg_id = new int[m_maxPart];
190 m_Part_passed = new int[m_maxPart];
191 m_Part_vProdNin = new int[m_maxPart];
192 m_Part_vProdNout = new int[m_maxPart];
193 m_Part_vProdStatus = new int[m_maxPart];
195 m_Part_vParentID = new std::vector<std::vector<int>>;
196 m_Part_vParentBarcode = new std::vector<std::vector<int>>;
197
198 m_SPindex = new int[m_maxSP];
199 m_SPx = new double[m_maxSP];
200 m_SPy = new double[m_maxSP];
201 m_SPz = new double[m_maxSP];
202 m_SPCL1_index = new int[m_maxSP];
203 m_SPCL2_index = new int[m_maxSP];
204 m_SPisOverlap = new int[m_maxSP];
205
206 m_SPradius = new double[m_maxSP];
207 m_SPcovr = new double[m_maxSP];
208 m_SPcovz = new double[m_maxSP];
209 m_SPhl_topstrip = new float[m_maxSP];
210 m_SPhl_botstrip = new float[m_maxSP];
211 m_SPtopStripDirection = new std::vector<std::vector<float>>;
212 m_SPbottomStripDirection = new std::vector<std::vector<float>>;
213 m_SPstripCenterDistance = new std::vector<std::vector<float>>;
214 m_SPtopStripCenterPosition = new std::vector<std::vector<float>>;
215
216 m_TRKindex = new int[m_maxTRK];
217 m_TRKtrack_fitter = new int[m_maxTRK];
219 m_TRKproperties = new std::vector<std::vector<int>>;
220 m_TRKpattern = new std::vector<std::vector<int>>;
221 m_TRKndof = new int[m_maxTRK];
222 m_TRKmot = new int[m_maxTRK];
223 m_TRKoot = new int[m_maxTRK];
224 m_TRKchiSq = new float[m_maxTRK];
225 m_TRKmeasurementsOnTrack_pixcl_sctcl_index = new std::vector<std::vector<int>>;
226 m_TRKoutliersOnTrack_pixcl_sctcl_index = new std::vector<std::vector<int>>;
227 m_TRKcharge = new int[m_maxTRK];
228 m_TRKperigee_position = new std::vector<std::vector<double>>;
229 m_TRKperigee_momentum = new std::vector<std::vector<double>>;
230 m_TTCindex = new int[m_maxTRK];
231 m_TTCevent_index = new int[m_maxTRK];
232 m_TTCparticle_link = new int[m_maxTRK];
233 m_TTCprobability = new float[m_maxTRK];
234
235 m_DTTindex = new int[m_maxDTT];
236 m_DTTsize = new int[m_maxDTT];
237 m_DTTtrajectory_eventindex = new std::vector<std::vector<int>>;
238 m_DTTtrajectory_barcode = new std::vector<std::vector<int>>;
239 m_DTTstTruth_subDetType = new std::vector<std::vector<int>>;
240 m_DTTstTrack_subDetType = new std::vector<std::vector<int>>;
241 m_DTTstCommon_subDetType = new std::vector<std::vector<int>>;
242
243 m_nt->Branch("run_number", &m_run_number, "run_number/i");
244 m_nt->Branch("event_number", &m_event_number, "event_number/l");
245
246 m_nt->Branch("nSE", &m_nSE, "nSE/I");
247 m_nt->Branch("SEID", m_SEID, "SEID[nSE]/I");
248
249 m_nt->Branch("nCL", &m_nCL, "nCL/I");
250 m_nt->Branch("CLindex", m_CLindex, "CLindex[nCL]/I");
251 m_nt->Branch("CLhardware", &m_CLhardware);
252 m_nt->Branch("CLx", m_CLx, "CLx[nCL]/D");
253 m_nt->Branch("CLy", m_CLy, "CLy[nCL]/D");
254 m_nt->Branch("CLz", m_CLz, "CLz[nCL]/D");
255 m_nt->Branch("CLbarrel_endcap", m_CLbarrel_endcap, "CLbarrel_endcap[nCL]/I");
256 m_nt->Branch("CLlayer_disk", m_CLlayer_disk, "CLlayer_disk[nCL]/I");
257 m_nt->Branch("CLeta_module", m_CLeta_module, "CLeta_module[nCL]/I");
258 m_nt->Branch("CLphi_module", m_CLphi_module, "CLphi_module[nCL]/I");
259 m_nt->Branch("CLside", m_CLside, "CLside[nCL]/I");
260 m_nt->Branch("CLmoduleID", m_CLmoduleID, "CLmoduleID[nCL]/l");
261 m_nt->Branch("CLparticleLink_eventIndex", &m_CLparticleLink_eventIndex);
262 m_nt->Branch("CLparticleLink_barcode", &m_CLparticleLink_barcode);
263 m_nt->Branch("CLbarcodesLinked", &m_CLbarcodesLinked);
264 m_nt->Branch("CLparticle_charge", &m_CLparticle_charge);
265 m_nt->Branch("CLphis", &m_CLphis);
266 m_nt->Branch("CLetas", &m_CLetas);
267 m_nt->Branch("CLtots", &m_CLtots);
268 m_nt->Branch("CLloc_direction1", m_CLloc_direction1, "CLloc_direction1[nCL]/D");
269 m_nt->Branch("CLloc_direction2", m_CLloc_direction2, "CLloc_direction2[nCL]/D");
270 m_nt->Branch("CLloc_direction3", m_CLloc_direction3, "CLloc_direction3[nCL]/D");
271 m_nt->Branch("CLJan_loc_direction1", m_CLJan_loc_direction1, "CLJan_loc_direction1[nCL]/D");
272 m_nt->Branch("CLJan_loc_direction2", m_CLJan_loc_direction2, "CLJan_loc_direction2[nCL]/D");
273 m_nt->Branch("CLJan_loc_direction3", m_CLJan_loc_direction3, "CLJan_loc_direction3[nCL]/D");
274 m_nt->Branch("CLpixel_count", m_CLpixel_count, "CLpixel_count[nCL]/I");
275 m_nt->Branch("CLcharge_count", m_CLcharge_count, "CLcharge_count[nCL]/F");
276 m_nt->Branch("CLloc_eta", m_CLloc_eta, "CLloc_eta[nCL]/F");
277 m_nt->Branch("CLloc_phi", m_CLloc_phi, "CLloc_phi[nCL]/F");
278 m_nt->Branch("CLglob_eta", m_CLglob_eta, "CLglob_eta[nCL]/F");
279 m_nt->Branch("CLglob_phi", m_CLglob_phi, "CLglob_phi[nCL]/F");
280 m_nt->Branch("CLeta_angle", m_CLeta_angle, "CLeta_angle[nCL]/D");
281 m_nt->Branch("CLphi_angle", m_CLphi_angle, "CLphi_angle[nCL]/D");
282 m_nt->Branch("CLnorm_x", m_CLnorm_x, "CLnorm_x[nCL]/F");
283 m_nt->Branch("CLnorm_y", m_CLnorm_y, "CLnorm_y[nCL]/F");
284 m_nt->Branch("CLnorm_z", m_CLnorm_z, "CLnorm_z[nCL]/F");
285 m_nt->Branch("CLlocal_cov", &m_CLlocal_cov);
286
287 m_nt->Branch("nPartEVT", &m_nPartEVT, "nPartEVT/I");
288 m_nt->Branch("Part_event_number", m_Part_event_number, "Part_event_number[nPartEVT]/I");
289 m_nt->Branch("Part_barcode", m_Part_barcode, "Part_barcode[nPartEVT]/I");
290 m_nt->Branch("Part_px", m_Part_px, "Part_px[nPartEVT]/F");
291 m_nt->Branch("Part_py", m_Part_py, "Part_py[nPartEVT]/F");
292 m_nt->Branch("Part_pz", m_Part_pz, "Part_pz[nPartEVT]/F");
293 m_nt->Branch("Part_pt", m_Part_pt, "Part_pt[nPartEVT]/F");
294 m_nt->Branch("Part_eta", m_Part_eta, "Part_eta[nPartEVT]/F");
295 m_nt->Branch("Part_vx", m_Part_vx, "Part_vx[nPartEVT]/F");
296 m_nt->Branch("Part_vy", m_Part_vy, "Part_vy[nPartEVT]/F");
297 m_nt->Branch("Part_vz", m_Part_vz, "Part_vz[nPartEVT]/F");
298 m_nt->Branch("Part_radius", m_Part_radius, "Part_radius[nPartEVT]/F");
299 m_nt->Branch("Part_status", m_Part_status, "Part_status[nPartEVT]/F");
300 m_nt->Branch("Part_charge", m_Part_charge, "Part_charge[nPartEVT]/F");
301 m_nt->Branch("Part_pdg_id", m_Part_pdg_id, "Part_pdg_id[nPartEVT]/I");
302 m_nt->Branch("Part_passed", m_Part_passed, "Part_passed[nPartEVT]/I");
303 m_nt->Branch("Part_vProdNin", m_Part_vProdNin, "Part_vProdNin[nPartEVT]/I");
304 m_nt->Branch("Part_vProdNout", m_Part_vProdNout, "Part_vProdNout[nPartEVT]/I");
305 m_nt->Branch("Part_vProdStatus", m_Part_vProdStatus, "Part_vProdStatus[nPartEVT]/I");
306 m_nt->Branch("Part_vProdBarcode", m_Part_vProdBarcode, "Part_vProdBarcode[nPartEVT]/I");
307 m_nt->Branch("Part_vParentID", &m_Part_vParentID);
308 m_nt->Branch("Part_vParentBarcode", &m_Part_vParentBarcode);
309
310 m_nt->Branch("nSP", &m_nSP, "nSP/I");
311 m_nt->Branch("SPindex", m_SPindex, "SPindex[nSP]/I");
312 m_nt->Branch("SPx", m_SPx, "SPx[nSP]/D");
313 m_nt->Branch("SPy", m_SPy, "SPy[nSP]/D");
314 m_nt->Branch("SPz", m_SPz, "SPz[nSP]/D");
315 m_nt->Branch("SPCL1_index", m_SPCL1_index, "SPCL1_index[nSP]/I");
316 m_nt->Branch("SPCL2_index", m_SPCL2_index, "SPCL2_index[nSP]/I");
317 m_nt->Branch("SPisOverlap", m_SPisOverlap, "SPisOverlap[nSP]/I");
318 m_nt->Branch("SPradius",m_SPradius, "SPradius[nSP]/D");
319 m_nt->Branch("SPcovr",m_SPcovr, "SPradius[nSP]/D");
320 m_nt->Branch("SPcovz",m_SPcovz, "SPradius[nSP]/D");
321 m_nt->Branch("SPhl_topstrip",m_SPhl_topstrip, "SPhl_topstrip[nSP]/F");
322 m_nt->Branch("SPhl_botstrip",m_SPhl_botstrip, "SPhl_botstrip[nSP]/F");
323 m_nt->Branch("SPtopStripDirection",&m_SPtopStripDirection);
324 m_nt->Branch("SPbottomStripDirection",&m_SPbottomStripDirection);
325 m_nt->Branch("SPstripCenterDistance",&m_SPstripCenterDistance);
326 m_nt->Branch("SPtopStripCenterPosition",m_SPtopStripCenterPosition);
327
328 m_nt->Branch("nTRK", &m_nTRK, "nTRK/I");
329 m_nt->Branch("TRKindex", m_TRKindex, "TRKindex[nTRK]/I");
330 m_nt->Branch("TRKtrack_fitter", m_TRKtrack_fitter, "TRKtrack_fitter[nTRK]/I");
331 m_nt->Branch("TRKparticle_hypothesis", m_TRKparticle_hypothesis, "TRKparticle_hypothesis[nTRK]/I");
332 m_nt->Branch("TRKproperties", &m_TRKproperties);
333 m_nt->Branch("TRKpattern", &m_TRKpattern);
334 m_nt->Branch("TRKndof", m_TRKndof, "TRKndof[nTRK]/I");
335 m_nt->Branch("TRKmot", m_TRKmot, "TRKmot[nTRK]/I");
336 m_nt->Branch("TRKoot", m_TRKoot, "TRKoot[nTRK]/I");
337 m_nt->Branch("TRKchiSq", m_TRKchiSq, "TRKchiSq[nTRK]/F");
338 m_nt->Branch("TRKmeasurementsOnTrack_pixcl_sctcl_index", &m_TRKmeasurementsOnTrack_pixcl_sctcl_index);
339 m_nt->Branch("TRKoutliersOnTrack_pixcl_sctcl_index", &m_TRKoutliersOnTrack_pixcl_sctcl_index);
340 m_nt->Branch("TRKcharge", m_TRKcharge, "TRKcharge[nTRK]/I");
341 m_nt->Branch("TRKperigee_position", &m_TRKperigee_position);
342 m_nt->Branch("TRKperigee_momentum", &m_TRKperigee_momentum);
343 m_nt->Branch("TTCindex", m_TTCindex, "TTCindex[nTRK]/I");
344 m_nt->Branch("TTCevent_index", m_TTCevent_index, "TTCevent_index[nTRK]/I");
345 m_nt->Branch("TTCparticle_link", m_TTCparticle_link, "TTCparticle_link[nTRK]/I");
346 m_nt->Branch("TTCprobability", m_TTCprobability, "TTCprobability[nTRK]/F");
347
348 m_nt->Branch("nDTT", &m_nDTT, "nDTT/I");
349 m_nt->Branch("DTTindex", m_DTTindex, "DTTindex[nDTT]/I");
350 m_nt->Branch("DTTsize", m_DTTsize, "DTTsize[nDTT]/I");
351 m_nt->Branch("DTTtrajectory_eventindex", &m_DTTtrajectory_eventindex);
352 m_nt->Branch("DTTtrajectory_barcode", &m_DTTtrajectory_barcode);
353 m_nt->Branch("DTTstTruth_subDetType", &m_DTTstTruth_subDetType);
354 m_nt->Branch("DTTstTrack_subDetType", &m_DTTstTrack_subDetType);
355 m_nt->Branch("DTTstCommon_subDetType", &m_DTTstCommon_subDetType);
356 }
357
358 return StatusCode::SUCCESS;
359}
static Double_t sc
const ServiceHandle< StoreGateSvc > & detStore() const
bool contains(const std::string &s, const std::string &regx)
does a string contain the substring
Definition hcg.cxx:116
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

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.

◆ isClonable()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::isClonable ( ) const
inlineoverridevirtualinherited

Specify if the algorithm is clonable.

Only relevant for non-reentrant algorithms. Actual number of clones needs to be set via the "Cardinality" property.

Reimplemented in AFP_DigiTop, AlgB, AlgT, BCM_Digitization, CscDigitBuilder, CscDigitToCscRDO, G4AtlasAlg, G4RunAlg, HGTD_Digitization, HiveAlgBase, InDet::GNNSeedingTrackMaker, InDet::SCT_Clusterization, InDet::SiSPGNNTrackMaker, InDet::SiSPSeededTrackFinder, InDet::SiTrackerSpacePointFinder, ISF::SimKernelMT, ITk::StripDigitization, ITkPixelCablingAlg, ITkStripCablingAlg, LArHitEMapMaker, LArTTL1Maker, LUCID_DigiTop, LVL1::L1TopoSimulation, MergeCalibHits, MergeGenericMuonSimHitColl, MergeHijingPars, MergeMcEventCollection, MergeTrackRecordCollection, MergeTruthJets, MergeTruthParticles, MuonDigitizer, PileUpMTAlg, PixelDigitization, RoIBResultToxAOD, SCT_ByteStreamErrorsTestAlg, SCT_CablingCondAlgFromCoraCool, SCT_CablingCondAlgFromText, SCT_ConditionsParameterTestAlg, SCT_ConditionsSummaryTestAlg, SCT_ConfigurationConditionsTestAlg, SCT_Digitization, SCT_FlaggedConditionTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_PrepDataToxAOD, SCT_RawDataToxAOD, SCT_ReadCalibChipDataTestAlg, SCT_ReadCalibDataTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_SiliconConditionsTestAlg, SCT_StripVetoTestAlg, SCT_TdaqEnabledTestAlg, SCT_TestCablingAlg, SCTEventFlagWriter, SCTRawDataProvider, SCTSiLorentzAngleTestAlg, SCTSiPropertiesTestAlg, SGInputLoader, Simulation::BeamEffectsAlg, TileHitVecToCnt, TileMuonFitter, TilePulseForTileMuonReceiver, TileRawChannelMaker, TRTDigitization, and ZDC_DigiTop.

Definition at line 68 of file AthCommonAlgorithm.h.

68 {
69 return true;
70 }

◆ isPassed()

bool InDet::DumpObjects::isPassed ( HepMC::ConstGenParticlePtr particle,
float & px,
float & py,
float & pz,
float & pt,
float & eta,
float & vx,
float & vy,
float & vz,
float & radius,
float & status,
float & charge,
std::vector< int > & vParentID,
std::vector< int > & vParentBarcode,
int & vProdNin,
int & vProdNout,
int & vProdStatus,
int & vProdBarcode )
private

Definition at line 1460 of file DumpObjects.cxx.

1463 {
1464 //--------------------------------------------------------------------------------------------
1465
1466 px = particle->momentum().px();
1467 py = particle->momentum().py();
1468 pz = particle->momentum().pz();
1469
1470 pt = std::sqrt(px * px + py * py);
1471 eta = particle->momentum().eta();
1472
1473 int pdgCode = particle->pdg_id();
1474 charge = MC::charge(pdgCode);
1475 status = particle->status();
1476
1477 if (particle->production_vertex()) {
1478 vx = particle->production_vertex()->position().x();
1479 vy = particle->production_vertex()->position().y();
1480 vz = particle->production_vertex()->position().z();
1481 radius = particle->production_vertex()->position().perp();
1482 } else {
1483 vx = vy = vz = -1;
1484 radius = 999;
1485 if (status == 1)
1486 ATH_MSG_WARNING("no vertex for particle with status 1");
1487 }
1488
1489 if (particle->production_vertex()) {
1490 vProdNin = particle->production_vertex()->particles_in_size();
1491 vProdNout = particle->production_vertex()->particles_out_size();
1492 vProdStatus = particle->production_vertex()->id();
1493 vProdBarcode = HepMC::barcode(particle->production_vertex());
1494 for (const auto &p : particle->production_vertex()->particles_in()) {
1495 vParentID.push_back(p->pdg_id());
1496 vParentBarcode.push_back(HepMC::barcode(p));
1497 }
1498 } else {
1499 vProdNin = 0;
1500 vProdNout = 0;
1501 vProdStatus = -999;
1502 vProdBarcode = 999;
1503 }
1504
1505 bool passEta = (pt > 0.1) ? (std::abs(eta) < m_max_eta) : false;
1506 if (not passEta)
1507 return false;
1508
1509 bool passPt = (pt > m_min_pt);
1510 if (not passPt)
1511 return false;
1512
1513 bool passBarcode = (HepMC::barcode(particle) < m_max_barcode);
1514 if (not passBarcode)
1515 return false;
1516
1517 bool passCharge = not(charge == 0.);
1518 if (not passCharge)
1519 return false;
1520
1521 bool passStatus = (status == 1);
1522 if (not passStatus)
1523 return false;
1524
1525 bool passProdRadius = (radius < m_maxProdVertex);
1526 if (not passProdRadius)
1527 return false;
1528
1529 return true;
1530}
double charge(const T &p)
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses

◆ isReEntrant()

virtual bool AthAlgorithm::isReEntrant ( ) const
inlinefinaloverrideprotectedvirtualinherited

Legacy algorithms are not thread-safe.

Definition at line 47 of file AthAlgorithm.h.

47{ return false; }

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

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.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Set filter decision:

Reimplemented in AthFilterAlgorithm.

Definition at line 99 of file AthCommonAlgorithm.h.

99 {
101 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const
Set filter decision:

◆ sysExecute()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Reimplemented in AthAnalysisAlgorithm.

Definition at line 80 of file AthCommonAlgorithm.cxx.

41{
42 return BaseAlg::sysExecute (ctx);
43}

◆ sysInitialize()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, HypoBase, InputMakerBase, and PyAthena::Alg.

Definition at line 60 of file AthCommonAlgorithm.cxx.

71 {
73
74 if (sc.isFailure()) {
75 return sc;
76 }
77
78 ServiceHandle<ICondSvc> cs("CondSvc",name());
79 for (auto h : outputHandles()) {
80 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
81 // do this inside the loop so we don't create the CondSvc until needed
82 if ( cs.retrieve().isFailure() ) {
83 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
85 }
86 if (cs->regHandle(this,*h).isFailure()) {
88 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
89 << " with CondSvc");
90 }
91 }
92 }
93 return sc;
94}
virtual StatusCode sysInitialize() override
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ m_CLbarcodesLinked

std::vector<std::vector<bool> >* InDet::DumpObjects::m_CLbarcodesLinked {}
private

Definition at line 127 of file DumpObjects.h.

127{};

◆ m_CLbarrel_endcap

int* InDet::DumpObjects::m_CLbarrel_endcap {}
private

Definition at line 119 of file DumpObjects.h.

119{};

◆ m_CLcharge_count

float* InDet::DumpObjects::m_CLcharge_count {}
private

Definition at line 133 of file DumpObjects.h.

133{};

◆ m_CLeta_angle

double* InDet::DumpObjects::m_CLeta_angle {}
private

Definition at line 136 of file DumpObjects.h.

136{}, *m_CLphi_angle{};

◆ m_CLeta_module

int* InDet::DumpObjects::m_CLeta_module {}
private

Definition at line 121 of file DumpObjects.h.

121{};

◆ m_CLetas

std::vector<std::vector<int> > * InDet::DumpObjects::m_CLetas {}
private

Definition at line 129 of file DumpObjects.h.

129{}, *m_CLetas{}, *m_CLtots{};

◆ m_CLglob_eta

float* InDet::DumpObjects::m_CLglob_eta {}
private

Definition at line 135 of file DumpObjects.h.

135{}, *m_CLglob_phi{};

◆ m_CLglob_phi

float * InDet::DumpObjects::m_CLglob_phi {}
private

Definition at line 135 of file DumpObjects.h.

135{}, *m_CLglob_phi{};

◆ m_CLhardware

std::vector<std::string>* InDet::DumpObjects::m_CLhardware {}
private

Definition at line 115 of file DumpObjects.h.

115{};

◆ m_CLindex

int* InDet::DumpObjects::m_CLindex {}
private

Definition at line 114 of file DumpObjects.h.

114{};

◆ m_CLJan_loc_direction1

double* InDet::DumpObjects::m_CLJan_loc_direction1 {}
private

Definition at line 131 of file DumpObjects.h.

◆ m_CLJan_loc_direction2

double * InDet::DumpObjects::m_CLJan_loc_direction2 {}
private

Definition at line 131 of file DumpObjects.h.

◆ m_CLJan_loc_direction3

double * InDet::DumpObjects::m_CLJan_loc_direction3 {}
private

Definition at line 131 of file DumpObjects.h.

◆ m_CLlayer_disk

int* InDet::DumpObjects::m_CLlayer_disk {}
private

Definition at line 120 of file DumpObjects.h.

120{};

◆ m_CLloc_direction1

double* InDet::DumpObjects::m_CLloc_direction1 {}
private

Definition at line 130 of file DumpObjects.h.

◆ m_CLloc_direction2

double * InDet::DumpObjects::m_CLloc_direction2 {}
private

Definition at line 130 of file DumpObjects.h.

◆ m_CLloc_direction3

double * InDet::DumpObjects::m_CLloc_direction3 {}
private

Definition at line 130 of file DumpObjects.h.

◆ m_CLloc_eta

float* InDet::DumpObjects::m_CLloc_eta {}
private

Definition at line 134 of file DumpObjects.h.

134{}, *m_CLloc_phi{};

◆ m_CLloc_phi

float * InDet::DumpObjects::m_CLloc_phi {}
private

Definition at line 134 of file DumpObjects.h.

134{}, *m_CLloc_phi{};

◆ m_CLlocal_cov

std::vector<std::vector<double> >* InDet::DumpObjects::m_CLlocal_cov {}
private

Definition at line 138 of file DumpObjects.h.

138{};

◆ m_CLmoduleID

uint64_t* InDet::DumpObjects::m_CLmoduleID {}
private

Definition at line 124 of file DumpObjects.h.

124{};

◆ m_CLnorm_x

float* InDet::DumpObjects::m_CLnorm_x {}
private

Definition at line 137 of file DumpObjects.h.

137{}, *m_CLnorm_y{}, *m_CLnorm_z{};

◆ m_CLnorm_y

float * InDet::DumpObjects::m_CLnorm_y {}
private

Definition at line 137 of file DumpObjects.h.

137{}, *m_CLnorm_y{}, *m_CLnorm_z{};

◆ m_CLnorm_z

float * InDet::DumpObjects::m_CLnorm_z {}
private

Definition at line 137 of file DumpObjects.h.

137{}, *m_CLnorm_y{}, *m_CLnorm_z{};

◆ m_CLparticle_charge

std::vector<std::vector<float> >* InDet::DumpObjects::m_CLparticle_charge {}
private

Definition at line 128 of file DumpObjects.h.

128{};

◆ m_CLparticleLink_barcode

std::vector<std::vector<int> >* InDet::DumpObjects::m_CLparticleLink_barcode {}
private

Definition at line 126 of file DumpObjects.h.

126{};

◆ m_CLparticleLink_eventIndex

std::vector<std::vector<int> >* InDet::DumpObjects::m_CLparticleLink_eventIndex {}
private

Definition at line 125 of file DumpObjects.h.

125{};

◆ m_CLphi_angle

double * InDet::DumpObjects::m_CLphi_angle {}
private

Definition at line 136 of file DumpObjects.h.

136{}, *m_CLphi_angle{};

◆ m_CLphi_module

int* InDet::DumpObjects::m_CLphi_module {}
private

Definition at line 122 of file DumpObjects.h.

122{};

◆ m_CLphis

std::vector<std::vector<int> >* InDet::DumpObjects::m_CLphis {}
private

Definition at line 129 of file DumpObjects.h.

129{}, *m_CLetas{}, *m_CLtots{};

◆ m_CLpixel_count

int* InDet::DumpObjects::m_CLpixel_count {}
private

Definition at line 132 of file DumpObjects.h.

132{};

◆ m_CLside

int* InDet::DumpObjects::m_CLside {}
private

Definition at line 123 of file DumpObjects.h.

123{};

◆ m_CLtots

std::vector<std::vector<int> > * InDet::DumpObjects::m_CLtots {}
private

Definition at line 129 of file DumpObjects.h.

129{}, *m_CLetas{}, *m_CLtots{};

◆ m_CLx

double* InDet::DumpObjects::m_CLx {}
private

Definition at line 116 of file DumpObjects.h.

116{};

◆ m_CLy

double* InDet::DumpObjects::m_CLy {}
private

Definition at line 117 of file DumpObjects.h.

117{};

◆ m_CLz

double* InDet::DumpObjects::m_CLz {}
private

Definition at line 118 of file DumpObjects.h.

118{};

◆ m_detailedTracksTruthKey

SG::ReadHandleKey<DetailedTrackTruthCollection> InDet::DumpObjects::m_detailedTracksTruthKey
private
Initial value:
{this, "DetailedTracksTruthKey",
"CombinedITkTracksDetailedTruth"}

Definition at line 83 of file DumpObjects.h.

83 {this, "DetailedTracksTruthKey",
84 "CombinedITkTracksDetailedTruth"};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_DTTindex

int* InDet::DumpObjects::m_DTTindex {}
private

Definition at line 187 of file DumpObjects.h.

187{}, *m_DTTsize{};

◆ m_DTTsize

int * InDet::DumpObjects::m_DTTsize {}
private

Definition at line 187 of file DumpObjects.h.

187{}, *m_DTTsize{};

◆ m_DTTstCommon_subDetType

std::vector<std::vector<int> > * InDet::DumpObjects::m_DTTstCommon_subDetType {}
private

Definition at line 189 of file DumpObjects.h.

◆ m_DTTstTrack_subDetType

std::vector<std::vector<int> > * InDet::DumpObjects::m_DTTstTrack_subDetType {}
private

Definition at line 189 of file DumpObjects.h.

◆ m_DTTstTruth_subDetType

std::vector<std::vector<int> > * InDet::DumpObjects::m_DTTstTruth_subDetType {}
private

Definition at line 188 of file DumpObjects.h.

◆ m_DTTtrajectory_barcode

std::vector<std::vector<int> > * InDet::DumpObjects::m_DTTtrajectory_barcode {}
private

Definition at line 188 of file DumpObjects.h.

◆ m_DTTtrajectory_eventindex

std::vector<std::vector<int> >* InDet::DumpObjects::m_DTTtrajectory_eventindex {}
private

Definition at line 188 of file DumpObjects.h.

◆ m_event

int InDet::DumpObjects::m_event {}
private

Definition at line 61 of file DumpObjects.h.

61{};

◆ m_event_number

unsigned long long InDet::DumpObjects::m_event_number {}
private

Definition at line 108 of file DumpObjects.h.

108{};

◆ m_eventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> InDet::DumpObjects::m_eventInfoKey {this, "EventInfoKey", "EventInfo"}
private

Definition at line 66 of file DumpObjects.h.

66{this, "EventInfoKey", "EventInfo"};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 108 of file AthCommonAlgorithm.h.

◆ m_max_barcode

int InDet::DumpObjects::m_max_barcode = 200e3
private

Definition at line 91 of file DumpObjects.h.

◆ m_max_eta

float InDet::DumpObjects::m_max_eta = 4.0
private

Definition at line 89 of file DumpObjects.h.

◆ m_maxCL

int InDet::DumpObjects::m_maxCL {}
private

jobOption: maximum number of clusters

Definition at line 99 of file DumpObjects.h.

99{};

◆ m_maxDTT

int InDet::DumpObjects::m_maxDTT {}
private

Definition at line 103 of file DumpObjects.h.

103{};

◆ m_maxPart

int InDet::DumpObjects::m_maxPart {}
private

jobOption: maximum number of particles

Definition at line 100 of file DumpObjects.h.

100{};

◆ m_maxProdVertex

float InDet::DumpObjects::m_maxProdVertex = 260.
private

Definition at line 92 of file DumpObjects.h.

◆ m_maxSP

int InDet::DumpObjects::m_maxSP {}
private

jobOption: maximum number of space points

Definition at line 101 of file DumpObjects.h.

101{};

◆ m_maxTRK

int InDet::DumpObjects::m_maxTRK {}
private

Definition at line 102 of file DumpObjects.h.

102{};

◆ m_mcEventCollectionKey

SG::ReadHandleKey<McEventCollection> InDet::DumpObjects::m_mcEventCollectionKey {this, "TruthEventKey", "TruthEvent"}
private

Definition at line 67 of file DumpObjects.h.

67{this, "TruthEventKey", "TruthEvent"};

◆ m_min_pt

float InDet::DumpObjects::m_min_pt = 1000.
private

Definition at line 90 of file DumpObjects.h.

◆ m_name

std::string InDet::DumpObjects::m_name
private

Definition at line 63 of file DumpObjects.h.

◆ m_nCL

int InDet::DumpObjects::m_nCL {}
private

Definition at line 113 of file DumpObjects.h.

113{};

◆ m_nDTT

int InDet::DumpObjects::m_nDTT {}
private

Definition at line 186 of file DumpObjects.h.

186{};

◆ m_nPartEVT

int InDet::DumpObjects::m_nPartEVT {}
private

Definition at line 140 of file DumpObjects.h.

140{};

◆ m_nSE

int InDet::DumpObjects::m_nSE {}
private

Definition at line 110 of file DumpObjects.h.

110{};

◆ m_nSP

int InDet::DumpObjects::m_nSP {}
private

Definition at line 155 of file DumpObjects.h.

155{};

◆ m_nt

TTree* InDet::DumpObjects::m_nt {}
private

Definition at line 105 of file DumpObjects.h.

105{};

◆ m_nTRK

int InDet::DumpObjects::m_nTRK {}
private

Definition at line 174 of file DumpObjects.h.

174{};

◆ m_ntupleDirName

std::string InDet::DumpObjects::m_ntupleDirName
private

jobOption: Ntuple directory name

Definition at line 97 of file DumpObjects.h.

◆ m_ntupleFileName

std::string InDet::DumpObjects::m_ntupleFileName
private

jobOption: Ntuple file name

Definition at line 96 of file DumpObjects.h.

◆ m_ntupleTreeName

std::string InDet::DumpObjects::m_ntupleTreeName
private

jobOption: Ntuple tree name

Definition at line 98 of file DumpObjects.h.

◆ m_offset

int InDet::DumpObjects::m_offset {}
private

Definition at line 86 of file DumpObjects.h.

86{};

◆ m_Part_barcode

int* InDet::DumpObjects::m_Part_barcode {}
private

Definition at line 142 of file DumpObjects.h.

142{};

◆ m_Part_charge

float* InDet::DumpObjects::m_Part_charge {}
private

Definition at line 149 of file DumpObjects.h.

149{};

◆ m_Part_eta

float* InDet::DumpObjects::m_Part_eta {}
private

Definition at line 145 of file DumpObjects.h.

145{};

◆ m_Part_event_number

int* InDet::DumpObjects::m_Part_event_number {}
private

Definition at line 141 of file DumpObjects.h.

141{};

◆ m_Part_passed

int* InDet::DumpObjects::m_Part_passed {}
private

Definition at line 151 of file DumpObjects.h.

151{};

◆ m_Part_pdg_id

int* InDet::DumpObjects::m_Part_pdg_id {}
private

Definition at line 150 of file DumpObjects.h.

150{};

◆ m_Part_pt

float* InDet::DumpObjects::m_Part_pt {}
private

Definition at line 144 of file DumpObjects.h.

144{};

◆ m_Part_px

float* InDet::DumpObjects::m_Part_px {}
private

Definition at line 143 of file DumpObjects.h.

143{}, *m_Part_py{}, *m_Part_pz{};

◆ m_Part_py

float * InDet::DumpObjects::m_Part_py {}
private

Definition at line 143 of file DumpObjects.h.

143{}, *m_Part_py{}, *m_Part_pz{};

◆ m_Part_pz

float * InDet::DumpObjects::m_Part_pz {}
private

Definition at line 143 of file DumpObjects.h.

143{}, *m_Part_py{}, *m_Part_pz{};

◆ m_Part_radius

float* InDet::DumpObjects::m_Part_radius {}
private

Definition at line 147 of file DumpObjects.h.

147{};

◆ m_Part_status

float* InDet::DumpObjects::m_Part_status {}
private

Definition at line 148 of file DumpObjects.h.

148{};

◆ m_Part_vParentBarcode

std::vector<std::vector<int> > * InDet::DumpObjects::m_Part_vParentBarcode {}
private

Definition at line 153 of file DumpObjects.h.

◆ m_Part_vParentID

std::vector<std::vector<int> >* InDet::DumpObjects::m_Part_vParentID {}
private

Definition at line 153 of file DumpObjects.h.

◆ m_Part_vProdBarcode

int * InDet::DumpObjects::m_Part_vProdBarcode {}
private

Definition at line 152 of file DumpObjects.h.

◆ m_Part_vProdNin

int* InDet::DumpObjects::m_Part_vProdNin {}
private

Definition at line 152 of file DumpObjects.h.

◆ m_Part_vProdNout

int * InDet::DumpObjects::m_Part_vProdNout {}
private

Definition at line 152 of file DumpObjects.h.

◆ m_Part_vProdStatus

int * InDet::DumpObjects::m_Part_vProdStatus {}
private

Definition at line 152 of file DumpObjects.h.

◆ m_Part_vx

float* InDet::DumpObjects::m_Part_vx {}
private

Definition at line 146 of file DumpObjects.h.

146{}, *m_Part_vy{}, *m_Part_vz{};

◆ m_Part_vy

float * InDet::DumpObjects::m_Part_vy {}
private

Definition at line 146 of file DumpObjects.h.

146{}, *m_Part_vy{}, *m_Part_vz{};

◆ m_Part_vz

float * InDet::DumpObjects::m_Part_vz {}
private

Definition at line 146 of file DumpObjects.h.

146{}, *m_Part_vy{}, *m_Part_vz{};

◆ m_pixelClusterKey

SG::ReadHandleKey<InDet::PixelClusterContainer> InDet::DumpObjects::m_pixelClusterKey {this, "PixelClusterKey", "ITkPixelClusters"}
private

Definition at line 69 of file DumpObjects.h.

69{this, "PixelClusterKey", "ITkPixelClusters"};

◆ m_pixelID

const PixelID* InDet::DumpObjects::m_pixelID {}
private

Definition at line 57 of file DumpObjects.h.

57{};

◆ m_pixelManager

const InDetDD::PixelDetectorManager* InDet::DumpObjects::m_pixelManager {}
private

Definition at line 59 of file DumpObjects.h.

59{};

◆ m_pixelSDOKey

SG::ReadHandleKey<InDetSimDataCollection> InDet::DumpObjects::m_pixelSDOKey {this, "PixelSDOKey", "ITkPixelSDO_Map"}
private

Definition at line 72 of file DumpObjects.h.

72{this, "PixelSDOKey", "ITkPixelSDO_Map"};

◆ m_rootFile

bool InDet::DumpObjects::m_rootFile {}
private

jobOption: save data in root format

Definition at line 104 of file DumpObjects.h.

104{};

◆ m_run_number

unsigned int InDet::DumpObjects::m_run_number {}
private

Definition at line 107 of file DumpObjects.h.

107{};

◆ m_SCT_ID

const SCT_ID* InDet::DumpObjects::m_SCT_ID {}
private

Definition at line 58 of file DumpObjects.h.

58{};

◆ m_SCT_Manager

const InDetDD::SCT_DetectorManager* InDet::DumpObjects::m_SCT_Manager {}
private

Definition at line 60 of file DumpObjects.h.

60{};

◆ m_SEID

int* InDet::DumpObjects::m_SEID {}
private

Definition at line 111 of file DumpObjects.h.

111{};

◆ m_selected

int InDet::DumpObjects::m_selected {}
private

Definition at line 62 of file DumpObjects.h.

62{};

◆ m_SPbottomStripDirection

std::vector<std::vector<float> >* InDet::DumpObjects::m_SPbottomStripDirection {}
private

Definition at line 170 of file DumpObjects.h.

170{};

◆ m_SPCL1_index

int* InDet::DumpObjects::m_SPCL1_index {}
private

Definition at line 158 of file DumpObjects.h.

158{}, *m_SPCL2_index{};

◆ m_SPCL2_index

int * InDet::DumpObjects::m_SPCL2_index {}
private

Definition at line 158 of file DumpObjects.h.

158{}, *m_SPCL2_index{};

◆ m_SPcovr

double* InDet::DumpObjects::m_SPcovr {}
private

Definition at line 162 of file DumpObjects.h.

162{};

◆ m_SPcovz

double* InDet::DumpObjects::m_SPcovz {}
private

Definition at line 163 of file DumpObjects.h.

163{};

◆ m_SPhl_botstrip

float* InDet::DumpObjects::m_SPhl_botstrip {}
private

Definition at line 167 of file DumpObjects.h.

167{};

◆ m_SPhl_topstrip

float* InDet::DumpObjects::m_SPhl_topstrip {}
private

Definition at line 165 of file DumpObjects.h.

165{};

◆ m_SPindex

int* InDet::DumpObjects::m_SPindex {}
private

Definition at line 156 of file DumpObjects.h.

156{};

◆ m_SPisOverlap

int* InDet::DumpObjects::m_SPisOverlap {}
private

Definition at line 159 of file DumpObjects.h.

159{}; // -1: pixel, 0: strip not overlap, 1: strip overlap eta, 2: strip overlap phi, 3: overlap eta & phi

◆ m_SPradius

double* InDet::DumpObjects::m_SPradius {}
private

Definition at line 161 of file DumpObjects.h.

161{};

◆ m_SPstripCenterDistance

std::vector<std::vector<float> >* InDet::DumpObjects::m_SPstripCenterDistance {}
private

Definition at line 171 of file DumpObjects.h.

171{};

◆ m_SPtopStripCenterPosition

std::vector<std::vector<float> >* InDet::DumpObjects::m_SPtopStripCenterPosition {}
private

Definition at line 172 of file DumpObjects.h.

172{};

◆ m_SPtopStripDirection

std::vector<std::vector<float> >* InDet::DumpObjects::m_SPtopStripDirection {}
private

Definition at line 169 of file DumpObjects.h.

169{};

◆ m_SPx

double* InDet::DumpObjects::m_SPx {}
private

Definition at line 157 of file DumpObjects.h.

157{}, *m_SPy{}, *m_SPz{};

◆ m_SPy

double * InDet::DumpObjects::m_SPy {}
private

Definition at line 157 of file DumpObjects.h.

157{}, *m_SPy{}, *m_SPz{};

◆ m_SPz

double * InDet::DumpObjects::m_SPz {}
private

Definition at line 157 of file DumpObjects.h.

157{}, *m_SPy{}, *m_SPz{};

◆ m_stripClusterKey

SG::ReadHandleKey<InDet::SCT_ClusterContainer> InDet::DumpObjects::m_stripClusterKey {this, "StripClusterKey", "ITkStripClusters"}
private

Definition at line 70 of file DumpObjects.h.

70{this, "StripClusterKey", "ITkStripClusters"};

◆ m_stripSDOKey

SG::ReadHandleKey<InDetSimDataCollection> InDet::DumpObjects::m_stripSDOKey {this, "StripSDOKey", "ITkStripSDO_Map"}
private

Definition at line 73 of file DumpObjects.h.

73{this, "StripSDOKey", "ITkStripSDO_Map"};

◆ m_tracksKey

SG::ReadHandleKey<TrackCollection> InDet::DumpObjects::m_tracksKey {this, "TracksKey", "CombinedITkTracks"}
private

Definition at line 81 of file DumpObjects.h.

81{this, "TracksKey", "CombinedITkTracks"};

◆ m_tracksTruthKey

SG::ReadHandleKey<TrackTruthCollection> InDet::DumpObjects::m_tracksTruthKey {this, "TracksTruthKey", "CombinedITkTracksTruthCollection"}
private

Definition at line 82 of file DumpObjects.h.

82{this, "TracksTruthKey", "CombinedITkTracksTruthCollection"};

◆ m_TRKcharge

int* InDet::DumpObjects::m_TRKcharge {}
private

Definition at line 181 of file DumpObjects.h.

181{};

◆ m_TRKchiSq

float* InDet::DumpObjects::m_TRKchiSq {}
private

Definition at line 179 of file DumpObjects.h.

179{};

◆ m_TRKindex

int* InDet::DumpObjects::m_TRKindex {}
private

Definition at line 175 of file DumpObjects.h.

175{};

◆ m_TRKmeasurementsOnTrack_pixcl_sctcl_index

std::vector<std::vector<int> >* InDet::DumpObjects::m_TRKmeasurementsOnTrack_pixcl_sctcl_index {}
private

Definition at line 180 of file DumpObjects.h.

◆ m_TRKmot

int * InDet::DumpObjects::m_TRKmot {}
private

Definition at line 178 of file DumpObjects.h.

178{}, *m_TRKmot{}, *m_TRKoot{};

◆ m_TRKndof

int* InDet::DumpObjects::m_TRKndof {}
private

Definition at line 178 of file DumpObjects.h.

178{}, *m_TRKmot{}, *m_TRKoot{};

◆ m_TRKoot

int * InDet::DumpObjects::m_TRKoot {}
private

Definition at line 178 of file DumpObjects.h.

178{}, *m_TRKmot{}, *m_TRKoot{};

◆ m_TRKoutliersOnTrack_pixcl_sctcl_index

std::vector<std::vector<int> > * InDet::DumpObjects::m_TRKoutliersOnTrack_pixcl_sctcl_index {}
private

Definition at line 180 of file DumpObjects.h.

◆ m_TRKparticle_hypothesis

int * InDet::DumpObjects::m_TRKparticle_hypothesis {}
private

Definition at line 176 of file DumpObjects.h.

◆ m_TRKpattern

std::vector<std::vector<int> > * InDet::DumpObjects::m_TRKpattern {}
private

Definition at line 177 of file DumpObjects.h.

177{}, *m_TRKpattern{};

◆ m_TRKperigee_momentum

std::vector<std::vector<double> > * InDet::DumpObjects::m_TRKperigee_momentum {}
private

Definition at line 182 of file DumpObjects.h.

◆ m_TRKperigee_position

std::vector<std::vector<double> >* InDet::DumpObjects::m_TRKperigee_position {}
private

Definition at line 182 of file DumpObjects.h.

◆ m_TRKproperties

std::vector<std::vector<int> >* InDet::DumpObjects::m_TRKproperties {}
private

Definition at line 177 of file DumpObjects.h.

177{}, *m_TRKpattern{};

◆ m_TRKtrack_fitter

int* InDet::DumpObjects::m_TRKtrack_fitter {}
private

Definition at line 176 of file DumpObjects.h.

◆ m_TTCevent_index

int * InDet::DumpObjects::m_TTCevent_index {}
private

Definition at line 183 of file DumpObjects.h.

◆ m_TTCindex

int* InDet::DumpObjects::m_TTCindex {}
private

Definition at line 183 of file DumpObjects.h.

◆ m_TTCparticle_link

int * InDet::DumpObjects::m_TTCparticle_link {}
private

Definition at line 183 of file DumpObjects.h.

◆ m_TTCprobability

float* InDet::DumpObjects::m_TTCprobability {}
private

Definition at line 184 of file DumpObjects.h.

184{};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_xaodPixelSpacePointContainerKey

SG::ReadHandleKey<xAOD::SpacePointContainer> InDet::DumpObjects::m_xaodPixelSpacePointContainerKey {this,"xAODInputPixelSpacePoints", "ITkPixelSpacePoints"}
private

Definition at line 75 of file DumpObjects.h.

75{this,"xAODInputPixelSpacePoints", "ITkPixelSpacePoints"};

◆ m_xaodStripSpacePointContainerKey

SG::ReadHandleKey<xAOD::SpacePointContainer> InDet::DumpObjects::m_xaodStripSpacePointContainerKey {this,"xAODInputSpacePointsContainerKey", "ITkStripSpacePoints"}
private

Definition at line 77 of file DumpObjects.h.

77{this,"xAODInputSpacePointsContainerKey", "ITkStripSpacePoints"};

◆ m_xaodStripSpacePointOverlapContainerKey

SG::ReadHandleKey<xAOD::SpacePointContainer> InDet::DumpObjects::m_xaodStripSpacePointOverlapContainerKey {this,"xAODInputSpacePointsOverlapContainerKey", "ITkStripOverlapSpacePoints"}
private

Definition at line 79 of file DumpObjects.h.

79{this,"xAODInputSpacePointsOverlapContainerKey", "ITkStripOverlapSpacePoints"};

The documentation for this class was generated from the following files: