 |
ATLAS Offline Software
|
#include <eFexTowerBuilder.h>
|
| eFexTowerBuilder (const std::string &name, ISvcLocator *pSvcLocator) |
|
| ~eFexTowerBuilder ()=default |
|
virtual StatusCode | initialize () |
|
virtual StatusCode | execute (const EventContext &ctx) const |
|
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, V, H > &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 |
|
|
StatusCode | fillTowers (const EventContext &ctx) const |
|
StatusCode | fillMap (const EventContext &ctx) const |
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
|
std::mutex m_fillMapMutex | ATLAS_THREAD_SAFE |
|
std::map< unsigned long long, std::pair< std::pair< int, int >, std::pair< int, int > > > m_scMap | ATLAS_THREAD_SAFE |
|
SG::ReadHandleKey< xAOD::EventInfo > | m_eiKey {this,"EventInfoKey","EventInfo",""} |
|
SG::ReadCondHandleKey< CaloSuperCellDetDescrManager > | m_ddmKey {this,"CaloSuperCellDetDescrManager","CaloSuperCellDetDescrManager",""} |
|
SG::ReadHandleKey< CaloCellContainer > | m_scellKey { this, "CaloCellContainerReadKey", "SCell", "Read handle key for the supercells"} |
|
SG::ReadHandleKey< xAOD::TriggerTowerContainer > | m_ttKey { this, "TriggerTowerContainerReadKey", "xAODTriggerTowers", "Read handle key for the triggerTowers"} |
|
SG::WriteHandleKey< xAOD::eFexTowerContainer > | m_outKey {this, "eFexContainerWriteKey", "L1_eFexEmulatedTowers", "Name of the output container"} |
|
Gaudi::Property< std::string > | m_mappingFile {this, "MappingFile", "L1CaloFEXByteStream/2023-02-13/scToEfexTowers.root", "PathResolver location to mapping file"} |
|
ToolHandle< eFEXSuperCellTowerIdProvider > | m_eFEXSuperCellTowerIdProviderTool {this, "eFEXSuperCellTowerIdProviderTool", "LVL1::eFEXSuperCellTowerIdProvider", "Tool that provides tower-FOGA mapping"} |
|
Gaudi::Property< bool > | m_applyMasking {this,"ApplyMasking",true,"Apply masking of supercells based on provenance bits. Should be set to False for MC"} |
|
Gaudi::Property< bool > | m_v6Mapping {this,"UseLATOMEv6Mapping",false,"If true, will use the LATOME v6 mapping if cannot determine from latome header"} |
|
SG::ReadHandleKey< LArLATOMEHeaderContainer > | m_LArLatomeHeaderContainerKey { this, "LArLatomeHeaderKey", "SC_LATOME_HEADER" } |
|
DataObjIDColl | m_extendedExtraObjects |
| Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
|
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
Definition at line 50 of file eFexTowerBuilder.h.
◆ StoreGateSvc_t
◆ eFexTowerBuilder()
LVL1::eFexTowerBuilder::eFexTowerBuilder |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ ~eFexTowerBuilder()
LVL1::eFexTowerBuilder::~eFexTowerBuilder |
( |
| ) |
|
|
default |
◆ cardinality()
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 75 of file AthCommonReentrantAlgorithm.cxx.
◆ 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()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode LVL1::eFexTowerBuilder::execute |
( |
const EventContext & |
ctx | ) |
const |
|
virtual |
◆ 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()
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.
◆ fillMap()
StatusCode LVL1::eFexTowerBuilder::fillMap |
( |
const EventContext & |
ctx | ) |
const |
|
private |
Definition at line 216 of file eFexTowerBuilder.cxx.
222 if(!scells.isValid()){
224 return StatusCode::FAILURE;
227 ATH_MSG_FATAL(
"Cannot fill sc -> eFexTower mapping with an incomplete sc collection");
228 return StatusCode::FAILURE;
236 if(hdrCont.isValid()) {
238 doV6Mapping = (hit->FWversion()>1600);
241 ATH_MSG_WARNING(
"Used LATOME Hardware to determine mapping different to python configuration (use V6 Mapping = " << doV6Mapping <<
" )");
247 std::vector<unsigned long long>
ps;
248 std::vector<std::pair<float,unsigned long long>>
l1;
249 std::vector<std::pair<float,unsigned long long>>
l2;
250 std::vector<unsigned long long> l3;
251 std::vector<unsigned long long> had;
252 std::vector<unsigned long long>
other;
254 static const auto etaIndex = [](
float eta) {
return int(
eta*10 ) + ((
eta<0) ? -1 : 1); };
255 static const auto phiIndex = [](
float phi) {
return int(
phi*32./ROOT::Math::Pi() ) + (
phi<0 ? -1 : 1); };
256 std::map<std::pair<int,int>,TowerSCells>
towers;
257 std::map<unsigned long long,int> eTowerSlots;
259 for (
auto digi: *scells) {
262 if (
auto elem = ddm->get_element(
id);
elem && std::abs(
elem->eta_raw())<2.5) {
264 int sampling =
elem->getSampling();
265 if(sampling==6 && ddm->getCaloCell_ID()->region(
id)==0 &&
eta<0)
eta-=0.01;
267 unsigned long long val =
id.get_compact();
269 int towerid = -1;
int slot = -1;
bool issplit =
false;
271 eTowerSlots[
id.get_compact()] = slot;
276 sc.ps.push_back(
val);
279 sc.l1.push_back({
elem->eta(),
val});
break;
281 sc.l2.push_back({
elem->eta(),
val});
break;
283 sc.l3.push_back(
val);
break;
284 case 8:
case 9:
case 10:
case 11:
285 sc.had.push_back(
val);
break;
287 sc.other.push_back(
val);
break;
295 std::vector<size_t> slotVector(11);
300 if (
sc.l2.size()==5) {
301 if (
coord.first >= 0) {
302 sc.l3.push_back(
sc.l2.front().second);
303 sc.l2.erase(
sc.l2.begin());
305 sc.l3.push_back(
sc.l2.back().second);
306 sc.l2.resize(
sc.l2.size()-1);
309 if (std::abs(
coord.first)==15) {
316 if (
sc.l1.size()==6) {
317 m_scMap[
sc.l1.at(0).second] = std::pair(
coord,std::pair(1,11));
318 m_scMap[
sc.l1.at(1).second] = std::pair(
coord,(doV6Mapping &&
coord.first < 0) ? std::pair(2,1) : std::pair(1,2));
319 m_scMap[
sc.l1.at(2).second] = std::pair(
coord,std::pair(2,11));
320 m_scMap[
sc.l1.at(3).second] = std::pair(
coord,std::pair(3,11));
321 m_scMap[
sc.l1.at(4).second] = std::pair(
coord,(doV6Mapping &&
coord.first < 0) ? std::pair(4,3) : std::pair(3,4));
322 m_scMap[
sc.l1.at(5).second] = std::pair(
coord,std::pair(4,11));
323 slotVector[1] = eTowerSlots[
sc.l1.at(0).second];
324 slotVector[2] = eTowerSlots[
sc.l1.at(2).second];
325 slotVector[3] = eTowerSlots[
sc.l1.at(3).second];
326 slotVector[4] = eTowerSlots[
sc.l1.at(5).second];
330 if (
sc.l1.size()==1) {
331 m_scMap[
sc.l1.at(0).second] = std::pair(
coord,std::pair(4,11));
332 slotVector[1] = 1; slotVector[2] = 2; slotVector[3] = 3; slotVector[4] = eTowerSlots[
sc.l1.at(0).second];
336 if (!
sc.ps.empty()) {m_scMap[
sc.ps.at(0)] = std::pair(
coord,std::pair(0,11)); slotVector[0] = eTowerSlots[
sc.ps.at(0)]; }
337 if(
sc.l1.size()==4)
for(
size_t i=0;
i<4;
i++)
if(
sc.l1.size() >
i) {m_scMap[
sc.l1.at(
i).second] = std::pair(
coord,std::pair(
i+1,11)); slotVector[
i+1] = eTowerSlots[
sc.l1.at(
i).second]; }
338 for(
size_t i=0;
i<4;
i++)
if(
sc.l2.size() >
i) { m_scMap[
sc.l2.at(
i).second] = std::pair(
coord,std::pair(
i+5,11)); slotVector[
i+5] = eTowerSlots[
sc.l2.at(
i).second]; }
339 if (!
sc.l3.empty()) {m_scMap[
sc.l3.at(0)] = std::pair(
coord,std::pair(9,11)); slotVector[9] = eTowerSlots[
sc.l3.at(0)]; }
340 if (!
sc.had.empty()) {m_scMap[
sc.had.at(0)] = std::pair(
coord,std::pair(10,11));slotVector[10] = eTowerSlots[
sc.had.at(0)]; }
356 TTree *
t =
new TTree(
"mapping",
"mapping");
357 unsigned long long scid = 0;
358 std::pair<int, int>
coord = {0, 0};
359 std::pair<int, int> slot = {-1, -1};
360 t->Branch(
"scid", &scid);
361 t->Branch(
"etaIndex", &
coord.first);
362 t->Branch(
"phiIndex", &
coord.second);
363 t->Branch(
"slot1", &slot.first);
364 t->Branch(
"slot2", &slot.second);
365 for (
auto &[
id,
val]: m_scMap) {
374 return StatusCode::SUCCESS;
◆ fillTowers()
StatusCode LVL1::eFexTowerBuilder::fillTowers |
( |
const EventContext & |
ctx | ) |
const |
|
private |
Definition at line 74 of file eFexTowerBuilder.cxx.
79 if(!tTowers.isValid()){
81 return StatusCode::FAILURE;
84 if(!scells.isValid()){
86 return StatusCode::FAILURE;
92 return StatusCode::FAILURE;
97 std::map<std::pair<int,int>,std::array<int,11>>
towers;
99 constexpr
int INVALID_VALUE = -99999;
102 constexpr
int MISSING_VALUE = -99998;
104 for (
auto digi: *scells) {
105 const auto itr = m_scMap.find(digi->ID().get_compact());
106 if (itr == m_scMap.end()) {
continue; }
107 int val =
std::round(digi->energy()/(12.5*std::cosh(digi->eta())));
109 bool isSaturated = (!
isMC) ? (digi->quality()) :
false;
110 bool isMasked = ((digi)->provenance()&0x80);
111 bool isInvalid =
m_applyMasking ? ((digi)->provenance()&0x40) :
false;
117 val = SATURATED_VALUE;
120 auto towerItr =
towers.emplace(itr->second.first,std::array<int,11>{});
121 if(towerItr.second) {
122 towerItr.first->second.fill(MISSING_VALUE);
124 auto& tower = (towerItr.first->second);
125 if (itr->second.second.second<11) {
127 if (!isMasked &&
val!=INVALID_VALUE) {
130 tower.at(itr->second.second.first) = SATURATED_VALUE;
131 tower.at(itr->second.second.second) = SATURATED_VALUE;
133 if(tower.at(itr->second.second.first)!=(SATURATED_VALUE)) {
135 if (tower.at(itr->second.second.first)==MASKED_VALUE || tower.at(itr->second.second.first)==INVALID_VALUE || tower.at(itr->second.second.first)==MISSING_VALUE) {
136 tower.at(itr->second.second.first)=0;
138 tower.at(itr->second.second.first) +=
val >> 1;
140 if(tower.at(itr->second.second.second)!=(SATURATED_VALUE)) {
142 if (tower.at(itr->second.second.second)==MASKED_VALUE || tower.at(itr->second.second.second)==INVALID_VALUE || tower.at(itr->second.second.second)==MISSING_VALUE) {
143 tower.at(itr->second.second.second)=0;
145 tower.at(itr->second.second.second) += (
val - (
val >> 1));
152 auto&
v = tower.at(itr->second.second.first);
155 if(
v==MISSING_VALUE)
v = MASKED_VALUE;
156 }
else if(isSaturated) {
159 if(
v==INVALID_VALUE ||
v==MISSING_VALUE)
v = 0;
167 static const auto etaIndex = [](
float eta) {
return int(
eta*10 ) + ((
eta<0) ? -1 : 1); };
170 if (std::abs(tTower->eta()) > 1.5)
continue;
171 if (tTower->sampling() != 1)
continue;
173 auto towerItr =
towers.emplace(std::pair(etaIndex(tTower->eta()),
phiIndex(
phi)),std::array<int,11>{});
174 if(towerItr.second) {
175 towerItr.first->second.fill(MISSING_VALUE);
177 (towerItr.first->second).at(10) = tTower->cpET();
182 ATH_CHECK( eTowers.
record(std::make_unique<xAOD::eFexTowerContainer>(),std::make_unique<xAOD::eFexTowerAuxContainer>()) );
184 static const auto calToFex = [](
int calEt) {
185 if(calEt == MASKED_VALUE)
return 0;
186 if(calEt == SATURATED_VALUE)
return 1023;
187 if( calEt == INVALID_VALUE )
return 1022;
188 if( calEt == MISSING_VALUE )
return 1025;
189 if(calEt<448)
return std::max((calEt&~1)/2+32,1);
190 if(calEt<1472)
return (calEt-448)/4+256;
191 if(calEt<3520)
return (calEt-1472)/8+512;
192 if(calEt<11584)
return (calEt-3520)/32+768;
201 size_t ni = (std::abs(
coord.first)<=15) ? 10 : 11;
202 for(
size_t i=0;
i<ni;++
i)
counts[
i] = (scells->empty() ? 1025 : calToFex(
counts[
i]));
203 eTowers->
push_back( std::make_unique<xAOD::eFexTower>() );
204 eTowers->
back()->initialize( ( (
coord.first<0 ? 0.5:-0.5) +
coord.first)*0.1 ,
212 return StatusCode::SUCCESS;
◆ filterPassed()
◆ initialize()
StatusCode LVL1::eFexTowerBuilder::initialize |
( |
| ) |
|
|
virtual |
Definition at line 33 of file eFexTowerBuilder.cxx.
45 std::unique_ptr <TFile>
f(TFile::Open(
fileName.c_str()));
47 TTree *
t =
f->Get<TTree>(
"mapping");
49 unsigned long long scid = 0;
50 std::pair<int, int>
coord = {0, 0};
51 std::pair<int, int> slot;
52 t->SetBranchAddress(
"scid", &scid);
53 t->SetBranchAddress(
"etaIndex", &
coord.first);
54 t->SetBranchAddress(
"phiIndex", &
coord.second);
55 t->SetBranchAddress(
"slot1", &slot.first);
56 t->SetBranchAddress(
"slot2", &slot.second);
57 for (Long64_t
i = 0;
i <
t->GetEntries();
i++) {
59 m_scMap[scid] = std::make_pair(
coord, slot);
63 if (m_scMap.empty()) {
71 return StatusCode::SUCCESS;
◆ 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()
◆ 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.
◆ renounce()
◆ renounceArray()
◆ setFilterPassed()
◆ sysExecute()
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.
◆ sysInitialize()
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 61 of file AthCommonReentrantAlgorithm.cxx.
110 if (
sc.isFailure()) {
118 if ( cs.retrieve().isFailure() ) {
120 return StatusCode::SUCCESS;
122 if (cs->regHandle(
this,*
h).isFailure()) {
123 sc = StatusCode::FAILURE;
124 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()
◆ ATLAS_THREAD_SAFE [1/2]
std::mutex m_fillMapMutex LVL1::eFexTowerBuilder::ATLAS_THREAD_SAFE |
|
mutableprivate |
◆ ATLAS_THREAD_SAFE [2/2]
std::map<unsigned long long, std::pair<std::pair<int,int>,std::pair<int,int> > > m_scMap LVL1::eFexTowerBuilder::ATLAS_THREAD_SAFE |
|
mutableprivate |
◆ m_applyMasking
Gaudi::Property<bool> LVL1::eFexTowerBuilder::m_applyMasking {this,"ApplyMasking",true,"Apply masking of supercells based on provenance bits. Should be set to False for MC"} |
|
private |
◆ m_ddmKey
◆ m_detStore
◆ m_eFEXSuperCellTowerIdProviderTool
◆ m_eiKey
◆ m_evtStore
◆ m_extendedExtraObjects
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_LArLatomeHeaderContainerKey
◆ m_mappingFile
Gaudi::Property<std::string> LVL1::eFexTowerBuilder::m_mappingFile {this, "MappingFile", "L1CaloFEXByteStream/2023-02-13/scToEfexTowers.root", "PathResolver location to mapping file"} |
|
private |
◆ m_outKey
◆ m_scellKey
◆ m_ttKey
◆ m_v6Mapping
Gaudi::Property<bool> LVL1::eFexTowerBuilder::m_v6Mapping {this,"UseLATOMEv6Mapping",false,"If true, will use the LATOME v6 mapping if cannot determine from latome header"} |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
StatusCode fillTowers(const EventContext &ctx) const
Scalar phi() const
phi method
Scalar eta() const
pseudorapidity method
float round(const float toRound, const unsigned int decimals)
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
const std::string & key() const
Return the StoreGate ID for the referenced object.
bool empty() const
Test if the key is blank.
SG::ReadCondHandleKey< CaloSuperCellDetDescrManager > m_ddmKey
@ IS_SIMULATION
true: simulation, false: data
StatusCode fillMap(const EventContext &ctx) const
SG::ReadHandleKey< xAOD::EventInfo > m_eiKey
virtual void setOwner(IDataHandleHolder *o)=0
SG::ReadHandleKey< CaloCellContainer > m_scellKey
An algorithm that can be simultaneously executed in multiple threads.
SG::ReadHandleKey< LArLATOMEHeaderContainer > m_LArLatomeHeaderContainerKey
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
virtual const DataObjIDColl & extraOutputDeps() const override
Return the list of extra output dependencies.
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
::StatusCode StatusCode
StatusCode definition for legacy code.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Gaudi::Property< bool > m_applyMasking
virtual StatusCode sysExecute(const EventContext &ctx) override
Execute an algorithm.
Description of TriggerTower_v2.
#define CHECK(...)
Evaluate an expression and check for errors.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Gaudi::Property< bool > m_v6Mapping
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
const T * back() const
Access the last element in the collection as an rvalue.
virtual void renounce()=0
SG::WriteHandleKey< xAOD::eFexTowerContainer > m_outKey
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
value_type push_back(value_type pElem)
Add an element to the end of the collection.
StatusCode initialize(bool used=true)
virtual void setFilterPassed(bool state, const EventContext &ctx) const
ToolHandle< eFEXSuperCellTowerIdProvider > m_eFEXSuperCellTowerIdProviderTool
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
unsigned int phiIndex(float phi, float binsize)
calculate phi index for a given phi
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
#define ATH_MSG_WARNING(x)
SG::ReadHandleKey< xAOD::TriggerTowerContainer > m_ttKey
Gaudi::Property< std::string > m_mappingFile
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
virtual StatusCode sysInitialize() override
Override sysInitialize.
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.