Retrieve all the data.
25 {
26
27
28 const DataVector<xAOD::TriggerTower>* TTVector;
29
31 if (
msgLvl(MSG::DEBUG))
msg(MSG::DEBUG) <<
"No Level-1 Trigger Towers found in SG at "
33 return StatusCode::SUCCESS;
34 }
35
36
37 int numTrigTowers = TTVector->
size();
39 if (
msgLvl(MSG::DEBUG))
msg(MSG::DEBUG) <<
" Retrieving xAOD Level-1 Trigger Towers with size " << numTrigTowers <<
endmsg;
40
43 DataVect emEnergyVec; emEnergyVec.reserve(numTrigTowers);
44 DataVect hadEnergyVec; hadEnergyVec.reserve(numTrigTowers);
45
46 DataVect sumEnergyVec; sumEnergyVec.reserve(numTrigTowers);
47 DataVect numADCVec; numADCVec.reserve(numTrigTowers);
48 DataVect emBCIDVec; emBCIDVec.reserve(numTrigTowers);
49 DataVect hadBCIDVec; hadBCIDVec.reserve(numTrigTowers);
50 DataVect isEMSaturated; isEMSaturated.reserve(numTrigTowers);
51 DataVect isHadSaturated; isHadSaturated.reserve(numTrigTowers);
52 DataVect emADCVec; emADCVec.reserve(numTrigTowers);
53 DataVect hadADCVec; hadADCVec.reserve(numTrigTowers);
54
55
57 for ( trigTowerIter = TTVector->
begin(); trigTowerIter < TTVector->
end(); ++trigTowerIter ){
58
59
60 if ( (*trigTowerIter)->cpET() == 0 ) continue;
61
62 int sumEnergy = 0;
63 int emEnergy = 0;
64 int hadEnergy = 0;
65
66
67
68
69
70
71
72
73
74
75
76 const int layer = (*trigTowerIter)->layer();
77 const int cpET = (*trigTowerIter)->cpET();
78 const int peakEnergy = (*trigTowerIter)->adc()[(*trigTowerIter)->adcPeak()];
79 const int jepET = (*trigTowerIter)->jepET();
80
81 if ( layer == 0 ){
82
83 emEnergy = peakEnergy;
84 }else{
85
86 hadEnergy = peakEnergy;
87 }
88
89 if (
msgLvl(MSG::VERBOSE))
msg(MSG::VERBOSE) <<
" L1 TT No " <<
count++
90 <<
" at layer: " <<
layer <<
", with"
91 << " eta:"<<(*trigTowerIter)->eta() << ", phi:"<<(*trigTowerIter)->phi()
92 << ", em energy:"<< emEnergy <<", had energy:"<< hadEnergy
93 <<
", cpET:" << cpET <<
", jepET:"<< jepET <<
endmsg;
94
95
98
99 sumEnergy = emEnergy+hadEnergy;
100
101 emEnergyVec.push_back( emEnergy );
102 hadEnergyVec.push_back( hadEnergy );
103 sumEnergyVec.push_back( sumEnergy );
104
105
106 isEMSaturated.push_back(
DataType( ((*trigTowerIter)->isCpSaturated())? 1 : 0 ));
107 isHadSaturated.push_back(
DataType( ((*trigTowerIter)->isJepSaturated())? 1 : 0 ));
108
109 emADCVec.push_back( 0. );
110 hadADCVec.push_back( 0. );
111 numADCVec.push_back( 0. );
112 emBCIDVec.push_back( 0. );
113 hadBCIDVec.push_back( 0. );
114
115 }
116
119 myDataMap[
"phi"] = std::move(
phi);
120 myDataMap[
"eta"] = std::move(
eta);
121 myDataMap["emEnergy"] = std::move(emEnergyVec);
122 myDataMap["hadEnergy"] = std::move(hadEnergyVec);
123 myDataMap["sumEnergy"] = std::move(sumEnergyVec);
124
125 myDataMap["emADC"] = std::move(emADCVec);
126 myDataMap["hadADC"] = std::move(hadADCVec);
127 myDataMap["numADC"] = std::move(numADCVec);
128 myDataMap["emBCID"] = std::move(emBCIDVec);
129 myDataMap["hadBCID"] = std::move(hadBCIDVec);
130 myDataMap["isEMSaturated"] = std::move(isEMSaturated);
131 myDataMap["isHadSaturated"] = std::move(isHadSaturated);
132
135
136
138 }
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
ServiceHandle< StoreGateSvc > & evtStore()
bool msgLvl(const MSG::Level lvl) const
DataModel_detail::const_iterator< DataVector > const_iterator
Standard const_iterator.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
virtual std::string dataTypeName() const
Return the name of the data type.
virtual StatusCode retrieve(ToolHandle< IFormatTool > &FormatTool)
Retrieve all the data.
int count(std::string s, const std::string ®x)
count how many occurances of a regx are in a string
std::map< std::string, DataVect > DataMap
std::vector< DataType > DataVect
Defines a map with a key and a vector of DataType objects e.g.