File indexing completed on 2024-06-28 02:36:28
0001 #ifndef L1TGlobal_TriggerMenuParser_h
0002 #define L1TGlobal_TriggerMenuParser_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 #include <string>
0031 #include <vector>
0032
0033 #include "L1Trigger/L1TGlobal/interface/TriggerMenuFwd.h"
0034
0035 #include "L1Trigger/L1TGlobal/interface/MuonTemplate.h"
0036 #include "L1Trigger/L1TGlobal/interface/MuonShowerTemplate.h"
0037 #include "L1Trigger/L1TGlobal/interface/CaloTemplate.h"
0038 #include "L1Trigger/L1TGlobal/interface/EnergySumTemplate.h"
0039 #include "L1Trigger/L1TGlobal/interface/EnergySumZdcTemplate.h"
0040 #include "L1Trigger/L1TGlobal/interface/AXOL1TLTemplate.h"
0041 #include "L1Trigger/L1TGlobal/interface/CICADATemplate.h"
0042 #include "L1Trigger/L1TGlobal/interface/CorrelationTemplate.h"
0043 #include "L1Trigger/L1TGlobal/interface/CorrelationThreeBodyTemplate.h"
0044 #include "L1Trigger/L1TGlobal/interface/CorrelationWithOverlapRemovalTemplate.h"
0045 #include "L1Trigger/L1TGlobal/interface/ExternalTemplate.h"
0046
0047 #include "L1Trigger/L1TGlobal/interface/GlobalScales.h"
0048
0049 #include "CondFormats/L1TObjects/interface/L1TUtmTriggerMenu.h"
0050
0051 #include <cmath>
0052 #include "CondFormats/L1TObjects/interface/L1TUtmTriggerMenu.h"
0053 #include "CondFormats/L1TObjects/interface/L1TUtmAlgorithm.h"
0054 #include "CondFormats/L1TObjects/interface/L1TUtmCondition.h"
0055 #include "CondFormats/L1TObjects/interface/L1TUtmObject.h"
0056 #include "CondFormats/L1TObjects/interface/L1TUtmCut.h"
0057 #include "CondFormats/L1TObjects/interface/L1TUtmScale.h"
0058
0059
0060 class GlobalCondition;
0061 class GlobalAlgorithm;
0062
0063 namespace l1t {
0064
0065 typedef enum { COS, SIN } TrigFunc_t;
0066
0067
0068 class TriggerMenuParser {
0069 public:
0070
0071
0072 TriggerMenuParser();
0073
0074
0075 virtual ~TriggerMenuParser();
0076
0077 public:
0078
0079 inline const unsigned int gtNumberConditionChips() const { return m_numberConditionChips; }
0080
0081 void setGtNumberConditionChips(const unsigned int&);
0082
0083
0084 inline const unsigned int gtPinsOnConditionChip() const { return m_pinsOnConditionChip; }
0085
0086 void setGtPinsOnConditionChip(const unsigned int&);
0087
0088
0089
0090 inline std::vector<int> gtOrderConditionChip() const { return m_orderConditionChip; }
0091
0092 void setGtOrderConditionChip(const std::vector<int>&);
0093
0094
0095 inline const unsigned int gtNumberPhysTriggers() const { return m_numberPhysTriggers; }
0096
0097 void setGtNumberPhysTriggers(const unsigned int&);
0098
0099 public:
0100
0101 inline const std::vector<ConditionMap>& gtConditionMap() const { return m_conditionMap; }
0102
0103 void setGtConditionMap(const std::vector<ConditionMap>&);
0104
0105
0106 inline const std::string& gtTriggerMenuInterface() const { return m_triggerMenuInterface; }
0107
0108 void setGtTriggerMenuInterface(const std::string&);
0109
0110
0111 inline const std::string& gtTriggerMenuName() const { return m_triggerMenuName; }
0112
0113 void setGtTriggerMenuName(const std::string&);
0114
0115
0116 inline const unsigned long gtTriggerMenuImplementation() const { return m_triggerMenuImplementation; }
0117
0118 void setGtTriggerMenuImplementation(const unsigned long&);
0119
0120
0121 inline const std::string& gtScaleDbKey() const { return m_scaleDbKey; }
0122
0123
0124 inline const GlobalScales& gtScales() const { return m_gtScales; }
0125
0126 void setGtScaleDbKey(const std::string&);
0127
0128
0129 inline const std::vector<std::vector<MuonTemplate> >& vecMuonTemplate() const { return m_vecMuonTemplate; }
0130 void setVecMuonTemplate(const std::vector<std::vector<MuonTemplate> >&);
0131
0132
0133 inline const std::vector<std::vector<MuonShowerTemplate> >& vecMuonShowerTemplate() const {
0134 return m_vecMuonShowerTemplate;
0135 }
0136 void setVecMuonShowerTemplate(const std::vector<std::vector<MuonShowerTemplate> >&);
0137
0138
0139 inline const std::vector<std::vector<CaloTemplate> >& vecCaloTemplate() const { return m_vecCaloTemplate; }
0140
0141 void setVecCaloTemplate(const std::vector<std::vector<CaloTemplate> >&);
0142
0143
0144 inline const std::vector<std::vector<EnergySumTemplate> >& vecEnergySumTemplate() const {
0145 return m_vecEnergySumTemplate;
0146 }
0147
0148 void setVecEnergySumTemplate(const std::vector<std::vector<EnergySumTemplate> >&);
0149
0150
0151 inline const std::vector<std::vector<EnergySumZdcTemplate> >& vecEnergySumZdcTemplate() const {
0152 return m_vecEnergySumZdcTemplate;
0153 }
0154
0155 void setVecEnergySumZdcTemplate(const std::vector<std::vector<EnergySumZdcTemplate> >&);
0156
0157
0158 inline const std::vector<std::vector<AXOL1TLTemplate> >& vecAXOL1TLTemplate() const { return m_vecAXOL1TLTemplate; }
0159 void setVecAXOL1TLTemplate(const std::vector<std::vector<AXOL1TLTemplate> >&);
0160
0161
0162 inline const std::vector<std::vector<CICADATemplate> >& vecCICADATemplate() const { return m_vecCICADATemplate; }
0163 void setVecCICADATemplate(const std::vector<std::vector<CICADATemplate> >&);
0164
0165
0166 inline const std::vector<std::vector<ExternalTemplate> >& vecExternalTemplate() const {
0167 return m_vecExternalTemplate;
0168 }
0169
0170 void setVecExternalTemplate(const std::vector<std::vector<ExternalTemplate> >&);
0171
0172
0173 inline const std::vector<std::vector<CorrelationTemplate> >& vecCorrelationTemplate() const {
0174 return m_vecCorrelationTemplate;
0175 }
0176
0177 void setVecCorrelationTemplate(const std::vector<std::vector<CorrelationTemplate> >&);
0178
0179
0180 inline const std::vector<std::vector<CorrelationThreeBodyTemplate> >& vecCorrelationThreeBodyTemplate() const {
0181 return m_vecCorrelationThreeBodyTemplate;
0182 }
0183
0184 void setVecCorrelationThreeBodyTemplate(const std::vector<std::vector<CorrelationThreeBodyTemplate> >&);
0185
0186
0187 inline const std::vector<std::vector<CorrelationWithOverlapRemovalTemplate> >&
0188 vecCorrelationWithOverlapRemovalTemplate() const {
0189 return m_vecCorrelationWithOverlapRemovalTemplate;
0190 }
0191
0192 void setVecCorrelationWithOverlapRemovalTemplate(
0193 const std::vector<std::vector<CorrelationWithOverlapRemovalTemplate> >&);
0194
0195
0196
0197 inline const std::vector<std::vector<MuonTemplate> >& corMuonTemplate() const { return m_corMuonTemplate; }
0198
0199 void setCorMuonTemplate(const std::vector<std::vector<MuonTemplate> >&);
0200
0201
0202 inline const std::vector<std::vector<CaloTemplate> >& corCaloTemplate() const { return m_corCaloTemplate; }
0203
0204 void setCorCaloTemplate(const std::vector<std::vector<CaloTemplate> >&);
0205
0206
0207 inline const std::vector<std::vector<EnergySumTemplate> >& corEnergySumTemplate() const {
0208 return m_corEnergySumTemplate;
0209 }
0210
0211 void setCorEnergySumTemplate(const std::vector<std::vector<EnergySumTemplate> >&);
0212
0213
0214 inline const AlgorithmMap& gtAlgorithmMap() const { return m_algorithmMap; }
0215
0216 void setGtAlgorithmMap(const AlgorithmMap&);
0217
0218
0219 inline const AlgorithmMap& gtAlgorithmAliasMap() const { return m_algorithmAliasMap; }
0220
0221 void setGtAlgorithmAliasMap(const AlgorithmMap&);
0222
0223 public:
0224 void parseCondFormats(const L1TUtmTriggerMenu* utmMenu);
0225
0226 std::map<std::string, unsigned int> getExternalSignals(const L1TUtmTriggerMenu* utmMenu);
0227
0228 public:
0229
0230 inline const std::string& gtTriggerMenuInterfaceDate() const { return m_triggerMenuInterfaceDate; }
0231
0232 void setGtTriggerMenuInterfaceDate(const std::string&);
0233
0234 inline const std::string& gtTriggerMenuInterfaceAuthor() const { return m_triggerMenuInterfaceAuthor; }
0235
0236 void setGtTriggerMenuInterfaceAuthor(const std::string&);
0237
0238 inline const std::string& gtTriggerMenuInterfaceDescription() const { return m_triggerMenuInterfaceDescription; }
0239
0240 void setGtTriggerMenuInterfaceDescription(const std::string&);
0241
0242
0243
0244 inline const int gtTriggerMenuUUID() const { return m_triggerMenuUUID; }
0245
0246 void setGtTriggerMenuUUID(const int);
0247
0248 inline const std::string& gtTriggerMenuDate() const { return m_triggerMenuDate; }
0249
0250 void setGtTriggerMenuDate(const std::string&);
0251
0252 inline const std::string& gtTriggerMenuAuthor() const { return m_triggerMenuAuthor; }
0253
0254 void setGtTriggerMenuAuthor(const std::string&);
0255
0256 inline const std::string& gtTriggerMenuDescription() const { return m_triggerMenuDescription; }
0257
0258 void setGtTriggerMenuDescription(const std::string&);
0259
0260 inline const std::string& gtAlgorithmImplementation() const { return m_algorithmImplementation; }
0261
0262 void setGtAlgorithmImplementation(const std::string&);
0263
0264 private:
0265
0266
0267
0268
0269 void clearMaps();
0270
0271
0272
0273 bool insertConditionIntoMap(GlobalCondition& cond, const int chipNr);
0274
0275
0276 bool insertAlgorithmIntoMap(const GlobalAlgorithm& alg);
0277
0278 template <typename T>
0279 std::string l1t2string(T);
0280 int l1tstr2int(const std::string data);
0281
0282
0283
0284
0285 bool parseScales(std::map<std::string, tmeventsetup::esScale> scaleMap);
0286
0287
0288
0289
0290
0291 bool parseMuon(L1TUtmCondition condMu, unsigned int chipNr = 0, const bool corrFlag = false);
0292
0293 bool parseMuonCorr(const L1TUtmObject* condMu, unsigned int chipNr = 0);
0294
0295
0296 bool parseMuonShower(L1TUtmCondition condMu, unsigned int chipNr = 0, const bool corrFlag = false);
0297
0298
0299
0300
0301
0302 bool parseCalo(L1TUtmCondition condCalo, unsigned int chipNr = 0, const bool corrFlag = false);
0303
0304 bool parseCaloCorr(const L1TUtmObject* corrCalo, unsigned int chipNr = 0);
0305
0306
0307
0308
0309
0310
0311 bool parseEnergySum(L1TUtmCondition condEnergySums, unsigned int chipNr = 0, const bool corrFlag = false);
0312
0313 bool parseEnergySumZdc(L1TUtmCondition condEnergySumZdcs, unsigned int chipNr = 0, const bool corrFlag = false);
0314
0315 bool parseAXOL1TL(L1TUtmCondition condAXOL1TL, unsigned int chipNr = 0);
0316
0317 bool parseCICADA(L1TUtmCondition condCICADA, unsigned int chipNr = 0);
0318
0319 bool parseEnergySumCorr(const L1TUtmObject* corrESum, unsigned int chipNr = 0);
0320
0321 bool parseExternal(L1TUtmCondition condExt, unsigned int chipNr = 0);
0322
0323
0324 bool parseCorrelation(L1TUtmCondition corrCond, unsigned int chipNr = 0);
0325
0326
0327 bool parseCorrelationThreeBody(L1TUtmCondition corrCond, unsigned int chipNr = 0);
0328
0329
0330 bool parseCorrelationWithOverlapRemoval(const L1TUtmCondition& corrCond, unsigned int chipNr = 0);
0331
0332
0333
0334 bool parseAlgorithm(L1TUtmAlgorithm algorithm, unsigned int chipNr = 0);
0335
0336
0337 void parseCalMuEta_LUTS(std::map<std::string, tmeventsetup::esScale> scaleMap, std::string obj1, std::string obj2);
0338
0339
0340 void parseCalMuPhi_LUTS(std::map<std::string, tmeventsetup::esScale> scaleMap, std::string obj1, std::string obj2);
0341
0342
0343 void parsePt_LUTS(std::map<std::string, tmeventsetup::esScale> scaleMap,
0344 std::string lutpfx,
0345 std::string obj1,
0346 unsigned int prec);
0347
0348
0349 void parseUpt_LUTS(std::map<std::string, tmeventsetup::esScale> scaleMap,
0350 std::string lutpfx,
0351 std::string obj1,
0352 unsigned int prec);
0353
0354
0355 void parseDeltaEta_Cosh_LUTS(std::map<std::string, tmeventsetup::esScale> scaleMap,
0356 std::string obj1,
0357 std::string obj2,
0358 unsigned int prec1,
0359 unsigned int prec2);
0360
0361
0362 void parseDeltaPhi_Cos_LUTS(const std::map<std::string, tmeventsetup::esScale>& scaleMap,
0363 const std::string& obj1,
0364 const std::string& obj2,
0365 unsigned int prec1,
0366 unsigned int prec2);
0367
0368
0369 void parsePhi_Trig_LUTS(const std::map<std::string, tmeventsetup::esScale>& scaleMap,
0370 const std::string& obj,
0371 TrigFunc_t func,
0372 unsigned int prec);
0373
0374 private:
0375
0376
0377
0378 unsigned int m_numberConditionChips;
0379
0380
0381 unsigned int m_pinsOnConditionChip;
0382
0383
0384
0385 std::vector<int> m_orderConditionChip;
0386
0387
0388 unsigned int m_numberPhysTriggers;
0389
0390
0391
0392
0393 private:
0394 std::string m_triggerMenuInterfaceDate;
0395 std::string m_triggerMenuInterfaceAuthor;
0396 std::string m_triggerMenuInterfaceDescription;
0397
0398 std::string m_triggerMenuDate;
0399 std::string m_triggerMenuAuthor;
0400 std::string m_triggerMenuDescription;
0401
0402 std::string m_algorithmImplementation;
0403
0404 private:
0405
0406 std::vector<ConditionMap> m_conditionMap;
0407
0408 private:
0409
0410 std::string m_triggerMenuInterface;
0411 std::string m_triggerMenuName;
0412 unsigned long m_triggerMenuImplementation;
0413 unsigned long m_triggerMenuUUID;
0414
0415
0416 std::string m_scaleDbKey;
0417
0418
0419
0420 std::vector<std::vector<MuonTemplate> > m_vecMuonTemplate;
0421 std::vector<std::vector<MuonShowerTemplate> > m_vecMuonShowerTemplate;
0422 std::vector<std::vector<CaloTemplate> > m_vecCaloTemplate;
0423 std::vector<std::vector<EnergySumTemplate> > m_vecEnergySumTemplate;
0424 std::vector<std::vector<EnergySumZdcTemplate> > m_vecEnergySumZdcTemplate;
0425 std::vector<std::vector<AXOL1TLTemplate> > m_vecAXOL1TLTemplate;
0426 std::vector<std::vector<CICADATemplate> > m_vecCICADATemplate;
0427 std::vector<std::vector<ExternalTemplate> > m_vecExternalTemplate;
0428
0429 std::vector<std::vector<CorrelationTemplate> > m_vecCorrelationTemplate;
0430 std::vector<std::vector<CorrelationThreeBodyTemplate> > m_vecCorrelationThreeBodyTemplate;
0431 std::vector<std::vector<CorrelationWithOverlapRemovalTemplate> > m_vecCorrelationWithOverlapRemovalTemplate;
0432 std::vector<std::vector<MuonTemplate> > m_corMuonTemplate;
0433 std::vector<std::vector<CaloTemplate> > m_corCaloTemplate;
0434 std::vector<std::vector<EnergySumTemplate> > m_corEnergySumTemplate;
0435
0436
0437 AlgorithmMap m_algorithmMap;
0438
0439
0440 AlgorithmMap m_algorithmAliasMap;
0441
0442
0443 GlobalScales m_gtScales;
0444 };
0445
0446 }
0447 #endif