File indexing completed on 2025-08-06 08:18:38
0001 #include "TriggerDefs.h"
0002
0003 #include <calobase/TowerInfoDefs.h>
0004
0005 uint32_t
0006 TriggerDefs::getTriggerKey(const TriggerDefs::TriggerId triggerId)
0007 {
0008 uint32_t tmp = triggerId << kBitShiftTriggerId;
0009 return tmp;
0010 }
0011
0012 uint32_t
0013 TriggerDefs::getTriggerKey(const TriggerDefs::TriggerId triggerId, const TriggerDefs::DetectorId detectorId)
0014 {
0015 uint32_t tmp = triggerId << kBitShiftTriggerId;
0016 tmp |= (unsigned int) detectorId << kBitShiftDetectorId;
0017 return tmp;
0018 }
0019
0020 uint32_t
0021 TriggerDefs::getTriggerPrimKey(const TriggerDefs::TriggerId triggerId, const TriggerDefs::DetectorId detectorId, const TriggerDefs::PrimitiveId primitiveId, const uint16_t primlocid)
0022 {
0023 uint32_t tmp = triggerId;
0024 uint32_t key = triggerId << kBitShiftTriggerId;
0025 tmp = detectorId;
0026 key |= tmp << kBitShiftDetectorId;
0027 tmp = primitiveId;
0028 key |= tmp << kBitShiftPrimitiveId;
0029 tmp = primlocid;
0030 key |= tmp << kBitShiftPrimitiveLocId;
0031 return key;
0032 }
0033
0034 uint32_t
0035 TriggerDefs::getTriggerSumKey(const TriggerDefs::TriggerId triggerId, const TriggerDefs::DetectorId detectorId, const TriggerDefs::PrimitiveId primitiveId, const uint16_t primlocid, const uint16_t sumlocid)
0036 {
0037 uint32_t tmp = triggerId;
0038 uint32_t key = triggerId << kBitShiftTriggerId;
0039 tmp = detectorId;
0040 key |= tmp << kBitShiftDetectorId;
0041 tmp = primitiveId;
0042 key |= tmp << kBitShiftPrimitiveId;
0043 tmp = primlocid;
0044 key |= tmp << kBitShiftPrimitiveLocId;
0045 tmp = sumlocid;
0046 key |= tmp << kBitShiftSumLocId;
0047 return key;
0048 }
0049
0050 TriggerDefs::TriggerId
0051 TriggerDefs::getTriggerId_from_TriggerKey(const TriggerDefs::TriggerKey triggerkey)
0052 {
0053 uint32_t tmp = (triggerkey >> kBitShiftTriggerId);
0054 return static_cast<TriggerDefs::TriggerId>(tmp);
0055 }
0056
0057 TriggerDefs::TriggerId
0058 TriggerDefs::getTriggerId_from_TriggerPrimKey(const TriggerDefs::TriggerPrimKey triggerprimkey)
0059 {
0060 uint32_t tmp = (triggerprimkey >> kBitShiftTriggerId);
0061 return static_cast<TriggerDefs::TriggerId>(tmp);
0062 }
0063
0064 TriggerDefs::TriggerId
0065 TriggerDefs::getTriggerId_from_TriggerSumKey(const TriggerDefs::TriggerSumKey triggersumkey)
0066 {
0067 uint32_t tmp = (triggersumkey >> kBitShiftTriggerId);
0068 return static_cast<TriggerDefs::TriggerId>(tmp);
0069 }
0070
0071 TriggerDefs::DetectorId
0072 TriggerDefs::getDetectorId_from_TriggerPrimKey(const TriggerDefs::TriggerPrimKey triggerprimkey)
0073 {
0074 uint32_t tmp = (triggerprimkey >> kBitShiftDetectorId) & 0xfU;
0075 return static_cast<TriggerDefs::DetectorId>(tmp);
0076 }
0077
0078 TriggerDefs::DetectorId
0079 TriggerDefs::getDetectorId_from_TriggerSumKey(const TriggerDefs::TriggerSumKey triggersumkey)
0080 {
0081 uint32_t tmp = (triggersumkey >> kBitShiftDetectorId) & 0xfU;
0082 return static_cast<TriggerDefs::DetectorId>(tmp);
0083 }
0084
0085 TriggerDefs::PrimitiveId
0086 TriggerDefs::getPrimitiveId_from_TriggerPrimKey(const TriggerDefs::TriggerPrimKey triggerprimkey)
0087 {
0088 uint32_t tmp = (triggerprimkey >> kBitShiftPrimitiveId) & 0xfU;
0089 return static_cast<TriggerDefs::PrimitiveId>(tmp);
0090 }
0091
0092 TriggerDefs::PrimitiveId
0093 TriggerDefs::getPrimitiveId_from_TriggerSumKey(const TriggerDefs::TriggerSumKey triggersumkey)
0094 {
0095 uint32_t tmp = (triggersumkey >> kBitShiftPrimitiveId) & 0xfU;
0096 return static_cast<TriggerDefs::PrimitiveId>(tmp);
0097 }
0098
0099 uint16_t
0100 TriggerDefs::getPrimitiveLocId_from_TriggerPrimKey(const TriggerDefs::TriggerPrimKey triggerprimkey)
0101 {
0102 uint16_t tmp = (triggerprimkey >> kBitShiftPrimitiveLocId) & 0x1ffU;
0103 return tmp;
0104 }
0105
0106 uint16_t
0107 TriggerDefs::getPrimitiveLocId_from_TriggerSumKey(const TriggerDefs::TriggerSumKey triggersumkey)
0108 {
0109 uint16_t tmp = (triggersumkey >> kBitShiftPrimitiveLocId) & 0x1ffU;
0110 return tmp;
0111 }
0112
0113 uint16_t
0114 TriggerDefs::getPrimitivePhiId_from_TriggerPrimKey(const TriggerDefs::TriggerPrimKey triggerprimkey)
0115 {
0116 uint32_t detId = getDetectorId_from_TriggerPrimKey(triggerprimkey);
0117 uint32_t primId = getPrimitiveId_from_TriggerPrimKey(triggerprimkey);
0118 uint16_t tmp = (triggerprimkey >> kBitShiftPrimitiveLocId) & 0x1ffU;
0119
0120 if (primId == TriggerDefs::PrimitiveId::calPId)
0121 {
0122 if (detId == TriggerDefs::DetectorId::hcalinDId ||
0123 detId == TriggerDefs::DetectorId::hcaloutDId ||
0124 detId == TriggerDefs::DetectorId::hcalDId)
0125 {
0126 return tmp / 3;
0127 }
0128 if (detId == TriggerDefs::DetectorId::emcalDId)
0129 {
0130 return tmp / 12;
0131 }
0132 }
0133 if (primId == TriggerDefs::PrimitiveId::jetPId)
0134 {
0135 return tmp;
0136 }
0137
0138 return UINT16_MAX;
0139 }
0140
0141 uint16_t
0142 TriggerDefs::getPrimitivePhiId_from_TriggerSumKey(const TriggerDefs::TriggerSumKey triggersumkey)
0143 {
0144 uint32_t detId = getDetectorId_from_TriggerSumKey(triggersumkey);
0145 uint32_t primId = getPrimitiveId_from_TriggerSumKey(triggersumkey);
0146 uint16_t tmp = (triggersumkey >> kBitShiftPrimitiveLocId) & 0x1ffU;
0147
0148 if (primId == TriggerDefs::PrimitiveId::calPId)
0149 {
0150 if (detId == TriggerDefs::DetectorId::hcalinDId ||
0151 detId == TriggerDefs::DetectorId::hcaloutDId ||
0152 detId == TriggerDefs::DetectorId::hcalDId)
0153 {
0154 return tmp / 3;
0155 }
0156 if (detId == TriggerDefs::DetectorId::emcalDId)
0157 {
0158 return tmp / 12;
0159 }
0160 }
0161 if (primId == TriggerDefs::PrimitiveId::jetPId)
0162 {
0163 return tmp;
0164 }
0165 return UINT16_MAX;
0166 }
0167
0168 uint16_t
0169 TriggerDefs::getPrimitiveEtaId_from_TriggerPrimKey(const TriggerDefs::TriggerPrimKey triggerprimkey)
0170 {
0171 uint32_t detId = getDetectorId_from_TriggerPrimKey(triggerprimkey);
0172 uint32_t primId = getPrimitiveId_from_TriggerPrimKey(triggerprimkey);
0173
0174 uint16_t tmp = (triggerprimkey >> kBitShiftPrimitiveLocId) & 0x1ffU;
0175
0176 if (primId == TriggerDefs::PrimitiveId::calPId)
0177 {
0178 if (detId == TriggerDefs::DetectorId::hcalinDId ||
0179 detId == TriggerDefs::DetectorId::hcaloutDId ||
0180 detId == TriggerDefs::DetectorId::hcalDId)
0181 {
0182 return tmp % 3;
0183 }
0184 if (detId == TriggerDefs::DetectorId::emcalDId)
0185 {
0186 return tmp % 12;
0187 }
0188 }
0189 if (primId == TriggerDefs::PrimitiveId::jetPId)
0190 {
0191 return 0;
0192 }
0193
0194 return UINT16_MAX;
0195 }
0196
0197 uint16_t
0198 TriggerDefs::getPrimitiveEtaId_from_TriggerSumKey(const TriggerDefs::TriggerSumKey triggersumkey)
0199 {
0200 uint32_t detId = getDetectorId_from_TriggerSumKey(triggersumkey);
0201 uint32_t primId = getPrimitiveId_from_TriggerSumKey(triggersumkey);
0202 uint16_t tmp = (triggersumkey >> kBitShiftPrimitiveLocId) & 0x1ffU;
0203
0204 if (primId == TriggerDefs::PrimitiveId::calPId)
0205 {
0206 if (detId == TriggerDefs::DetectorId::hcalinDId ||
0207 detId == TriggerDefs::DetectorId::hcaloutDId ||
0208 detId == TriggerDefs::DetectorId::hcalDId)
0209 {
0210 return tmp % 3;
0211 }
0212 if (detId == TriggerDefs::DetectorId::emcalDId)
0213 {
0214 return tmp % 12;
0215 }
0216 }
0217 if (primId == TriggerDefs::PrimitiveId::jetPId)
0218 {
0219 return 0;
0220 }
0221
0222 return UINT16_MAX;
0223 }
0224
0225 uint16_t
0226 TriggerDefs::getSumLocId(const TriggerDefs::TriggerSumKey triggersumkey)
0227 {
0228 uint16_t tmp = (triggersumkey >> kBitShiftSumLocId) & 0x1fU;
0229 return tmp;
0230 }
0231 uint16_t
0232 TriggerDefs::getSumPhiId(const TriggerDefs::TriggerSumKey triggersumkey)
0233 {
0234 uint32_t primId = getPrimitiveId_from_TriggerSumKey(triggersumkey);
0235 uint16_t tmp = TriggerDefs::getSumLocId(triggersumkey);
0236
0237 if (primId == TriggerDefs::PrimitiveId::calPId)
0238 {
0239 return tmp / 4;
0240 }
0241 if (primId == TriggerDefs::PrimitiveId::jetPId)
0242 {
0243 return tmp / 12;
0244 }
0245
0246 return UINT16_MAX;
0247 }
0248 uint16_t
0249 TriggerDefs::getSumEtaId(const TriggerDefs::TriggerSumKey triggersumkey)
0250 {
0251 uint32_t primId = getPrimitiveId_from_TriggerSumKey(triggersumkey);
0252 uint16_t tmp = TriggerDefs::getSumLocId(triggersumkey);
0253
0254 if (primId == TriggerDefs::PrimitiveId::calPId)
0255 {
0256 return tmp % 4;
0257 }
0258 if (primId == TriggerDefs::PrimitiveId::jetPId)
0259 {
0260 return tmp % 12;
0261 }
0262
0263 return UINT16_MAX;
0264 }
0265
0266 uint32_t
0267 TriggerDefs::GetTowerInfoKey(const TriggerDefs::DetectorId detId, const uint16_t iprim, const uint16_t isum, const uint16_t itower)
0268 {
0269 unsigned int phibin = 0;
0270 unsigned int etabin = 0;
0271 if (detId == TriggerDefs::DetectorId::emcalDId)
0272 {
0273 phibin = 8 * (iprim / 12) + 2 * (isum / 4) + (itower / 2);
0274 etabin = 8 * (iprim % 12) + 2 * (isum % 4) + (itower % 2);
0275 return TowerInfoDefs::encode_emcal(etabin, phibin);
0276 ;
0277 }
0278 if (detId == TriggerDefs::DetectorId::hcalinDId ||
0279 detId == TriggerDefs::DetectorId::hcaloutDId ||
0280 detId == TriggerDefs::DetectorId::hcalDId)
0281 {
0282 etabin = (iprim % 3) * 8 + (isum % 4) * 2 + itower % 2;
0283 phibin = (iprim / 3) * 8 + (isum / 4) * 2 + itower / 2;
0284 return TowerInfoDefs::encode_hcal(etabin, phibin);
0285 }
0286
0287 return UINT16_MAX;
0288 }
0289 TriggerDefs::TriggerId TriggerDefs::GetTriggerId(const std::string& trigger)
0290 {
0291 if (trigger == "NONE")
0292 {
0293 return TriggerDefs::TriggerId::noneTId;
0294 }
0295 if (trigger == "MBD")
0296 {
0297 return TriggerDefs::TriggerId::mbdTId;
0298 }
0299 if (trigger == "JET")
0300 {
0301 return TriggerDefs::TriggerId::jetTId;
0302 }
0303 if (trigger == "PHOTON")
0304 {
0305 return TriggerDefs::TriggerId::photonTId;
0306 }
0307 if (trigger == "PAIR")
0308 {
0309 return TriggerDefs::TriggerId::pairTId;
0310 }
0311 if (trigger == "COSMIC")
0312 {
0313 return TriggerDefs::TriggerId::cosmicTId;
0314 }
0315 if (trigger == "COSMIC_COIN")
0316 {
0317 return TriggerDefs::TriggerId::cosmic_coinTId;
0318 }
0319 if (trigger == "PHYSICS")
0320 {
0321 return TriggerDefs::TriggerId::physicsTId;
0322 }
0323
0324 return TriggerDefs::TriggerId::noneTId;
0325 }
0326
0327 TriggerDefs::DetectorId TriggerDefs::GetDetectorId(const std::string& detector)
0328 {
0329 if (detector == "NONE")
0330 {
0331 return TriggerDefs::DetectorId::noneDId;
0332 }
0333 if (detector == "MBD")
0334 {
0335 return TriggerDefs::DetectorId::mbdDId;
0336 }
0337 if (detector == "HCALIN")
0338 {
0339 return TriggerDefs::DetectorId::hcalinDId;
0340 }
0341 if (detector == "HCALOUT")
0342 {
0343 return TriggerDefs::DetectorId::hcaloutDId;
0344 }
0345 if (detector == "EMCAL")
0346 {
0347 return TriggerDefs::DetectorId::emcalDId;
0348 }
0349 if (detector == "CAL")
0350 {
0351 return TriggerDefs::DetectorId::calDId;
0352 }
0353 if (detector == "HCAL")
0354 {
0355 return TriggerDefs::DetectorId::hcalDId;
0356 }
0357
0358 return TriggerDefs::DetectorId::noneDId;
0359 }
0360 TriggerDefs::PrimitiveId TriggerDefs::GetPrimitiveId(const std::string& primitive)
0361 {
0362 if (primitive == "NONE")
0363 {
0364 return TriggerDefs::PrimitiveId::nonePId;
0365 }
0366 if (primitive == "MBD")
0367 {
0368 return TriggerDefs::PrimitiveId::mbdPId;
0369 }
0370 if (primitive == "HCALIN" ||
0371 primitive == "HCALOUT" ||
0372 primitive == "HCAL" ||
0373 primitive == "EMCAL")
0374 {
0375 return TriggerDefs::PrimitiveId::calPId;
0376 }
0377 if (primitive == "JET")
0378 {
0379 return TriggerDefs::PrimitiveId::jetPId;
0380 }
0381 if (primitive == "PAIR")
0382 {
0383 return TriggerDefs::PrimitiveId::pairPId;
0384 }
0385
0386 return TriggerDefs::PrimitiveId::nonePId;
0387 }