|
ATLAS Offline Software
|
Create supercluster under egamma (no tracking) hypothesis Useful if you want to run calo reconstuction without tracking.
More...
#include <egammaSuperClusterBuilder.h>
|
| egammaSuperClusterBuilder (const std::string &name, ISvcLocator *pSvcLocator) |
|
virtual StatusCode | initialize () override final |
| should be called by the derived class in the initialize phase More...
|
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual bool | isClonable () const override |
| Specify if the algorithm is clonable. More...
|
|
virtual unsigned int | cardinality () const override |
| Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
|
|
virtual StatusCode | sysExecute (const EventContext &ctx) override |
| Execute an algorithm. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
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 . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
virtual StatusCode | execute (const EventContext &ctx) const override |
| should be called by the derived class in the execute phase More...
|
|
virtual bool | egammaRecPassesSelection (const egammaRec *egRec) const |
|
virtual StatusCode | redoMatching (const EventContext &ctx, SG::WriteHandle< EgammaRecContainer > &newEgammaRecs) const |
|
bool | matchesInWindow (const xAOD::CaloCluster *ref, const xAOD::CaloCluster *clus) const |
| Is clus in window center around ref? More...
|
|
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. More...
|
|
bool | seedClusterSelection (const xAOD::CaloCluster *clus) const |
| check if we pass the basic criteria for a seed cluster More...
|
|
void | renounceArray (SG::VarHandleKeyArray &handlesArray) |
| remove all handles from I/O resolution More...
|
|
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. More...
|
|
|
virtual xAOD::EgammaParameters::EgammaType | getEgammaRecType (const egammaRec *egRec) const override final |
|
virtual std::vector< std::size_t > | searchForSecondaryClusters (std::size_t egammaInd, const EgammaRecContainer *egammaRecs, std::vector< bool > &isUsed) const override final |
| Return extra clusters that can be added to make supercluster. More...
|
|
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. More...
|
|
StatusCode | addTileGap3CellsinWindow (xAOD::CaloCluster &tofill, const CaloDetDescrManager &mgr) const |
| add all tile Gap 3 cells in a window. More...
|
|
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 More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
Create supercluster under egamma (no tracking) hypothesis Useful if you want to run calo reconstuction without tracking.
The algorithm creates superclusters merging topoclusters. Input containers:
Output containers:
- OutputEgammaRecContainerKey (default=egammaSuperRecCollection): collection of EgammaRec objects with the cluster set to be the supercluster
- SuperClusterCollectionName (default=egammaSuperClusters): 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:
- having a second sampling with |eta| not larger than 10
- pT (from the sum of the three accordion layer) not below EtThresholdCut
Clusters to be merged in a supercluster are selected using the egammaSuperClusterBuilder::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.
Definition at line 57 of file egammaSuperClusterBuilder.h.
◆ StoreGateSvc_t
◆ egammaSuperClusterBuilder()
egammaSuperClusterBuilder::egammaSuperClusterBuilder |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ addTileGap3CellsinWindow()
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.
791 constexpr
double searchWindowPhi = 2 *
M_PI / 64.0 +
M_PI / 64;
792 std::vector<const CaloCell*>
cells;
798 ATH_MSG_ERROR(
"No cell container in addRemainingCellsToCluster?");
799 return StatusCode::FAILURE;
804 const std::vector<CaloSampling::CaloSample> samples = {
808 for (
auto samp : samples) {
811 tofill.
eta0(), tofill.
phi0(), searchWindowEta, searchWindowPhi, samp);
812 cells.insert(
cells.end(), myList.begin(), myList.end());
830 if (std::abs(tofill.
eta0()) > 1.56) {
834 float cellaEtaRaw = std::abs(dde->
eta_raw());
835 if (cellaEtaRaw >= minEta && cellaEtaRaw <=
maxEta) {
840 return StatusCode::SUCCESS;
◆ calibrateCluster()
function to calibrate the new clusters energy
Calibrate with
Definition at line 844 of file egammaSuperClusterBuilderBase.cxx.
852 refineEta1Position(newCluster,
mgr);
854 newCluster->
setAltE(newCluster->
e());
858 if (precorrClusters) {
859 precorrClusters->
push_back(std::make_unique<xAOD::CaloCluster>());
860 *precorrClusters->
back() = *newCluster;
864 double aeta = std::abs(newCluster->
eta());
867 "SuperCluster rejected");
868 return StatusCode::FAILURE;
870 newCluster->
setRawE(newCluster->
e());
874 fillPositionsInCalo(newCluster,
mgr);
877 return StatusCode::SUCCESS;
◆ cardinality()
unsigned int AthReentrantAlgorithm::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.
Override this to return 0 for reentrant algorithms.
Definition at line 55 of file AthReentrantAlgorithm.cxx.
◆ createNewCluster()
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.
486 ATH_MSG_ERROR(
"Missing the seed cluster! Should not happen.");
495 ATH_MSG_ERROR(
"CaloClusterStoreHelper::makeCluster failed.");
505 if (cp0.emaxB >= cp0.emaxEC) {
506 newCluster->setEta0(cp0.etaB);
507 newCluster->setPhi0(cp0.phiB);
509 newCluster->setEta0(cp0.etaEC);
510 newCluster->setPhi0(cp0.phiEC);
518 float eta0 = std::abs(newCluster->eta0());
527 "AddTileGap3CellsinWindow?");
555 if (newCluster->et() < 0) {
561 std::vector<ElementLink<xAOD::CaloClusterContainer>> constituentLinks;
564 cluster->getSisterClusterLink();
568 constituentLinks.push_back(sisterCluster);
576 std::vector<ElementLink<xAOD::CaloClusterContainer>>>
577 caloClusterLinks(
"constituentClusterLinks");
578 caloClusterLinks(*newCluster) = constituentLinks;
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ egammaRecPassesSelection()
bool egammaSuperClusterBuilderBase::egammaRecPassesSelection |
( |
const egammaRec * |
egRec | ) |
const |
|
protectedvirtualinherited |
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ 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.
291 ATH_CHECK(newEgammaRecs.record(std::make_unique<EgammaRecContainer>()));
293 size_t inputSize = egammaRecs->size();
294 outputClusterContainer->reserve(inputSize);
295 newEgammaRecs->reserve(inputSize);
297 std::optional<SG::WriteHandle<xAOD::CaloClusterContainer>> precorrClustersH;
301 precorrClustersH->ptr()->reserve(inputSize);
308 ATH_CHECK(caloDetDescrMgrHandle.isValid());
312 if (egammaRecs->empty()) {
313 return StatusCode::SUCCESS;
318 (*egammaRecs)[0]->caloCluster()->getCellLinks()->getCellContainerLink();
321 size_t numInput = egammaRecs->
size();
322 std::vector<bool> isUsed(numInput,
false);
323 std::vector<bool> isUsedRevert(numInput,
false);
325 for (std::size_t
i = 0;
i < egammaRecs->size(); ++
i) {
329 const auto* egRec = (*egammaRecs)[
i];
341 isUsedRevert = isUsed;
346 std::vector<const xAOD::CaloCluster*> accumulatedClusters;
347 accumulatedClusters.push_back(clus);
351 const std::vector<std::size_t> secondaryIndices =
353 for (
const auto& secClusIndex : secondaryIndices) {
354 const auto*
const secRec = (*egammaRecs)[secClusIndex];
355 accumulatedClusters.push_back(secRec->caloCluster());
357 ATH_MSG_DEBUG(
"Total clusters " << accumulatedClusters.size());
360 std::unique_ptr<xAOD::CaloCluster> newCluster =
366 precorrClustersH ? precorrClustersH->ptr() :
nullptr);
370 outputClusterContainer->push_back(std::move(newCluster));
373 isUsed.swap(isUsedRevert);
379 *outputClusterContainer, outputClusterContainer->size() - 1, ctx);
380 std::vector<ElementLink<xAOD::CaloClusterContainer>> elClusters{
385 auto newEgRec = std::make_unique<egammaRec>(*egRec);
386 newEgRec->setCaloClusters(elClusters);
387 newEgammaRecs->push_back(std::move(newEgRec));
392 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
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 & AthReentrantAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 79 of file AthReentrantAlgorithm.cxx.
86 return Algorithm::extraOutputDeps();
◆ fillClusterConstrained()
Fill super cluster constraining its size in eta,phi around the overall hottest cell and the its L2 size.
- Parameters
-
tofill | empty cluster to be filled |
clusters | seed and satellite clusters |
cp0 | this 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.
613 const float addCellsWindowL3EtaBarrel =
615 const float addCellsWindowL3EtaEndcap =
623 for (; cell_itr != cell_end; ++cell_itr) {
639 const bool isL2Cell =
641 const bool isL3Cell =
644 if ((!isL2Cell) && (!isL3Cell)) {
652 bool inEtaRange =
false;
657 (std::abs(cp0.
etaB - dde->
eta_raw()) < addCellsWindowEtaBarrel)) {
661 (std::abs(cp0.
etaB - dde->
eta_raw()) < addCellsWindowL3EtaBarrel)) {
667 (std::abs(cp0.
etaEC - dde->
eta_raw()) < addCellsWindowEtaEndcap)) {
671 addCellsWindowL3EtaEndcap)) {
683 if (tofill.
size() == 0) {
684 return StatusCode::FAILURE;
699 for (; cell_itr != cell_end; ++cell_itr) {
712 const bool isL0L1Cell =
720 bool inEtaRange =
false;
724 if (std::abs(cp0.
etaB - dde->
eta_raw()) < addCellsWindowEtaBarrel) {
729 if (std::abs(cp0.
etaEC - dde->
eta_raw()) < addCellsWindowEtaEndcap) {
738 bool inPhiRange =
false;
741 if (cell_phi > phiMinusB && cell_phi < phiPlusB) {
747 if (cell_phi > phiMinusEC && cell_phi < phiPlusEC) {
775 for (
const auto *
c :
info.addedCells) {
781 return StatusCode::SUCCESS;
◆ filterPassed()
virtual bool AthReentrantAlgorithm::filterPassed |
( |
const EventContext & |
ctx | ) |
const |
|
inlinevirtualinherited |
◆ getEgammaRecType()
|
finaloverrideprivatevirtual |
◆ initialize()
StatusCode egammaSuperClusterBuilder::initialize |
( |
| ) |
|
|
finaloverridevirtual |
◆ inputHandles()
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()
bool AthReentrantAlgorithm::isClonable |
( |
| ) |
const |
|
overridevirtualinherited |
Specify if the algorithm is clonable.
Reentrant algorithms are clonable.
Reimplemented in Simulation::BeamEffectsAlg, InDet::SiTrackerSpacePointFinder, InDet::SCT_Clusterization, InDet::SiSPSeededTrackFinder, SCTRawDataProvider, InDet::GNNSeedingTrackMaker, SCT_PrepDataToxAOD, RoIBResultToxAOD, InDet::SiSPGNNTrackMaker, SCT_CablingCondAlgFromCoraCool, SCT_ReadCalibDataTestAlg, SCT_CablingCondAlgFromText, SCT_ReadCalibChipDataTestAlg, SCT_TestCablingAlg, SCT_ConfigurationConditionsTestAlg, ITkPixelCablingAlg, ITkStripCablingAlg, SCTEventFlagWriter, SCT_ConditionsSummaryTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_TdaqEnabledTestAlg, SCT_SiliconConditionsTestAlg, SCTSiLorentzAngleTestAlg, SCT_ByteStreamErrorsTestAlg, SCT_ConditionsParameterTestAlg, SCT_FlaggedConditionTestAlg, SCT_StripVetoTestAlg, SCT_RawDataToxAOD, and SCTSiPropertiesTestAlg.
Definition at line 44 of file AthReentrantAlgorithm.cxx.
◆ matchesInWindow()
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
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()
|
protectedvirtualinherited |
◆ renounce()
◆ renounceArray()
◆ searchForSecondaryClusters()
std::vector< std::size_t > egammaSuperClusterBuilder::searchForSecondaryClusters |
( |
std::size_t |
egammaInd, |
|
|
const EgammaRecContainer * |
egammaRecs, |
|
|
std::vector< bool > & |
isUsed |
|
) |
| const |
|
finaloverrideprivatevirtual |
Return extra clusters that can be added to make supercluster.
- Parameters
-
egammaInd | index of the EgammaRec object in the input container corresponding to the seed |
egammaRecs | input container of EgammaRec |
isUsed | boolean mask to avoid to reuse clusters (1=already used, 0=not used). When calling this function the element corresponding to the seed is marked as used |
nWindowClusters | how many clusters are added by the matchesInWindow |
The function returns a vector of index corresponding to secondary clusters to be merged with the seed.
The secondary cluster is added if it pass one of the functions:
Implements egammaSuperClusterBuilderBase.
Definition at line 53 of file egammaSuperClusterBuilder.cxx.
59 std::vector<std::size_t> secondaryIndices;
61 const auto*
const seedEgammaRec = (*egammaRecs)[seedIndex];
65 int nWindowClusters = 0;
67 for (std::size_t
i = 0;
i < egammaRecs->
size(); ++
i) {
72 const auto*
const secEgammaRec = (*egammaRecs)[
i];
76 "The potentially secondary egammaRec does not have a cluster");
79 bool addCluster =
false;
82 <<
" matched in window");
88 secondaryIndices.push_back(
i);
92 ATH_MSG_DEBUG(
"Found: " << secondaryIndices.size() <<
" secondaries");
94 return secondaryIndices;
◆ seedClusterSelection()
check if we pass the basic criteria for a seed cluster
Definition at line 585 of file egammaSuperClusterBuilderBase.cxx.
593 const double eta2 = std::abs(clus->
etaBE(2));
598 const double EMAccEnergy =
600 const double EMAccEt = EMAccEnergy / cosh(
eta2);
◆ setFilterPassed()
virtual void AthReentrantAlgorithm::setFilterPassed |
( |
bool |
state, |
|
|
const EventContext & |
ctx |
|
) |
| const |
|
inlinevirtualinherited |
◆ sysExecute()
StatusCode AthReentrantAlgorithm::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 67 of file AthReentrantAlgorithm.cxx.
69 return Gaudi::Algorithm::sysExecute (ctx);
◆ sysInitialize()
StatusCode AthReentrantAlgorithm::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 InputMakerBase, and HypoBase.
Definition at line 96 of file AthReentrantAlgorithm.cxx.
107 if ( cs.retrieve().isFailure() ) {
109 return StatusCode::SUCCESS;
111 if (cs->regHandle(
this,*
h).isFailure()) {
112 sc = StatusCode::FAILURE;
113 ATH_MSG_ERROR(
"unable to register WriteCondHandle " <<
h->fullKey()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_addCellsWindowEtaBarrel
float egammaSuperClusterBuilderBase::m_addCellsWindowEtaBarrel = 0.0F |
|
privateinherited |
◆ 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.
◆ 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.
◆ m_addCellsWindowEtaEndcap
float egammaSuperClusterBuilderBase::m_addCellsWindowEtaEndcap = 0.0F |
|
privateinherited |
◆ m_calibrationType
Gaudi::Property<std::string> egammaSuperClusterBuilder::m_calibrationType |
|
private |
Initial value:{
this,
"CalibrationType",
"electron",
"type to be assumed for calibration: electron , photon"
}
type to be assumed for calibration
Definition at line 92 of file egammaSuperClusterBuilder.h.
◆ m_caloDetDescrMgrKey
Initial value:{
this,
"CaloDetDescrManager",
"CaloDetDescrManager",
"SG Key for CaloDetDescrManager in the Condition Store"
}
Definition at line 162 of file egammaSuperClusterBuilderBase.h.
◆ 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.
◆ m_detStore
◆ m_egammaCellRecoveryTool
◆ m_egammaCheckEnergyDepositTool
◆ m_egTypeForCalibration
◆ m_EtThresholdCut
Gaudi::Property<float> egammaSuperClusterBuilderBase::m_EtThresholdCut |
|
protectedinherited |
Initial value:{
this,
"EtThresholdCut",
"The minimum EM Et required of SEED clusters (not applied to secondaries)"
}
Seed selection requirements.
Definition at line 147 of file egammaSuperClusterBuilderBase.h.
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthReentrantAlgorithm::m_extendedExtraObjects |
|
privateinherited |
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Empty if no symlinks were found.
Definition at line 153 of file AthReentrantAlgorithm.h.
◆ m_extraL0L1PhiSize
float egammaSuperClusterBuilderBase::m_extraL0L1PhiSize = 0.0F |
|
privateinherited |
◆ 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.
◆ m_extraL3EtaSize
float egammaSuperClusterBuilderBase::m_extraL3EtaSize = 0.0F |
|
privateinherited |
◆ 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.
◆ m_inputEgammaRecContainerKey
◆ 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.
◆ m_MVACalibSvc
Initial value:{ this,
"MVACalibSvc",
"egammaMVASvc",
"calibration service" }
Handle to the MVA calibration service.
Definition at line 369 of file egammaSuperClusterBuilderBase.h.
◆ m_outputEgammaRecContainerKey
◆ m_outputSuperClusterCollectionName
Initial value:{
this,
"SuperClusterCollectionName",
"egammaSuperClusters",
"output calo cluster container"
}
Key for output clusters.
Definition at line 178 of file egammaSuperClusterBuilderBase.h.
◆ m_precorrClustersKey
Initial value:{
this,
"precorrClustersName",
"",
"optional pre-correction clusters"
}
Optional key for pre-correction clusters.
Definition at line 186 of file egammaSuperClusterBuilderBase.h.
◆ m_searchWindowEtaBarrel
float egammaSuperClusterBuilderBase::m_searchWindowEtaBarrel = 0.0F |
|
protectedinherited |
◆ 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.
◆ 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.
◆ m_searchWindowEtaEndcap
float egammaSuperClusterBuilderBase::m_searchWindowEtaEndcap = 0.0F |
|
protectedinherited |
◆ m_searchWindowPhiBarrel
float egammaSuperClusterBuilderBase::m_searchWindowPhiBarrel = 0.0F |
|
protectedinherited |
◆ 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.
◆ 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.
◆ m_searchWindowPhiEndcap
float egammaSuperClusterBuilderBase::m_searchWindowPhiEndcap = 0.0F |
|
protectedinherited |
◆ 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.
◆ m_varHandleArraysDeclared
◆ m_vhka
◆ s_cellEtaSize
constexpr float egammaSuperClusterBuilderBase::s_cellEtaSize = 0.025 |
|
staticconstexprprotectedinherited |
◆ s_cellPhiSize
constexpr float egammaSuperClusterBuilderBase::s_cellPhiSize = M_PI / 128. |
|
staticconstexprprotectedinherited |
◆ s_ClEtaMaxForTG3cell
|
staticconstexprprotectedinherited |
◆ s_ClEtaMinForTG3cell
|
staticconstexprprotectedinherited |
◆ s_TG3Run2E4cellEtaMax
constexpr float egammaSuperClusterBuilderBase::s_TG3Run2E4cellEtaMax = 1.6 |
|
staticconstexprprotectedinherited |
◆ s_TG3Run2E4cellEtaMin
constexpr float egammaSuperClusterBuilderBase::s_TG3Run2E4cellEtaMin = 1.4 |
|
staticconstexprprotectedinherited |
◆ s_TG3Run3E3cellEtaMin
constexpr float egammaSuperClusterBuilderBase::s_TG3Run3E3cellEtaMin = 1.2 |
|
staticconstexprprotectedinherited |
◆ s_TG3Run3E4cellEtaMax
constexpr float egammaSuperClusterBuilderBase::s_TG3Run3E4cellEtaMax = 1.72 |
|
staticconstexprprotectedinherited |
The documentation for this class was generated from the following files:
static std::unique_ptr< xAOD::CaloCluster > makeCluster(const CaloCellContainer *cellCont)
Creates a valid CaloCluster with a private Aux-Store and CellLink container.
flt_t phi0() const
Returns raw of cluster seed.
Find the reference position (eta, phi) relative to which cells are restricted.
virtual double phi() const
The azimuthal angle ( ) of the particle.
bool is_lar_em_endcap_inner() const
cell belongs to the inner wheel of EM end cap
ServiceHandle< IegammaMVASvc > m_MVACalibSvc
Handle to the MVA calibration service.
float m_searchWindowPhiEndcap
float m_searchWindowEtaBarrel
virtual bool egammaRecPassesSelection(const egammaRec *egRec) const
ToolHandle< IegammaSwTool > m_clusterCorrectionTool
Tool to handle cluster corrections.
static StatusCode AddContainerWriteHandle(SG::WriteHandle< xAOD::CaloClusterContainer > &clusColl)
Creates a new xAOD::CaloClusterContainer in the given WriteHandle + CaloClusterAuxContainer and recor...
Helper class to provide type-safe access to aux data.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
static constexpr float s_TG3Run3E3cellEtaMin
float m_addCellsWindowEtaBarrel
virtual StatusCode initialize() override
should be called by the derived class in the initialize phase
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
double proxim(double b, double a)
void setAltEta(flt_t)
Set for signal state ALTCALIBRATED.
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)
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
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.
setEt setPhi setE277 setWeta2 eta1
static constexpr float s_TG3Run3E4cellEtaMax
unsigned index() const
Accessor for the index of the cell in the CaloCellContainer.
SG::WriteHandleKey< xAOD::CaloClusterContainer > m_outputSuperClusterCollectionName
Key for output clusters.
bool empty() const
Test if the key is blank.
virtual xAOD::EgammaParameters::EgammaType getEgammaRecType(const egammaRec *egRec) const =0
ToolHandle< IegammaCheckEnergyDepositTool > m_egammaCheckEnergyDepositTool
Pointer to the egammaCheckEnergyDepositTool.
weight_t weight() const
Accessor for weight associated to this cell.
float eta_raw() const
cell eta_raw
virtual void setOwner(IDataHandleHolder *o)=0
CaloCell_ID::SUBCALO getSubCalo() const
cell subcalo
bool isBarrel(const xAOD::Egamma *eg)
return true if the cluster is in the barrel
float etaBE(const unsigned layer) const
Get the eta in one layer of the EM Calo.
StatusCode addTileGap3CellsinWindow(xAOD::CaloCluster &tofill, const CaloDetDescrManager &mgr) const
add all tile Gap 3 cells in a window.
Gaudi::Property< bool > m_linkToConstituents
Decorate the supercluster with links to the component topoclusters.
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloDetDescrMgrKey
bool matchesInWindow(const xAOD::CaloCluster *ref, const xAOD::CaloCluster *clus) const
Is clus in window center around ref?
Description of a calorimeter cluster.
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
ToolHandle< IegammaCellRecoveryTool > m_egammaCellRecoveryTool
Pointer to the egammaCellRecoveryTool.
const CaloCellContainer * getCellContainer() const
Method to access underlying cell container.
Gaudi::Property< std::string > m_calibrationType
type to be assumed for calibration
IdentifierHash calo_hash() const
cell calo hash
void setRawE(flt_t)
Set Energy for signal state UNCALIBRATED.
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual StatusCode redoMatching(const EventContext &ctx, SG::WriteHandle< EgammaRecContainer > &newEgammaRecs) const
egammaSuperClusterBuilderBase(const std::string &name, ISvcLocator *pSvcLocator)
Protected constructor since this class should not be instantiated by itself.
::StatusCode StatusCode
StatusCode definition for legacy code.
bool dPhi(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
size_t size() const
size method (forwarded from CaloClusterCellLink obj)
void setAltE(flt_t)
Set Energy for signal state ALTCALIBRATED.
void setRawEta(flt_t)
Set for signal state UNCALIBRATED.
float m_searchWindowPhiBarrel
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
const T * back() const
Access the last element in the collection as an rvalue.
static constexpr float s_TG3Run2E4cellEtaMin
const CaloClusterCellLink * getCellLinks() const
Get a pointer to the CaloClusterCellLink object (const version)
SG::WriteHandleKey< xAOD::CaloClusterContainer > m_precorrClustersKey
Optional key for pre-correction clusters.
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
bool inRange(const double *boundaries, const double value, const double tolerance=0.02)
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
ElementLink implementation for ROOT usage.
float m_addCellsWindowEtaEndcap
SG::ReadHandleKey< EgammaRecContainer > m_inputEgammaRecContainerKey
Key for input egammaRec container.
virtual StatusCode sysInitialize() override
Override sysInitialize.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
Find the size of the cluster in phi using L2 cells.
xAOD::EgammaParameters::EgammaType m_egTypeForCalibration
Container class for CaloCell.
virtual std::vector< std::size_t > searchForSecondaryClusters(std::size_t egammaInd, const EgammaRecContainer *egammaRecs, std::vector< bool > &isUsed) const =0
static constexpr float s_TG3Run2E4cellEtaMax
flt_t eta0() const
Returns raw of cluster seed.
Gaudi::Property< float > m_EtThresholdCut
Seed selection requirements.
This class provides the client interface for accessing the detector description information common to...
Data object for each calorimeter readout cell.
CaloCell_ID::CaloSample getSampling() const
cell sampling
#define ATH_MSG_WARNING(x)
const boost::regex ref(r_ef)
bool addCell(const unsigned index, const double weight)
Method to add a cell to the cluster (Beware: Kinematics not updated!)
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
float energyBE(const unsigned layer) const
Get the energy in one layer of the EM Calo.
int findIndex(const IdentifierHash theHash) const
Return index of the cell with a given hash.
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
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.
bool seedClusterSelection(const xAOD::CaloCluster *clus) const
check if we pass the basic criteria for a seed cluster
static constexpr float s_ClEtaMinForTG3cell
bool hasSampling(const CaloSample s) const
Checks if certain smapling contributes to cluster.
bool dEta(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
void setAltPhi(flt_t)
Set for signal state ALTCALIBRATED.
const_iterator to loop over cells belonging to a cluster
Gaudi::Property< bool > m_useExtendedTG3
Use extended TG3 definition (only after Run 2)
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...
size_type size() const noexcept
Returns the number of elements in the collection.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
float m_searchWindowEtaEndcap
virtual double e() const
The total energy of the particle.
static constexpr float s_ClEtaMaxForTG3cell
void setRawPhi(flt_t)
Set for signal state UNCALIBRATED.
float phi_raw() const
cell phi_raw
SG::WriteHandleKey< EgammaRecContainer > m_outputEgammaRecContainerKey
Key for output egammaRec container.