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