Back to home page

sPhenix code displayed by LXR

 
 

    


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 }