|
ATLAS Offline Software
|
#include <Run2TriggerTowerMaker.h>
|
| Run2TriggerTowerMaker (const std::string &name, ISvcLocator *pSvcLocator) |
|
virtual | ~Run2TriggerTowerMaker () |
|
| Run2TriggerTowerMaker (const Run2TriggerTowerMaker &)=delete |
|
Run2TriggerTowerMaker & | operator= (const Run2TriggerTowerMaker &)=delete |
|
StatusCode | initialize () |
|
StatusCode | execute () |
| Checks that the Cell Type is supported (terminates with errors if not) and calls relevant routine to look for the cells. More...
|
|
StatusCode | finalize () |
|
void | handle (const Incident &) |
| Best if initialisation which uses COOL-derived values is done here rather than in initialize() More...
|
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. 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 | 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 |
|
|
L1CaloCoolChannelId | channelId (double eta, double phi, int layer) |
| Compute L1CaloCoolChannelId (including support for old geometries) More...
|
|
StatusCode | getTriggerTowers () |
| gets collection of input TriggerTowers for reprocessing More...
|
|
StatusCode | getCaloTowers () |
| fetch Calorimeter Towers More...
|
|
void | digitize (const EventContext &ctx) |
| Convert analogue pulses to digits. More...
|
|
StatusCode | preProcess (int bcid, float mu) |
| Simulate PreProcessing on analogue amplitudes. More...
|
|
StatusCode | preProcessTower (int bcid, float mu, xAOD::TriggerTower *tower) |
|
virtual StatusCode | addOverlay (int bcid, float mu) |
| Add overlay data. More...
|
|
virtual StatusCode | addOverlay (int bcid, float mu, xAOD::TriggerTower *sigTT, xAOD::TriggerTower *ovTT) |
| Add the overlay TriggerTower to the signal TriggerTower. More...
|
|
StatusCode | preProcessTower_getLutIn (int bcid, float mu, xAOD::TriggerTower *tower, const L1CaloPprChanCalib *db, const std::vector< int > &digits, std::vector< int > &output) |
| PreProcess up to LUT in. More...
|
|
StatusCode | calcLutOutCP (const std::vector< int > &sigLutIn, const L1CaloPprChanCalib *sigDB, const std::vector< int > &ovLutIn, const L1CaloPprChanCalib *ovDB, std::vector< int > &output) |
| calculate LUT out More...
|
|
StatusCode | calcLutOutJEP (const std::vector< int > &sigLutIn, const L1CaloPprChanCalib *sigDB, const std::vector< int > &ovLutIn, const L1CaloPprChanCalib *ovDB, std::vector< int > &output) |
|
void | calcCombinedLUT (const std::vector< int > &sigIN, const int sigSlope, const int sigOffset, const std::vector< int > &ovIN, const int ovSlope, const int ovOffset, const int ovNoiseCut, std::vector< int > &output) |
|
bool | IsDeadChannel (const L1CaloPpmDeadChannels *db) const |
| Database helper functions for dead and disabled towers. More...
|
|
bool | IsDisabledChannel (const L1CaloDisabledTowers *db) const |
|
bool | IsGoodTower (const xAOD::TriggerTower *tt, const L1CaloPpmDeadChannelsContainer *dead, const L1CaloDisabledTowersContainer *disabled) const |
|
void | normaliseDigits (const std::vector< int > &sigDigits, const std::vector< int > &ovDigits, std::vector< int > &normDigits) |
| normalise the number of ADC digits for overlay More...
|
|
StatusCode | store () |
| Stores Trigger Towers in the TES, at a location defined in m_outputLocation. More...
|
|
void | processLArTowers (const LArTTL1Container *) |
| extract amplitudes from TTL1 More...
|
|
void | processTileTowers (const TileTTL1Container *) |
|
double | IDeta (const Identifier &id, const CaloLVL1_ID *caloId) |
| functions to extract eta, phi coordinates from calo tower identifiers More...
|
|
double | IDphi (const Identifier &id, const CaloLVL1_ID *caloId) |
|
std::vector< int > | ADC (CLHEP::HepRandomEngine *rndmADCs, L1CaloCoolChannelId channel, const std::vector< double > &s) const |
| Functions to simulate processing of tower signals. More...
|
|
int | EtRange (int et, unsigned short bcidEnergyRangeLow, unsigned short bcidEnergyRangeHigh) const |
|
int | etaToElement (float feta, int layer) const |
|
int | non_linear_lut (int lutin, unsigned short offset, unsigned short slope, unsigned short noiseCut, unsigned short scale, short par1, short par2, short par3, short par4) |
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
Definition at line 89 of file Run2TriggerTowerMaker.h.
◆ StoreGateSvc_t
◆ CellTypes
◆ Run2TriggerTowerMaker() [1/2]
LVL1::Run2TriggerTowerMaker::Run2TriggerTowerMaker |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
Definition at line 81 of file Run2TriggerTowerMaker.cxx.
86 m_TTtool(
"LVL1::L1TriggerTowerTool/L1TriggerTowerTool",
this),
88 m_bstowertool(
"LVL1BS__TrigT1CaloDataAccessV2/TrigT1CaloDataAccessV2",
this),
142 for(
unsigned int i = 0;
i < 25;
i++) {
154 m_sinThetaHash[ (
unsigned int)(32 + (0.5*0.425)*10.) ] = 1.0/cosh(3.2 + 0.5*0.425);
155 m_sinThetaHash[ (
unsigned int)(32 + (1.5*0.425)*10.) ] = 1.0/cosh(3.2 + 1.5*0.425);
156 m_sinThetaHash[ (
unsigned int)(32 + (2.5*0.425)*10.) ] = 1.0/cosh(3.2 + 2.5*0.425);
157 m_sinThetaHash[ (
unsigned int)(32 + (3.5*0.425)*10.) ] = 1.0/cosh(3.2 + 3.5*0.425);
◆ ~Run2TriggerTowerMaker()
LVL1::Run2TriggerTowerMaker::~Run2TriggerTowerMaker |
( |
| ) |
|
|
virtual |
◆ Run2TriggerTowerMaker() [2/2]
◆ ADC()
std::vector< int > LVL1::Run2TriggerTowerMaker::ADC |
( |
CLHEP::HepRandomEngine * |
rndmADCs, |
|
|
L1CaloCoolChannelId |
channel, |
|
|
const std::vector< double > & |
amps |
|
) |
| const |
|
private |
Functions to simulate processing of tower signals.
Definition at line 1142 of file Run2TriggerTowerMaker.cxx.
1147 double ped = chanCalib->pedMean();
1150 double adcCal = (
m_gainCorr > 0.) ? CLHEP::RandGaussZiggurat::shoot(rndmADCs, 1.,
m_gainCorr) : 1.;
1152 std::vector<int> digits;
1157 double adcNoise = (
m_adcVar > 0.) ? CLHEP::RandGaussZiggurat::shoot(rndmADCs,0.,
m_adcVar) : 0.;
1162 digits.push_back(
digit);
◆ addOverlay() [1/2]
StatusCode LVL1::Run2TriggerTowerMaker::addOverlay |
( |
int |
bcid, |
|
|
float |
mu |
|
) |
| |
|
privatevirtual |
Add overlay data.
Definition at line 390 of file Run2TriggerTowerMaker.cxx.
395 overlayDataTTs->setStore( &overlayDataTTsAux );
399 std::unordered_map<uint32_t,xAOD::TriggerTower*> overlayMap;
403 char decor_ttNotUsedInOverlay = 0;
404 char decor_ttUsedInOverlay = 1;
406 for (
auto tt:*overlayDataTTs) {
409 decor(*
tt) = decor_ttNotUsedInOverlay;
410 overlayMap.insert( std::make_pair(
tt->coolId() ,
tt ) );
415 bool findSizeOfPrimaryLUT(
true);
416 unsigned int sizeOfPrimaryLUT(0);
423 if (findSizeOfPrimaryLUT) {
424 findSizeOfPrimaryLUT =
false;
425 sizeOfPrimaryLUT =
tt->lut_cp().size();
426 peakOfPrimary =
tt->peak();
430 Itr
match = overlayMap.find(
tt->coolId() );
431 if (
match != overlayMap.end()) {
436 decor(*
match->second) = decor_ttUsedInOverlay;
442 for (Itr
i=overlayMap.begin();
i!=overlayMap.end();++
i) {
444 if (decor(*
tt) == decor_ttNotUsedInOverlay) {
446 std::vector<uint8_t> overlay_lut_cp(sizeOfPrimaryLUT,0.);
447 std::vector<uint8_t> overlay_lut_jep(sizeOfPrimaryLUT,0.);
450 overlay_lut_cp.at(peakOfPrimary) =
tt->cpET();
451 overlay_lut_jep.at(peakOfPrimary) =
tt->jepET();
454 tt->setPeak( peakOfPrimary );
455 tt->setLut_cp( overlay_lut_cp );
456 tt->setLut_jep( overlay_lut_jep );
464 return StatusCode::SUCCESS;
◆ addOverlay() [2/2]
Add the overlay TriggerTower to the signal TriggerTower.
Definition at line 468 of file Run2TriggerTowerMaker.cxx.
475 ATH_MSG_ERROR(
"Cannot find signal DB for tower 0x"<<std::hex<<sigTT->
coolId()<<std::dec<<
" Aborting...");
476 return StatusCode::FAILURE;
480 ATH_MSG_ERROR(
"Cannot find overlay DB for tower 0x"<<std::hex<<ovTT->
coolId()<<std::dec<<
" Aborting...");
481 return StatusCode::FAILURE;
488 std::vector<int> normOverlayDigits;
492 std::vector<int> sigLutIn,ovLutIn;
497 std::vector<int> lutOut_cp,lutOut_jep;
503 std::size_t peak = lutOut_jep.size()/2;
504 std::vector<uint_least8_t> etResultVectorCp {
uint8_t(lutOut_cp[peak]) };
505 std::vector<uint_least8_t> etResultVectorJep {
uint8_t(lutOut_jep[peak]) };
507 sigTT->
setLut_cp(std::move(etResultVectorCp));
508 sigTT->
setLut_jep(std::move(etResultVectorJep));
510 return StatusCode::SUCCESS;
◆ calcCombinedLUT()
void LVL1::Run2TriggerTowerMaker::calcCombinedLUT |
( |
const std::vector< int > & |
sigIN, |
|
|
const int |
sigSlope, |
|
|
const int |
sigOffset, |
|
|
const std::vector< int > & |
ovIN, |
|
|
const int |
ovSlope, |
|
|
const int |
ovOffset, |
|
|
const int |
ovNoiseCut, |
|
|
std::vector< int > & |
output |
|
) |
| |
|
private |
Definition at line 555 of file Run2TriggerTowerMaker.cxx.
566 output.reserve(sigIN.size());
568 for (
unsigned int i=0;
i<sigIN.size();++
i) {
573 int outSig =
signal*sigSlope - sigOffset;
574 int outOv =
overlay*ovSlope - ovOffset;
575 int outTmp = outSig + outOv;
578 if (outTmp >= ovNoiseCut) {
579 out = (outSig + outOv + 2048)>>12;
◆ calcLutOutCP()
calculate LUT out
Definition at line 513 of file Run2TriggerTowerMaker.cxx.
516 ATH_MSG_ERROR(
"Cannot process calcLutOutCP as lutCpStrategy > 2");
517 return StatusCode::FAILURE;
521 double sigSlope = sigScale * sigDB->
lutCpSlope();
522 double sigOffset = sigScale * sigDB->
lutCpOffset();
525 double ovSlope = ovScale * ovDB->
lutCpSlope();
531 return StatusCode::SUCCESS;
◆ calcLutOutJEP()
◆ channelId()
L1CaloCoolChannelId LVL1::Run2TriggerTowerMaker::channelId |
( |
double |
eta, |
|
|
double |
phi, |
|
|
int |
layer |
|
) |
| |
|
private |
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ digitize()
void LVL1::Run2TriggerTowerMaker::digitize |
( |
const EventContext & |
ctx | ) |
|
|
private |
Convert analogue pulses to digits.
Digitize pulses and store results back in xAOD::TriggerTowers.
Definition at line 1128 of file Run2TriggerTowerMaker.cxx.
1138 tower->setAdcPeak(digits.size()/2);
◆ etaToElement()
int LVL1::Run2TriggerTowerMaker::etaToElement |
( |
float |
feta, |
|
|
int |
layer |
|
) |
| const |
|
private |
Get integer eta bin
Definition at line 1220 of file Run2TriggerTowerMaker.cxx.
1222 constexpr
static int NELEMENTS = 33;
1224 float shiftedEta = feta + 4.9;
1226 if(fabs(shiftedEta*10.0 - (
uint)(
eta+1)) < 0.01)
eta++;
1227 if(fabs(shiftedEta) < 0.01)
eta = 0;
1229 constexpr
int nBins = 16;
1230 constexpr
uint map[
nBins] = {2,6,10,14,17,19,21,23,75,77,79,80,83,87,91,95};
1232 if(
eta > 23 &&
eta < 74) {
1237 if(
i < 8) element =
i;
1238 else element =
i + 50;
1243 if (
layer == 1 && (element == 0 || element == 64)) element = 1;
1244 else if (
layer == 1 && (element == 1 || element == 65)) element = 0;
1245 else if (
layer == 1 && (element == 2 || element == 62)) element = 3;
1246 else if (
layer == 1 && (element == 3 || element == 63)) element = 2;
1247 else if (element > 32) element = 65-element;
1250 element = NELEMENTS-element-1;
◆ EtRange()
int LVL1::Run2TriggerTowerMaker::EtRange |
( |
int |
et, |
|
|
unsigned short |
bcidEnergyRangeLow, |
|
|
unsigned short |
bcidEnergyRangeHigh |
|
) |
| const |
|
private |
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode LVL1::Run2TriggerTowerMaker::execute |
( |
| ) |
|
Checks that the Cell Type is supported (terminates with errors if not) and calls relevant routine to look for the cells.
Definition at line 321 of file Run2TriggerTowerMaker.cxx.
326 const EventContext& ctx = Gaudi::Hive::currentContext();
346 ATH_MSG_ERROR(
"Unsupported Cell Type!!!!!!");
return StatusCode::FAILURE;
353 const float mu = muDecor(0);
364 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
const DataObjIDColl & AthAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 50 of file AthAlgorithm.cxx.
57 return Algorithm::extraOutputDeps();
◆ finalize()
StatusCode LVL1::Run2TriggerTowerMaker::finalize |
( |
| ) |
|
◆ getCaloTowers()
StatusCode LVL1::Run2TriggerTowerMaker::getCaloTowers |
( |
| ) |
|
|
private |
fetch Calorimeter Towers
fetches LAr & Tile calorimeter towers
If < 7168 towers in input data will be unallocated pointers in vector.
Definition at line 959 of file Run2TriggerTowerMaker.cxx.
964 if(!EMTowers.isValid()){
966 sc1 = StatusCode::FAILURE;
971 if(!HECTowers.isValid()){
973 sc2 = StatusCode::FAILURE;
979 if(!TileTowers.isValid()){
981 sc3 = StatusCode::FAILURE;
985 (sc2==StatusCode::FAILURE) ||
986 (sc3==StatusCode::FAILURE))) {
988 <<
"Found Em LArTTL1 : "<<sc1 <<
endmsg
989 <<
"Found Had LArTTL1 : "<<sc2 <<
endmsg
990 <<
"Found TileTTL1 : "<<sc3<<
endmsg
992 return StatusCode::FAILURE;
996 if(sc1 == StatusCode::SUCCESS) {
999 if(sc2 == StatusCode::SUCCESS) {
1002 if(sc3 == StatusCode::SUCCESS) {
1014 [
this](
const xAOD::TriggerTower*
tt){return !IsGoodTower(tt,m_deadChannelsContainer,m_disabledTowersContainer);}),
1017 return StatusCode::SUCCESS;
◆ getTriggerTowers()
StatusCode LVL1::Run2TriggerTowerMaker::getTriggerTowers |
( |
| ) |
|
|
private |
gets collection of input TriggerTowers for reprocessing
gets TriggerTowers from input collection and copies ADC digits into xAOD::TriggerTowers for reprocessing
If < 7168 towers in input data will be unallocated pointers in vector.
Definition at line 932 of file Run2TriggerTowerMaker.cxx.
937 ATH_MSG_INFO(
"Found " << inputTTs->size() <<
" input TriggerTowers");
952 [
this](
const xAOD::TriggerTower*
tt){return !IsGoodTower(tt,m_deadChannelsContainer,m_disabledTowersContainer);}),
955 return StatusCode::SUCCESS;
◆ handle()
void LVL1::Run2TriggerTowerMaker::handle |
( |
const Incident & |
inc | ) |
|
Best if initialisation which uses COOL-derived values is done here rather than in initialize()
Get global scales from configSvc
globalScale is number of GeV/count. As code is already written to use MeV/count, safest thing here is to convert:
Definition at line 219 of file Run2TriggerTowerMaker.cxx.
221 if(inc.type() !=
"BeginRun")
return;
243 ATH_MSG_ERROR(
"Could not retrieve database containers. Aborting ...");
244 throw std::runtime_error(
"Run2TriggerTowerMaker: database container not accesible");
249 ATH_MSG_ERROR(
"Could not retrieve channel 0 PprChanDefaults folder. Aborting ...");
250 throw std::runtime_error(
"Run2TriggerTowerMaker: channel 0 of PprChanDefaults not accesible");
265 ATH_MSG_ERROR(
"Could not retrieve database containers for overlay. Aborting ...");
266 throw std::runtime_error(
"Run2TriggerTowerMaker: database container for overlay not accesible");
270 if(!defaultsoverlay) {
271 ATH_MSG_ERROR(
"Could not retrieve channel 0 PprChanDefaults folder for overlay. Aborting ...");
272 throw std::runtime_error(
"Run2TriggerTowerMaker: channel 0 of PprChanDefaults for overlay not accesible");
292 ATH_MSG_WARNING(
"Could not determine if input file is data or simulation. Will assume simulation.");
298 ATH_MSG_INFO(
"Detected data reprocessing. Will take pedestal correction values from input trigger towers.");
307 ATH_MSG_INFO(
"L1Calo overlay job - setting m_isDataReprocessing to false");
◆ IDeta()
functions to extract eta, phi coordinates from calo tower identifiers
Definition at line 1174 of file Run2TriggerTowerMaker.cxx.
1176 int region = l1id->region(
id);
1177 int ieta = l1id->eta(
id);
1178 int sign = l1id->pos_neg_z(
id);
1180 double gran[4] = {0.1, 0.2, 0.1, 0.425};
1181 double offset[4] = {0., 2.5, 3.1, 3.2};
1184 if(region>=0 && region<=3) {
◆ IDphi()
Definition at line 1195 of file Run2TriggerTowerMaker.cxx.
1199 double phiMax = l1id->phi_max(regId);
1200 int iphi = l1id->phi(
id);
1201 double phi = (iphi+0.5)*2*
M_PI/(phiMax+1);
◆ initialize()
StatusCode LVL1::Run2TriggerTowerMaker::initialize |
( |
| ) |
|
Definition at line 162 of file Run2TriggerTowerMaker.cxx.
176 return StatusCode::FAILURE;
182 incSvc->addListener(
this,
"BeginRun");
214 return StatusCode::SUCCESS;
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ IsDeadChannel()
Database helper functions for dead and disabled towers.
Definition at line 368 of file Run2TriggerTowerMaker.cxx.
370 if (!
db)
return false;
371 if (
db->errorCode() > 0 ||
db->noiseCut() > 0)
return true;
◆ IsDisabledChannel()
◆ IsGoodTower()
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ non_linear_lut()
int LVL1::Run2TriggerTowerMaker::non_linear_lut |
( |
int |
lutin, |
|
|
unsigned short |
offset, |
|
|
unsigned short |
slope, |
|
|
unsigned short |
noiseCut, |
|
|
unsigned short |
scale, |
|
|
short |
par1, |
|
|
short |
par2, |
|
|
short |
par3, |
|
|
short |
par4 |
|
) |
| |
|
private |
Definition at line 1259 of file Run2TriggerTowerMaker.cxx.
1263 double nll_slope = 0.001 *
scale;
1264 double nll_offset = 0.001 * par1;
1265 double nll_ampl = 0.001 * par2;
1266 double nll_expo = 0.;
1268 nll_expo = -1. / (4096 * 0.001*par3);
1272 double nll_noise = 0.001 * par4;
1275 if (lutin * slope <
offset + nll_noise * noiseCut) {
1280 int output =
int((((
int)(2048 + nll_slope * (lutin * slope -
offset)))>>12) + nll_offset + nll_ampl *
std::exp(nll_expo * (lutin * slope -
offset)));
1281 if(
output >= 255)
return 255;
◆ normaliseDigits()
void LVL1::Run2TriggerTowerMaker::normaliseDigits |
( |
const std::vector< int > & |
sigDigits, |
|
|
const std::vector< int > & |
ovDigits, |
|
|
std::vector< int > & |
normDigits |
|
) |
| |
|
private |
normalise the number of ADC digits for overlay
Definition at line 640 of file Run2TriggerTowerMaker.cxx.
649 if (sigDigits.size() == ovDigits.size()) {
650 for (
auto x:ovDigits) normDigits.push_back(
x );
654 if (sigDigits.size() > ovDigits.size()) {
655 unsigned int pad = (sigDigits.size() - ovDigits.size()) / 2;
656 for (
unsigned int x=0;
x<pad;++
x) normDigits.push_back( 32 );
657 for (
auto x:ovDigits) normDigits.push_back(
x );
658 for (
unsigned int x=0;
x<pad;++
x) normDigits.push_back( 32 );
663 if (sigDigits.size() < ovDigits.size()) {
664 unsigned int offset = (ovDigits.size() - sigDigits.size()) / 2;
665 for (
unsigned int x=0;
x<sigDigits.size();++
x) {
667 normDigits.push_back( ovDigits[
pos] );
◆ operator=()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ preProcess()
StatusCode LVL1::Run2TriggerTowerMaker::preProcess |
( |
int |
bcid, |
|
|
float |
mu |
|
) |
| |
|
private |
Simulate PreProcessing on analogue amplitudes.
Emulate FIR filter, bunch-crossing identification & LUT, and create & fill TriggerTowers.
Definition at line 676 of file Run2TriggerTowerMaker.cxx.
682 return StatusCode::SUCCESS;
◆ preProcessTower()
StatusCode LVL1::Run2TriggerTowerMaker::preProcessTower |
( |
int |
bcid, |
|
|
float |
mu, |
|
|
xAOD::TriggerTower * |
tower |
|
) |
| |
|
private |
retrieve digits
process tower – digitial filter
dynamic pedestal correction
BCID algorithms (only possible if 7 slices readout)
In simulation external BCID is always zero, but for consistency with data we need to add it to the TriggerTower objects
Definition at line 685 of file Run2TriggerTowerMaker.cxx.
691 ATH_MSG_ERROR(
"Tower with coolId 0x"<<std::hex<<tower->
coolId()<<std::dec<<
" Not in database! Aborting ...");
692 return StatusCode::FAILURE;
696 int pedCorrectionStrategy(0);
710 std::vector<int> fir;
727 if (pedCorrectionStrategy == 1) {
743 if (pedCorrectionStrategy == 2) {
761 std::vector<int> lutIn;
765 std::vector<int> lutOut_cp;
788 std::vector<int> lutOut_jep;
811 std::vector<int> BCIDOut;
826 std::size_t peak = lutOut_jep.size()/2;
827 std::vector<uint_least8_t> etResultVectorCp {
uint8_t(lutOut_cp[peak]) };
830 std::vector<uint_least8_t> etResultVectorJep {
uint8_t(lutOut_jep[peak]) };
844 std::array<int, 3> bcidDecision {
850 std::array<int, 3> satOverride {
856 if((bcidDecision[
range]) & (0
x1 << (BCIDOut[BCIDOut.size()/2]))) {
857 if((satOverride[
range]) & 0
x1) {
859 etResultVectorCp[0] = SATURATIONVALUE;
860 etResultVectorJep[0] = SATURATIONVALUE;
864 etResultVectorCp[0] = 0;
865 etResultVectorJep[0] = 0;
871 tower->
setLut_cp(std::move(etResultVectorCp));
872 tower->
setLut_jep(std::move(etResultVectorJep));
895 return StatusCode::SUCCESS;
◆ preProcessTower_getLutIn()
PreProcess up to LUT in.
Definition at line 590 of file Run2TriggerTowerMaker.cxx.
595 std::vector<int> fir;
597 {
db->firCoeff5(),
db->firCoeff4(),
db->firCoeff3(),
db->firCoeff2(),
db->firCoeff1()},
601 int pedCorrectionStrategy =
db->lutCpStrategy();
605 if (pedCorrectionStrategy == 1) {
609 int firPed = (
db->firCoeff5() +
db->firCoeff4() +
db->firCoeff3() +
610 db->firCoeff2() +
db->firCoeff1()) *
int(
db->pedMean() + 0.5);
621 if (pedCorrectionStrategy == 2) {
637 return StatusCode::SUCCESS;
◆ processLArTowers()
extract amplitudes from TTL1
steps over Calo towers and creates/fills trigger towers
Definition at line 1021 of file Run2TriggerTowerMaker.cxx.
1025 ATH_MSG_VERBOSE(
"Looking at retrieved tower number "<<towerNumber++<<
" ***********");
1036 std::vector<float> tower_amps = tower->samples();
1049 amps[
i] = tower_amps[j];
1059 t->setCoolId(coolId.
id());
◆ processTileTowers()
Definition at line 1066 of file Run2TriggerTowerMaker.cxx.
1071 ATH_MSG_VERBOSE(
"Looking at retrieved tower number "<<towerNumber++<<
" ***********");
1084 unsigned Ieta =
unsigned(fabs(tower_eta)*10.0);
1086 ATH_MSG_WARNING(
"TileTTL1 with invalid index for m_sinThetaHash: Ieta = " << Ieta);
1092 std::vector<float> tower_amps = tower->fsamples();
1101 for(
int i = 0;
i < 7;
i++) {
1117 t->setCoolId(
channelId(tower_eta, tower_phi, 1).
id());
1118 t->setEta(tower_eta);
1119 t->setPhi(tower_phi);
◆ renounce()
◆ renounceArray()
◆ store()
StatusCode LVL1::Run2TriggerTowerMaker::store |
( |
| ) |
|
|
private |
Stores Trigger Towers in the TES, at a location defined in m_outputLocation.
Returns FAILURE if the towers could not be saved.
Returns FAILURE if the towers could not be saved.
Definition at line 903 of file Run2TriggerTowerMaker.cxx.
910 return tt->cpET() == 0 && tt->jepET() == 0;
926 return StatusCode::SUCCESS;
◆ sysInitialize()
StatusCode AthAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_actMuKey
◆ m_adcStep
double LVL1::Run2TriggerTowerMaker::m_adcStep |
|
private |
◆ m_adcVar
double LVL1::Run2TriggerTowerMaker::m_adcVar |
|
private |
◆ m_bstowertool
◆ m_caloId
◆ m_cellType
int LVL1::Run2TriggerTowerMaker::m_cellType |
|
private |
◆ m_chanCalibContainer
◆ m_chanCalibContaineroverlay
◆ m_chanCalibKey
std::string LVL1::Run2TriggerTowerMaker::m_chanCalibKey |
|
private |
◆ m_chanCalibKeyoverlay
std::string LVL1::Run2TriggerTowerMaker::m_chanCalibKeyoverlay |
|
private |
◆ m_chanDefaults
◆ m_chanDefaultsKey
std::string LVL1::Run2TriggerTowerMaker::m_chanDefaultsKey |
|
private |
◆ m_chanDefaultsKeyoverlay
std::string LVL1::Run2TriggerTowerMaker::m_chanDefaultsKeyoverlay |
|
private |
◆ m_chanDefaultsoverlay
◆ m_condSvc
◆ m_cpLutScale
double LVL1::Run2TriggerTowerMaker::m_cpLutScale |
|
private |
◆ m_curIndex
std::size_t LVL1::Run2TriggerTowerMaker::m_curIndex = 0u |
|
private |
◆ m_deadChannelsContainer
◆ m_deadChannelsContaineroverlay
◆ m_deadChannelsKey
std::string LVL1::Run2TriggerTowerMaker::m_deadChannelsKey |
|
private |
◆ m_deadChannelsKeyoverlay
std::string LVL1::Run2TriggerTowerMaker::m_deadChannelsKeyoverlay |
|
private |
◆ m_decorateFIR
bool LVL1::Run2TriggerTowerMaker::m_decorateFIR |
|
private |
◆ m_detStore
◆ m_digiEngine
std::string LVL1::Run2TriggerTowerMaker::m_digiEngine |
|
private |
◆ m_disabledTowersContainer
◆ m_disabledTowersContaineroverlay
◆ m_disabledTowersKey
std::string LVL1::Run2TriggerTowerMaker::m_disabledTowersKey |
|
private |
◆ m_disabledTowersKeyoverlay
std::string LVL1::Run2TriggerTowerMaker::m_disabledTowersKeyoverlay |
|
private |
◆ m_doOverlay
bool LVL1::Run2TriggerTowerMaker::m_doOverlay |
|
private |
◆ m_EmTTL1ContainerName
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthAlgorithm::m_extendedExtraObjects |
|
privateinherited |
◆ m_gainCorr
double LVL1::Run2TriggerTowerMaker::m_gainCorr |
|
private |
◆ m_HadTTL1ContainerName
◆ m_inputTTLocation
◆ m_isDataReprocessing
bool LVL1::Run2TriggerTowerMaker::m_isDataReprocessing |
|
private |
◆ m_isReco
bool LVL1::Run2TriggerTowerMaker::m_isReco |
|
private |
◆ m_jepLutScale
double LVL1::Run2TriggerTowerMaker::m_jepLutScale |
|
private |
◆ m_L1MenuKey
◆ m_mappingTool
◆ m_maxIetaBins
constexpr static unsigned int LVL1::Run2TriggerTowerMaker::m_maxIetaBins = 51 |
|
staticconstexprprivate |
◆ m_outputLocation
◆ m_outputLocationRerun
◆ m_requireAllCalos
bool LVL1::Run2TriggerTowerMaker::m_requireAllCalos |
|
private |
◆ m_rndmADCs
◆ m_rngSvc
◆ m_sinThetaHash
std::array<double, m_maxIetaBins> LVL1::Run2TriggerTowerMaker::m_sinThetaHash |
|
private |
instead of calculating the expression: double theta =2.
*atan(exp(-fabs(cell_eta))); cell_energy=sin(theta)*cell_energy; for each em and had TT again, we will use a hash table
Definition at line 198 of file Run2TriggerTowerMaker.h.
◆ m_TileToMeV
double LVL1::Run2TriggerTowerMaker::m_TileToMeV |
|
private |
◆ m_TileTTL1ContainerName
◆ m_TileTTL1Ped
double LVL1::Run2TriggerTowerMaker::m_TileTTL1Ped |
|
private |
◆ m_TTtool
◆ m_varHandleArraysDeclared
◆ m_vhka
◆ m_xaodevtKey
◆ m_xaodTowers
◆ m_xaodTowersAmps
std::vector<std::vector<double> > LVL1::Run2TriggerTowerMaker::m_xaodTowersAmps |
|
private |
◆ m_xaodTowersAux
◆ m_ZeroSuppress
bool LVL1::Run2TriggerTowerMaker::m_ZeroSuppress |
|
private |
◆ s_FIRLENGTH
constexpr static int LVL1::Run2TriggerTowerMaker::s_FIRLENGTH = 5 |
|
staticconstexprprivate |
◆ s_MEV
constexpr static int LVL1::Run2TriggerTowerMaker::s_MEV = 1000 |
|
staticconstexprprivate |
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
JetConstituentVector::iterator iterator
const std::vector< uint8_t > & correctionEnabled() const
get correctionEnabled
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
L1CaloPpmDeadChannelsContainer * m_deadChannelsContainer
StatusCode calcLutOutCP(const std::vector< int > &sigLutIn, const L1CaloPprChanCalib *sigDB, const std::vector< int > &ovLutIn, const L1CaloPprChanCalib *ovDB, std::vector< int > &output)
calculate LUT out
StatusCode store()
Stores Trigger Towers in the TES, at a location defined in m_outputLocation.
StatusCode preProcess(int bcid, float mu)
Simulate PreProcessing on analogue amplitudes.
Extra patterns decribing particle interation process.
SG::ReadHandleKey< LArTTL1Container > m_EmTTL1ContainerName
Scalar phi() const
phi method
std::string m_disabledTowersKey
void processLArTowers(const LArTTL1Container *)
extract amplitudes from TTL1
std::string m_chanDefaultsKeyoverlay
unsigned short lutCpStrategy() const
Scalar eta() const
pseudorapidity method
unsigned short satBcidThreshLow() const
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
unsigned short lutCpSlope() const
const std::vector< uint8_t > & lut_cp() const
get lut_cp
L1CaloPprChanDefaults m_chanDefaultsoverlay
virtual StatusCode addOverlay(int bcid, float mu)
Add overlay data.
int bcidDecision1() const
std::vector< int > ADC(CLHEP::HepRandomEngine *rndmADCs, L1CaloCoolChannelId channel, const std::vector< double > &s) const
Functions to simulate processing of tower signals.
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)
void normaliseDigits(const std::vector< int > &sigDigits, const std::vector< int > &ovDigits, std::vector< int > &normDigits)
normalise the number of ADC digits for overlay
unsigned int pedFirSum() const
std::string m_chanDefaultsKey
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
unsigned short lutJepNoiseCut() const
const std::vector< int16_t > & correction() const
get correction
void setBcidVec(const std::vector< uint8_t > &)
set bcidVec
StatusCode preProcessTower(int bcid, float mu, xAOD::TriggerTower *tower)
ServiceHandle< L1CaloCondSvc > m_condSvc
StatusCode calcLutOutJEP(const std::vector< int > &sigLutIn, const L1CaloPprChanCalib *sigDB, const std::vector< int > &ovLutIn, const L1CaloPprChanCalib *ovDB, std::vector< int > &output)
ATHRNG::RNGWrapper * m_rndmADCs
#define ATH_MSG_VERBOSE(x)
std::vector< std::vector< double > > m_xaodTowersAmps
constexpr static int s_FIRLENGTH
SG::ReadHandleKey< TileTTL1Container > m_TileTTL1ContainerName
@ IS_SIMULATION
true: simulation, false: data
unsigned short bcidEnergyRangeLow() const
std::string m_deadChannelsKey
const std::vector< uint8_t > & bcidVec() const
get bcidVec
@ u
Enums for curvilinear frames.
int EtRange(int et, unsigned short bcidEnergyRangeLow, unsigned short bcidEnergyRangeHigh) const
std::string m_chanCalibKey
int peakFinderCond() const
StatusCode preProcessTower_getLutIn(int bcid, float mu, xAOD::TriggerTower *tower, const L1CaloPprChanCalib *db, const std::vector< int > &digits, std::vector< int > &output)
PreProcess up to LUT in.
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
ToolHandle< IL1TriggerTowerTool > m_TTtool
L1CaloCoolChannelId channelId(double eta, double phi, int layer)
Compute L1CaloCoolChannelId (including support for old geometries)
virtual void setOwner(IDataHandleHolder *o)=0
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
std::string m_disabledTowersKeyoverlay
unsigned short satBcidThreshHigh() const
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
unsigned short lutCpOffset() const
SG::ReadHandleKey< TrigConf::L1Menu > m_L1MenuKey
bool IsDisabledChannel(const L1CaloDisabledTowers *db) const
std::unique_ptr< xAOD::TriggerTowerAuxContainer > m_xaodTowersAux
constexpr static int s_MEV
L1CaloPprChanDefaults m_chanDefaults
void setPeak(uint8_t)
set peak
virtual StatusCode sysInitialize() override
Override sysInitialize.
L1CaloPprChanCalibContainer * m_chanCalibContainer
double IDeta(const Identifier &id, const CaloLVL1_ID *caloId)
functions to extract eta, phi coordinates from calo tower identifiers
bool m_isDataReprocessing
Handle class for reading a decoration on an object.
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
std::string m_deadChannelsKeyoverlay
SG::ReadHandleKey< xAOD::EventInfo > m_xaodevtKey
const L1CaloPpmDeadChannels * ppmDeadChannels(unsigned int channelId) const
unsigned short lutJepOffset() const
::StatusCode StatusCode
StatusCode definition for legacy code.
bool IsDeadChannel(const L1CaloPpmDeadChannels *db) const
Database helper functions for dead and disabled towers.
int layer() const
get layer ( 0 = EM, 1 = Had, 2 = FCAL23) - to be confirmed
Description of TriggerTower_v2.
unsigned short satBcidLevel() const
double TTL1Ped(const Identifier &) const
Returns the pedestal (in mV) for TTL1 adcs.
virtual double eta() const final
The pseudorapidity ( ) of the particle.
L1CaloDisabledTowersContainer * m_disabledTowersContainer
int bcidDecision3() const
uint32_t coolId() const
Tower identifiers.
SG::ReadDecorHandleKey< xAOD::EventInfo > m_actMuKey
unsigned short lutCpScale() const
unsigned short lutJepSlope() const
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
AuxContainer for TriggerTower_v2.
Folder <-> Object mapping for /TRIGGER/L1Calo/V2/Calibration/Physics/PprChanCalib .
void setCorrection(const std::vector< int16_t > &)
set correction
double IDphi(const Identifier &id, const CaloLVL1_ID *caloId)
int etaToElement(float feta, int layer) const
unsigned short bcidEnergyRangeHigh() const
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
TriggerTowerContainer_v2 TriggerTowerContainer
Define the latest version of the TriggerTower container.
unsigned short lutCpNoiseCut() const
int non_linear_lut(int lutin, unsigned short offset, unsigned short slope, unsigned short noiseCut, unsigned short scale, short par1, short par2, short par3, short par4)
ServiceHandle< IAthRNGSvc > m_rngSvc
StatusCode getTriggerTowers()
gets collection of input TriggerTowers for reprocessing
unsigned short firStartBit() const
unsigned short lutJepScale() const
std::unique_ptr< xAOD::TriggerTowerContainer > m_xaodTowers
ToolHandle< IL1CaloMappingTool > m_mappingTool
const CaloLVL1_ID * m_caloId
dictionary defaults
This includes now the top quark, the leptons and the bosons.
setEventNumber setTimeStamp bcid
void setLut_cp(const std::vector< uint8_t > &)
set lut_cp
static const std::string xAODTriggerTowerLocation
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
void setLut_jep(const std::vector< uint8_t > &)
set lut_jep
const L1CaloPprChanDefaults * pprChanDefaults(unsigned int channelId) const
Class describing the basic event information.
void processTileTowers(const TileTTL1Container *)
L1CaloDisabledTowersContainer * m_disabledTowersContaineroverlay
const L1CaloPprChanCalib * pprChanCalib(unsigned int channelId) const
std::array< double, m_maxIetaBins > m_sinThetaHash
instead of calculating the expression: double theta =2.
DataObjIDColl m_extendedExtraObjects
SG::WriteHandleKey< xAOD::TriggerTowerContainer > m_outputLocation
void calcCombinedLUT(const std::vector< int > &sigIN, const int sigSlope, const int sigOffset, const std::vector< int > &ovIN, const int ovSlope, const int ovOffset, const int ovNoiseCut, std::vector< int > &output)
unsigned short lutJepStrategy() const
Data object for each calorimeter readout cell.
StatusCode getCaloTowers()
fetch Calorimeter Towers
#define ATH_MSG_WARNING(x)
L1CaloPprChanCalibContainer * m_chanCalibContaineroverlay
void setCorrectionEnabled(const std::vector< uint8_t > &)
set correctionEnabled
int sampling(const Identifier id) const
return sampling according to :
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
std::string m_chanCalibKeyoverlay
AthAlgorithm()
Default constructor:
int decisionSource() const
void setBcidExt(const std::vector< uint8_t > &)
set bcidExt
constexpr static unsigned int m_maxIetaBins
ToolHandle< LVL1BS::ITrigT1CaloDataAccessV2 > m_bstowertool
void digitize(const EventContext &ctx)
Convert analogue pulses to digits.
SG::ReadHandleKey< LArTTL1Container > m_HadTTL1ContainerName
bool is_tile(const Identifier id) const
Test wether given tower or layer is part of the Tile Calorimeter.
static const std::string xAODTriggerTowerRerunLocation
bool IsGoodTower(const xAOD::TriggerTower *tt, const L1CaloPpmDeadChannelsContainer *dead, const L1CaloDisabledTowersContainer *disabled) const
Liquid Argon TT L1 sum class.
L1CaloPpmDeadChannelsContainer * m_deadChannelsContaineroverlay
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
SG::ReadHandleKey< xAOD::TriggerTowerContainer > m_inputTTLocation
bool match(std::string s1, std::string s2)
match the individual directories of two strings
TriggerTower_v2 TriggerTower
Define the latest version of the TriggerTower class.
SG::WriteHandleKey< xAOD::TriggerTowerContainer > m_outputLocationRerun
const std::vector< uint16_t > & adc() const
get adc
int bcidDecision2() const
double TTL1Calib(const Identifier &) const
Returns the factor which converts amplitude in pCb to mV in TTL1.