ATLAS Offline Software
Loading...
Searching...
No Matches
electronSuperClusterBuilder Class Referencefinalabstract

Create supercluster under electron hypothesis. More...

#include <electronSuperClusterBuilder.h>

Inheritance diagram for electronSuperClusterBuilder:
Collaboration diagram for electronSuperClusterBuilder:

Public Member Functions

 electronSuperClusterBuilder (const std::string &name, ISvcLocator *pSvcLocator)
virtual StatusCode initialize () override final
 should be called by the derived class in the initialize phase
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
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
virtual void setFilterPassed (bool state, const EventContext &ctx) const
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 StatusCode execute (const EventContext &ctx) const override
 should be called by the derived class in the execute phase
virtual std::vector< std::size_t > searchForSecondaryClusters (std::size_t egammaInd, const EgammaRecContainer *egammaRecs, std::vector< bool > &isUsed) const =0
bool matchesInWindow (const xAOD::CaloCluster *ref, const xAOD::CaloCluster *clus) const
 Is clus in window center around ref?
std::unique_ptr< xAOD::CaloClustercreateNewCluster (const EventContext &ctx, const std::vector< const xAOD::CaloCluster * > &clusters, const DataLink< CaloCellContainer > &cellCont, const CaloDetDescrManager &mgr, xAOD::EgammaParameters::EgammaType egType, xAOD::CaloClusterContainer *precorrClusters) const
 Add new supercluster ,created out of the input clusters, to the newClusters collections.
bool seedClusterSelection (const xAOD::CaloCluster *clus) const
 check if we pass the basic criteria for a seed cluster
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.

Protected Attributes

Gaudi::Property< float > m_EtThresholdCut
 Seed selection requirements.
SG::ReadHandleKey< EgammaRecContainerm_inputEgammaRecContainerKey
 Key for input egammaRec container.
SG::ReadCondHandleKey< CaloDetDescrManagerm_caloDetDescrMgrKey
SG::WriteHandleKey< EgammaRecContainerm_outputEgammaRecContainerKey
 Key for output egammaRec container.
SG::WriteHandleKey< xAOD::CaloClusterContainerm_outputSuperClusterCollectionName
 Key for output clusters.
SG::WriteHandleKey< xAOD::CaloClusterContainerm_precorrClustersKey
 Optional key for pre-correction clusters.
float m_searchWindowEtaBarrel = 0.0F
float m_searchWindowPhiBarrel = 0.0F
float m_searchWindowEtaEndcap = 0.0F
float m_searchWindowPhiEndcap = 0.0F

Static Protected Attributes

static constexpr float s_cellEtaSize = 0.025
static constexpr float s_cellPhiSize = M_PI / 128.
static constexpr float s_TG3Run3E4cellEtaMax = 1.72
static constexpr float s_TG3Run3E3cellEtaMin = 1.2
static constexpr float s_TG3Run2E4cellEtaMax = 1.6
static constexpr float s_TG3Run2E4cellEtaMin = 1.4
static constexpr float s_ClEtaMinForTG3cell = s_TG3Run2E4cellEtaMin - 0.03
static constexpr float s_ClEtaMaxForTG3cell = s_TG3Run3E4cellEtaMax + 0.03

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

virtual bool egammaRecPassesSelection (const egammaRec *egRec) const override final
virtual xAOD::EgammaParameters::EgammaType getEgammaRecType (const egammaRec *egRec) const override final
virtual StatusCode redoMatching (const EventContext &ctx, SG::WriteHandle< EgammaRecContainer > &newEgammaRecs) const override final
virtual std::vector< std::size_t > searchForSecondaryClusters (const size_t i, const EgammaRecContainer *, std::vector< bool > &isUsed) const override final
 Search for secondary clusters.
StatusCode fillClusterConstrained (xAOD::CaloCluster &tofill, const std::vector< const xAOD::CaloCluster * > &clusters, const CookieCutterHelpers::CentralPosition &cp0) const
 Fill super cluster constraining its size in eta,phi around the overall hottest cell and the its L2 size.
StatusCode addTileGap3CellsinWindow (xAOD::CaloCluster &tofill, const CaloDetDescrManager &mgr) const
 add all tile Gap 3 cells in a window.
StatusCode calibrateCluster (const EventContext &ctx, xAOD::CaloCluster *newCluster, const CaloDetDescrManager &mgr, const xAOD::EgammaParameters::EgammaType egType, xAOD::CaloClusterContainer *precorrClusters) const
 function to calibrate the new clusters energy
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

Gaudi::Property< int > m_maxDelEtaCells
 Size of maximum search window in eta.
Gaudi::Property< int > m_maxDelPhiCells
 Size of maximum search window in phi.
Gaudi::Property< std::size_t > m_numberOfPixelHits
Gaudi::Property< std::size_t > m_numberOfSiHits
ToolHandle< IEMTrackMatchBuilderm_trackMatchBuilder
 Tool to perform track matching.
Gaudi::Property< bool > m_doTrackMatching
 private member flag to do the track matching
float m_maxDelEta {}
float m_maxDelPhi {}
float m_addCellsWindowEtaBarrel = 0.0F
float m_addCellsWindowEtaEndcap = 0.0F
float m_extraL0L1PhiSize = 0.0F
float m_extraL3EtaSize = 0.0F
Gaudi::Property< bool > m_linkToConstituents
 Decorate the supercluster with links to the component topoclusters.
Gaudi::Property< bool > m_useExtendedTG3
 Use extended TG3 definition (only after Run 2)
Gaudi::Property< int > m_searchWindowEtaCellsBarrel
 Size of topocluster search window in eta for the barrel.
Gaudi::Property< int > m_searchWindowPhiCellsBarrel
 Size of topocluster search window in phi for the barrel.
Gaudi::Property< int > m_searchWindowEtaCellsEndcap
 Size of topocluster search window in eta for the end-cap.
Gaudi::Property< int > m_searchWindowPhiCellsEndcap
 Size of topocluster search window in phi for the end-cap.
Gaudi::Property< int > m_addCellsWindowEtaCellsBarrel
 Size of windows et eta in which cells of topoclusters are added for the barrel (units of 2nd layer cells)
Gaudi::Property< int > m_addCellsWindowEtaCellsEndcap
 Size of windows et eta in which cells of topoclusters are edded for the endcap (units of 2nd layer cells)
Gaudi::Property< int > m_extraL0L1PhiSizeCells
 "When adding L0 (PS) and L1 cells, how much wider than the L2 size of the cluster is the acceptance in phi (units of 2nd layer cells)
Gaudi::Property< int > m_extraL3EtaSizeCells
 "When adding L3 cells, how much wider in eta than the L2
ServiceHandle< IegammaMVASvcm_MVACalibSvc
 Handle to the MVA calibration service.
ToolHandle< IegammaSwToolm_clusterCorrectionTool
 Tool to handle cluster corrections.
ToolHandle< IegammaCheckEnergyDepositToolm_egammaCheckEnergyDepositTool
 Pointer to the egammaCheckEnergyDepositTool.
ToolHandle< IegammaCellRecoveryToolm_egammaCellRecoveryTool
 Pointer to the egammaCellRecoveryTool.
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

Create supercluster under electron hypothesis.

The algorithm creates superclusters for electrons merging topoclusters. Input containers:

Output containers:

  • OutputEgammaRecContainerKey (default=ElectronSuperRecCollection): collection of EgammaRec objects with the cluster set to be the supercluster
  • SuperClusterCollectionName (default=ElectronSuperClusters): collection of clusters (the supercluster)

The loop is on the clusters of the EgammaRec objects from the input container. Fist, the first cluster is considered as a seed. The cluster seed must pass some selection:

Clusters to be merged in a supercluster are selected using the electronSuperClusterBuilder::searchForSecondaryClusters function. Then the procedure is redone, testing new seeds, for all the other clusters that have not been used to make superclusters. The building of the supercluster is done with egammaSuperClusterBuilderBase::createNewCluster which selects the cells to be used.

Add the end, if the property doTrackMatching is true the track matching is redone on top of new superclusters, using the tool configured by the property TrackMatchBuilderTool, by default EMTrackMatchBuilder.

See also
photonSuperClusterBuilder

Definition at line 71 of file electronSuperClusterBuilder.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

◆ electronSuperClusterBuilder()

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

Definition at line 38 of file electronSuperClusterBuilder.cxx.

41 : egammaSuperClusterBuilderBase(name, pSvcLocator)
42{
43}
egammaSuperClusterBuilderBase(const std::string &name, ISvcLocator *pSvcLocator)
Protected constructor since this class should not be instantiated by itself.

Member Function Documentation

◆ addTileGap3CellsinWindow()

StatusCode egammaSuperClusterBuilderBase::addTileGap3CellsinWindow ( xAOD::CaloCluster & tofill,
const CaloDetDescrManager & mgr ) const
privateinherited

add all tile Gap 3 cells in a window.

All the cells in the TileGap3 layer which are in a eta x phi window 0.2, ~0.15 centered around the raw position of the cluster param tofill with weight 1.

Definition at line 785 of file egammaSuperClusterBuilderBase.cxx.

788{
789
790 double searchWindowEta = m_useExtendedTG3 ? 0.35 : 0.2;
791 constexpr double searchWindowPhi = 2 * M_PI / 64.0 + M_PI / 64; // ~ 0.15 rad
792 std::vector<const CaloCell*> cells;
793 cells.reserve(16);
794 const CaloCellContainer* inputcells =
795 tofill.getCellLinks()->getCellContainer();
796
797 if (!inputcells) {
798 ATH_MSG_ERROR("No cell container in addRemainingCellsToCluster?");
799 return StatusCode::FAILURE;
800 }
801
802 CaloCellList myList(&mgr, inputcells);
803
804 const std::vector<CaloSampling::CaloSample> samples = {
805 CaloSampling::TileGap3
806 };
807
808 for (auto samp : samples) {
809 // quite slow
810 myList.select(
811 tofill.eta0(), tofill.phi0(), searchWindowEta, searchWindowPhi, samp);
812 cells.insert(cells.end(), myList.begin(), myList.end());
813 }
814
815 for (const auto* cell : cells) {
816 if (!cell) {
817 continue;
818 }
819 const CaloDetDescrElement* dde = cell->caloDDE();
820 if (!dde) {
821 continue;
822 }
823
825 float minEta = s_TG3Run2E4cellEtaMin;
826 if (m_useExtendedTG3) {
827 minEta = s_TG3Run3E3cellEtaMin;
828 // if |eta2| < 1.56, keep only E3, else keep E3+E4.
829 // |eta2| uses as the eta of the highest energy cell in layer 2 as proxy
830 if (std::abs(tofill.eta0()) > 1.56) {
832 }
833 }
834 float cellaEtaRaw = std::abs(dde->eta_raw());
835 if (cellaEtaRaw >= minEta && cellaEtaRaw <= maxEta) {
836 int index = inputcells->findIndex(dde->calo_hash());
837 tofill.addCell(index, 1.);
838 }
839 }
840 return StatusCode::SUCCESS;
841}
#define M_PI
#define ATH_MSG_ERROR(x)
int findIndex(const IdentifierHash theHash) const
Return index of the cell with a given hash.
Gaudi::Property< bool > m_useExtendedTG3
Use extended TG3 definition (only after Run 2)
const CaloClusterCellLink * getCellLinks() const
Get a pointer to the CaloClusterCellLink object (const version)
flt_t eta0() const
Returns raw of cluster seed.
bool addCell(const unsigned index, const double weight)
Method to add a cell to the cluster (Beware: Kinematics not updated!)
flt_t phi0() const
Returns raw of cluster seed.
str index
Definition DeMoScan.py:362
constexpr float maxEta

◆ calibrateCluster()

StatusCode egammaSuperClusterBuilderBase::calibrateCluster ( const EventContext & ctx,
xAOD::CaloCluster * newCluster,
const CaloDetDescrManager & mgr,
const xAOD::EgammaParameters::EgammaType egType,
xAOD::CaloClusterContainer * precorrClusters ) const
privateinherited

function to calibrate the new clusters energy

Calibrate with

Definition at line 844 of file egammaSuperClusterBuilderBase.cxx.

850{
851
852 refineEta1Position(newCluster, mgr);
853 // Save the state before the corrections
854 newCluster->setAltE(newCluster->e());
855 newCluster->setAltEta(newCluster->eta());
856 newCluster->setAltPhi(newCluster->phi());
857 // first do the corrections
858 if (precorrClusters) {
859 precorrClusters->push_back(std::make_unique<xAOD::CaloCluster>());
860 *precorrClusters->back() = *newCluster;
861 }
863 ctx, newCluster, egType, xAOD::EgammaHelpers::isBarrel(newCluster)));
864 double aeta = std::abs(newCluster->eta());
865 if (aeta > 10) {
866 ATH_MSG_DEBUG("Too large eta after S-shape corrections. "
867 "SuperCluster rejected");
868 return StatusCode::FAILURE;
869 }
870 newCluster->setRawE(newCluster->e());
871 newCluster->setRawEta(newCluster->eta());
872 newCluster->setRawPhi(newCluster->phi());
873 //
874 fillPositionsInCalo(newCluster, mgr);
875 ATH_CHECK(m_MVACalibSvc->execute(*newCluster, egType));
876
877 return StatusCode::SUCCESS;
878}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x)
const T * back() const
Access the last element in the collection as an rvalue.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
ToolHandle< IegammaSwTool > m_clusterCorrectionTool
Tool to handle cluster corrections.
ServiceHandle< IegammaMVASvc > m_MVACalibSvc
Handle to the MVA calibration service.
void setRawEta(flt_t)
Set for signal state UNCALIBRATED.
void setAltPhi(flt_t)
Set for signal state ALTCALIBRATED.
void setRawPhi(flt_t)
Set for signal state UNCALIBRATED.
void setRawE(flt_t)
Set Energy for signal state UNCALIBRATED.
virtual double eta() const
The pseudorapidity ( ) of the particle.
void setAltEta(flt_t)
Set for signal state ALTCALIBRATED.
virtual double e() const
The total energy of the particle.
virtual double phi() const
The azimuthal angle ( ) of the particle.
void setAltE(flt_t)
Set Energy for signal state ALTCALIBRATED.
bool isBarrel(const xAOD::Egamma *eg)
return true if the cluster is in the barrel

◆ cardinality()

unsigned int AthCommonReentrantAlgorithm< Gaudi::Algorithm >::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.

64{
65 return 0;
66}

◆ createNewCluster()

std::unique_ptr< xAOD::CaloCluster > egammaSuperClusterBuilderBase::createNewCluster ( const EventContext & ctx,
const std::vector< const xAOD::CaloCluster * > & clusters,
const DataLink< CaloCellContainer > & cellCont,
const CaloDetDescrManager & mgr,
xAOD::EgammaParameters::EgammaType egType,
xAOD::CaloClusterContainer * precorrClusters ) const
protectedinherited

Add new supercluster ,created out of the input clusters, to the newClusters collections.

It decides which cells of the seed and the satellite clusters to add (boxing / cookie cutter).

The reference point is computed with findCentralPosition which returns the hottest cells looping on the cells of all the considered topo-clusters. Two references are computed, one for the barrel, one for the endcap. Computations are done in the calo-frame. Once the reference is computed the decision is made by egammaSuperClusterBuilderBase::fillClusterConstrained which add the cells for the accordeon.

Cells from the tile gap are added using egammaSuperClusterBuilderBase::addTileGap3CellsinWindow.

Kinematic properties of the cluster are computed from the property of the cells.

If the supercluster has a cluster energy less then EtThresholdCut (also used as threshould for the seed) false returned, and the cluster is not added. The supercluster need to pass egammaCheckEnergyDepositTool::checkFractioninSamplingCluster if not false is returned and the cluster is not added.

Calibrations on eta1, energy are applied with egammaSuperClusterBuilderBase::calibrateCluster

Calculate the kinematics of the new cluster, after all cells are added

Definition at line 477 of file egammaSuperClusterBuilderBase.cxx.

484{
485 if (clusters.empty()) {
486 ATH_MSG_ERROR("Missing the seed cluster! Should not happen.");
487 return nullptr;
488 }
489
490 // create a new empty cluster
491 // collection will own it if
492 auto newCluster = CaloClusterStoreHelper::makeCluster(cellCont);
493
494 if (!newCluster) {
495 ATH_MSG_ERROR("CaloClusterStoreHelper::makeCluster failed.");
496 return nullptr;
497 }
498 //
499 newCluster->setClusterSize(xAOD::CaloCluster::SuperCluster);
500 // Let's try to find the eta and phi of the hottest cell in L2.
501 // This will be used as the center for restricting the cluster size.
502 CookieCutterHelpers::CentralPosition cp0(clusters, mgr);
503
504 // Set the eta0/phi0 based on the references, but in raw coordinates
505 if (cp0.emaxB >= cp0.emaxEC) {
506 newCluster->setEta0(cp0.etaB);
507 newCluster->setPhi0(cp0.phiB);
508 } else {
509 newCluster->setEta0(cp0.etaEC);
510 newCluster->setPhi0(cp0.phiEC);
511 }
512
513 // Actually fill the cluster here
514 if (fillClusterConstrained(*newCluster, clusters, cp0).isFailure()) {
515 return nullptr;
516 }
517 // Apply SW-style summation of TileGap3 cells (if necessary).
518 float eta0 = std::abs(newCluster->eta0());
519 // In Run2, we did not impose restriction to include TG3 cells at this level.
520 // It should have been [1.37,1.63]. It has no impact on performance as TG3 was
521 // only used in energy calibration BDT in [1.4,1.6].
522 // In Run three we restrict to [1.37,1.75]
523 if (!m_useExtendedTG3 ||
524 (eta0 > s_ClEtaMinForTG3cell && eta0 < s_ClEtaMaxForTG3cell)) {
525 if (addTileGap3CellsinWindow(*newCluster, mgr).isFailure()) {
526 ATH_MSG_ERROR("Problem with the input cluster when running "
527 "AddTileGap3CellsinWindow?");
528
529 return nullptr;
530 }
531 }
533 CaloClusterKineHelper::calculateKine(newCluster.get(), true, true);
534
535 // If adding all EM cells we are somehow below the seed threshold then remove
536 if (newCluster->et() < m_EtThresholdCut) {
537 return nullptr;
538 }
539
540 // Check to see if cluster pases basic requirements. If not, kill it.
541 if (!m_egammaCheckEnergyDepositTool.empty() &&
542 !m_egammaCheckEnergyDepositTool->checkFractioninSamplingCluster(
543 newCluster.get())) {
544 return nullptr;
545 }
546
547 // Apply correction calibration
548 if (calibrateCluster(ctx, newCluster.get(), mgr, egType, precorrClusters)
549 .isFailure()) {
550 ATH_MSG_WARNING("There was problem calibrating the object");
551 return nullptr;
552 }
553
554 // Avoid negative energy clusters
555 if (newCluster->et() < 0) {
556 return nullptr;
557 }
558
560 // EDM vector to constituent clusters
561 std::vector<ElementLink<xAOD::CaloClusterContainer>> constituentLinks;
562 for (const xAOD::CaloCluster* cluster : clusters) {
563 ElementLink<xAOD::CaloClusterContainer> sisterCluster =
564 cluster->getSisterClusterLink();
565
566 // Set the element Link to the constitents
567 if (sisterCluster) {
568 constituentLinks.push_back(sisterCluster);
569 } else {
570 ATH_MSG_WARNING("No sister Link available");
571 }
572 }
573 // Set the link from the super cluster to the constituents (accumulated)
574 // clusters used.
575 static const SG::AuxElement::Accessor<
576 std::vector<ElementLink<xAOD::CaloClusterContainer>>>
577 caloClusterLinks("constituentClusterLinks");
578 caloClusterLinks(*newCluster) = constituentLinks;
579 }
580 // return the new cluster
581 return newCluster;
582}
#define ATH_MSG_WARNING(x)
static void calculateKine(xAOD::CaloCluster *clu, const bool useweight=true, const bool updateLayers=true, const bool useGPUCriteria=false)
Helper class to calculate cluster kinematics based on cells.
static std::unique_ptr< xAOD::CaloCluster > makeCluster(const CaloCellContainer *cellCont)
Creates a valid CaloCluster with a private Aux-Store and CellLink container.
SG::Accessor< T, ALLOC > Accessor
Definition AuxElement.h:572
Gaudi::Property< float > m_EtThresholdCut
Seed selection requirements.
StatusCode fillClusterConstrained(xAOD::CaloCluster &tofill, const std::vector< const xAOD::CaloCluster * > &clusters, const CookieCutterHelpers::CentralPosition &cp0) const
Fill super cluster constraining its size in eta,phi around the overall hottest cell and the its L2 si...
Gaudi::Property< bool > m_linkToConstituents
Decorate the supercluster with links to the component topoclusters.
StatusCode calibrateCluster(const EventContext &ctx, xAOD::CaloCluster *newCluster, const CaloDetDescrManager &mgr, const xAOD::EgammaParameters::EgammaType egType, xAOD::CaloClusterContainer *precorrClusters) const
function to calibrate the new clusters energy
ToolHandle< IegammaCheckEnergyDepositTool > m_egammaCheckEnergyDepositTool
Pointer to the egammaCheckEnergyDepositTool.
StatusCode addTileGap3CellsinWindow(xAOD::CaloCluster &tofill, const CaloDetDescrManager &mgr) const
add all tile Gap 3 cells in a window.
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.

◆ 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 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ 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.

◆ egammaRecPassesSelection()

bool electronSuperClusterBuilder::egammaRecPassesSelection ( const egammaRec * egRec) const
finaloverrideprivatevirtual

Reimplemented from egammaSuperClusterBuilderBase.

Definition at line 63 of file electronSuperClusterBuilder.cxx.

63 {
64 // We need tracks
65 if (egRec->getNumberOfTrackParticles() == 0) {
66 return false;
67 }
68 const xAOD::TrackParticle *trackParticle = egRec->trackParticle(0);
70 // with possible pixel
73 if (nPixelHits < m_numberOfPixelHits) {
74 return false;
75 }
76 // and with silicon (add SCT to pixel)
78 nSiHits += summaryValueInt(*trackParticle, xAOD::numberOfSCTHits, 0);
79 return nSiHits >= m_numberOfSiHits;
80};
int summaryValueInt(const xAOD::TrackParticle &tp, const xAOD::SummaryType &info, int deflt=-999)
return the summary value for a TrackParticle or default value (-999) (to be used mostly in python whe...
size_t getNumberOfTrackParticles() const
Return the number xAOD::TrackParticles that match the electron candidate.
const xAOD::TrackParticle * trackParticle(size_t index=0) const
Pointer to the xAOD::TrackParticle/s that match the electron candidate.
Definition egammaRec.cxx:31
Gaudi::Property< std::size_t > m_numberOfSiHits
Gaudi::Property< std::size_t > m_numberOfPixelHits
float nSiHits(const U &p)
float nPixelHits(const U &p)
int summaryValueInt(const xAOD::TrackParticle &tp, const xAOD::SummaryType &info, int deflt=-999)
return the summary value for a TrackParticle or default value (-999) (to be used mostly in python whe...
TrackParticle_v1 TrackParticle
Reference the current persistent version:
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].

◆ 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 egammaSuperClusterBuilderBase::execute ( const EventContext & ctx) const
overrideprotectedvirtualinherited

should be called by the derived class in the execute phase

Definition at line 274 of file egammaSuperClusterBuilderBase.cxx.

275{
276 SG::ReadHandle<EgammaRecContainer> egammaRecs(m_inputEgammaRecContainerKey,
277 ctx);
278 // check is only used for serial running; remove when MT scheduler used
279 ATH_CHECK(egammaRecs.isValid());
280
281 // Have to register cluster container in order to properly get cluster
282 // links.
283 SG::WriteHandle<xAOD::CaloClusterContainer> outputClusterContainer(
285
287
288 // Create the new Electron Super Cluster based EgammaRecContainer
289 SG::WriteHandle<EgammaRecContainer> newEgammaRecs(
291 ATH_CHECK(newEgammaRecs.record(std::make_unique<EgammaRecContainer>()));
292
293 size_t inputSize = egammaRecs->size();
294 outputClusterContainer->reserve(inputSize);
295 newEgammaRecs->reserve(inputSize);
296
297 std::optional<SG::WriteHandle<xAOD::CaloClusterContainer>> precorrClustersH;
298 if (!m_precorrClustersKey.empty()) {
299 precorrClustersH.emplace(m_precorrClustersKey, ctx);
301 precorrClustersH->ptr()->reserve(inputSize);
302 }
303
304 // The calo Det Descr manager
305 SG::ReadCondHandle<CaloDetDescrManager> caloDetDescrMgrHandle{
307 };
308 ATH_CHECK(caloDetDescrMgrHandle.isValid());
309 const CaloDetDescrManager* calodetdescrmgr = *caloDetDescrMgrHandle;
310
311 // If no input return
312 if (egammaRecs->empty()) {
313 return StatusCode::SUCCESS;
314 }
315
316 // Figure the cellCont we need to point to
317 const DataLink<CaloCellContainer>& cellCont =
318 (*egammaRecs)[0]->caloCluster()->getCellLinks()->getCellContainerLink();
319
320 // Loop over input egammaRec objects, build superclusters.
321 size_t numInput = egammaRecs->size();
322 std::vector<bool> isUsed(numInput, false);
323 std::vector<bool> isUsedRevert(numInput, false);
324
325 for (std::size_t i = 0; i < egammaRecs->size(); ++i) {
326 if (isUsed[i]) {
327 continue;
328 }
329 const auto* egRec = (*egammaRecs)[i];
330 // check for good seed cluster
331 const xAOD::CaloCluster* clus = egRec->caloCluster();
332 if (!seedClusterSelection(clus)) {
333 continue;
334 }
335
336 if (!egammaRecPassesSelection(egRec)) {
337 continue;
338 }
339
340 // save status in case we fail to create supercluster
341 isUsedRevert = isUsed;
342 // Mark seed as used,
343 isUsed[i] = true;
344
345 // Start accumulating the clusters from the seed
346 std::vector<const xAOD::CaloCluster*> accumulatedClusters;
347 accumulatedClusters.push_back(clus);
348
349 // Now we find all the secondary cluster for this seed
350 // and we accumulate them
351 const std::vector<std::size_t> secondaryIndices =
352 searchForSecondaryClusters(i, egammaRecs.cptr(), isUsed);
353 for (const auto& secClusIndex : secondaryIndices) {
354 const auto* const secRec = (*egammaRecs)[secClusIndex];
355 accumulatedClusters.push_back(secRec->caloCluster());
356 }
357 ATH_MSG_DEBUG("Total clusters " << accumulatedClusters.size());
358
359 // Create the new cluster
360 std::unique_ptr<xAOD::CaloCluster> newCluster =
362 accumulatedClusters,
363 cellCont,
364 *calodetdescrmgr,
365 getEgammaRecType(egRec),
366 precorrClustersH ? precorrClustersH->ptr() : nullptr);
367
368 // If we failed to create a cluster revert isUsed for the cluster
369 if (newCluster) {
370 outputClusterContainer->push_back(std::move(newCluster));
371 }
372 else {
373 isUsed.swap(isUsedRevert);
374 continue;
375 }
376
377 // Add the cluster links to the super cluster
378 ElementLink<xAOD::CaloClusterContainer> clusterLink(
379 *outputClusterContainer, outputClusterContainer->size() - 1, ctx);
380 std::vector<ElementLink<xAOD::CaloClusterContainer>> elClusters{
381 clusterLink
382 };
383
384 // Make egammaRec object, and push it back into output container.
385 auto newEgRec = std::make_unique<egammaRec>(*egRec);
386 newEgRec->setCaloClusters(elClusters);
387 newEgammaRecs->push_back(std::move(newEgRec));
388 } // End loop on egammaRecs
389
390 ATH_CHECK(redoMatching(ctx, newEgammaRecs));
391
392 return StatusCode::SUCCESS;
393}
static StatusCode AddContainerWriteHandle(SG::WriteHandle< xAOD::CaloClusterContainer > &clusColl)
Creates a new xAOD::CaloClusterContainer in the given WriteHandle + CaloClusterAuxContainer and recor...
SG::WriteHandleKey< EgammaRecContainer > m_outputEgammaRecContainerKey
Key for output egammaRec container.
SG::ReadHandleKey< EgammaRecContainer > m_inputEgammaRecContainerKey
Key for input egammaRec container.
virtual StatusCode redoMatching(const EventContext &ctx, SG::WriteHandle< EgammaRecContainer > &newEgammaRecs) const
std::unique_ptr< xAOD::CaloCluster > createNewCluster(const EventContext &ctx, const std::vector< const xAOD::CaloCluster * > &clusters, const DataLink< CaloCellContainer > &cellCont, const CaloDetDescrManager &mgr, xAOD::EgammaParameters::EgammaType egType, xAOD::CaloClusterContainer *precorrClusters) const
Add new supercluster ,created out of the input clusters, to the newClusters collections.
SG::WriteHandleKey< xAOD::CaloClusterContainer > m_precorrClustersKey
Optional key for pre-correction clusters.
virtual bool egammaRecPassesSelection(const egammaRec *egRec) const
virtual xAOD::EgammaParameters::EgammaType getEgammaRecType(const egammaRec *egRec) const =0
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloDetDescrMgrKey
SG::WriteHandleKey< xAOD::CaloClusterContainer > m_outputSuperClusterCollectionName
Key for output clusters.
virtual std::vector< std::size_t > searchForSecondaryClusters(std::size_t egammaInd, const EgammaRecContainer *egammaRecs, std::vector< bool > &isUsed) const =0
bool seedClusterSelection(const xAOD::CaloCluster *clus) const
check if we pass the basic criteria for a seed cluster

◆ 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 & AthCommonReentrantAlgorithm< 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 94 of file AthCommonReentrantAlgorithm.cxx.

90{
91 // If we didn't find any symlinks to add, just return the collection
92 // from the base class. Otherwise, return the extended collection.
93 if (!m_extendedExtraObjects.empty()) {
95 }
97}
An algorithm that can be simultaneously executed in multiple threads.

◆ fillClusterConstrained()

StatusCode egammaSuperClusterBuilderBase::fillClusterConstrained ( xAOD::CaloCluster & tofill,
const std::vector< const xAOD::CaloCluster * > & clusters,
const CookieCutterHelpers::CentralPosition & cp0 ) const
privateinherited

Fill super cluster constraining its size in eta,phi around the overall hottest cell and the its L2 size.

Parameters
tofillempty cluster to be filled
clustersseed and satellite clusters
cp0this specify the eta/phi reference in the calo-frame. In egamma reconstruction the references are the hottest cells in L2, in barrel and endcap.

Cells are added if their raw coordinates are inside a window in eta and/or phi centered around the hottest cells specified by cp0. If there are two hottest cells (one in the barrel and one in the endcap) both are used in the tests and an OR of the two is considered.

First L2 and L3 LAR EM cells are considered (excluding inner wheel endcap cells). A cut in eta is used. The range of the eta-window depends if the seed cell is in barrel or endcap. For example for the barrel, cells in L2 are added if they are inside +/- (AddCellsWindowEtaCellsBarrel * s_cellEtaSize / 2) where s_cellEtaSize is the eta size of one cell in L2. For L3 the semi-window is increased by (ExtraL3EtaSizeCells * s_cellEtaSize / 2).

Then cells in PS and L1 are added if they match a window in eta and phi. The eta requiriment is the same as in L2. The window in phi is computed asymetrically using the cells in layer 2, using the function egammaSuperClusterBuilderBase::findPhiSize and increading the semi-window by (ExtraL0L1PhiSize * s_cellPhiSize) where s_cellPhiSize is the size in phi of cells in L2.

Definition at line 606 of file egammaSuperClusterBuilderBase.cxx.

610{
611 const float addCellsWindowEtaBarrel = m_addCellsWindowEtaBarrel;
612 const float addCellsWindowEtaEndcap = m_addCellsWindowEtaEndcap;
613 const float addCellsWindowL3EtaBarrel =
615 const float addCellsWindowL3EtaEndcap =
617
618 // Loop for L2/L3
619 for (const xAOD::CaloCluster* tocheck : clusters) {
620 xAOD::CaloCluster::const_cell_iterator cell_itr = tocheck->begin();
621 xAOD::CaloCluster::const_cell_iterator cell_end = tocheck->end();
622 // Loop over cells
623 for (; cell_itr != cell_end; ++cell_itr) {
624 // sanity check on the cell
625 const CaloCell* cell = *cell_itr;
626 if (!cell) {
627 continue;
628 }
629 const CaloDetDescrElement* dde = cell->caloDDE();
630 if (!dde) {
631 continue;
632 }
633 // we want only LAREM
634 if (!(dde->getSubCalo() == CaloCell_ID::LAREM)) {
635 continue;
636 }
637 // we want L2 or L3 cells
638 const auto sampling = dde->getSampling();
639 const bool isL2Cell =
640 (CaloCell_ID::EMB2 == sampling || CaloCell_ID::EME2 == sampling);
641 const bool isL3Cell =
642 (CaloCell_ID::EMB3 == sampling || CaloCell_ID::EME3 == sampling);
643
644 if ((!isL2Cell) && (!isL3Cell)) {
645 continue;
646 }
647 // Also exclude the inner wheel Endcap
648 if (dde->is_lar_em_endcap_inner()) {
649 continue;
650 }
651
652 bool inEtaRange = false;
653 // Check if is inside the eta range wrt to the hottest
654 // cell(s) for the cluster we construct
655 if (cp0.emaxB > 0) { // barrel
656 if (isL2Cell &&
657 (std::abs(cp0.etaB - dde->eta_raw()) < addCellsWindowEtaBarrel)) {
658 inEtaRange = true;
659 }
660 if (isL3Cell &&
661 (std::abs(cp0.etaB - dde->eta_raw()) < addCellsWindowL3EtaBarrel)) {
662 inEtaRange = true;
663 }
664 }
665 if (cp0.emaxEC > 0) { // endcap
666 if (isL2Cell &&
667 (std::abs(cp0.etaEC - dde->eta_raw()) < addCellsWindowEtaEndcap)) {
668 inEtaRange = true;
669 }
670 if (isL3Cell && (std::abs(cp0.etaEC - dde->eta_raw()) <
671 addCellsWindowL3EtaEndcap)) {
672 inEtaRange = true;
673 }
674 }
675 if (!inEtaRange) {
676 continue;
677 }
678 tofill.addCell(cell_itr.index(), cell_itr.weight());
679 } // Loop over cells for L2/L3
680 } // Loop over clusters for L2/L3
681
682 // We should have a size here
683 if (tofill.size() == 0) {
684 return StatusCode::FAILURE;
685 }
686 // Now calculate the cluster size in 2nd layer
687 // use that for constraining the L0/L1 cells we add
688 const CookieCutterHelpers::PhiSize phiSize(cp0, tofill);
689 const float phiPlusB = cp0.phiB + phiSize.plusB + m_extraL0L1PhiSize;
690 const float phiMinusB = cp0.phiB - phiSize.minusB - m_extraL0L1PhiSize;
691 const float phiPlusEC = cp0.phiEC + phiSize.plusEC + m_extraL0L1PhiSize;
692 const float phiMinusEC = cp0.phiEC - phiSize.minusEC - m_extraL0L1PhiSize;
693
694 // Loop for L0/L1
695 for (const xAOD::CaloCluster* tocheck : clusters) {
696 xAOD::CaloCluster::const_cell_iterator cell_itr = tocheck->begin();
697 xAOD::CaloCluster::const_cell_iterator cell_end = tocheck->end();
698 // Loop over cells
699 for (; cell_itr != cell_end; ++cell_itr) {
700 // sanity check on the cell
701 const CaloCell* cell = *cell_itr;
702 if (!cell) {
703 continue;
704 }
705 const CaloDetDescrElement* dde = cell->caloDDE();
706 if (!dde) {
707 continue;
708 }
709
710 // only deal with L1 or PS
711 const auto sampling = dde->getSampling();
712 const bool isL0L1Cell =
713 (CaloCell_ID::EMB1 == sampling || CaloCell_ID::EME1 == sampling ||
714 CaloCell_ID::PreSamplerB == sampling ||
715 CaloCell_ID::PreSamplerE == sampling);
716 if (!isL0L1Cell) {
717 continue;
718 }
719
720 bool inEtaRange = false;
721 // Check if is inside the eta range wrt to the hottest
722 // cell(s) for the cluster we construct
723 if (cp0.emaxB > 0) { // barrel
724 if (std::abs(cp0.etaB - dde->eta_raw()) < addCellsWindowEtaBarrel) {
725 inEtaRange = true;
726 }
727 }
728 if (cp0.emaxEC > 0) { // endcap
729 if (std::abs(cp0.etaEC - dde->eta_raw()) < addCellsWindowEtaEndcap) {
730 inEtaRange = true;
731 }
732 }
733 if (!inEtaRange) {
734 continue;
735 }
736
737 // Add L0/L1 when we are in the narrow range
738 bool inPhiRange = false;
739 if (cp0.emaxB > 0) { // barrel
740 const double cell_phi = proxim(dde->phi_raw(), cp0.phiB);
741 if (cell_phi > phiMinusB && cell_phi < phiPlusB) {
742 inPhiRange = true;
743 }
744 }
745 if (cp0.emaxEC > 0) { // endcap
746 const double cell_phi = proxim(dde->phi_raw(), cp0.phiEC);
747 if (cell_phi > phiMinusEC && cell_phi < phiPlusEC) {
748 inPhiRange = true;
749 }
750 }
751 if (!inPhiRange) {
752 continue;
753 }
754
755 tofill.addCell(cell_itr.index(), cell_itr.weight());
756 } // Cell Loop for L0/L1
757 } // Cluster loop for L0/L1
758
759 if (!m_egammaCellRecoveryTool.empty()) {
760 IegammaCellRecoveryTool::Info info;
761 if (cp0.emaxB > cp0.emaxEC) {
762 info.etamax = cp0.etaB;
763 info.phimax = cp0.phiB;
764 } else {
765 info.etamax = cp0.etaEC;
766 info.phimax = cp0.phiEC;
767 }
768 if (m_egammaCellRecoveryTool->execute(tofill,info).isFailure()) {
769 ATH_MSG_WARNING("Issue trying to recover cells");
770 }
771
772 // And finally add the recovered cells
773 const CaloCellContainer* inputcells =
774 tofill.getCellLinks()->getCellContainer();
775 for (const auto *c : info.addedCells) {
776 int index = inputcells->findIndex(c->caloDDE()->calo_hash());
777 tofill.addCell(index, 1.);
778 }
779 }
780
781 return StatusCode::SUCCESS;
782}
CaloCell_ID::CaloSample getSampling() const
cell sampling
bool is_lar_em_endcap_inner() const
cell belongs to the inner wheel of EM end cap
ToolHandle< IegammaCellRecoveryTool > m_egammaCellRecoveryTool
Pointer to the egammaCellRecoveryTool.
size_t size() const
size method (forwarded from CaloClusterCellLink obj)
CaloClusterCellLink::const_iterator const_cell_iterator
Iterator of the underlying CaloClusterCellLink (explicitly const version)
double proxim(double b, double a)
Definition proxim.h:17

◆ filterPassed()

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

Definition at line 96 of file AthCommonReentrantAlgorithm.h.

96 {
97 return execState( ctx ).filterPassed();
98 }
virtual bool filterPassed(const EventContext &ctx) const

◆ getEgammaRecType()

xAOD::EgammaParameters::EgammaType electronSuperClusterBuilder::getEgammaRecType ( const egammaRec * egRec) const
finaloverrideprivatevirtual

◆ initialize()

StatusCode electronSuperClusterBuilder::initialize ( )
finaloverridevirtual

should be called by the derived class in the initialize phase

Reimplemented from egammaSuperClusterBuilderBase.

Definition at line 46 of file electronSuperClusterBuilder.cxx.

47{
48 ATH_MSG_DEBUG(" Initializing electronSuperClusterBuilder");
49
50 // Additional Window we search in
53
54 // retrieve track match builder
57 }
58
60}
virtual StatusCode initialize() override
should be called by the derived class in the initialize phase
Gaudi::Property< int > m_maxDelEtaCells
Size of maximum search window in eta.
Gaudi::Property< int > m_maxDelPhiCells
Size of maximum search window in phi.
Gaudi::Property< bool > m_doTrackMatching
private member flag to do the track matching
ToolHandle< IEMTrackMatchBuilder > m_trackMatchBuilder
Tool to perform track matching.

◆ 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()

◆ matchesInWindow()

bool egammaSuperClusterBuilderBase::matchesInWindow ( const xAOD::CaloCluster * ref,
const xAOD::CaloCluster * clus ) const
protectedinherited

Is clus in window center around ref?

Parameters
refreference cluster
cluscluster to be tested

The matching is done using delta-eta and delta-phi comparing them with the values of SearchWindowEtaCellsBarrel, SearchWindowPhiCellsBarrel, SearchWindowEtaCellsEndcap and SearchWindowPhiCellsEndcap, depending if the seed is barrel or endcap. If it is in the crack, an OR of the conditions (using both seeds) is used.

Definition at line 409 of file egammaSuperClusterBuilderBase.cxx.

412{
413 auto inRange = [](float eta1, float phi1,
414 float eta2, float phi2,
415 float etaWindow, float phiWindow) {
416
417 const float dEta = std::abs(eta1 - eta2);
418 const float dPhi = std::abs(P4Helpers::deltaPhi(phi1, phi2));
419
420 return dEta < etaWindow && dPhi < phiWindow;
421 };
422
423 // First the case where the seed is both endcap and barrel, i.e. in the crack
424 // Check around both measurements of the seed
425 if (ref->hasSampling(CaloSampling::EMB2) &&
426 ref->hasSampling(CaloSampling::EME2)) {
427 const bool inRangeBarrel = inRange(ref->eta(),
428 ref->phi(),
429 clus->eta(),
430 clus->phi(),
433
434 const bool inRangeEndcap = inRange(ref->eta(),
435 ref->phi(),
436 clus->eta(),
437 clus->phi(),
440
441 const bool inRangeBarrelL2 = inRange(ref->etaSample(CaloSampling::EMB2),
442 ref->phiSample(CaloSampling::EMB2),
443 clus->eta(),
444 clus->phi(),
447
448 const bool inRangeEndcapL2 = inRange(ref->etaSample(CaloSampling::EME2),
449 ref->phiSample(CaloSampling::EME2),
450 clus->eta(),
451 clus->phi(),
454
455 // Matches any in case of split
456 return inRangeBarrel || inRangeEndcap || inRangeBarrelL2 || inRangeEndcapL2;
457 }
458
460 return inRange(ref->eta(),
461 ref->phi(),
462 clus->eta(),
463 clus->phi(),
466 }
467
468 return inRange(ref->eta(),
469 ref->phi(),
470 clus->eta(),
471 clus->phi(),
474}
const boost::regex ref(r_ef)
bool inRange(const double *boundaries, const double value, const double tolerance=0.02)
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
Definition P4Helpers.h:34
bool dPhi(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, float &out)
bool dEta(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, float &out)
setEt setPhi setE277 setWeta2 eta1

◆ 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.

◆ redoMatching()

StatusCode electronSuperClusterBuilder::redoMatching ( const EventContext & ctx,
SG::WriteHandle< EgammaRecContainer > & newEgammaRecs ) const
finaloverrideprivatevirtual

Reimplemented from egammaSuperClusterBuilderBase.

Definition at line 88 of file electronSuperClusterBuilder.cxx.

91 {
93 ATH_CHECK(m_trackMatchBuilder->executeRec(ctx, newEgammaRecs.ptr()));
94 }
95
96 return StatusCode::SUCCESS;
97}
pointer_type ptr()
Dereference the pointer.

◆ 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 }

◆ searchForSecondaryClusters() [1/2]

virtual std::vector< std::size_t > egammaSuperClusterBuilderBase::searchForSecondaryClusters ( std::size_t egammaInd,
const EgammaRecContainer * egammaRecs,
std::vector< bool > & isUsed ) const
protectedpure virtualinherited

◆ searchForSecondaryClusters() [2/2]

std::vector< std::size_t > electronSuperClusterBuilder::searchForSecondaryClusters ( const size_t i,
const EgammaRecContainer * ,
std::vector< bool > & isUsed ) const
finaloverrideprivatevirtual

Search for secondary clusters.

Parameters
iindex of the seed cluster
isUsedbooleand mask of already used cluster
Returns
vector of index of the satellites

Only clusters that have not already been used are considered. The satellite is added if:

  • matches the seed in a narrow window OR
  • is inside the window for additonal criteria AND matches the same track

The first condition is evaluated with egammaSuperClusterBuilderBase.matchesInWindow. The second condition is evaluated using MaxWindowDelEtaCells and MaxWindowDelPhiCells and electronSuperClusterBuilder.matchSameTrack

Definition at line 100 of file electronSuperClusterBuilder.cxx.

104{
105 // assume egammaRecs != 0, since the ReadHadler is valid
106 // assume seed egammaRec has a valid cluster, since it has been already used
107 std::vector<std::size_t> secondaryIndices;
108
109 const auto* const seedEgammaRec = (*egammaRecs)[seedIndex];
110 const xAOD::CaloCluster* const seedCaloClus = seedEgammaRec->caloCluster();
111
112 const xAOD::TrackParticle* seedTrackParticle = seedEgammaRec->trackParticle();
113
114 // Now loop over the potential secondary clusters
115 for (std::size_t i = 0; i < egammaRecs->size(); ++i) {
116 // if already used continue
117 if (isUsed[i]) {
118 continue;
119 }
120
121 const auto* const secEgammaRec = (*egammaRecs)[i];
122 const xAOD::CaloCluster* const secClus = secEgammaRec->caloCluster();
123 // Now perform a number of tests to see if the cluster should be added
124
125 const auto seedSecdEta = std::abs(seedCaloClus->eta() - secClus->eta());
126 const auto seedSecdPhi =
127 std::abs(P4Helpers::deltaPhi(seedCaloClus->phi(), secClus->phi()));
128
129 const bool addCluster =
130 (matchesInWindow(seedCaloClus, secClus) ||
131 ((seedSecdEta < m_maxDelEta && seedSecdPhi < m_maxDelPhi) &&
132 (matchSameTrack(*seedTrackParticle, *secEgammaRec))));
133 // Add it to the list of secondary clusters if it matches.
134 if (addCluster) {
135 secondaryIndices.push_back(i);
136 isUsed[i] = true;
137 }
138 }
139 ATH_MSG_DEBUG("Found: " << secondaryIndices.size() << " secondaries");
140 return secondaryIndices;
141}
bool matchesInWindow(const xAOD::CaloCluster *ref, const xAOD::CaloCluster *clus) const
Is clus in window center around ref?

◆ seedClusterSelection()

bool egammaSuperClusterBuilderBase::seedClusterSelection ( const xAOD::CaloCluster * clus) const
protectedinherited

check if we pass the basic criteria for a seed cluster

Definition at line 585 of file egammaSuperClusterBuilderBase.cxx.

587{
588 // The seed should have 2nd sampling
589 if (!clus->hasSampling(CaloSampling::EMB2) &&
590 !clus->hasSampling(CaloSampling::EME2)) {
591 return false;
592 }
593 const double eta2 = std::abs(clus->etaBE(2));
594 if (eta2 > 10) {
595 return false;
596 }
597 // Accordeon Energy samplings 1 to 3
598 const double EMAccEnergy =
599 clus->energyBE(1) + clus->energyBE(2) + clus->energyBE(3);
600 const double EMAccEt = EMAccEnergy / cosh(eta2);
601 // Require minimum energy for supercluster seeding.
602 return EMAccEt >= m_EtThresholdCut;
603}
float energyBE(const unsigned layer) const
Get the energy in one layer of the EM Calo.
bool hasSampling(const CaloSample s) const
Checks if certain smapling contributes to cluster.
float etaBE(const unsigned layer) const
Get the eta in one layer of the EM Calo.

◆ setFilterPassed()

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

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100 {
102 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const

◆ sysExecute()

StatusCode AthCommonReentrantAlgorithm< 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.

Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.

77{
78 return BaseAlg::sysExecute (ctx);
79}

◆ sysInitialize()

StatusCode AthCommonReentrantAlgorithm< 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 HypoBase, and InputMakerBase.

Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.

107 {
109
110 if (sc.isFailure()) {
111 return sc;
112 }
113
114 ServiceHandle<ICondSvc> cs("CondSvc",name());
115 for (auto h : outputHandles()) {
116 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
117 // do this inside the loop so we don't create the CondSvc until needed
118 if ( cs.retrieve().isFailure() ) {
119 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
120 return StatusCode::SUCCESS;
121 }
122 if (cs->regHandle(this,*h).isFailure()) {
124 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
125 << " with CondSvc");
126 }
127 }
128 }
129 return sc;
130}
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_addCellsWindowEtaBarrel

float egammaSuperClusterBuilderBase::m_addCellsWindowEtaBarrel = 0.0F
privateinherited

Definition at line 271 of file egammaSuperClusterBuilderBase.h.

◆ m_addCellsWindowEtaCellsBarrel

Gaudi::Property<int> egammaSuperClusterBuilderBase::m_addCellsWindowEtaCellsBarrel
privateinherited
Initial value:
{
this,
"AddCellsWindowEtaCellsBarrel",
3,
"Number of cells in eta of window around topocluster center to add cells"
}

Size of windows et eta in which cells of topoclusters are added for the barrel (units of 2nd layer cells)

Definition at line 329 of file egammaSuperClusterBuilderBase.h.

329 {
330 this,
331 "AddCellsWindowEtaCellsBarrel",
332 3,
333 "Number of cells in eta of window around topocluster center to add cells"
334 };

◆ m_addCellsWindowEtaCellsEndcap

Gaudi::Property<int> egammaSuperClusterBuilderBase::m_addCellsWindowEtaCellsEndcap
privateinherited
Initial value:
{
this,
"AddCellsWindowEtaCellsEndcap",
5,
"Number of cells in eta of window around topocluster center to add cells"
}

Size of windows et eta in which cells of topoclusters are edded for the endcap (units of 2nd layer cells)

Definition at line 338 of file egammaSuperClusterBuilderBase.h.

338 {
339 this,
340 "AddCellsWindowEtaCellsEndcap",
341 5,
342 "Number of cells in eta of window around topocluster center to add cells"
343 };

◆ m_addCellsWindowEtaEndcap

float egammaSuperClusterBuilderBase::m_addCellsWindowEtaEndcap = 0.0F
privateinherited

Definition at line 272 of file egammaSuperClusterBuilderBase.h.

◆ m_caloDetDescrMgrKey

SG::ReadCondHandleKey<CaloDetDescrManager> egammaSuperClusterBuilderBase::m_caloDetDescrMgrKey
protectedinherited
Initial value:
{
this,
"CaloDetDescrManager",
"CaloDetDescrManager",
"SG Key for CaloDetDescrManager in the Condition Store"
}

Definition at line 162 of file egammaSuperClusterBuilderBase.h.

162 {
163 this,
164 "CaloDetDescrManager",
165 "CaloDetDescrManager",
166 "SG Key for CaloDetDescrManager in the Condition Store"
167 };

◆ m_clusterCorrectionTool

ToolHandle<IegammaSwTool> egammaSuperClusterBuilderBase::m_clusterCorrectionTool
privateinherited
Initial value:
{
this,
"ClusterCorrectionTool",
"egammaSwTool/egammaswtool",
"tool that applies cluster corrections"
}

Tool to handle cluster corrections.

Definition at line 375 of file egammaSuperClusterBuilderBase.h.

375 {
376 this,
377 "ClusterCorrectionTool",
378 "egammaSwTool/egammaswtool",
379 "tool that applies cluster corrections"
380 };

◆ 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_doTrackMatching

Gaudi::Property<bool> electronSuperClusterBuilder::m_doTrackMatching
private
Initial value:
{
this,
"doTrackMatching",
true,
"Boolean to do track matching" }

private member flag to do the track matching

Definition at line 153 of file electronSuperClusterBuilder.h.

153 {
154 this,
155 "doTrackMatching",
156 true,
157 "Boolean to do track matching" };

◆ m_egammaCellRecoveryTool

ToolHandle<IegammaCellRecoveryTool> egammaSuperClusterBuilderBase::m_egammaCellRecoveryTool
privateinherited
Initial value:
{
this,
"egammaCellRecoveryTool",
"",
"Optional tool that adds cells in L2 or L3 "
"that could have been rejected by timing cut"
}

Pointer to the egammaCellRecoveryTool.

Definition at line 391 of file egammaSuperClusterBuilderBase.h.

391 {
392 this,
393 "egammaCellRecoveryTool",
394 "",
395 "Optional tool that adds cells in L2 or L3 "
396 "that could have been rejected by timing cut"
397 };

◆ m_egammaCheckEnergyDepositTool

ToolHandle<IegammaCheckEnergyDepositTool> egammaSuperClusterBuilderBase::m_egammaCheckEnergyDepositTool
privateinherited
Initial value:
{
this,
"egammaCheckEnergyDepositTool",
"",
"Optional tool that performs basic checks of viability of cluster"
}

Pointer to the egammaCheckEnergyDepositTool.

Definition at line 383 of file egammaSuperClusterBuilderBase.h.

383 {
384 this,
385 "egammaCheckEnergyDepositTool",
386 "",
387 "Optional tool that performs basic checks of viability of cluster"
388 };

◆ m_EtThresholdCut

Gaudi::Property<float> egammaSuperClusterBuilderBase::m_EtThresholdCut
protectedinherited
Initial value:
{
this,
"EtThresholdCut",
1.5 * Gaudi::Units::GeV,
"The minimum EM Et required of SEED clusters (not applied to secondaries)"
}

Seed selection requirements.

Definition at line 147 of file egammaSuperClusterBuilderBase.h.

147 {
148 this,
149 "EtThresholdCut",
150 1.5 * Gaudi::Units::GeV,
151 "The minimum EM Et required of SEED clusters (not applied to secondaries)"
152 };

◆ 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 AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

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

Empty if no symlinks were found.

Definition at line 114 of file AthCommonReentrantAlgorithm.h.

◆ m_extraL0L1PhiSize

float egammaSuperClusterBuilderBase::m_extraL0L1PhiSize = 0.0F
privateinherited

Definition at line 274 of file egammaSuperClusterBuilderBase.h.

◆ m_extraL0L1PhiSizeCells

Gaudi::Property<int> egammaSuperClusterBuilderBase::m_extraL0L1PhiSizeCells
privateinherited
Initial value:
{
this,
"ExtraL0L1PhiSize",
1,
"When adding L0 (PS) and L1 cells in phi, "
"how much wider (+/- of the value) than the L2 phi size of the "
"cluster (in L2 cells units) is the acceptance"
}

"When adding L0 (PS) and L1 cells, how much wider than the L2 size of the cluster is the acceptance in phi (units of 2nd layer cells)

Definition at line 348 of file egammaSuperClusterBuilderBase.h.

348 {
349 this,
350 "ExtraL0L1PhiSize",
351 1,
352 "When adding L0 (PS) and L1 cells in phi, "
353 "how much wider (+/- of the value) than the L2 phi size of the "
354 "cluster (in L2 cells units) is the acceptance"
355 };

◆ m_extraL3EtaSize

float egammaSuperClusterBuilderBase::m_extraL3EtaSize = 0.0F
privateinherited

Definition at line 276 of file egammaSuperClusterBuilderBase.h.

◆ m_extraL3EtaSizeCells

Gaudi::Property<int> egammaSuperClusterBuilderBase::m_extraL3EtaSizeCells
privateinherited
Initial value:
{
this,
"ExtraL3EtaSizeCells",
0,
"When adding L3 cells how much wider (+/- 0.5 of the value) "
"than L2 (in L2 cells "
"units) is the acceptance in eta"
}

"When adding L3 cells, how much wider in eta than the L2

Definition at line 359 of file egammaSuperClusterBuilderBase.h.

359 {
360 this,
361 "ExtraL3EtaSizeCells",
362 0,
363 "When adding L3 cells how much wider (+/- 0.5 of the value) "
364 "than L2 (in L2 cells "
365 "units) is the acceptance in eta"
366 };

◆ m_inputEgammaRecContainerKey

SG::ReadHandleKey<EgammaRecContainer> egammaSuperClusterBuilderBase::m_inputEgammaRecContainerKey
protectedinherited
Initial value:
{
this,
"InputEgammaRecContainerName",
"egammaRecCollection",
"input egammaRec container"
}

Key for input egammaRec container.

Definition at line 155 of file egammaSuperClusterBuilderBase.h.

155 {
156 this,
157 "InputEgammaRecContainerName",
158 "egammaRecCollection",
159 "input egammaRec container"
160 };

◆ m_linkToConstituents

Gaudi::Property<bool> egammaSuperClusterBuilderBase::m_linkToConstituents
privateinherited
Initial value:
{
this,
"LinkToConstituents",
true,
"Link sister clusters to new cluster"
}

Decorate the supercluster with links to the component topoclusters.

Definition at line 280 of file egammaSuperClusterBuilderBase.h.

280 {
281 this,
282 "LinkToConstituents",
283 true,
284 "Link sister clusters to new cluster"
285 };

◆ m_maxDelEta

float electronSuperClusterBuilder::m_maxDelEta {}
private

Definition at line 159 of file electronSuperClusterBuilder.h.

159{};

◆ m_maxDelEtaCells

Gaudi::Property<int> electronSuperClusterBuilder::m_maxDelEtaCells
private
Initial value:
{
this,
"MaxWindowDelEtaCells",
5,
"Size of maximum search window in eta"
}

Size of maximum search window in eta.

Definition at line 116 of file electronSuperClusterBuilder.h.

116 {
117 this,
118 "MaxWindowDelEtaCells",
119 5,
120 "Size of maximum search window in eta"
121 };

◆ m_maxDelPhi

float electronSuperClusterBuilder::m_maxDelPhi {}
private

Definition at line 160 of file electronSuperClusterBuilder.h.

160{};

◆ m_maxDelPhiCells

Gaudi::Property<int> electronSuperClusterBuilder::m_maxDelPhiCells
private
Initial value:
{
this,
"MaxWindowDelPhiCells",
12,
"Size of maximum search window in phi"
}

Size of maximum search window in phi.

Definition at line 123 of file electronSuperClusterBuilder.h.

123 {
124 this,
125 "MaxWindowDelPhiCells",
126 12,
127 "Size of maximum search window in phi"
128 };

◆ m_MVACalibSvc

ServiceHandle<IegammaMVASvc> egammaSuperClusterBuilderBase::m_MVACalibSvc
privateinherited
Initial value:
{ this,
"MVACalibSvc",
"egammaMVASvc",
"calibration service" }

Handle to the MVA calibration service.

Definition at line 369 of file egammaSuperClusterBuilderBase.h.

369 { this,
370 "MVACalibSvc",
371 "egammaMVASvc",
372 "calibration service" };

◆ m_numberOfPixelHits

Gaudi::Property<std::size_t> electronSuperClusterBuilder::m_numberOfPixelHits
private
Initial value:
{
this,
"NumberOfReqPixelHits",
0,
"Number of required pixel hits for electrons"
}

Definition at line 130 of file electronSuperClusterBuilder.h.

130 {
131 this,
132 "NumberOfReqPixelHits",
133 0,
134 "Number of required pixel hits for electrons"
135 };

◆ m_numberOfSiHits

Gaudi::Property<std::size_t> electronSuperClusterBuilder::m_numberOfSiHits
private
Initial value:
{
this,
"NumberOfReqSiHits",
7,
"Number of required silicon hits for electrons"
}

Definition at line 137 of file electronSuperClusterBuilder.h.

137 {
138 this,
139 "NumberOfReqSiHits",
140 7,
141 "Number of required silicon hits for electrons"
142 };

◆ m_outputEgammaRecContainerKey

SG::WriteHandleKey<EgammaRecContainer> egammaSuperClusterBuilderBase::m_outputEgammaRecContainerKey
protectedinherited
Initial value:
{
this,
"OutputEgammaRecContainerKey",
"egammaSuperRecContainer",
"output egammaRec container"
}

Key for output egammaRec container.

Definition at line 170 of file egammaSuperClusterBuilderBase.h.

170 {
171 this,
172 "OutputEgammaRecContainerKey",
173 "egammaSuperRecContainer",
174 "output egammaRec container"
175 };

◆ m_outputSuperClusterCollectionName

SG::WriteHandleKey<xAOD::CaloClusterContainer> egammaSuperClusterBuilderBase::m_outputSuperClusterCollectionName
protectedinherited
Initial value:
{
this,
"SuperClusterCollectionName",
"egammaSuperClusters",
"output calo cluster container"
}

Key for output clusters.

Definition at line 178 of file egammaSuperClusterBuilderBase.h.

178 {
179 this,
180 "SuperClusterCollectionName",
181 "egammaSuperClusters",
182 "output calo cluster container"
183 };

◆ m_precorrClustersKey

SG::WriteHandleKey<xAOD::CaloClusterContainer> egammaSuperClusterBuilderBase::m_precorrClustersKey
protectedinherited
Initial value:
{
this,
"precorrClustersName",
"",
"optional pre-correction clusters"
}

Optional key for pre-correction clusters.

Definition at line 186 of file egammaSuperClusterBuilderBase.h.

186 {
187 this,
188 "precorrClustersName",
189 "",
190 "optional pre-correction clusters"
191 };

◆ m_searchWindowEtaBarrel

float egammaSuperClusterBuilderBase::m_searchWindowEtaBarrel = 0.0F
protectedinherited

Definition at line 195 of file egammaSuperClusterBuilderBase.h.

◆ m_searchWindowEtaCellsBarrel

Gaudi::Property<int> egammaSuperClusterBuilderBase::m_searchWindowEtaCellsBarrel
privateinherited
Initial value:
{
this,
"SearchWindowEtaCellsBarrel",
5,
"Number of cells in eta of window in which to search for topoclusters"
}

Size of topocluster search window in eta for the barrel.

Definition at line 296 of file egammaSuperClusterBuilderBase.h.

296 {
297 this,
298 "SearchWindowEtaCellsBarrel",
299 5,
300 "Number of cells in eta of window in which to search for topoclusters"
301 };

◆ m_searchWindowEtaCellsEndcap

Gaudi::Property<int> egammaSuperClusterBuilderBase::m_searchWindowEtaCellsEndcap
privateinherited
Initial value:
{
this,
"SearchWindowEtaCellsEndcap",
5,
"Number of cells in eta of window in which to search for topoclusters"
}

Size of topocluster search window in eta for the end-cap.

Definition at line 312 of file egammaSuperClusterBuilderBase.h.

312 {
313 this,
314 "SearchWindowEtaCellsEndcap",
315 5,
316 "Number of cells in eta of window in which to search for topoclusters"
317 };

◆ m_searchWindowEtaEndcap

float egammaSuperClusterBuilderBase::m_searchWindowEtaEndcap = 0.0F
protectedinherited

Definition at line 197 of file egammaSuperClusterBuilderBase.h.

◆ m_searchWindowPhiBarrel

float egammaSuperClusterBuilderBase::m_searchWindowPhiBarrel = 0.0F
protectedinherited

Definition at line 196 of file egammaSuperClusterBuilderBase.h.

◆ m_searchWindowPhiCellsBarrel

Gaudi::Property<int> egammaSuperClusterBuilderBase::m_searchWindowPhiCellsBarrel
privateinherited
Initial value:
{
this,
"SearchWindowPhiCellsBarrel",
5,
"Number of cells in phi of window in which to search for topoclusters"
}

Size of topocluster search window in phi for the barrel.

Definition at line 304 of file egammaSuperClusterBuilderBase.h.

304 {
305 this,
306 "SearchWindowPhiCellsBarrel",
307 5,
308 "Number of cells in phi of window in which to search for topoclusters"
309 };

◆ m_searchWindowPhiCellsEndcap

Gaudi::Property<int> egammaSuperClusterBuilderBase::m_searchWindowPhiCellsEndcap
privateinherited
Initial value:
{
this,
"SearchWindowPhiCellsEndcap",
5,
"Number of cells in phi of window in which to search for topoclusters"
}

Size of topocluster search window in phi for the end-cap.

Definition at line 320 of file egammaSuperClusterBuilderBase.h.

320 {
321 this,
322 "SearchWindowPhiCellsEndcap",
323 5,
324 "Number of cells in phi of window in which to search for topoclusters"
325 };

◆ m_searchWindowPhiEndcap

float egammaSuperClusterBuilderBase::m_searchWindowPhiEndcap = 0.0F
protectedinherited

Definition at line 198 of file egammaSuperClusterBuilderBase.h.

◆ m_trackMatchBuilder

ToolHandle<IEMTrackMatchBuilder> electronSuperClusterBuilder::m_trackMatchBuilder
private
Initial value:
{
this,
"TrackMatchBuilderTool",
"EMTrackMatchBuilder",
"Tool that matches tracks to egammaRecs"
}

Tool to perform track matching.

Definition at line 145 of file electronSuperClusterBuilder.h.

145 {
146 this,
147 "TrackMatchBuilderTool",
148 "EMTrackMatchBuilder",
149 "Tool that matches tracks to egammaRecs"
150 };

◆ m_useExtendedTG3

Gaudi::Property<bool> egammaSuperClusterBuilderBase::m_useExtendedTG3
privateinherited
Initial value:
{
this,
"UseExtendedTG3",
false,
"Extend TG3 definition from |eta| = 1.2 to |eta| = 1.72"
}

Use extended TG3 definition (only after Run 2)

Definition at line 288 of file egammaSuperClusterBuilderBase.h.

288 {
289 this,
290 "UseExtendedTG3",
291 false,
292 "Extend TG3 definition from |eta| = 1.2 to |eta| = 1.72"
293 };

◆ 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.

◆ s_cellEtaSize

float egammaSuperClusterBuilderBase::s_cellEtaSize = 0.025
staticconstexprprotectedinherited

Definition at line 136 of file egammaSuperClusterBuilderBase.h.

◆ s_cellPhiSize

float egammaSuperClusterBuilderBase::s_cellPhiSize = M_PI / 128.
staticconstexprprotectedinherited

Definition at line 137 of file egammaSuperClusterBuilderBase.h.

◆ s_ClEtaMaxForTG3cell

float egammaSuperClusterBuilderBase::s_ClEtaMaxForTG3cell = s_TG3Run3E4cellEtaMax + 0.03
staticconstexprprotectedinherited

Definition at line 144 of file egammaSuperClusterBuilderBase.h.

◆ s_ClEtaMinForTG3cell

float egammaSuperClusterBuilderBase::s_ClEtaMinForTG3cell = s_TG3Run2E4cellEtaMin - 0.03
staticconstexprprotectedinherited

Definition at line 143 of file egammaSuperClusterBuilderBase.h.

◆ s_TG3Run2E4cellEtaMax

float egammaSuperClusterBuilderBase::s_TG3Run2E4cellEtaMax = 1.6
staticconstexprprotectedinherited

Definition at line 140 of file egammaSuperClusterBuilderBase.h.

◆ s_TG3Run2E4cellEtaMin

float egammaSuperClusterBuilderBase::s_TG3Run2E4cellEtaMin = 1.4
staticconstexprprotectedinherited

Definition at line 141 of file egammaSuperClusterBuilderBase.h.

◆ s_TG3Run3E3cellEtaMin

float egammaSuperClusterBuilderBase::s_TG3Run3E3cellEtaMin = 1.2
staticconstexprprotectedinherited

Definition at line 139 of file egammaSuperClusterBuilderBase.h.

◆ s_TG3Run3E4cellEtaMax

float egammaSuperClusterBuilderBase::s_TG3Run3E4cellEtaMax = 1.72
staticconstexprprotectedinherited

Definition at line 138 of file egammaSuperClusterBuilderBase.h.


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