ATLAS Offline Software
Loading...
Searching...
No Matches
RingerReFex.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5
6#ifndef TRIGT2CALOEGAMMA_RINGERREFEX_H
7#define TRIGT2CALOEGAMMA_RINGERREFEX_H
8
9
10#include <string>
11#include "CaloGeoHelpers/CaloSampling.h"
12#include "CaloEvent/CaloCell.h"
22
23
25{
26
27 public:
28 class RingSet {
29
30 public:
31 RingSet( unsigned int maxRings , double deta, double dphi,
32 const std::vector<int> &detectors,
33 const std::vector<int> &samplings,
34 const std::vector<int> &samples,
35 bool doQuarter, bool doEtaAxesDivision, bool doPhiAxesDivision);
36
37 ~RingSet()=default;
38
39 void buildRings( const double eta_hot, const double phi_hot,const CaloNoise* noiseCDO, const double m_noiseFactor, const bool m_doNoiseThrRings);
40
41 const std::vector<double>& rings() const;
42 const std::vector<std::pair<int,int>> detectors() const;
43 bool isValid( const CaloCell * ) const;
44 void push_back( const CaloCell * );
45 void clear();
46 void fill_cells_info(std::vector<float> &cells_eta, std::vector<float> &cells_phi, std::vector<float> &cells_et, std::vector<int> &cells_sampling, std::vector<int> &cells_size, std::vector < double > &rings_sum, std::vector <int> &cells_id, std::vector <float> &cells_gain);
47
48 private:
49
51 std::vector<int> m_detectors, m_samplings, m_samples;
53
54 std::vector<const CaloCell*> m_cells;
55 std::vector<double> m_rings;
56 };
57
58
59 public:
60
61 RingerReFex(const std::string& type, const std::string& name, const IInterface* parent);
62 virtual ~RingerReFex () { };
63
65
66 virtual StatusCode initialize() override;
67
68 virtual StatusCode execute(xAOD::TrigEMCluster &emCluster,
69 const IRoiDescriptor& roi,
70 const CaloDetDescrElement*& /*caloDDE*/,
71 const EventContext& context) const override;
72
73 StatusCode prepareRinger(std::vector<RingerReFex::RingSet>& vec_rs,
74 const xAOD::TrigEMCluster& emCluster,
75 const IRoiDescriptor& roi,
76 const EventContext& context) const;
77
78 private:
79
80
82
83 inline bool maxCell ( const CaloCell* cell, double &energy, const double eta_ref, const double phi_ref ) const;
84
85 void printRings( std::vector<RingSet> &, const xAOD::TrigEMCluster & ) const;
86
87
88
89 ToolHandle< GenericMonitoringTool > m_monTool { this, "MonTool", "", "Monitoring tool"};
90 SG::WriteHandleKey<xAOD::TrigRingerRingsContainer> m_ringerContainerKey {this, "RingerKey", "HLT_FastCaloRinger", "TrigRingerRings container key"};
91 SG::ReadHandleKey<xAOD::TrigEMClusterContainer> m_clusterContainerKey {this, "ClustersName", "HLT_FastCaloEMClusters", "TrigEMCluster container key"};
92 SG::ReadCondHandleKey<CaloNoise> m_noiseCDOKey{this,"CaloNoiseKey","totalNoise","SG Key of CaloNoise data object"};
93
94 Gaudi::Property<double> m_etaSearchWindowSize {this, "EtaSearchWindowSize", 0.1, ""};
95 Gaudi::Property<double> m_phiSearchWindowSize {this, "PhiSearchWindowSize", 0.1, ""};
96 Gaudi::Property<std::vector<float>> m_deltaEta {this, "DeltaEta" , {} , "Eta step for each layer" };
97 Gaudi::Property<std::vector<float>> m_deltaPhi {this, "DeltaPhi" , {} , "Phi step for each layer" };
98 Gaudi::Property<std::vector<unsigned int>> m_nRings {this, "NRings" , {} , "Number of rings for each layer" };
99 Gaudi::Property<std::vector<float>> m_etaBins {this, "EtaBins" , {} , "Eta bins range cover by the reconstruction."};
100 Gaudi::Property<std::vector<std::vector<int>>> m_detectors {this, "Detectors" , {} , "" };
101 Gaudi::Property<std::vector<std::vector<int>>> m_samplings {this, "Samplings" , {} , "" };
102 Gaudi::Property<std::vector<std::vector<int>>> m_samples {this, "Samples" , {} , "samples per layer" };
103
104 Gaudi::Property<bool> m_useTile {this, "UseTile" , true , "Use tile cells" };
105 Gaudi::Property<bool> m_dumpCells {this, "DumpCells" , false , "Dump Ringer Cells Information" };
106 Gaudi::Property<bool> m_doNoiseThrRings {this, "DoNoiseThrRings" , false , "Building rings with noise threshold" };
107 Gaudi::Property<double> m_noiseFactor {this, "NoiseFactor" , 2.0, "Building rings above a factor sigma noise" };
108 Gaudi::Property<bool> m_globalCenter{this, "GlobalCenter", false, "Use cluster position as center" };
109 Gaudi::Property<std::vector<bool>> m_doQuarter {this, "DoQuarter", {} , "Do Quarter Rings" };
110 Gaudi::Property<std::vector<bool>> m_doEtaAxesDivision{this, "DoEtaAxesDivision", {} , "Do Eta axes division" };
111 Gaudi::Property<std::vector<bool>> m_doPhiAxesDivision{this, "DoPhiAxesDivision",{}, "Do Phi axes division" };
112
113
114
115};
116#endif
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.
#define maxCell
Data object for each calorimeter readout cell.
Definition CaloCell.h:57
This class groups all DetDescr information related to a CaloCell.
IReAlgToolCalo(const std::string &type, const std::string &name, const IInterface *parent)
Constructor.
virtual StatusCode execute(xAOD::TrigEMCluster &ptrigEMCluster, const IRoiDescriptor &roi, const CaloDetDescrElement *&caloDDE, const EventContext &context) const =0
This is the execute method for Egamma Algorithms.
Describes the API of the Region of Ineterest geometry.
void push_back(const CaloCell *)
=================================================================================
const std::vector< double > & rings() const
=================================================================================
std::vector< double > m_rings
Definition RingerReFex.h:55
std::vector< int > m_samples
Definition RingerReFex.h:51
void buildRings(const double eta_hot, const double phi_hot, const CaloNoise *noiseCDO, const double m_noiseFactor, const bool m_doNoiseThrRings)
=================================================================================
void clear()
=================================================================================
std::vector< int > m_detectors
Definition RingerReFex.h:51
const std::vector< std::pair< int, int > > detectors() const
=================================================================================
bool isValid(const CaloCell *) const
=================================================================================
RingSet(unsigned int maxRings, double deta, double dphi, const std::vector< int > &detectors, const std::vector< int > &samplings, const std::vector< int > &samples, bool doQuarter, bool doEtaAxesDivision, bool doPhiAxesDivision)
void fill_cells_info(std::vector< float > &cells_eta, std::vector< float > &cells_phi, std::vector< float > &cells_et, std::vector< int > &cells_sampling, std::vector< int > &cells_size, std::vector< double > &rings_sum, std::vector< int > &cells_id, std::vector< float > &cells_gain)
=================================================================================
std::vector< const CaloCell * > m_cells
Definition RingerReFex.h:54
std::vector< int > m_samplings
Definition RingerReFex.h:51
Gaudi::Property< std::vector< float > > m_deltaEta
Definition RingerReFex.h:96
SG::ReadHandleKey< xAOD::TrigEMClusterContainer > m_clusterContainerKey
Definition RingerReFex.h:91
Gaudi::Property< double > m_phiSearchWindowSize
Definition RingerReFex.h:95
Gaudi::Property< std::vector< bool > > m_doQuarter
Gaudi::Property< bool > m_dumpCells
SG::ReadCondHandleKey< CaloNoise > m_noiseCDOKey
Definition RingerReFex.h:92
bool configurationInvalid()
=================================================================================
virtual StatusCode initialize() override
=================================================================================
Gaudi::Property< bool > m_useTile
RingerReFex(const std::string &type, const std::string &name, const IInterface *parent)
=================================================================================
ToolHandle< GenericMonitoringTool > m_monTool
Definition RingerReFex.h:89
Gaudi::Property< std::vector< float > > m_deltaPhi
Definition RingerReFex.h:97
Gaudi::Property< bool > m_globalCenter
Gaudi::Property< std::vector< bool > > m_doEtaAxesDivision
Gaudi::Property< std::vector< std::vector< int > > > m_samplings
virtual ~RingerReFex()
Definition RingerReFex.h:62
StatusCode prepareRinger(std::vector< RingerReFex::RingSet > &vec_rs, const xAOD::TrigEMCluster &emCluster, const IRoiDescriptor &roi, const EventContext &context) const
Gaudi::Property< double > m_noiseFactor
Gaudi::Property< std::vector< bool > > m_doPhiAxesDivision
Gaudi::Property< std::vector< float > > m_etaBins
Definition RingerReFex.h:99
SG::WriteHandleKey< xAOD::TrigRingerRingsContainer > m_ringerContainerKey
Definition RingerReFex.h:90
void printRings(std::vector< RingSet > &, const xAOD::TrigEMCluster &) const
=================================================================================
Gaudi::Property< bool > m_doNoiseThrRings
Gaudi::Property< std::vector< std::vector< int > > > m_detectors
Gaudi::Property< std::vector< unsigned int > > m_nRings
Definition RingerReFex.h:98
Gaudi::Property< double > m_etaSearchWindowSize
Definition RingerReFex.h:94
Gaudi::Property< std::vector< std::vector< int > > > m_samples
virtual StatusCode execute(xAOD::TrigEMCluster &emCluster, const IRoiDescriptor &roi, const CaloDetDescrElement *&, const EventContext &context) const override
=================================================================================
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.
TrigEMCluster_v1 TrigEMCluster
Define the latest version of the trigger EM cluster class.