Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
#include <CTPSimulation.h>
|
| CTPSimulation (const std::string &name, ISvcLocator *pSvcLocator) |
|
| ~CTPSimulation () |
|
virtual StatusCode | initialize () override |
|
virtual StatusCode | start () override |
|
virtual StatusCode | execute (const EventContext &context) const override |
|
virtual StatusCode | stop () override |
|
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 |
|
|
StatusCode | bookHists () |
|
StatusCode | setHistLabels (const TrigConf::L1Menu &l1menu) |
|
StatusCode | createMultiplicityHist (const std::string &type, unsigned int maxMult=10) |
|
StatusCode | setMultiplicityHistLabels (const TrigConf::L1Menu &l1menu, const std::string &type) |
|
StatusCode | hbook (const std::string &path, std::unique_ptr< TH1 > hist) |
|
StatusCode | hbook (const std::string &path, std::unique_ptr< TH2 > hist) |
|
StatusCode | storeMetadata () |
|
LockedHandle< TH1 > & | get1DHist (const std::string &histName) const |
|
LockedHandle< TH2 > & | get2DHist (const std::string &histName) const |
|
std::string | getBaseHistPath () const |
|
StatusCode | fillInputHistograms (const EventContext &context) const |
|
StatusCode | extractMultiplicities (std::map< std::string, unsigned int > &thrMultiMap, const EventContext &context) const |
|
StatusCode | simulateItems (const std::map< std::string, unsigned int > &thrMultiMap, const EventContext &context) const |
|
unsigned int | calculateMultiplicity (const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const |
|
unsigned int | calculateJetMultiplicity (const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const |
|
unsigned int | calculateEMMultiplicity (const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const |
|
unsigned int | calculateTauMultiplicity (const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const |
|
unsigned int | calculateMETMultiplicity (const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const |
|
unsigned int | calculateMuonMultiplicity (const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const |
|
unsigned int | calculateTopoMultiplicity (const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context, bool UseLegacy) const |
|
unsigned int | calculateTopoOptMultiplicity (const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const |
|
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...
|
|
|
ServiceHandle< ITHistSvc > | m_histSvc { this, "THistSvc", "THistSvc/THistSvc", "Histogramming svc" } |
|
ToolHandle< LVL1CTP::ResultBuilder > | m_resultBuilder { this, "ResultBuilder", "LVL1CTP__ResultBuilder/ResultBuilder", "Builds the CTP result" } |
|
ATHRNG::RNGWrapper | m_RNGEngines |
|
std::map< std::string, LockedHandle< TH1 > > | m_hist1D |
|
std::map< std::string, LockedHandle< TH2 > > | m_hist2D |
|
SG::ReadHandleKey< LVL1::FrontPanelCTP > | m_iKeyTopo { this, "TopoInput", LVL1::DEFAULT_L1TopoCTPLocation, "Input from topo" } |
|
SG::ReadHandleKey< LVL1::FrontPanelCTP > | m_iKeyLegacyTopo { this, "LegacyTopoInput", LVL1::DEFAULT_L1TopoLegacyCTPLocation, "Input from legacy topo" } |
|
SG::ReadHandleKey< LVL1::MuCTPICTP > | m_iKeyMuctpi { this, "MuctpiInput", LVL1MUCTPI::DEFAULT_MuonCTPLocation, "Input from Muctpi" } |
|
SG::ReadHandleKey< LVL1::EmTauCTP > | m_iKeyCtpinEM { this, "CtpinEMInput", LVL1::TrigT1CaloDefs::EmTauCTPLocation, "Input from CTPIN em and tau (legacy)" } |
|
SG::ReadHandleKey< LVL1::JetCTP > | m_iKeyCtpinJet { this, "CtpinJetInput", LVL1::TrigT1CaloDefs::JetCTPLocation, "Input from CTPIN jet (legacy)" } |
|
SG::ReadHandleKey< LVL1::EnergyCTP > | m_iKeyCtpinXE { this, "CtpinXEInput", LVL1::TrigT1CaloDefs::EnergyCTPLocation, "Input from CTPIN energy (te,xe,xs - legacy)" } |
|
SG::ReadHandleKey< xAOD::JetRoIContainer > | m_iKeyJFexJets { this, "jFexJetInput", "jRoundJets", "Input list of jFEX jets" } |
|
SG::ReadHandleKey< xAOD::JetRoIContainer > | m_iKeyJFexLJets { this, "jFexLJetInput", "jRoundLargeRJets", "Input list of jFEX large-R jets" } |
|
SG::ReadHandleKey< xAOD::JetRoIContainer > | m_iKeyGFexJets { this, "gFexJetInput", "gL1Jets", "Input list of gFEX jets" } |
|
SG::ReadHandleKey< xAOD::EnergySumRoI > | m_iKeyGFexMETNC { this, "gFexMETNCInput", "gXENOISECUTPerf", "Input list of gFEX MET NC" } |
|
SG::ReadHandleKey< xAOD::EnergySumRoI > | m_iKeyGFexMETRho { this, "gFexMETRhoInput", "gXERHOPerf", "Input list of gFEX MET Rho" } |
|
SG::ReadHandleKey< xAOD::EnergySumRoI > | m_iKeyGFexMETJwoJ { this, "gFexMETJwoJInput", "gXEJWOJPerf", "Input list of gFEX MET JwoJ" } |
|
SG::ReadHandleKey< xAOD::TrigEMClusterContainer > | m_iKeyEFexCluster { this, "eFexClusterInput", "SClusterCl", "Input list of eFEX cluster" } |
|
SG::ReadHandleKey< xAOD::EmTauRoIContainer > | m_iKeyEFexTau { this, "eFexTauInput", "SClusterTau", "Input list of eFEX tau" } |
|
SG::ReadHandleKey< LVL1::ZdcCTP > | m_iKeyZDC {this, "ZdcInput", LVL1::TrigT1CaloDefs::ZdcCTPLocation, "Input from Zdc"} |
|
SG::ReadHandleKey< LVL1::TrtCTP > | m_iKeyTRT {this, "TrtInput", LVL1::DEFAULT_TrtCTPLocation, "Input from Trt"} |
|
SG::WriteHandleKey< CTP_RDO > | m_oKeyRDO {this, "RDOOutput", LVL1CTP::DEFAULT_RDOOutputLocation, "Output of CTP RDO object (sim)"} |
|
SG::WriteHandleKey< CTPSLink > | m_oKeySLink {this, "ROIOutput", LVL1CTP::DEFAULT_CTPSLinkLocation, "Output of CTP SLink object (sim)"} |
|
Gaudi::Property< bool > | m_isData { this, "IsData", false, "emulate CTP as part of MC or rerun on data" } |
|
Gaudi::Property< std::string > | m_histPath { this, "HistPath", "/EXPERT/L1", "Booking path for the histogram" } |
|
Gaudi::Property< bool > | m_doZDC {this, "DoZDC", false, "emulate CTP with ZDC included"} |
|
Gaudi::Property< bool > | m_doTRT {this, "DoTRT", false, "emulate CTP with TRT included"} |
|
Gaudi::Property< bool > | m_forceBunchGroupPattern { this, "ForceBunchGroupPattern", true, "When true, ignore the bunchgroups and use the provided BunchGroupPattern" } |
|
Gaudi::Property< unsigned int > | m_bunchGroupPattern { this, "BunchGroupPattern", 0x0003, "Bunchgroup pattern applied at every event, useful for simulation. Bit x corresponds to bunchgroup x" } |
|
Gaudi::Property< bool > | m_doL1CaloLegacy { this, "DoL1CaloLegacy", false, "Use L1Calo legacy" } |
|
Gaudi::Property< bool > | m_doL1Topo { this, "DoL1Topo", false, "Use L1Topo" } |
|
Gaudi::Property< bool > | m_doL1TopoLegacy { this, "DoL1TopoLegacy", false, "Use L1Topo Legacy" } |
|
Gaudi::Property< bool > | m_muonRun2Format { this, "MuonMultiplicityRun2Format", false, "Interpret muon multiplicity in Run 2 format (bit 0 unused)" } |
|
SG::ReadCondHandleKey< TrigConf::L1BunchGroupSet > | m_bgKey {this, "L1BunchGroup", "L1BunchGroup", "L1BunchGroupSet key name"} |
|
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 65 of file CTPSimulation.h.
◆ StoreGateSvc_t
◆ CTPSimulation()
LVL1CTP::CTPSimulation::CTPSimulation |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ ~CTPSimulation()
LVL1CTP::CTPSimulation::~CTPSimulation |
( |
| ) |
|
◆ bookHists()
StatusCode LVL1CTP::CTPSimulation::bookHists |
( |
| ) |
|
|
private |
Definition at line 329 of file CTPSimulation.cxx.
332 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"jJetPt",
"Jet p_{T} - jJ", 40, 0, 80) ));
333 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"jJetEta",
"Jet #eta - jJ", 64, -3.2, 3.2) ));
334 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"jJetPhi",
"Jet #phi - jJ", 64, -3.2, 3.2) ));
335 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"jLJetPt",
"Jet p_{T} - jLJ", 40, 0, 80) ));
336 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"jLJetEta",
"Jet #eta - jLJ", 64, -3.2, 3.2) ));
337 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"jLJetPhi",
"Jet #phi - jLJ", 64, -3.2, 3.2) ));
338 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"gJetPt",
"Jet p_{T} - gJ", 40, 0, 80) ));
339 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"gJetEta",
"Jet #eta - gJ", 64, -3.2, 3.2) ));
340 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"gJetPhi",
"Jet #phi - gJ", 64, -3.2, 3.2) ));
341 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"gLJetPt",
"Jet p_{T} - gLJ", 40, 0, 80) ));
342 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"gLJetEta",
"Jet #eta - gLJ", 64, -3.2, 3.2) ));
343 ATH_CHECK (
hbook(
"/input/jets/", std::make_unique<TH1I>(
"gLJetPhi",
"Jet #phi - gLJ", 64, -3.2, 3.2) ));
346 ATH_CHECK (
hbook(
"/input/met/", std::make_unique<TH1I>(
"Pufit",
"Missing ET from algorithm pufit", 40, 0, 80) ));
347 ATH_CHECK (
hbook(
"/input/met/", std::make_unique<TH1I>(
"PufitPhi",
"Missing ET PUfit phi", 64, -3.2, 3.2) ));
348 ATH_CHECK (
hbook(
"/input/met/", std::make_unique<TH1I>(
"Rho",
"Missing ET from algorithm rhosub", 40, 0, 80) ));
349 ATH_CHECK (
hbook(
"/input/met/", std::make_unique<TH1I>(
"RhoPhi",
"Missing ET rhosub phi", 64, -3.2, 3.2) ));
350 ATH_CHECK (
hbook(
"/input/met/", std::make_unique<TH1I>(
"JwoJ",
"Missing ET from algorithm jet without jets", 40, 0, 80) ));
351 ATH_CHECK (
hbook(
"/input/met/", std::make_unique<TH1I>(
"JwoJPhi",
"Missing ET jet without jet phi", 64, -3.2, 3.2) ));
354 ATH_CHECK (
hbook(
"/input/em/", std::make_unique<TH1I>(
"et",
"Cluster et", 40, 0, 40) ));
355 ATH_CHECK (
hbook(
"/input/em/", std::make_unique<TH1I>(
"eta",
"Cluster eta ", 64, -3.2, 3.2) ));
356 ATH_CHECK (
hbook(
"/input/em/", std::make_unique<TH1I>(
"phi",
"Cluster phi", 64, -3.2, 3.2) ));
359 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"et",
"Tau et", 40, 0, 40) ));
360 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"eta",
"Tau eta ", 64, -3.2, 3.2) ));
361 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"phi",
"Tau phi", 64, -3.2, 3.2) ));
362 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"emIso",
"Tau em isolation", 40, 0, 1) ));
363 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"hadIso",
"Tau hadronic isolation", 40, 0, 1) ));
364 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"R3ET",
"Tau eT", 40, 0, 40) ));
365 ATH_CHECK (
hbook(
"/input/tau/", std::make_unique<TH1I>(
"R3Iso",
"Tau isolation", 40, 0, 1) ));
368 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"jJets",
"Number of jets (jJ)", 40, 0, 40) ));
369 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"jLJets",
"Number of jets (jLJ)", 40, 0, 40) ));
370 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"gJets",
"Number of jets (gJ)", 40, 0, 40) ));
371 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"gLJets",
"Number of jets (gLJ)", 40, 0, 40) ));
372 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"muons",
"Number of muons", 10, 0, 10) ));
373 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"emcluster",
"Number of EM clusters", 20, 0, 20) ));
374 ATH_CHECK (
hbook(
"/input/counts/", std::make_unique<TH1I>(
"taus",
"Number of TAU candidates", 20, 0, 20) ));
385 ATH_CHECK (
hbook(
"/multi/all", (std::unique_ptr<TH2>)std::make_unique<TH2I>(
"LegacyMult",
"Legacy thresholds multiplicity", 1, 0, 1, 10, 0, 10) ));
386 ATH_CHECK (
hbook(
"/multi/all", (std::unique_ptr<TH2>)std::make_unique<TH2I>(
"R3Mult",
"New thresholds multiplicity", 1, 0, 1, 10, 0, 10) ));
389 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"LegacyTopo0",
"L1Topo Decision (Legacy 0)", 64, 0, 64) ));
390 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"LegacyTopo1",
"L1Topo Decision (Legacy 1)", 64, 0, 64) ));
391 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo1El",
"L1Topo Decision (Topo 1 electrical)", 64, 0, 64) ));
392 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo2El",
"L1Topo Decision (Topo 2 electrical)", 64, 0, 64) ));
393 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo3El",
"L1Topo Decision (Topo 3 electrical)", 64, 0, 64) ));
394 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo1Opt0",
"L1Topo Decision (Topo 1 optical 0)", 128, 0, 128) ));
395 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo1Opt1",
"L1Topo Decision (Topo 1 optical 1)", 128, 0, 128) ));
396 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo1Opt2",
"L1Topo Decision (Topo 1 optical 2)", 128, 0, 128) ));
397 ATH_CHECK(
hbook(
"/input/topo/", std::make_unique<TH1I>(
"Topo1Opt3",
"L1Topo Decision (Topo 1 optical 3)", 128, 0, 128) ));
400 ATH_CHECK (
hbook(
"/output/", std::make_unique<TH1I>(
"tbpById",
"Items decision (tbp)", 512, 0, 512) ));
401 ATH_CHECK (
hbook(
"/output/", std::make_unique<TH1I>(
"tapById",
"Items decision (tap)", 512, 0, 512) ));
402 ATH_CHECK (
hbook(
"/output/", std::make_unique<TH1I>(
"tavById",
"Items decision (tav)", 512, 0, 512) ));
403 ATH_CHECK (
hbook(
"/output/", std::make_unique<TH1I>(
"tbpByName",
"Items decision (tbp)", 512, 0, 512) ));
404 ATH_CHECK (
hbook(
"/output/", std::make_unique<TH1I>(
"tapByName",
"Items decision (tap)", 512, 0, 512) ));
405 ATH_CHECK (
hbook(
"/output/", std::make_unique<TH1I>(
"tavByName",
"Items decision (tav)", 512, 0, 512) ));
407 ATH_CHECK (
hbook(
"/", std::make_unique<TH1I>(
"bcid",
"Bunch crossing ID", 3564, 0, 3564)) );
411 return StatusCode::SUCCESS;
◆ calculateEMMultiplicity()
Definition at line 851 of file CTPSimulation.cxx.
852 unsigned int multiplicity (0);
853 if ( confThr.
name()[0]==
'e' ) {
856 float scale =
l1menu->getObject(
"thresholds.legacyCalo.EM.emscale").getValue<
float>();
858 for (
const auto cl : *eFexCluster ) {
859 float eta =
cl->eta();
860 int ieta =
int((eta + (eta>0 ? 0.005 : -0.005))/0.1);
861 unsigned int thrV = confThr.
thrValue( ieta );
862 bool clusterPasses = ( ((
unsigned int)
cl->et()) > (thrV *
scale) );
863 multiplicity += clusterPasses ? 1 : 0;
870 if ( ctpinEM.isValid() ) {
871 if(
l1menu->connector(
"EM1").hasLine(confThr.
name()) ) {
872 auto & triggerline =
l1menu->connector(
"EM1").triggerLine(confThr.
name());
873 multiplicity =
CTPUtil::getMult( ctpinEM->cableWord0(), triggerline.startbit(), triggerline.endbit() );
874 }
else if(
l1menu->connector(
"EM2").hasLine(confThr.
name()) ) {
875 auto & triggerline =
l1menu->connector(
"EM2").triggerLine(confThr.
name());
876 multiplicity =
CTPUtil::getMult( ctpinEM->cableWord1(), triggerline.startbit(), triggerline.endbit() );
882 ATH_MSG_DEBUG(
"EM MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
◆ calculateJetMultiplicity()
Definition at line 828 of file CTPSimulation.cxx.
829 unsigned int multiplicity = 0;
830 if( confThr.
type() ==
"JET" ) {
833 if ( ctpinJet.isValid() ) {
834 if(
l1menu->connector(
"JET1").hasLine(confThr.
name()) ) {
835 auto & triggerline =
l1menu->connector(
"JET1").triggerLine(confThr.
name());
836 multiplicity =
CTPUtil::getMult( ctpinJet->cableWord0(), triggerline.startbit(), triggerline.endbit() );
837 }
else if(
l1menu->connector(
"JET2").hasLine(confThr.
name()) ) {
838 auto & triggerline =
l1menu->connector(
"JET2").triggerLine(confThr.
name());
839 multiplicity =
CTPUtil::getMult( ctpinJet->cableWord1(), triggerline.startbit(), triggerline.endbit() );
845 ATH_MSG_DEBUG(
"JET MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
◆ calculateMETMultiplicity()
Definition at line 926 of file CTPSimulation.cxx.
927 unsigned int multiplicity = 0;
928 if ( confThr.
type() ==
"XE" or confThr.
type() ==
"TE" or confThr.
type() ==
"XS" ) {
932 if ( ctpinEnergy.isValid() ) {
933 if(
l1menu->connector(
"EN1").hasLine(confThr.
name()) ) {
934 auto & triggerline =
l1menu->connector(
"EN1").triggerLine(confThr.
name());
935 multiplicity =
CTPUtil::getMult( ctpinEnergy->cableWord0(), triggerline.startbit(), triggerline.endbit() );
936 }
else if(
l1menu->connector(
"EN2").hasLine(confThr.
name()) ) {
937 auto & triggerline =
l1menu->connector(
"EN2").triggerLine(confThr.
name());
938 multiplicity =
CTPUtil::getMult( ctpinEnergy->cableWord1(), triggerline.startbit(), triggerline.endbit() );
945 if ( confThr.
name().find(
"gXENC")==0 ) {
948 }
else if ( confThr.
name().find(
"gXERHO")==0 ) {
951 }
else if ( confThr.
name().find(
"gXEJWOJ")==0 ) {
960 multiplicity = (
met->energyT()/1000. < confThr.
getAttribute<
unsigned int>(
"xe") ) ? 0 : 1;
963 if(confThr.
type() ==
"TE") {
965 ATH_MSG_DEBUG(
"TE MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
966 }
else if(confThr.
type() ==
"XS") {
968 ATH_MSG_DEBUG(
"XS MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
971 ATH_MSG_DEBUG(
"XE MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
◆ calculateMultiplicity()
Definition at line 1093 of file CTPSimulation.cxx.
1094 unsigned int multiplicity = 0;
1096 if ( confThr.
type() ==
"EM" ) {
1098 }
else if ( confThr.
type() ==
"TAU" ) {
1100 }
else if ( confThr.
type() ==
"XE" || confThr.
type() ==
"TE" || confThr.
type() ==
"XS" ) {
1102 }
else if ( confThr.
type() ==
"JET" ) {
1104 }
else if ( confThr.
type() ==
"MU" ) {
1106 }
else if ( confThr.
type() ==
"R2TOPO") {
1108 }
else if ( confThr.
type() ==
"TOPO" ) {
1110 }
else if ( confThr.
type()[0] ==
'e' || confThr.
type()[0] ==
'c' || confThr.
type()[0] ==
'j' || confThr.
type()[0] ==
'g' ){
1115 ATH_MSG_FATAL(
"Caught exception when calculating multiplicity for threshold " << confThr.
name() <<
": " << ex.what());
1119 return multiplicity;
◆ calculateMuonMultiplicity()
Definition at line 978 of file CTPSimulation.cxx.
982 unsigned int multiplicity = 0;
984 if ( ctpinMuon.isValid() ) {
985 auto & triggerline =
l1menu->connector(
"MuCTPiOpt0").triggerLine(confThr.
name());
989 ATH_MSG_DEBUG(
"MU MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
◆ calculateTauMultiplicity()
Definition at line 888 of file CTPSimulation.cxx.
889 unsigned int multiplicity = 0;
890 if ( confThr.
name()[0]==
'e' ) {
895 if( eFexTaus.isValid() ) {
896 for (
const auto tau : *eFexTaus ) {
897 unsigned int eT = (
unsigned int) (accR3ClET(*tau)/1000.);
899 unsigned int etCut = confThr.
data().get_child(
"et").get_value<
unsigned int>();
900 bool tauPasses = (
eT >= etCut );
901 multiplicity += tauPasses ? 1 : 0;
908 if ( ctpinEM.isValid() ) {
909 if(
l1menu->connector(
"TAU1").hasLine(confThr.
name()) ) {
910 auto & triggerline =
l1menu->connector(
"TAU1").triggerLine(confThr.
name());
911 multiplicity =
CTPUtil::getMult( ctpinEM->cableWord2(), triggerline.startbit(), triggerline.endbit() );
912 }
else if(
l1menu->connector(
"TAU2").hasLine(confThr.
name()) ) {
913 auto & triggerline =
l1menu->connector(
"TAU2").triggerLine(confThr.
name());
914 multiplicity =
CTPUtil::getMult( ctpinEM->cableWord3(), triggerline.startbit(), triggerline.endbit() );
920 ATH_MSG_DEBUG(
"TAU MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity);
◆ calculateTopoMultiplicity()
Definition at line 1034 of file CTPSimulation.cxx.
1035 unsigned int multiplicity = 0;
1043 if(topoInput.isValid()) {
1045 std::string
conn(
"");
1046 if(
l1menu->connector(
"LegacyTopo0").hasLine(confThr.
name()) ) {
1047 conn =
"LegacyTopo0";
1048 cable = ( (
uint64_t)topoInput->cableWord1( 1 ) << 32) + topoInput->cableWord1( 0 );
1049 }
else if(
l1menu->connector(
"LegacyTopo1").hasLine(confThr.
name()) ) {
1050 conn =
"LegacyTopo1";
1051 cable = ( (
uint64_t)topoInput->cableWord2( 1 ) << 32) + topoInput->cableWord2( 0 );
1054 auto & triggerline =
l1menu->connector(
conn).triggerLine(confThr.
name());
1056 <<
", cable start " << triggerline.startbit() <<
" and end " << triggerline.endbit()
1057 <<
" double word 0x" << std::setw(16) << std::setfill(
'0') << std::hex << cable << std::dec << std::setfill(
' ') );
1058 multiplicity =
CTPUtil::getMultTopo( cable, triggerline.startbit(), triggerline.endbit(), triggerline.clock() );
1069 if(topoInput.isValid()) {
1071 std::string
conn(
"");
1072 if(
l1menu->connector(
"Topo2El").hasLine(confThr.
name()) ) {
1074 cable = ( (
uint64_t)topoInput->cableWord1( 1 ) << 32) + topoInput->cableWord1( 0 );
1075 }
else if(
l1menu->connector(
"Topo3El").hasLine(confThr.
name()) ) {
1077 cable = ( (
uint64_t)topoInput->cableWord2( 1 ) << 32) + topoInput->cableWord2( 0 );
1080 auto & triggerline =
l1menu->connector(
conn).triggerLine(confThr.
name());
1082 <<
", cable start " << triggerline.startbit() <<
" and end " << triggerline.endbit()
1083 <<
" double word 0x" << std::setw(16) << std::setfill(
'0') << std::hex << cable << std::dec << std::setfill(
' ') );
1084 multiplicity =
CTPUtil::getMultTopo( cable, triggerline.startbit(), triggerline.endbit(), triggerline.clock() );
1088 return multiplicity;
◆ calculateTopoOptMultiplicity()
Definition at line 995 of file CTPSimulation.cxx.
999 unsigned int multiplicity = 0;
1001 std::string connector =
"";
1002 if (topoInput.isValid()) {
1003 connector =
l1menu->connectorNameFromThreshold(confThr.
name());
1004 auto & triggerline =
l1menu->connector(connector).triggerLine(confThr.
name());
1005 std::bitset<128> bits = topoInput->optcableWord(connector);
1008 std::string subfolder =
"";
1009 if (confThr.
type().find(
"XE") != std::string::npos) {
1011 }
else if (confThr.
type().find(
"TE") != std::string::npos) {
1013 }
else if (confThr.
type().find(
"TAU") != std::string::npos) {
1015 }
else if (confThr.
type().find(
"EM") != std::string::npos) {
1017 }
else if (confThr.
type().find(
"jJ") != std::string::npos) {
1019 }
else if (confThr.
type().find(
"jLJ") != std::string::npos) {
1021 }
else if (confThr.
type().find(
"gJ") != std::string::npos) {
1023 }
else if (confThr.
type().find(
"gLJ") != std::string::npos) {
1026 get2DHist(
"/multi/" + subfolder +
"/" + confThr.
type() +
"Mult" )->Fill(confThr.
mapping(), multiplicity);
1027 ATH_MSG_DEBUG(
"TOPO OPT input MULT calculated mult for threshold " << confThr.
name() <<
" : " << multiplicity <<
" received via connector: " << connector);
1029 return multiplicity;
◆ 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.
◆ createMultiplicityHist()
StatusCode LVL1CTP::CTPSimulation::createMultiplicityHist |
( |
const std::string & |
type, |
|
|
unsigned int |
maxMult = 10 |
|
) |
| |
|
private |
Definition at line 135 of file CTPSimulation.cxx.
138 std::map<std::string,std::vector<std::string>> typeMapping = {
140 {
"jet", {
"JET",
"jJ",
"jLJ",
"gJ",
"gLJ"} },
141 {
"xe", {
"XE",
"gXE",
"jXE"} },
142 {
"te", {
"TE",
"jTE",
"gTE"} },
144 {
"em", {
"EM",
"eEM",
"jEM"} },
145 {
"tau", {
"TAU",
"eTAU",
"jTAU",
"cTAU"} }
147 std::vector<TrigConf::L1Threshold> thrV;
148 for(
const std::string &
t : typeMapping[
type] ) {
150 TH2*
hist =
new TH2I( Form(
"%sMult",
t.c_str()),
151 Form(
"%s threshold multiplicity",
t.c_str()), xsize, 0, xsize, maxMult, 0, maxMult);
◆ 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 LVL1CTP::CTPSimulation::execute |
( |
const EventContext & |
context | ) |
const |
|
overridevirtual |
Definition at line 119 of file CTPSimulation.cxx.
125 std::map<std::string, unsigned int> thrMultiMap;
131 return StatusCode::SUCCESS;
◆ extractMultiplicities()
StatusCode LVL1CTP::CTPSimulation::extractMultiplicities |
( |
std::map< std::string, unsigned int > & |
thrMultiMap, |
|
|
const EventContext & |
context |
|
) |
| const |
|
private |
Definition at line 614 of file CTPSimulation.cxx.
621 std::vector<std::string> connNames =
l1menu->connectorNames();
622 for (
const std::string connName : {
"LegacyTopo0",
"LegacyTopo1",
"Topo1El",
"Topo2El",
"Topo3El",
"Topo1Opt0",
"Topo1Opt1",
"Topo1Opt2",
"Topo1Opt3",
"CTPCAL",
"NIM2"})
624 if(
find(connNames.begin(), connNames.end(), connName) == connNames.end() ) {
627 bool opt_cable =
false;
628 std::bitset<128> cable128 {0};
630 if (connName.starts_with(
"Legacy")) {
636 if (not topoInput.isValid()) {
639 if(connName ==
"LegacyTopo0") {
640 cable = ( (
uint64_t)topoInput->cableWord1( 1 ) << 32) + topoInput->cableWord1( 0 );
641 }
else if (connName ==
"LegacyTopo1") {
642 cable = ( (
uint64_t)topoInput->cableWord2( 1 ) << 32) + topoInput->cableWord2( 0 );
645 else if (connName.starts_with(
"CTPCAL") &&
m_doZDC)
648 if (not zdcInput.isValid())
652 cable =
static_cast<uint64_t>(zdcInput->cableWord0());
654 for (
auto &
tl :
conn.triggerLines()){
655 if (
tl.name().find(
"ZDC") == std::string::npos)
659 uint flatIndex =
tl.flatindex();
661 thrMultiMap[
tl.name()] = pass;
667 else if (connName.starts_with(
"NIM2"))
672 if (not trtInput.isValid())
676 cable =
static_cast<uint64_t>(trtInput->cableWord0());
678 for (
auto &
tl :
conn.triggerLines()){
679 if (
tl.name().find(
"TRT") == std::string::npos)
683 uint flatIndex =
tl.flatindex();
685 thrMultiMap[
tl.name()] = pass;
692 if (not zdcInput.isValid())
696 cable =
static_cast<uint64_t>(zdcInput->cableWord1());
698 for (
const auto &
tl :
conn.triggerLines()){
699 if (
tl.name().find(
"ZDC") == std::string::npos)
703 uint flatIndex =
tl.flatindex();
705 thrMultiMap[
tl.name()] = pass;
718 if (not topoInput.isValid()) {
721 if(connName ==
"Topo1El") {
722 cable = ( (
uint64_t)topoInput->cableWord0( 1 ) << 32) + topoInput->cableWord0( 0 );
723 }
else if(connName ==
"Topo2El") {
724 cable = ( (
uint64_t)topoInput->cableWord1( 1 ) << 32) + topoInput->cableWord1( 0 );
725 }
else if (connName ==
"Topo3El") {
726 cable = ( (
uint64_t)topoInput->cableWord2( 1 ) << 32) + topoInput->cableWord2( 0 );
727 }
else if(connName ==
"Topo1Opt0") {
728 ATH_MSG_DEBUG(
"BIT word Topo1Opt0: " << topoInput->optcableWord( connName ));
730 cable128 = topoInput->optcableWord( connName );
731 }
else if(connName ==
"Topo1Opt1") {
732 ATH_MSG_DEBUG(
"BIT word Topo1Opt1: " << topoInput->optcableWord( connName ));
734 cable128 = topoInput->optcableWord( connName );
735 }
else if(connName ==
"Topo1Opt2") {
736 ATH_MSG_DEBUG(
"BIT word Topo1Opt2: " << topoInput->optcableWord( connName ));
738 cable128 = topoInput->optcableWord( connName );
739 }
else if(connName ==
"Topo1Opt3") {
740 ATH_MSG_DEBUG(
"BIT word Topo1Opt3: " << topoInput->optcableWord( connName ));
742 cable128 = topoInput->optcableWord( connName );
746 for(
uint fpga : {0,1}) {
747 for(
uint clock : {0,1}) {
748 for(
auto &
tl :
conn.triggerLines(fpga,clock)) {
749 uint flatIndex =
tl.flatindex();
752 pass = ((cable128 >> flatIndex).
test(0)) == 0 ? 0 : 1;
755 pass = (cable & (
static_cast<uint64_t>(0x1) << flatIndex)) == 0 ? 0 : 1;
757 if(
size_t pos =
tl.name().find(
'[');
pos == std::string::npos) {
758 thrMultiMap[
tl.name()] = pass;
761 auto thrName =
tl.name().substr(0,
pos);
762 int bit = std::stoi(
tl.name().substr(
pos+1));
763 thrMultiMap.try_emplace(thrName, 0);
764 thrMultiMap[thrName] += (pass << bit);
765 ATH_MSG_DEBUG(thrName <<
" MULT updated mult for topo " << pass);
771 for (
auto & thr :
l1menu->thresholds() ) {
772 if (thr->type() ==
"TOPO" or thr->type() ==
"MULTTOPO" or thr->type() ==
"MUTOPO")
776 if( thr->type() ==
"ZDC" &&
m_doZDC ){
779 if( thr->name() ==
"NIMTRT" &&
m_doTRT ){
785 thrMultiMap[thr->name()] = multiplicity;
786 ATH_MSG_DEBUG( thr->name() <<
" MULT calculated mult for topo " << multiplicity);
790 auto bcid = context.eventID().bunch_crossing_id();
793 for (
size_t bg = 0;
bg < 16; ++
bg ) {
794 std::string bgName(
"BGRP");
813 ATH_MSG_ERROR(
"Did not find L1BunchGroupSet in DetectorStore");
818 thrMultiMap[
"RNDM0"] = 1;
819 thrMultiMap[
"RNDM1"] = 1;
820 thrMultiMap[
"RNDM2"] = 1;
821 thrMultiMap[
"RNDM3"] = 1;
823 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()
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.
◆ fillInputHistograms()
StatusCode LVL1CTP::CTPSimulation::fillInputHistograms |
( |
const EventContext & |
context | ) |
const |
|
private |
Definition at line 415 of file CTPSimulation.cxx.
422 if(jFexJets.isValid()) {
423 get1DHist(
"/input/counts/jJets")->Fill(jFexJets->size());
426 auto h2 = *
get1DHist(
"/input/jets/jJetPhi");
427 for(
const auto jet : *jFexJets ) {
428 h0->Fill(fabs(
jet->et8x8()/1000.));
429 h1->Fill(
jet->eta());
430 h2->Fill(
jet->phi());
440 if(jFexLJets.isValid()) {
441 get1DHist(
"/input/counts/jLets")->Fill(jFexLJets->size());
444 auto h2 = *
get1DHist(
"/input/jets/jLJetPhi");
445 for(
const auto jet : *jFexLJets ) {
446 h0->Fill(fabs(
jet->et8x8()/1000.));
447 h1->Fill(
jet->eta());
448 h2->Fill(
jet->phi());
460 if(gFexJets.isValid()) {
461 get1DHist(
"/input/counts/gJets")->Fill(gFexJets->size());
464 auto h2 = *
get1DHist(
"/input/jets/gJetPhi");
465 for(
const auto jet : *gFexJets ) {
466 h0->Fill(fabs(
jet->et8x8()/1000.));
467 h1->Fill(
jet->eta());
468 h2->Fill(
jet->phi());
478 if( gFexMETPufit.isValid() ) {
479 get1DHist(
"/input/met/Pufit")->Fill(gFexMETPufit->energyT()/1000.);
480 get1DHist(
"/input/met/PufitPhi")->Fill(atan2(gFexMETPufit->energyX(), gFexMETPufit->energyY()));
488 if( gFexMETRho.isValid() ) {
489 get1DHist(
"/input/met/Rho")->Fill(gFexMETRho->energyT()/1000.);
490 get1DHist(
"/input/met/RhoPhi")->Fill(atan2(gFexMETRho->energyX(), gFexMETRho->energyY()));
498 if( gFexMETJwoJ.isValid() ) {
499 get1DHist(
"/input/met/JwoJ")->Fill(gFexMETJwoJ->energyT()/1000.);
500 get1DHist(
"/input/met/JwoJPhi")->Fill(atan2(gFexMETJwoJ->energyX(), gFexMETJwoJ->energyY()));
509 if( eFexCluster.isValid() ) {
510 get1DHist(
"/input/counts/emcluster")->Fill(eFexCluster->size());
514 for(
const auto cl : *eFexCluster ) {
527 if( eFexTau.isValid() ) {
528 get1DHist(
"/input/counts/taus")->Fill(eFexTau->size());
532 auto h3 = *
get1DHist(
"/input/tau/emIso");
533 auto h4 = *
get1DHist(
"/input/tau/hadIso");
534 auto h5 = *
get1DHist(
"/input/tau/R3ClusterET");
535 auto h6 = *
get1DHist(
"/input/tau/R3ClusterIso");
538 for(
const auto tau : *eFexTau ) {
540 h1->Fill(tau->eta());
541 h2->Fill(tau->phi());
542 h3->Fill(tau->emIsol());
543 h4->Fill(tau->hadIsol());
544 h5->Fill(accR3ClET(*tau)/1000.);
545 h6->Fill(accR3ClIso(*tau));
555 if(legacyTopoInput.isValid()) {
557 ATH_MSG_DEBUG(
"L1TopoLegacy0 word 0 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << legacyTopoInput->cableWord1(0));
558 ATH_MSG_DEBUG(
"L1TopoLegacy0 word 1 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << legacyTopoInput->cableWord1(1));
559 ATH_MSG_DEBUG(
"L1TopoLegacy1 word 0 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << legacyTopoInput->cableWord2(0));
560 ATH_MSG_DEBUG(
"L1TopoLegacy1 word 1 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << legacyTopoInput->cableWord2(1));
563 for(
unsigned int i=0;
i<32; ++
i) {
565 if( (legacyTopoInput->cableWord1(0) &
mask) != 0 )
h0->Fill(
i);
566 if( (legacyTopoInput->cableWord1(1) &
mask) != 0 )
h0->Fill(32 +
i);
567 if( (legacyTopoInput->cableWord2(0) &
mask) != 0 )
h1->Fill(
i);
568 if( (legacyTopoInput->cableWord2(1) &
mask) != 0 )
h1->Fill(32 +
i);
575 if(topoInput.isValid()) {
577 ATH_MSG_DEBUG(
"L1Topo0 word 0 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << topoInput->cableWord1(0));
578 ATH_MSG_DEBUG(
"L1Topo0 word 1 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << topoInput->cableWord1(1));
579 ATH_MSG_DEBUG(
"L1Topo1 word 0 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << topoInput->cableWord2(0));
580 ATH_MSG_DEBUG(
"L1Topo1 word 1 is: 0x" << std::hex << std::setw( 8 ) << std::setfill(
'0' ) << topoInput->cableWord2(1));
583 for(
unsigned int i=0;
i<32; ++
i) {
585 if( (topoInput->cableWord1(0) &
mask) != 0 )
h0->Fill(
i);
586 if( (topoInput->cableWord1(1) &
mask) != 0 )
h0->Fill(32 +
i);
587 if( (topoInput->cableWord2(0) &
mask) != 0 )
h1->Fill(
i);
588 if( (topoInput->cableWord2(1) &
mask) != 0 )
h1->Fill(32 +
i);
590 auto h2 = *
get1DHist(
"/input/topo/Topo1Opt0");
591 auto h3 = *
get1DHist(
"/input/topo/Topo1Opt1");
592 auto h4 = *
get1DHist(
"/input/topo/Topo1Opt2");
593 auto h5 = *
get1DHist(
"/input/topo/Topo1Opt3");
594 for(
unsigned int i=0;
i<128;
i += 3) {
595 std::bitset<128>
mask = 0x11;
mask <<=
i;
596 if( (topoInput->optcableWord(
"Topo1Opt0") &
mask) != 0 ) h2->Fill(
i);
597 if( (topoInput->optcableWord(
"Topo1Opt1") &
mask) != 0 ) h3->Fill(
i);
598 if( (topoInput->optcableWord(
"Topo1Opt2") &
mask) != 0 ) h4->Fill(
i);
599 if( (topoInput->optcableWord(
"Topo1Opt3") &
mask) != 0 ) h5->Fill(
i);
607 auto bcid = context.eventID().bunch_crossing_id();
610 return StatusCode::SUCCESS;
◆ filterPassed()
◆ get1DHist()
LockedHandle< TH1 > & LVL1CTP::CTPSimulation::get1DHist |
( |
const std::string & |
histName | ) |
const |
|
private |
◆ get2DHist()
LockedHandle< TH2 > & LVL1CTP::CTPSimulation::get2DHist |
( |
const std::string & |
histName | ) |
const |
|
private |
◆ getBaseHistPath()
std::string LVL1CTP::CTPSimulation::getBaseHistPath |
( |
| ) |
const |
|
private |
Definition at line 191 of file CTPSimulation.cxx.
193 if(baseHistPath.back()!=
'/') baseHistPath +=
"/";
194 baseHistPath +=
name();
◆ hbook() [1/2]
StatusCode LVL1CTP::CTPSimulation::hbook |
( |
const std::string & |
path, |
|
|
std::unique_ptr< TH1 > |
hist |
|
) |
| |
|
private |
Definition at line 199 of file CTPSimulation.cxx.
200 const std::string &
hname(
hist->GetName());
203 if(
key.back()!=
'/')
key +=
"/";
208 return StatusCode::RECOVERABLE;
211 LockedHandle<TH1>
lh;
213 if(
sc.isSuccess() ) {
◆ hbook() [2/2]
StatusCode LVL1CTP::CTPSimulation::hbook |
( |
const std::string & |
path, |
|
|
std::unique_ptr< TH2 > |
hist |
|
) |
| |
|
private |
Definition at line 223 of file CTPSimulation.cxx.
224 const std::string &
hname(
hist->GetName());
227 if(
key.back()!=
'/')
key +=
"/";
232 return StatusCode::RECOVERABLE;
235 LockedHandle<TH2>
lh;
237 if(
sc.isSuccess() ) {
◆ initialize()
StatusCode LVL1CTP::CTPSimulation::initialize |
( |
| ) |
|
|
overridevirtual |
◆ 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()
◆ setHistLabels()
Definition at line 269 of file CTPSimulation.cxx.
282 std::vector<std::string> connNames =
l1menu.connectorNames();
283 for(
const std::string connName : {
"LegacyTopo0",
"LegacyTopo1",
"Topo1El",
"Topo2El",
"Topo3El",
"Topo1Opt0",
"Topo1Opt1",
"Topo1Opt2",
"Topo1Opt3"}) {
284 if(
find(connNames.begin(), connNames.end(), connName) == connNames.end() ) {
287 auto hTopo = *
get1DHist(
"/input/topo/" + connName);
288 for(
uint fpga : {0,1}) {
289 for(
uint clock : {0,1}) {
290 for(
auto &
tl :
l1menu.connector(connName).triggerLines(fpga,clock)) {
291 uint flatIndex =
tl.flatindex();
292 hTopo->GetXaxis()->SetBinLabel(flatIndex+1,
tl.name().c_str());
298 std::vector<std::string> orderedItemnames;
299 orderedItemnames.reserve(
l1menu.size() );
301 orderedItemnames.emplace_back(
item.name());
303 std::sort(orderedItemnames.begin(), orderedItemnames.end());
306 auto tbpById = *
get1DHist(
"/output/tbpById" );
307 auto tapById = *
get1DHist(
"/output/tapById" );
308 auto tavById = *
get1DHist(
"/output/tavById" );
309 auto tbpByName = *
get1DHist(
"/output/tbpByName" );
310 auto tapByName = *
get1DHist(
"/output/tapByName" );
311 auto tavByName = *
get1DHist(
"/output/tavByName" );
312 unsigned int bin = 1;
313 for (
const std::string & itemname : orderedItemnames ) {
314 unsigned int ctpId(0);
316 ctpId =
item.ctpId();
317 tbpById->GetXaxis()->SetBinLabel( ctpId+1, itemname.c_str() );
318 tapById->GetXaxis()->SetBinLabel( ctpId+1, itemname.c_str() );
319 tavById->GetXaxis()->SetBinLabel( ctpId+1, itemname.c_str() );
320 tbpByName->GetXaxis()->SetBinLabel(
bin, itemname.c_str() );
321 tapByName->GetXaxis()->SetBinLabel(
bin, itemname.c_str() );
322 tavByName->GetXaxis()->SetBinLabel(
bin++, itemname.c_str() );
325 return StatusCode::SUCCESS;
◆ setMultiplicityHistLabels()
Definition at line 159 of file CTPSimulation.cxx.
161 std::map<std::string,std::vector<std::string>> typeMapping = {
163 {
"jet", {
"JET",
"jJ",
"jLJ",
"gJ",
"gLJ"} },
164 {
"xe", {
"XE",
"gXE",
"jXE"} },
165 {
"te", {
"TE",
"jTE",
"gTE"} },
167 {
"em", {
"EM",
"eEM",
"jEM"} },
168 {
"tau", {
"TAU",
"eTAU",
"jTAU",
"cTAU"} }
172 std::vector<TrigConf::L1Threshold> thrV;
173 for(
const std::string &
t : typeMapping[
type] ) {
176 auto & thrV =
l1menu.thresholds(
t);
177 while(
hist->GetNbinsX() < (
int)thrV.size() ) {
178 hist->LabelsInflate(
"xaxis");
180 for(
auto thr : thrV) {
181 hist->GetXaxis()->SetBinLabel(thr->mapping()+1, thr->name().c_str() );
184 ATH_MSG_DEBUG(
"Caught exception when setting new JSON MultiplicityHistLabel " <<
t <<
" : " << ex.what());
◆ simulateItems()
StatusCode LVL1CTP::CTPSimulation::simulateItems |
( |
const std::map< std::string, unsigned int > & |
thrMultiMap, |
|
|
const EventContext & |
context |
|
) |
| const |
|
private |
Definition at line 1123 of file CTPSimulation.cxx.
1127 std::vector<uint32_t> tip;
1130 std::map<std::string, unsigned int> itemDecisionMap;
1134 std::vector<uint32_t> tbp;
1135 std::vector<uint32_t>
tap;
1136 std::vector<uint32_t> tav;
1144 auto eventID = context.eventID();
1151 ATH_CHECK( rdoWriteHandle.record( std::move(rdo) ));
1152 ATH_CHECK( sLinkWriteHandle.record( std::move(roi) ));
1156 auto tbpById = *
get1DHist(
"/output/tbpById" );
1157 auto tapById = *
get1DHist(
"/output/tapById" );
1158 auto tavById = *
get1DHist(
"/output/tavById" );
1159 for(
unsigned int ctpId= 0; ctpId < 512; ++ctpId ) {
1160 unsigned int wordNr = ctpId / 32;
1161 unsigned int posWithinWord = ctpId % 32;
1162 auto mask = 1L << posWithinWord;
1163 if( 0 != (tbp[wordNr] &
mask) ) {
1164 tbpById->Fill( ctpId );
1166 if( 0 != (
tap[wordNr] &
mask) ) {
1167 tapById->Fill( ctpId );
1169 if( 0 != (tav[wordNr] &
mask) ) {
1170 tavById->Fill( ctpId );
1174 return StatusCode::SUCCESS;
◆ start()
StatusCode LVL1CTP::CTPSimulation::start |
( |
| ) |
|
|
overridevirtual |
◆ stop()
StatusCode LVL1CTP::CTPSimulation::stop |
( |
| ) |
|
|
overridevirtual |
Definition at line 1179 of file CTPSimulation.cxx.
1184 constexpr
unsigned int sizeOfCTPOutput = 512;
1186 unsigned int tbp[sizeOfCTPOutput];
1187 unsigned int tap[sizeOfCTPOutput];
1188 unsigned int tav[sizeOfCTPOutput];
1191 for(
unsigned int id = 0;
id < sizeOfCTPOutput; ++
id ) tbp[
id] =
h->GetBinContent(
id+1);
1195 for(
unsigned int id = 0;
id < sizeOfCTPOutput; ++
id )
tap[
id] =
h->GetBinContent(
id+1);
1199 for(
unsigned int id = 0;
id < sizeOfCTPOutput; ++
id ) tav[
id] =
h->GetBinContent(
id+1);
1204 auto htbp = *
get1DHist(
"/output/tbpByName" );
1205 auto htap = *
get1DHist(
"/output/tapByName" );
1206 auto htav = *
get1DHist(
"/output/tavByName" );
1208 unsigned int ctpId =
item.ctpId();
1209 htbp->Fill(
item.name().c_str(), tbp[ctpId]);
1210 htap->Fill(
item.name().c_str(),
tap[ctpId]);
1211 htav->Fill(
item.name().c_str(), tav[ctpId]);
1216 htbp->LabelsDeflate();
1217 htap->LabelsDeflate();
1218 htav->LabelsDeflate();
1225 std::vector<std::string> thrHists{
"em/EM",
"muon/MU",
"tau/TAU",
"jet/JET",
"xe/XE",
"te/TE",
"xs/XS" };
1227 for(
const std::string &
histpath : thrHists) {
1229 auto xaxis =
h->GetXaxis();
1230 size_t xsize = xaxis->GetNbins();
1231 size_t ysize =
h->GetNbinsY();
1232 for(
size_t x = 1;
x<xsize;
x++) {
1234 for(
size_t y = 1;
y<=ysize;
y++) {
1235 size_t binContent =
h->GetBinContent(
x,
y);
1236 hist->Fill(xaxis->GetBinLabel(
x),
y-1,binContent);
1239 ATH_MSG_DEBUG(
"REGTEST CTPSim " << xaxis->GetBinLabel(
x) <<
" MULT " <<
s);
1243 hist->LabelsDeflate();
1248 std::vector<std::string> thrHists = {
"em/eEM",
"em/jEM",
"muon/MU",
"tau/eTAU",
"tau/jTAU",
"tau/cTAU",
"jet/jJ",
"jet/jLJ",
"jet/gJ",
"jet/gLJ",
"xe/gXE",
"xe/jXE",
"te/jTE",
"te/gTE" };
1249 for(
const std::string &
histpath : thrHists) {
1251 auto xaxis =
h->GetXaxis();
1252 size_t xsize = xaxis->GetNbins();
1253 size_t ysize =
h->GetNbinsY();
1254 for(
size_t x = 1;
x<=xsize;
x++) {
1256 for(
size_t y = 1;
y<=ysize;
y++) {
1257 size_t binContent =
h->GetBinContent(
x,
y);
1258 hist->Fill(xaxis->GetBinLabel(
x) ,
y-1, binContent);
1261 ATH_MSG_DEBUG(
"REGTEST CTPSim " << xaxis->GetBinLabel(
x) <<
" MULT " <<
s);
1265 hist->LabelsDeflate();
1271 " TBP " << tbp[
item.ctpId()] <<
1272 " TAP " <<
tap[
item.ctpId()] <<
1273 " TAV " << tav[
item.ctpId()]);
1276 return StatusCode::SUCCESS;
◆ storeMetadata()
StatusCode LVL1CTP::CTPSimulation::storeMetadata |
( |
| ) |
|
|
private |
Definition at line 1284 of file CTPSimulation.cxx.
1285 std::vector<std::string> storedPaths;
1292 std::scoped_lock<std::mutex> metadataLock(s_metadataMutex);
1293 for (
const auto &
path : storedPaths) {
1294 size_t pos =
path.find_last_of(
'/');
1295 auto splitPath = std::make_pair(
path.substr(0,
pos),
path.substr(
pos + 1));
1296 std::string treePath = splitPath.first +
"/metadata";
1298 char triggerData[] =
"<none>";
1299 const std::string mergeDataStr =
"<default>";
1300 std::vector<char> mergeData{mergeDataStr.begin(), mergeDataStr.end()};
1301 mergeData.push_back(
'\0');
1304 auto tree = std::make_unique<TTree>(
"metadata",
"Monitoring Metadata");
1305 tree->SetDirectory(
nullptr);
1306 tree->Branch(
"Name", &(splitPath.second[0]),
"Name/C");
1307 tree->Branch(
"Interval", &(
interval[0]),
"Interval/C");
1308 tree->Branch(
"TriggerChain", triggerData,
"TriggerChain/C");
1309 tree->Branch(
"MergeMethod", mergeData.data(),
"MergeMethod/C");
1314 <<
"Failed to register DQ metadata TTree " << treePath <<
endmsg;
1317 TTree *
tree{
nullptr};
1319 tree->SetBranchAddress(
"Name", &(splitPath.second[0]));
1321 tree->SetBranchAddress(
"TriggerChain", triggerData);
1322 tree->SetBranchAddress(
"MergeMethod", mergeData.data());
1327 <<
"Failed to retrieve DQ metadata TTree " << treePath <<
" which is reported to exist" <<
endmsg;
1331 return StatusCode::SUCCESS;
◆ 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()
◆ m_bgKey
◆ m_bunchGroupPattern
Gaudi::Property<unsigned int> LVL1CTP::CTPSimulation::m_bunchGroupPattern { this, "BunchGroupPattern", 0x0003, "Bunchgroup pattern applied at every event, useful for simulation. Bit x corresponds to bunchgroup x" } |
|
private |
◆ m_detStore
◆ m_doL1CaloLegacy
Gaudi::Property<bool> LVL1CTP::CTPSimulation::m_doL1CaloLegacy { this, "DoL1CaloLegacy", false, "Use L1Calo legacy" } |
|
private |
◆ m_doL1Topo
Gaudi::Property<bool> LVL1CTP::CTPSimulation::m_doL1Topo { this, "DoL1Topo", false, "Use L1Topo" } |
|
private |
◆ m_doL1TopoLegacy
Gaudi::Property<bool> LVL1CTP::CTPSimulation::m_doL1TopoLegacy { this, "DoL1TopoLegacy", false, "Use L1Topo Legacy" } |
|
private |
◆ m_doTRT
Gaudi::Property<bool> LVL1CTP::CTPSimulation::m_doTRT {this, "DoTRT", false, "emulate CTP with TRT included"} |
|
private |
◆ m_doZDC
Gaudi::Property<bool> LVL1CTP::CTPSimulation::m_doZDC {this, "DoZDC", false, "emulate CTP with ZDC included"} |
|
private |
◆ 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_forceBunchGroupPattern
Gaudi::Property<bool> LVL1CTP::CTPSimulation::m_forceBunchGroupPattern { this, "ForceBunchGroupPattern", true, "When true, ignore the bunchgroups and use the provided BunchGroupPattern" } |
|
private |
◆ m_hist1D
std::map<std::string, LockedHandle<TH1> > LVL1CTP::CTPSimulation::m_hist1D |
|
private |
◆ m_hist2D
std::map<std::string, LockedHandle<TH2> > LVL1CTP::CTPSimulation::m_hist2D |
|
private |
◆ m_histPath
Gaudi::Property<std::string> LVL1CTP::CTPSimulation::m_histPath { this, "HistPath", "/EXPERT/L1", "Booking path for the histogram" } |
|
private |
◆ m_histSvc
ServiceHandle<ITHistSvc> LVL1CTP::CTPSimulation::m_histSvc { this, "THistSvc", "THistSvc/THistSvc", "Histogramming svc" } |
|
private |
◆ m_iKeyCtpinEM
SG::ReadHandleKey<LVL1::EmTauCTP> LVL1CTP::CTPSimulation::m_iKeyCtpinEM { this, "CtpinEMInput", LVL1::TrigT1CaloDefs::EmTauCTPLocation, "Input from CTPIN em and tau (legacy)" } |
|
private |
◆ m_iKeyCtpinJet
SG::ReadHandleKey<LVL1::JetCTP> LVL1CTP::CTPSimulation::m_iKeyCtpinJet { this, "CtpinJetInput", LVL1::TrigT1CaloDefs::JetCTPLocation, "Input from CTPIN jet (legacy)" } |
|
private |
◆ m_iKeyCtpinXE
SG::ReadHandleKey<LVL1::EnergyCTP> LVL1CTP::CTPSimulation::m_iKeyCtpinXE { this, "CtpinXEInput", LVL1::TrigT1CaloDefs::EnergyCTPLocation, "Input from CTPIN energy (te,xe,xs - legacy)" } |
|
private |
◆ m_iKeyEFexCluster
◆ m_iKeyEFexTau
◆ m_iKeyGFexJets
◆ m_iKeyGFexMETJwoJ
◆ m_iKeyGFexMETNC
◆ m_iKeyGFexMETRho
◆ m_iKeyJFexJets
◆ m_iKeyJFexLJets
◆ m_iKeyLegacyTopo
◆ m_iKeyMuctpi
◆ m_iKeyTopo
◆ m_iKeyTRT
◆ m_iKeyZDC
◆ m_isData
Gaudi::Property<bool> LVL1CTP::CTPSimulation::m_isData { this, "IsData", false, "emulate CTP as part of MC or rerun on data" } |
|
private |
◆ m_muonRun2Format
Gaudi::Property<bool> LVL1CTP::CTPSimulation::m_muonRun2Format { this, "MuonMultiplicityRun2Format", false, "Interpret muon multiplicity in Run 2 format (bit 0 unused)" } |
|
private |
◆ m_oKeyRDO
SG::WriteHandleKey<CTP_RDO> LVL1CTP::CTPSimulation::m_oKeyRDO {this, "RDOOutput", LVL1CTP::DEFAULT_RDOOutputLocation, "Output of CTP RDO object (sim)"} |
|
private |
◆ m_oKeySLink
SG::WriteHandleKey<CTPSLink> LVL1CTP::CTPSimulation::m_oKeySLink {this, "ROIOutput", LVL1CTP::DEFAULT_CTPSLinkLocation, "Output of CTP SLink object (sim)"} |
|
private |
◆ m_resultBuilder
◆ m_RNGEngines
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
ToolHandle< LVL1CTP::ResultBuilder > m_resultBuilder
def retrieve(aClass, aKey=None)
const ptree & data() const
Access to the underlying data, if needed.
unsigned int mapping() const
Accessor to the mapping number The mapping is unique within a type.
ServiceHandle< ITHistSvc > m_histSvc
SG::ReadHandleKey< xAOD::JetRoIContainer > m_iKeyJFexJets
path
python interpreter configuration --------------------------------------—
std::string find(const std::string &s)
return a remapped string
StatusCode extractMultiplicities(std::map< std::string, unsigned int > &thrMultiMap, const EventContext &context) const
SG::ReadHandleKey< xAOD::EnergySumRoI > m_iKeyGFexMETRho
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Gaudi::Property< bool > m_doZDC
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)
SG::WriteHandleKey< CTPSLink > m_oKeySLink
std::map< std::string, LockedHandle< TH1 > > m_hist1D
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool msgLvl(const MSG::Level lvl) const
T getAttribute(const std::string &key, bool ignoreIfMissing=false, const T &def=T()) const
Access to simple attribute.
SG::WriteHandleKey< CTP_RDO > m_oKeyRDO
StatusCode createMultiplicityHist(const std::string &type, unsigned int maxMult=10)
const std::string & type() const
Accessor to the threshold type.
Helper class to provide constant type-safe access to aux data.
unsigned int calculateEMMultiplicity(const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const
StatusCode setMultiplicityHistLabels(const TrigConf::L1Menu &l1menu, const std::string &type)
unsigned int calculateTauMultiplicity(const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const
Gaudi::Property< unsigned int > m_bunchGroupPattern
Property holding a SG store/key/clid from which a ReadHandle is made.
bool empty() const
Test if the key is blank.
virtual const std::string & name() const final
const std::shared_ptr< L1BunchGroup > & getBunchGroup(const std::string &name) const
Accessor to the bunchgroup by name.
SG::ReadHandleKey< xAOD::EmTauRoIContainer > m_iKeyEFexTau
IMessageSvc * getMessageSvc(bool quiet=false)
LockedHandle< TH2 > & get2DHist(const std::string &histName) const
Gaudi::Property< std::string > m_histPath
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual void setOwner(IDataHandleHolder *o)=0
An algorithm that can be simultaneously executed in multiple threads.
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
std::string getBaseHistPath() const
SG::ReadHandleKey< LVL1::EnergyCTP > m_iKeyCtpinXE
virtual const DataObjIDColl & extraOutputDeps() const override
Return the list of extra output dependencies.
static int getMult(uint64_t word, unsigned int startbit, unsigned int endbit)
extract multiplicities using new trigger configuration interface
SG::ReadHandleKey< xAOD::JetRoIContainer > m_iKeyJFexLJets
const std::function< CLHEP::HepRandomEngine *(void) > CTPSimRanluxFactory
StatusCode hbook(const std::string &path, std::unique_ptr< TH1 > hist)
unsigned int calculateTopoMultiplicity(const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context, bool UseLegacy) const
StatusCode storeMetadata()
unsigned int calculateMETMultiplicity(const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const
float eT(const U &p)
Accessor utility function for getting the value of Tranverse energy.
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
unsigned int calculateJetMultiplicity(const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const
virtual StatusCode assign(const std::string &sgkey)
Change the key of the object to which we're referring.
::StatusCode StatusCode
StatusCode definition for legacy code.
LockedHandle< TH1 > & get1DHist(const std::string &histName) const
virtual StatusCode sysExecute(const EventContext &ctx) override
Execute an algorithm.
unsigned int calculateTopoOptMultiplicity(const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const
Gaudi::Property< bool > m_doTRT
virtual float thrValue(int eta=0) const
Accessor to the threshold value for eta-dependent threholds.
L1 threshold configuration.
#define CHECK(...)
Evaluate an expression and check for errors.
constexpr std::size_t maxNBunchGroups() const
Maximum number of bunchgroups.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
SG::ReadHandleKey< LVL1::JetCTP > m_iKeyCtpinJet
virtual void renounce()=0
static int getOptMult(std::bitset< 128 > bits, unsigned int startbit, unsigned int endbit)
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Gaudi::Property< bool > m_isData
StatusCode simulateItems(const std::map< std::string, unsigned int > &thrMultiMap, const EventContext &context) const
Gaudi::Property< bool > m_doL1TopoLegacy
Gaudi::Property< bool > m_forceBunchGroupPattern
StatusCode setHistLabels(const TrigConf::L1Menu &l1menu)
std::string to_string(const DetectorType &type)
Gaudi::Property< bool > m_muonRun2Format
StatusCode initialize(bool used=true)
setEventNumber setTimeStamp bcid
std::map< std::string, LockedHandle< TH2 > > m_hist2D
SG::ReadHandleKey< xAOD::EnergySumRoI > m_iKeyGFexMETNC
SG::ReadHandleKey< xAOD::EnergySumRoI > m_iKeyGFexMETJwoJ
unsigned int calculateMuonMultiplicity(const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
SG::ReadHandleKey< LVL1::FrontPanelCTP > m_iKeyLegacyTopo
static int getMuonMult(unsigned int word, int threshold)
get Muon multiplicty in legacy mode
SG::ReadCondHandleKey< TrigConf::L1BunchGroupSet > m_bgKey
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< LVL1::ZdcCTP > m_iKeyZDC
static unsigned int getMultTopo(uint64_t word, unsigned int startbit, unsigned int endbit, unsigned int clock)
extract multiplicities from Topo words, were the encoding is different
size_t getNSlots()
Return the number of event slots.
unsigned int calculateMultiplicity(const TrigConf::L1Threshold &confThr, const TrigConf::L1Menu *l1menu, const EventContext &context) const
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
StatusCode fillInputHistograms(const EventContext &context) const
virtual StatusCode sysInitialize() override
Override sysInitialize.
SG::ReadHandleKey< LVL1::MuCTPICTP > m_iKeyMuctpi
SG::ReadHandleKey< xAOD::TrigEMClusterContainer > m_iKeyEFexCluster
#define ATLAS_THREAD_SAFE
Gaudi::Property< bool > m_doL1CaloLegacy
Gaudi::Property< bool > m_doL1Topo
SG::ReadHandleKey< LVL1::TrtCTP > m_iKeyTRT
SG::ReadHandleKey< LVL1::EmTauCTP > m_iKeyCtpinEM
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
SG::ReadHandleKey< xAOD::JetRoIContainer > m_iKeyGFexJets
SG::ReadHandleKey< LVL1::FrontPanelCTP > m_iKeyTopo
ATHRNG::RNGWrapper m_RNGEngines