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 54 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 53 of file DumpObjects.cxx.

55 : AthAlgorithm(name, pSvcLocator) {
56 declareProperty("Offset", m_offset);
57 declareProperty("FileName", m_name = "");
58 //
59 declareProperty("NtupleFileName", m_ntupleFileName);
60 declareProperty("NtupleDirectoryName", m_ntupleDirName);
61 declareProperty("NtupleTreeName", m_ntupleTreeName);
62 declareProperty("maxCL", m_maxCL = 1500000);
63 declareProperty("maxPart", m_maxPart = 1500000);
64 declareProperty("maxSP", m_maxSP = 1500000);
65 declareProperty("maxTRK", m_maxTRK = 1500000);
66 declareProperty("maxDTT", m_maxDTT = 1500000);
67
68 declareProperty("rootFile", m_rootFile);
69}
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
int m_maxSP
jobOption: maximum number of space points
std::string m_name
Definition DumpObjects.h:74
std::string m_ntupleDirName
jobOption: Ntuple directory name
std::string m_ntupleFileName
jobOption: Ntuple file name
bool m_rootFile
jobOption: save data in root format
std::string m_ntupleTreeName
jobOption: Ntuple tree name
int m_maxPart
jobOption: maximum number of particles

◆ ~DumpObjects()

InDet::DumpObjects::~DumpObjects ( )
inline

Definition at line 57 of file DumpObjects.h.

57{}

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 357 of file DumpObjects.cxx.

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

1341 {
1342 //--------------------------------
1343 if (m_rootFile) {
1344 delete[] m_SEID;
1345
1346 delete[] m_CLindex;
1347 delete m_CLhardware;
1348 delete[] m_CLx;
1349 delete[] m_CLy;
1350 delete[] m_CLz;
1351 delete[] m_CLbarrel_endcap;
1352 delete[] m_CLlayer_disk;
1353 delete[] m_CLeta_module;
1354 delete[] m_CLphi_module;
1355 delete[] m_CLside;
1356 delete[] m_CLmoduleID;
1359 delete m_CLbarcodesLinked;
1360 delete m_CLparticle_charge;
1361 delete m_CLphis;
1362 delete m_CLetas;
1363 delete m_CLtots;
1364 delete[] m_CLloc_direction1;
1365 delete[] m_CLloc_direction2;
1366 delete[] m_CLloc_direction3;
1367 delete[] m_CLJan_loc_direction1;
1368 delete[] m_CLJan_loc_direction2;
1369 delete[] m_CLJan_loc_direction3;
1370 delete[] m_CLpixel_count;
1371 delete[] m_CLcharge_count;
1372 delete[] m_CLloc_eta;
1373 delete[] m_CLloc_phi;
1374 delete[] m_CLglob_eta;
1375 delete[] m_CLglob_phi;
1376 delete[] m_CLeta_angle;
1377 delete[] m_CLphi_angle;
1378 delete[] m_CLnorm_x;
1379 delete[] m_CLnorm_y;
1380 delete[] m_CLnorm_z;
1381 delete m_CLlocal_cov;
1382
1383 delete[] m_Part_event_number;
1384 delete[] m_Part_barcode;
1385 delete[] m_Part_px;
1386 delete[] m_Part_py;
1387 delete[] m_Part_pz;
1388 delete[] m_Part_pt;
1389 delete[] m_Part_eta;
1390 delete[] m_Part_vx;
1391 delete[] m_Part_vy;
1392 delete[] m_Part_vz;
1393 delete[] m_Part_radius;
1394 delete[] m_Part_status;
1395 delete[] m_Part_charge;
1396 delete[] m_Part_pdg_id;
1397 delete[] m_Part_passed;
1398
1399 delete[] m_Part_vProdNin;
1400 delete[] m_Part_vProdNout;
1401 delete[] m_Part_vProdStatus;
1402 delete[] m_Part_vProdBarcode;
1403 delete m_Part_vParentID;
1404 delete m_Part_vParentBarcode;
1405
1406 delete[] m_SPindex;
1407 delete[] m_SPx;
1408 delete[] m_SPy;
1409 delete[] m_SPz;
1410 delete[] m_SPCL1_index;
1411 delete[] m_SPCL2_index;
1412 delete[] m_SPisOverlap;
1413 delete[] m_SPradius;
1414 delete[] m_SPcovr;
1415 delete[] m_SPcovz;
1416 delete[] m_SPhl_topstrip;
1417 delete[] m_SPhl_botstrip;
1418 delete m_SPtopStripDirection;
1422
1423 delete[] m_TRKindex;
1424 delete[] m_TRKtrack_fitter;
1425 delete[] m_TRKparticle_hypothesis;
1426 delete m_TRKproperties;
1427 delete m_TRKpattern;
1428 delete[] m_TRKndof;
1429 delete[] m_TRKmot;
1430 delete[] m_TRKoot;
1431 delete[] m_TRKchiSq;
1434 delete[] m_TRKcharge;
1435 delete m_TRKperigee_position;
1436 delete m_TRKperigee_momentum;
1437 delete[] m_TTCindex;
1438 delete[] m_TTCevent_index;
1439 delete[] m_TTCparticle_link;
1440 delete[] m_TTCprobability;
1441
1442 delete[] m_DTTindex;
1443 delete[] m_DTTsize;
1449 }
1450
1451 return StatusCode::SUCCESS;
1452}
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 72 of file DumpObjects.cxx.

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

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

138{};

◆ m_CLbarrel_endcap

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

Definition at line 130 of file DumpObjects.h.

130{};

◆ m_CLcharge_count

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

Definition at line 144 of file DumpObjects.h.

144{};

◆ m_CLeta_angle

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

Definition at line 147 of file DumpObjects.h.

147{}, *m_CLphi_angle{};

◆ m_CLeta_module

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

Definition at line 132 of file DumpObjects.h.

132{};

◆ m_CLetas

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

Definition at line 140 of file DumpObjects.h.

140{}, *m_CLetas{}, *m_CLtots{};

◆ m_CLglob_eta

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

Definition at line 146 of file DumpObjects.h.

146{}, *m_CLglob_phi{};

◆ m_CLglob_phi

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

Definition at line 146 of file DumpObjects.h.

146{}, *m_CLglob_phi{};

◆ m_CLhardware

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

Definition at line 126 of file DumpObjects.h.

126{};

◆ m_CLindex

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

Definition at line 125 of file DumpObjects.h.

125{};

◆ m_CLJan_loc_direction1

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

Definition at line 142 of file DumpObjects.h.

◆ m_CLJan_loc_direction2

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

Definition at line 142 of file DumpObjects.h.

◆ m_CLJan_loc_direction3

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

Definition at line 142 of file DumpObjects.h.

◆ m_CLlayer_disk

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

Definition at line 131 of file DumpObjects.h.

131{};

◆ m_CLloc_direction1

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

Definition at line 141 of file DumpObjects.h.

◆ m_CLloc_direction2

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

Definition at line 141 of file DumpObjects.h.

◆ m_CLloc_direction3

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

Definition at line 141 of file DumpObjects.h.

◆ m_CLloc_eta

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

Definition at line 145 of file DumpObjects.h.

145{}, *m_CLloc_phi{};

◆ m_CLloc_phi

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

Definition at line 145 of file DumpObjects.h.

145{}, *m_CLloc_phi{};

◆ m_CLlocal_cov

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

Definition at line 149 of file DumpObjects.h.

149{};

◆ m_CLmoduleID

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

Definition at line 135 of file DumpObjects.h.

135{};

◆ m_CLnorm_x

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

Definition at line 148 of file DumpObjects.h.

148{}, *m_CLnorm_y{}, *m_CLnorm_z{};

◆ m_CLnorm_y

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

Definition at line 148 of file DumpObjects.h.

148{}, *m_CLnorm_y{}, *m_CLnorm_z{};

◆ m_CLnorm_z

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

Definition at line 148 of file DumpObjects.h.

148{}, *m_CLnorm_y{}, *m_CLnorm_z{};

◆ m_CLparticle_charge

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

Definition at line 139 of file DumpObjects.h.

139{};

◆ m_CLparticleLink_barcode

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

Definition at line 137 of file DumpObjects.h.

137{};

◆ m_CLparticleLink_eventIndex

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

Definition at line 136 of file DumpObjects.h.

136{};

◆ m_CLphi_angle

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

Definition at line 147 of file DumpObjects.h.

147{}, *m_CLphi_angle{};

◆ m_CLphi_module

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

Definition at line 133 of file DumpObjects.h.

133{};

◆ m_CLphis

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

Definition at line 140 of file DumpObjects.h.

140{}, *m_CLetas{}, *m_CLtots{};

◆ m_CLpixel_count

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

Definition at line 143 of file DumpObjects.h.

143{};

◆ m_CLside

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

Definition at line 134 of file DumpObjects.h.

134{};

◆ m_CLtots

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

Definition at line 140 of file DumpObjects.h.

140{}, *m_CLetas{}, *m_CLtots{};

◆ m_CLx

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

Definition at line 127 of file DumpObjects.h.

127{};

◆ m_CLy

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

Definition at line 128 of file DumpObjects.h.

128{};

◆ m_CLz

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

Definition at line 129 of file DumpObjects.h.

129{};

◆ m_detailedTracksTruthKey

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

Definition at line 94 of file DumpObjects.h.

94 {this, "DetailedTracksTruthKey",
95 "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 198 of file DumpObjects.h.

198{}, *m_DTTsize{};

◆ m_DTTsize

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

Definition at line 198 of file DumpObjects.h.

198{}, *m_DTTsize{};

◆ m_DTTstCommon_subDetType

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

Definition at line 200 of file DumpObjects.h.

◆ m_DTTstTrack_subDetType

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

Definition at line 200 of file DumpObjects.h.

◆ m_DTTstTruth_subDetType

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

Definition at line 199 of file DumpObjects.h.

◆ m_DTTtrajectory_barcode

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

Definition at line 199 of file DumpObjects.h.

◆ m_DTTtrajectory_eventindex

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

Definition at line 199 of file DumpObjects.h.

◆ m_event

int InDet::DumpObjects::m_event {}
private

Definition at line 72 of file DumpObjects.h.

72{};

◆ m_event_number

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

Definition at line 119 of file DumpObjects.h.

119{};

◆ m_eventInfoKey

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

Definition at line 77 of file DumpObjects.h.

77{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 102 of file DumpObjects.h.

◆ m_max_eta

float InDet::DumpObjects::m_max_eta = 4.0
private

Definition at line 100 of file DumpObjects.h.

◆ m_maxCL

int InDet::DumpObjects::m_maxCL {}
private

jobOption: maximum number of clusters

Definition at line 110 of file DumpObjects.h.

110{};

◆ m_maxDTT

int InDet::DumpObjects::m_maxDTT {}
private

Definition at line 114 of file DumpObjects.h.

114{};

◆ m_maxPart

int InDet::DumpObjects::m_maxPart {}
private

jobOption: maximum number of particles

Definition at line 111 of file DumpObjects.h.

111{};

◆ m_maxProdVertex

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

Definition at line 103 of file DumpObjects.h.

◆ m_maxSP

int InDet::DumpObjects::m_maxSP {}
private

jobOption: maximum number of space points

Definition at line 112 of file DumpObjects.h.

112{};

◆ m_maxTRK

int InDet::DumpObjects::m_maxTRK {}
private

Definition at line 113 of file DumpObjects.h.

113{};

◆ m_mcEventCollectionKey

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

Definition at line 78 of file DumpObjects.h.

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

◆ m_min_pt

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

Definition at line 101 of file DumpObjects.h.

◆ m_name

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

Definition at line 74 of file DumpObjects.h.

◆ m_nCL

int InDet::DumpObjects::m_nCL {}
private

Definition at line 124 of file DumpObjects.h.

124{};

◆ m_nDTT

int InDet::DumpObjects::m_nDTT {}
private

Definition at line 197 of file DumpObjects.h.

197{};

◆ m_nPartEVT

int InDet::DumpObjects::m_nPartEVT {}
private

Definition at line 151 of file DumpObjects.h.

151{};

◆ m_nSE

int InDet::DumpObjects::m_nSE {}
private

Definition at line 121 of file DumpObjects.h.

121{};

◆ m_nSP

int InDet::DumpObjects::m_nSP {}
private

Definition at line 166 of file DumpObjects.h.

166{};

◆ m_nt

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

Definition at line 116 of file DumpObjects.h.

116{};

◆ m_nTRK

int InDet::DumpObjects::m_nTRK {}
private

Definition at line 185 of file DumpObjects.h.

185{};

◆ m_ntupleDirName

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

jobOption: Ntuple directory name

Definition at line 108 of file DumpObjects.h.

◆ m_ntupleFileName

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

jobOption: Ntuple file name

Definition at line 107 of file DumpObjects.h.

◆ m_ntupleTreeName

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

jobOption: Ntuple tree name

Definition at line 109 of file DumpObjects.h.

◆ m_offset

int InDet::DumpObjects::m_offset {}
private

Definition at line 97 of file DumpObjects.h.

97{};

◆ m_Part_barcode

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

Definition at line 153 of file DumpObjects.h.

153{};

◆ m_Part_charge

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

Definition at line 160 of file DumpObjects.h.

160{};

◆ m_Part_eta

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

Definition at line 156 of file DumpObjects.h.

156{};

◆ m_Part_event_number

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

Definition at line 152 of file DumpObjects.h.

152{};

◆ m_Part_passed

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

Definition at line 162 of file DumpObjects.h.

162{};

◆ m_Part_pdg_id

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

Definition at line 161 of file DumpObjects.h.

161{};

◆ m_Part_pt

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

Definition at line 155 of file DumpObjects.h.

155{};

◆ m_Part_px

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

Definition at line 154 of file DumpObjects.h.

154{}, *m_Part_py{}, *m_Part_pz{};

◆ m_Part_py

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

Definition at line 154 of file DumpObjects.h.

154{}, *m_Part_py{}, *m_Part_pz{};

◆ m_Part_pz

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

Definition at line 154 of file DumpObjects.h.

154{}, *m_Part_py{}, *m_Part_pz{};

◆ m_Part_radius

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

Definition at line 158 of file DumpObjects.h.

158{};

◆ m_Part_status

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

Definition at line 159 of file DumpObjects.h.

159{};

◆ m_Part_vParentBarcode

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

Definition at line 164 of file DumpObjects.h.

◆ m_Part_vParentID

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

Definition at line 164 of file DumpObjects.h.

◆ m_Part_vProdBarcode

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

Definition at line 163 of file DumpObjects.h.

◆ m_Part_vProdNin

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

Definition at line 163 of file DumpObjects.h.

◆ m_Part_vProdNout

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

Definition at line 163 of file DumpObjects.h.

◆ m_Part_vProdStatus

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

Definition at line 163 of file DumpObjects.h.

◆ m_Part_vx

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

Definition at line 157 of file DumpObjects.h.

157{}, *m_Part_vy{}, *m_Part_vz{};

◆ m_Part_vy

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

Definition at line 157 of file DumpObjects.h.

157{}, *m_Part_vy{}, *m_Part_vz{};

◆ m_Part_vz

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

Definition at line 157 of file DumpObjects.h.

157{}, *m_Part_vy{}, *m_Part_vz{};

◆ m_pixelClusterKey

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

Definition at line 80 of file DumpObjects.h.

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

◆ m_pixelID

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

Definition at line 68 of file DumpObjects.h.

68{};

◆ m_pixelManager

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

Definition at line 70 of file DumpObjects.h.

70{};

◆ m_pixelSDOKey

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

Definition at line 83 of file DumpObjects.h.

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

◆ m_rootFile

bool InDet::DumpObjects::m_rootFile {}
private

jobOption: save data in root format

Definition at line 115 of file DumpObjects.h.

115{};

◆ m_run_number

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

Definition at line 118 of file DumpObjects.h.

118{};

◆ m_SCT_ID

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

Definition at line 69 of file DumpObjects.h.

69{};

◆ m_SCT_Manager

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

Definition at line 71 of file DumpObjects.h.

71{};

◆ m_SEID

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

Definition at line 122 of file DumpObjects.h.

122{};

◆ m_selected

int InDet::DumpObjects::m_selected {}
private

Definition at line 73 of file DumpObjects.h.

73{};

◆ m_SPbottomStripDirection

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

Definition at line 181 of file DumpObjects.h.

181{};

◆ m_SPCL1_index

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

Definition at line 169 of file DumpObjects.h.

169{}, *m_SPCL2_index{};

◆ m_SPCL2_index

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

Definition at line 169 of file DumpObjects.h.

169{}, *m_SPCL2_index{};

◆ m_SPcovr

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

Definition at line 173 of file DumpObjects.h.

173{};

◆ m_SPcovz

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

Definition at line 174 of file DumpObjects.h.

174{};

◆ m_SPhl_botstrip

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

Definition at line 178 of file DumpObjects.h.

178{};

◆ m_SPhl_topstrip

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

Definition at line 176 of file DumpObjects.h.

176{};

◆ m_SPindex

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

Definition at line 167 of file DumpObjects.h.

167{};

◆ m_SPisOverlap

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

Definition at line 170 of file DumpObjects.h.

170{}; // -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 172 of file DumpObjects.h.

172{};

◆ m_SPstripCenterDistance

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

Definition at line 182 of file DumpObjects.h.

182{};

◆ m_SPtopStripCenterPosition

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

Definition at line 183 of file DumpObjects.h.

183{};

◆ m_SPtopStripDirection

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

Definition at line 180 of file DumpObjects.h.

180{};

◆ m_SPx

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

Definition at line 168 of file DumpObjects.h.

168{}, *m_SPy{}, *m_SPz{};

◆ m_SPy

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

Definition at line 168 of file DumpObjects.h.

168{}, *m_SPy{}, *m_SPz{};

◆ m_SPz

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

Definition at line 168 of file DumpObjects.h.

168{}, *m_SPy{}, *m_SPz{};

◆ m_stripClusterKey

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

Definition at line 81 of file DumpObjects.h.

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

◆ m_stripSDOKey

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

Definition at line 84 of file DumpObjects.h.

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

◆ m_tracksKey

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

Definition at line 92 of file DumpObjects.h.

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

◆ m_tracksTruthKey

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

Definition at line 93 of file DumpObjects.h.

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

◆ m_TRKcharge

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

Definition at line 192 of file DumpObjects.h.

192{};

◆ m_TRKchiSq

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

Definition at line 190 of file DumpObjects.h.

190{};

◆ m_TRKindex

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

Definition at line 186 of file DumpObjects.h.

186{};

◆ m_TRKmeasurementsOnTrack_pixcl_sctcl_index

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

Definition at line 191 of file DumpObjects.h.

◆ m_TRKmot

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

Definition at line 189 of file DumpObjects.h.

189{}, *m_TRKmot{}, *m_TRKoot{};

◆ m_TRKndof

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

Definition at line 189 of file DumpObjects.h.

189{}, *m_TRKmot{}, *m_TRKoot{};

◆ m_TRKoot

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

Definition at line 189 of file DumpObjects.h.

189{}, *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 191 of file DumpObjects.h.

◆ m_TRKparticle_hypothesis

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

Definition at line 187 of file DumpObjects.h.

◆ m_TRKpattern

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

Definition at line 188 of file DumpObjects.h.

188{}, *m_TRKpattern{};

◆ m_TRKperigee_momentum

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

Definition at line 193 of file DumpObjects.h.

◆ m_TRKperigee_position

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

Definition at line 193 of file DumpObjects.h.

◆ m_TRKproperties

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

Definition at line 188 of file DumpObjects.h.

188{}, *m_TRKpattern{};

◆ m_TRKtrack_fitter

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

Definition at line 187 of file DumpObjects.h.

◆ m_TTCevent_index

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

Definition at line 194 of file DumpObjects.h.

◆ m_TTCindex

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

Definition at line 194 of file DumpObjects.h.

◆ m_TTCparticle_link

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

Definition at line 194 of file DumpObjects.h.

◆ m_TTCprobability

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

Definition at line 195 of file DumpObjects.h.

195{};

◆ 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 86 of file DumpObjects.h.

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

◆ m_xaodStripSpacePointContainerKey

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

Definition at line 88 of file DumpObjects.h.

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

◆ m_xaodStripSpacePointOverlapContainerKey

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

Definition at line 90 of file DumpObjects.h.

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

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