ATLAS Offline Software
Loading...
Searching...
No Matches
DerivationFramework::TriggerTowerThinningAlg Class Reference

#include <TriggerTowerThinningAlg.h>

Inheritance diagram for DerivationFramework::TriggerTowerThinningAlg:
Collaboration diagram for DerivationFramework::TriggerTowerThinningAlg:

Public Member Functions

 TriggerTowerThinningAlg (const std::string &t, const std::string &n, const IInterface *p)
virtual ~TriggerTowerThinningAlg ()
virtual StatusCode initialize () override
virtual StatusCode finalize () override
virtual StatusCode doThinning (const EventContext &ctx) const override

Private Attributes

StringProperty m_streamName { this, "StreamName", "", "Name of the stream being thinned" }
SG::ThinningHandleKey< xAOD::TriggerTowerContainerm_triggerTowerLocation { this, "TriggerTowerLocation", LVL1::TrigT1CaloDefs::xAODTriggerTowerLocation, "" }
SG::ReadDecorHandleKey< xAOD::TriggerTowerContainerm_caloCellETByLayerKey { this, "CaloCellETByLayerKey", m_triggerTowerLocation.key()+".CaloCellETByLayer", "" }
double m_minCaloCellET
int m_minADC
bool m_useRandom
double m_minRandom
std::atomic< unsigned long > m_nEventsProcessed
std::atomic< unsigned long > m_nEventsAllTriggerTowersKeptByRandom
std::atomic< unsigned long > m_nTriggerTowersProcessed
std::atomic< unsigned long > m_nTriggerTowersKept
std::atomic< unsigned long > m_nTriggerTowersRejected
ServiceHandle< IAthRNGSvcm_rndmSvc { this, "RndmSvc", "AthRNGSvc", "" }

Detailed Description

Definition at line 41 of file TriggerTowerThinningAlg.h.

Constructor & Destructor Documentation

◆ TriggerTowerThinningAlg()

TriggerTowerThinningAlg::TriggerTowerThinningAlg ( const std::string & t,
const std::string & n,
const IInterface * p )

Definition at line 33 of file TriggerTowerThinningAlg.cxx.

33 :
34 base_class(t,n,p),
35 m_minCaloCellET(0.4),
36 m_minADC(32),
37 m_useRandom(false),
38 m_minRandom(0.03),
44 {
45 declareProperty("MinCaloCellET",m_minCaloCellET);
46 declareProperty("MinADC",m_minADC);
47 declareProperty("UseRandom",m_useRandom);
48 declareProperty("MinRandom",m_minRandom);
49 }
std::atomic< unsigned long > m_nEventsAllTriggerTowersKeptByRandom

◆ ~TriggerTowerThinningAlg()

TriggerTowerThinningAlg::~TriggerTowerThinningAlg ( )
virtual

Definition at line 51 of file TriggerTowerThinningAlg.cxx.

52 {
53 }

Member Function Documentation

◆ doThinning()

StatusCode TriggerTowerThinningAlg::doThinning ( const EventContext & ctx) const
overridevirtual

Definition at line 66 of file TriggerTowerThinningAlg.cxx.

66 {
67
68 // Create the mask to be used for thinning
69 std::vector<bool> mask;
70
71 // Counters
72 unsigned long nKeep(0),nReject(0),nTotal(0);
74
75 SG::ThinningHandle<xAOD::TriggerTowerContainer> tts
77
78 mask.assign(tts->size(),false); // default: don't keep any clusters
79
80 // Should we save the trigger tower or not???
81 // If this is calibration data, then yes - save the lot
82 // Randomly save all trigger towers m_minRandom % of the time.
83 //
84 // If this is collisions data then only save if:
85 // 1.) Any ADC value is greater than m_minADC OR
86 // 2.) The CaloCell ET is greater than m_minCaloCellET
87
88 bool globalSaveMe(false);
89 // Random number save all
90 if(m_useRandom == true){
91 if(globalSaveMe == false){
92 ATHRNG::RNGWrapper* wrapper = m_rndmSvc->getEngine (this);
93 wrapper->setSeed (this->name(), ctx);
94 CLHEP::HepRandomEngine* engine = wrapper->getEngine (ctx);
95 if (CLHEP::RandFlat::shoot (engine) < m_minRandom) {
96 globalSaveMe = true;
98 }
99 }
100 }
101
102 SG::ReadDecorHandle<xAOD::TriggerTowerContainer, std::vector<float> > caloCellETByLayerHandle(m_caloCellETByLayerKey, ctx);
103 bool isDecorAvailable = caloCellETByLayerHandle.isAvailable();
104
105 // Iterate over all trigger towers
106 for(auto tt : *tts){
107
108 bool saveMe(false);
109 if(globalSaveMe == true){saveMe = true;}
110
111 // Test for Calo ET
112 if(saveMe == false){
113 if (isDecorAvailable) {
114 const std::vector<float>& caloCellETByLayer = caloCellETByLayerHandle(*tt);
115
116 float totalCaloCellET(0.);
117 for (float c : caloCellETByLayer) {
118 totalCaloCellET += c;
119 }
120 if (totalCaloCellET > m_minCaloCellET) {
121 saveMe = true;
122 }
123 }
124 }
125
126
127 // Test for ADC values
128 if (saveMe == false) {
129 const std::vector<uint16_t>& ttADC = tt->adc();
130 for (uint16_t i : ttADC) {
131 if ( i > m_minADC) {
132 saveMe = true;
133 break;
134 }
135 }
136 }
137
138 // assign result to mask
139 mask[nTotal] = saveMe;
140
141 ++nTotal;
142 } // End loop over trigger towers
143
144
145 tts.keep (mask);
146
147 // Counters
149 // FIXME: nKeep is always 0
150 m_nTriggerTowersKept += nKeep;
151 m_nTriggerTowersRejected += nReject;
152
153 ATH_MSG_DEBUG(" L1Calo Trigger Tower Thinning statistics: keeping " << nKeep << " cells"
154 << " and rejecting " << nReject << " cells");
155
156
157 return StatusCode::SUCCESS;
158 }
#define ATH_MSG_DEBUG(x)
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
Definition RNGWrapper.h:169
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
Definition RNGWrapper.h:134
SG::ReadDecorHandleKey< xAOD::TriggerTowerContainer > m_caloCellETByLayerKey
SG::ThinningHandleKey< xAOD::TriggerTowerContainer > m_triggerTowerLocation

◆ finalize()

StatusCode TriggerTowerThinningAlg::finalize ( )
overridevirtual

Definition at line 160 of file TriggerTowerThinningAlg.cxx.

160 {
161
163 "==> finalize " << name() << "...\n"
164 << "***************************************************************\n"
165 << "Results of " << name() << " thinning algorithm:\n"
166 << "-------------");
167 ATH_MSG_INFO(" Number of processed events: " << m_nEventsProcessed);
168
171 " Average percent of Trigger Towers kept = "
172 << 100.0 * m_nTriggerTowersKept / (double)m_nTriggerTowersProcessed << " %");
173 }
174 if(m_useRandom == true && m_nEventsProcessed > 0){
176 " Percentage of events where all Trigger Towers were kept (should be approx "<< 100.0*m_minRandom << ") = "
178 }
179
180
181 return StatusCode::SUCCESS;
182 }
#define ATH_MSG_INFO(x)

◆ initialize()

StatusCode TriggerTowerThinningAlg::initialize ( )
overridevirtual

Definition at line 55 of file TriggerTowerThinningAlg.cxx.

55 {
56 ATH_MSG_INFO("L1Calo TriggerTowerThinningAlg::initialize()");
57
60
61 ATH_CHECK( m_rndmSvc.retrieve() );
62
63 return StatusCode::SUCCESS;
64 }
#define ATH_CHECK
Evaluate an expression and check for errors.

Member Data Documentation

◆ m_caloCellETByLayerKey

SG::ReadDecorHandleKey<xAOD::TriggerTowerContainer> DerivationFramework::TriggerTowerThinningAlg::m_caloCellETByLayerKey { this, "CaloCellETByLayerKey", m_triggerTowerLocation.key()+".CaloCellETByLayer", "" }
private

Definition at line 58 of file TriggerTowerThinningAlg.h.

59{ this, "CaloCellETByLayerKey", m_triggerTowerLocation.key()+".CaloCellETByLayer", "" };

◆ m_minADC

int DerivationFramework::TriggerTowerThinningAlg::m_minADC
private

Definition at line 63 of file TriggerTowerThinningAlg.h.

◆ m_minCaloCellET

double DerivationFramework::TriggerTowerThinningAlg::m_minCaloCellET
private

Definition at line 62 of file TriggerTowerThinningAlg.h.

◆ m_minRandom

double DerivationFramework::TriggerTowerThinningAlg::m_minRandom
private

Definition at line 65 of file TriggerTowerThinningAlg.h.

◆ m_nEventsAllTriggerTowersKeptByRandom

std::atomic<unsigned long> DerivationFramework::TriggerTowerThinningAlg::m_nEventsAllTriggerTowersKeptByRandom
mutableprivate

Definition at line 69 of file TriggerTowerThinningAlg.h.

◆ m_nEventsProcessed

std::atomic<unsigned long> DerivationFramework::TriggerTowerThinningAlg::m_nEventsProcessed
mutableprivate

Definition at line 68 of file TriggerTowerThinningAlg.h.

◆ m_nTriggerTowersKept

std::atomic<unsigned long> DerivationFramework::TriggerTowerThinningAlg::m_nTriggerTowersKept
mutableprivate

Definition at line 71 of file TriggerTowerThinningAlg.h.

◆ m_nTriggerTowersProcessed

std::atomic<unsigned long> DerivationFramework::TriggerTowerThinningAlg::m_nTriggerTowersProcessed
mutableprivate

Definition at line 70 of file TriggerTowerThinningAlg.h.

◆ m_nTriggerTowersRejected

std::atomic<unsigned long> DerivationFramework::TriggerTowerThinningAlg::m_nTriggerTowersRejected
mutableprivate

Definition at line 72 of file TriggerTowerThinningAlg.h.

◆ m_rndmSvc

ServiceHandle<IAthRNGSvc> DerivationFramework::TriggerTowerThinningAlg::m_rndmSvc { this, "RndmSvc", "AthRNGSvc", "" }
private

Definition at line 75 of file TriggerTowerThinningAlg.h.

76{ this, "RndmSvc", "AthRNGSvc", "" };

◆ m_streamName

StringProperty DerivationFramework::TriggerTowerThinningAlg::m_streamName { this, "StreamName", "", "Name of the stream being thinned" }
private

Definition at line 52 of file TriggerTowerThinningAlg.h.

53{ this, "StreamName", "", "Name of the stream being thinned" };

◆ m_triggerTowerLocation

SG::ThinningHandleKey<xAOD::TriggerTowerContainer> DerivationFramework::TriggerTowerThinningAlg::m_triggerTowerLocation { this, "TriggerTowerLocation", LVL1::TrigT1CaloDefs::xAODTriggerTowerLocation, "" }
private

Definition at line 55 of file TriggerTowerThinningAlg.h.

56{ this, "TriggerTowerLocation", LVL1::TrigT1CaloDefs::xAODTriggerTowerLocation, "" };
static const std::string xAODTriggerTowerLocation

◆ m_useRandom

bool DerivationFramework::TriggerTowerThinningAlg::m_useRandom
private

Definition at line 64 of file TriggerTowerThinningAlg.h.


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