9 #include "CLHEP/Units/SystemOfUnits.h"
20 m_typeName(
"LVL1TriggerTower")
23 declareInterface<IDataRetriever>(
this);
43 return StatusCode::SUCCESS;
47 int numTrigTowers = TTVector->
size();
53 DataVect emEnergyVec; emEnergyVec.reserve(numTrigTowers);
54 DataVect hadEnergyVec; hadEnergyVec.reserve(numTrigTowers);
55 DataVect sumEnergyVec; sumEnergyVec.reserve(numTrigTowers);
56 DataVect numADCVec; numADCVec.reserve(numTrigTowers);
57 DataVect emBCIDVec; emBCIDVec.reserve(numTrigTowers);
58 DataVect hadBCIDVec; hadBCIDVec.reserve(numTrigTowers);
59 DataVect isEMSaturated; isEMSaturated.reserve(numTrigTowers);
60 DataVect isHadSaturated; isHadSaturated.reserve(numTrigTowers);
61 DataVect emADCVec; emADCVec.reserve(numTrigTowers);
62 DataVect hadADCVec; hadADCVec.reserve(numTrigTowers);
66 for ( trigTowerIter = TTVector->
begin(); trigTowerIter < TTVector->
end(); ++trigTowerIter ){
69 if ( (*trigTowerIter)->hadEnergy() == 0 && (*trigTowerIter)->emEnergy() == 0 )
continue;
72 <<
" eta:"<<(*trigTowerIter)->eta() <<
", phi:"<<(*trigTowerIter)->phi()
73 <<
", EM energy:"<<(*trigTowerIter)->emEnergy()<<
", Had Energy:"<<(*trigTowerIter)->hadEnergy() <<
endmsg;
85 emEnergy = (*trigTowerIter)->emEnergy();
86 hadEnergy = (*trigTowerIter)->hadEnergy();
88 if ((emEnergy != 255) && (hadEnergy != 255)){
89 sumEnergy = (*trigTowerIter)->emEnergy()+(*trigTowerIter)->hadEnergy();
98 emEnergyVec.push_back( emEnergy );
99 hadEnergyVec.push_back( hadEnergy );
100 sumEnergyVec.push_back( sumEnergy );
107 emBCIDVec.push_back(
DataType((*trigTowerIter)->emBCID()));
108 hadBCIDVec.push_back(
DataType((*trigTowerIter)->hadBCID()));
111 isEMSaturated.push_back(
DataType( ((*trigTowerIter)->isEMSaturated())? 1 : 0 ));
112 isHadSaturated.push_back(
DataType( ((*trigTowerIter)->isHadSaturated())? 1 : 0 ));
116 if ((*trigTowerIter)->emADC().size() != (*trigTowerIter)->hadADC().size()){
117 if (
msgLvl(MSG::WARNING))
msg(MSG::WARNING) <<
"Number of EmADC and HadADC values do not match"
118 <<
",em:"<< (*trigTowerIter)->emADC().size()
119 <<
",had:" << (*trigTowerIter)->hadADC().size() <<
endmsg;
127 numADCVec.push_back(
DataType( (*trigTowerIter)->emADC().size() ));
130 std::vector<int>::const_iterator emADCItr = ((*trigTowerIter)->emADC()).
begin();
131 for (; emADCItr != ((*trigTowerIter)->emADC()).
end(); ++emADCItr)
132 emADCVec.push_back(
DataType( *emADCItr ));
134 std::vector<int>::const_iterator hadADCItr = ((*trigTowerIter)->hadADC()).
begin();
135 for (; hadADCItr != ((*trigTowerIter)->hadADC()).
end(); ++hadADCItr)
136 hadADCVec.push_back(
DataType( *hadADCItr ));
141 std::string multiple =
" multiple=\"0.\"";
142 if (emEnergyVec.size() != 0){
143 multiple =
" multiple=\""+
DataType(((
float)emADCVec.size())/((
float)emEnergyVec.size())).toString()+
"\"";
147 myDataMap[
"phi"] =
phi;
148 myDataMap[
"eta"] =
eta;
149 myDataMap[
"emEnergy"] = emEnergyVec;
150 myDataMap[
"hadEnergy"] = hadEnergyVec;
151 myDataMap[
"sumEnergy"] = sumEnergyVec;
152 myDataMap[
"emADC"+multiple] = emADCVec;
153 myDataMap[
"hadADC"+multiple] = hadADCVec;
154 myDataMap[
"numADC"] = numADCVec;
155 myDataMap[
"emBCID"] = emBCIDVec;
156 myDataMap[
"hadBCID"] = hadBCIDVec;
157 myDataMap[
"isEMSaturated"] = isEMSaturated;
158 myDataMap[
"isHadSaturated"] = isHadSaturated;