|
| L1JetElementTools (const std::string &, const std::string &, const IInterface *) |
| Constructor. More...
|
|
virtual | ~L1JetElementTools () |
| default destructor More...
|
|
virtual StatusCode | initialize () |
| standard Athena-Algorithm method More...
|
|
virtual StatusCode | finalize () |
| standard Athena-Algorithm method More...
|
|
virtual void | makeJetElements (const xAOD::TriggerTowerContainer *tts, xAOD::JetElementContainer *jetElements) const |
| Fill DataVector of JetElements from user-supplied TriggerTowers. More...
|
|
virtual void | mapJetElements (const xAOD::JetElementContainer *jetElements, xAOD::JetElementMap_t *map) const |
| Fill map of JetElements from user-supplied vector of TriggerTowers. More...
|
|
virtual void | makeJetElements (const DataVector< TriggerTower > *tts, DataVector< JetElement > *jetElements) const |
| Fill DataVector of JetElements from user-supplied vector of TriggerTowers. More...
|
|
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 | sysInitialize () override |
| Perform system initialization for an algorithm. 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 |
|
|
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...
|
|
This is a tool to reconstruct the L1 Jet trigger sums for a particular RoI location from the stored JetInputs. Used for offline monitoring and trigger reconstruction.
Useage: L1JetElementTools->mapTowers() // set up event for analysis L1JetElementTools->formSums(eta, phi) // for each RoI L1JetElementTools->ET8x8() // etc. Return values
- Author
- Alan Watson Alan..nosp@m.Wats.nosp@m.on@ce.nosp@m.rn.c.nosp@m.h
Definition at line 38 of file L1JetElementTools.h.
Fill DataVector of JetElements from user-supplied vector of TriggerTowers.
Need to get pointers to the TriggerTowers corresponding to each JetElement
Store these in a vector for each JetElement
Keep vectors of pointers in a std::map so can easily locate and add more
towers to correct element
Each entry in the "Sums" map should now be a std::vector of pointers
to all of the towers in the collection making up each JetElement.
Now we need to go through them, add their energies, and form the
actual JetElement objects.
The complication is that the EM and Had vectors may not always have
the same lengths. In this case, we need to be careful how we combine
them.
At this point we have 2 vectors of ET. If their lengths and peak
positions are equal the rest is easy
If not, we align peaks, then create vectors using only those
slices before and after peaks where both layers present
Implements LVL1::IL1JetElementTools.
Definition at line 154 of file L1JetElementTools.cxx.
157 jetElements->
clear();
163 std::map< int, TriggerTowerVector_t> Sums;
167 JetElementKey testKey(0.0, 0.0);
171 int key = testKey.jeKey((*it)->phi(),(*it)->eta());
174 if (mapIt != Sums.end()) {
176 (mapIt->second).push_back((*
it));
181 vec.push_back((*
it));
182 Sums.insert(std::map< int, TriggerTowerVector_t >::value_type(
key,
vec));
195 mapIt != Sums.end(); ++mapIt) {
199 if (
it != (mapIt->second).end()) {
201 unsigned int key = testKey.jeKey((*it)->phi(),(*it)->eta());
202 double phi = testKey.phi();
203 double eta = testKey.eta();
205 int emPeak = (*it)->emPeak();
206 int hadPeak = (*it)->hadPeak();
208 std::vector<int> emET;
209 std::vector<int> hadET;
212 for (;
it != (mapIt->second).
end(); ++
it) {
213 std::vector<int> tempEM = (*it)->emLUT();
214 if (tempEM.size() > emET.size()) emET.resize(tempEM.size(),0);
215 for (
size_t iem = 0; iem < tempEM.size(); ++iem)
217 std::vector<int> tempHad = (*it)->hadLUT();
218 if (tempHad.size() > hadET.size()) hadET.resize(tempHad.size(),0);
219 for (
size_t ihd = 0; ihd < tempHad.size(); ++ihd)
224 if (emET.size() == hadET.size() && emPeak == hadPeak) {
225 std::vector<int> Dummy(emET.size());
232 std::vector<int> emSums;
233 std::vector<int> hadSums;
234 int Peak = (emPeak < hadPeak ? emPeak : hadPeak);
235 int Tail = (emET.size() - emPeak < hadET.size() - hadPeak ?
236 emET.size() - emPeak : hadET.size() - hadPeak) - 1;
237 for (
int j = emPeak - Peak; j <= emPeak + Tail; ++j) emSums.push_back(emET[j]);
238 for (
int j = hadPeak - Peak; j <= hadPeak + Tail; ++j) hadSums.push_back(hadET[j]);
240 std::vector<int> Dummy(emSums.size());
Fill DataVector of JetElements from user-supplied TriggerTowers.
Fill DataVector of JetElements from user-supplied vector of TriggerTowers.
Need to get pointers to the TriggerTowers corresponding to each JetElement
Store these in a vector for each JetElement
Keep vectors of pointers in a std::map so can easily locate and add more
towers to correct element
Each entry in the "Sums" map should now be a std::vector of pointers
to all of the towers in the collection making up each JetElement.
Now we need to go through them, add their energies, and form the
actual JetElement objects.
The complication is that the EM and Had vectors may not always have
the same lengths. In this case, we need to be careful how we combine
them.
Create JetElement
Implements LVL1::IL1JetElementTools.
Definition at line 56 of file L1JetElementTools.cxx.
65 std::map< int, std::vector<const xAOD::TriggerTower*> > Sums;
69 JetElementKey testKey(0.0, 0.0);
73 int key = testKey.jeKey((*it)->phi(),(*it)->eta());
75 std::map< int, std::vector<const xAOD::TriggerTower*> >
::iterator mapIt=Sums.find(
key);
76 if (mapIt != Sums.end()) {
78 (mapIt->second).push_back((*
it));
82 std::vector<const xAOD::TriggerTower*>
vec;
84 Sums.insert(std::map<
int, std::vector<const xAOD::TriggerTower*> >::
value_type(
key,
vec));
96 for (std::map<
int, std::vector<const xAOD::TriggerTower*> >::
iterator mapIt = Sums.begin();
97 mapIt != Sums.end(); ++mapIt) {
101 if (
it != (mapIt->second).end()) {
103 unsigned int key = testKey.jeKey((*it)->phi(),(*it)->eta());
104 float phi = testKey.phi();
105 float eta = testKey.eta();
109 std::vector<uint16_t> emET(1);
110 std::vector<uint16_t> hadET(1);
114 for (;
it != (mapIt->second).
end(); ++
it) {
115 int layer = (*it)->layer();
116 int et = (*it)->jepET();
122 std::vector<uint32_t> Dummy(emET.size());