|
| L1CPMTowerTools (const std::string &, const std::string &, const IInterface *) |
| Constructor. More...
|
|
virtual | ~L1CPMTowerTools () |
| default destructor More...
|
|
virtual StatusCode | initialize () |
| standard Athena-Algorithm method More...
|
|
virtual StatusCode | finalize () |
| standard Athena-Algorithm method More...
|
|
virtual void | makeCPMTowers (const DataVector< TriggerTower > *triggerTowers, DataVector< CPMTower > *cpmTowers, bool zeroSuppress=true) |
| Fill DataVector of CPMTowers from user-supplied TriggerTowers. More...
|
|
virtual void | makeCPMTowers (const DataVector< xAOD::TriggerTower > *triggerTowers, DataVector< CPMTower > *cpmTowers, bool zeroSuppress=true) |
| Fill DataVector of CPMTowers from user-supplied xAOD::TriggerTowers. More...
|
|
virtual void | makeCPMTowers (const DataVector< xAOD::TriggerTower > *triggerTowers, DataVector< xAOD::CPMTower > *cpmTowers, bool zeroSuppress=true) |
| Fill DataVector of CPMTowers from user-supplied xAOD::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 > &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 |
|
This is a tool to form CPMTowers from TriggerTowers or to copy CPMTowers into a standard map, using keys from TrigT1Utils::TriggerTowerKey
- Author
- Alan Watson Alan..nosp@m.Wats.nosp@m.on@ce.nosp@m.rn.c.nosp@m.h
Definition at line 34 of file L1CPMTowerTools.h.
Fill DataVector of CPMTowers from user-supplied TriggerTowers.
Fill DataVector of CPMTowers from user-supplied vector of TriggerTowers.
Need to get pointers to the TriggerTowers corresponding to each CPMTower
Store these in a vector for each CPMTower
Keep vectors of pointers in a std::map so can easily locate and add more
towers to correct element Right now this is redundant, but when TT becomes a single-layer object
we'll need this bit
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 CPMTower.
Now we need to go through them and add their energies to the appropriate
layer to form the actual CPMTower 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.
May not have signals in both layers. If not, fill empty layer with null data. TODO when have single-layer TriggerTower as input
Now we can create the tower object
Implements LVL1::IL1CPMTowerTools.
Definition at line 53 of file L1CPMTowerTools.cxx.
64 std::map< int, TriggerTowerVector_t > Sums;
68 TriggerTowerKey testKey(0.0, 0.0);
70 for(
it = triggerTowers->
begin();
it != triggerTowers->
end(); ++
it ) {
72 if (fabs((*it)->eta()) > 2.5)
continue;
75 int key = testKey.ttKey((*it)->phi(),(*it)->eta());
78 if (mapIt != Sums.end()) {
80 (mapIt->second).push_back((*
it));
86 Sums.insert(std::map< int, TriggerTowerVector_t >::value_type(
key,
vec));
99 mapIt != Sums.end(); ++mapIt) {
103 if (
it != (mapIt->second).end()) {
105 double phi = (*it)->phi();
106 double eta = (*it)->eta();
108 std::vector<int> emET;
109 std::vector<int> hadET;
110 std::vector<int> emError;
111 std::vector<int> hadError;
115 for (;
it != (mapIt->second).
end(); ++
it) {
117 Peak = (*it)->emPeak();
118 emET = (*it)->emLUT();
119 hadET = (*it)->hadLUT();
120 emError.assign(emET.size(),(*it)->emError());
121 hadError.assign(hadET.size(),(*it)->hadError());
128 if (!zeroSuppress || emET[Peak] > 0 || hadET[Peak] > 0) {
129 CPMTower* cpmTower =
new CPMTower(phi, eta, emET, emError, hadET, hadError, Peak);
Fill DataVector of CPMTowers from user-supplied xAOD::TriggerTowers.
Fill DataVector of CPMTowers from user-supplied vector of xAOD::TriggerTowers.
Need to get pointers to the TriggerTowers corresponding to each CPMTower
Store these in a vector for each CPMTower
Keep vectors of pointers in a std::map so can easily locate and add more
towers to correct element Right now this is redundant, but when TT becomes a single-layer object
we'll need this bit
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 CPMTower.
Now we need to go through them and add their energies to the appropriate
layer to form the actual CPMTower 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.
Now we can create the tower object
Implements LVL1::IL1CPMTowerTools.
Definition at line 141 of file L1CPMTowerTools.cxx.
152 std::map< int, xAODTriggerTowerVector_t > Sums;
156 TriggerTowerKey testKey(0.0, 0.0);
158 for(
it = triggerTowers->
begin();
it != triggerTowers->
end(); ++
it ) {
160 if (fabs((*it)->eta()) > 2.5)
continue;
163 int key = testKey.ttKey((*it)->phi(),(*it)->eta());
166 if (mapIt != Sums.end()) {
168 (mapIt->second).push_back((*
it));
173 vec.push_back((*
it));
174 Sums.insert(std::map< int, xAODTriggerTowerVector_t >::value_type(
key,
vec));
187 mapIt != Sums.end(); ++mapIt) {
191 std::vector<int> emET(1);
192 std::vector<int> hadET(1);
193 std::vector<int> emError(1);
194 std::vector<int> hadError(1);
200 if (
it != (mapIt->second).end()) {
202 double phi = (*it)->phi();
203 double eta = (*it)->eta();
205 for (;
it != (mapIt->second).
end(); ++
it) {
208 if ((*it)->layer() == 0) {
209 emET[Peak] = (*it)->cpET();
210 emError[Peak] = (*it)->errorWord();
213 hadET[Peak] = (*it)->cpET();
214 hadError[Peak] = (*it)->errorWord();
220 if (!zeroSuppress || emET[Peak] > 0 || hadET[Peak] > 0) {
221 CPMTower* cpmTower =
new CPMTower(phi, eta, emET, emError, hadET, hadError, Peak);
Fill DataVector of CPMTowers from user-supplied xAOD::TriggerTowers.
Fill DataVector of xAOD::CPMTowers from user-supplied vector of xAOD::TriggerTowers.
Need to get pointers to the TriggerTowers corresponding to each CPMTower
Store these in a vector for each CPMTower
Keep vectors of pointers in a std::map so can easily locate and add more
towers to correct element Right now this is redundant, but when TT becomes a single-layer object
we'll need this bit
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 CPMTower.
Now we need to go through them and add their energies to the appropriate
layer to form the actual CPMTower 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.
Now we can create the tower object
Implements LVL1::IL1CPMTowerTools.
Definition at line 234 of file L1CPMTowerTools.cxx.
245 std::map< int, xAODTriggerTowerVector_t > Sums;
249 TriggerTowerKey testKey(0.0, 0.0);
251 for(
it = triggerTowers->
begin();
it != triggerTowers->
end(); ++
it ) {
253 if (fabs((*it)->eta()) > 2.5)
continue;
256 int key = testKey.ttKey((*it)->phi(),(*it)->eta());
259 if (mapIt != Sums.end()) {
261 (mapIt->second).push_back((*
it));
266 vec.push_back((*
it));
267 Sums.insert(std::map< int, xAODTriggerTowerVector_t >::value_type(
key,
vec));
280 mapIt != Sums.end(); ++mapIt) {
284 std::vector<uint8_t> emET(1);
285 std::vector<uint8_t> hadET(1);
286 std::vector<uint32_t> emError(1);
287 std::vector<uint32_t> hadError(1);
293 if (
it != (mapIt->second).end()) {
295 double phi = (*it)->phi();
296 double eta = (*it)->eta();
298 for (;
it != (mapIt->second).
end(); ++
it) {
301 if ((*it)->layer() == 0) {
302 emET[Peak] =
int((*it)->cpET());
303 emError[Peak] = (*it)->errorWord();
306 hadET[Peak] =
int((*it)->cpET());
307 hadError[Peak] = (*it)->errorWord();
313 if (!zeroSuppress || emET[Peak] > 0 || hadET[Peak] > 0) {
316 cpmTower->
initialize(eta, phi, emET, hadET, emError, hadError, Peak);