Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 12:51:17

0001 #ifndef CondFormats_L1TObjects_L1GtTriggerMenu_h
0002 #define CondFormats_L1TObjects_L1GtTriggerMenu_h
0003 
0004 /**
0005  * \class L1GtTriggerMenu
0006  *
0007  *
0008  * Description: L1 trigger menu.
0009  *
0010  * Implementation:
0011  *    <TODO: enter implementation details>
0012  *
0013  * \author: Vasile Mihai Ghete - HEPHY Vienna
0014  *
0015  * $Date$
0016  * $Revision$
0017  *
0018  */
0019 
0020 // system include files
0021 #include "CondFormats/Serialization/interface/Serializable.h"
0022 
0023 #include <string>
0024 #include <vector>
0025 #include <map>
0026 
0027 #include <iosfwd>
0028 
0029 // user include files
0030 #include "CondFormats/L1TObjects/interface/L1GtTriggerMenuFwd.h"
0031 
0032 #include "CondFormats/L1TObjects/interface/L1GtMuonTemplate.h"
0033 #include "CondFormats/L1TObjects/interface/L1GtCaloTemplate.h"
0034 #include "CondFormats/L1TObjects/interface/L1GtEnergySumTemplate.h"
0035 #include "CondFormats/L1TObjects/interface/L1GtJetCountsTemplate.h"
0036 #include "CondFormats/L1TObjects/interface/L1GtCastorTemplate.h"
0037 #include "CondFormats/L1TObjects/interface/L1GtHfBitCountsTemplate.h"
0038 #include "CondFormats/L1TObjects/interface/L1GtHfRingEtSumsTemplate.h"
0039 #include "CondFormats/L1TObjects/interface/L1GtCorrelationTemplate.h"
0040 #include "CondFormats/L1TObjects/interface/L1GtBptxTemplate.h"
0041 #include "CondFormats/L1TObjects/interface/L1GtExternalTemplate.h"
0042 
0043 // forward declarations
0044 class L1GtCondition;
0045 class L1GtAlgorithm;
0046 
0047 // class declaration
0048 class L1GtTriggerMenu {
0049 public:
0050   // constructor
0051   L1GtTriggerMenu();
0052 
0053   L1GtTriggerMenu(const std::string&,
0054                   const unsigned int numberConditionChips,
0055                   const std::vector<std::vector<L1GtMuonTemplate> >&,
0056                   const std::vector<std::vector<L1GtCaloTemplate> >&,
0057                   const std::vector<std::vector<L1GtEnergySumTemplate> >&,
0058                   const std::vector<std::vector<L1GtJetCountsTemplate> >&,
0059                   const std::vector<std::vector<L1GtCastorTemplate> >&,
0060                   const std::vector<std::vector<L1GtHfBitCountsTemplate> >&,
0061                   const std::vector<std::vector<L1GtHfRingEtSumsTemplate> >&,
0062                   const std::vector<std::vector<L1GtBptxTemplate> >&,
0063                   const std::vector<std::vector<L1GtExternalTemplate> >&,
0064                   const std::vector<std::vector<L1GtCorrelationTemplate> >&,
0065                   const std::vector<std::vector<L1GtMuonTemplate> >&,
0066                   const std::vector<std::vector<L1GtCaloTemplate> >&,
0067                   const std::vector<std::vector<L1GtEnergySumTemplate> >&);
0068 
0069   // copy constructor
0070   L1GtTriggerMenu(const L1GtTriggerMenu&);
0071 
0072   // destructor
0073   virtual ~L1GtTriggerMenu();
0074 
0075   // assignment operator
0076   L1GtTriggerMenu& operator=(const L1GtTriggerMenu&);
0077 
0078 public:
0079   /// get / set / build the condition maps
0080   inline const std::vector<ConditionMap>& gtConditionMap() const { return m_conditionMap; }
0081 
0082   void setGtConditionMap(const std::vector<ConditionMap>&);
0083   void buildGtConditionMap();
0084 
0085   /// get / set the trigger menu names
0086   inline const std::string& gtTriggerMenuInterface() const { return m_triggerMenuInterface; }
0087 
0088   void setGtTriggerMenuInterface(const std::string&);
0089 
0090   //
0091   inline const std::string& gtTriggerMenuName() const { return m_triggerMenuName; }
0092 
0093   void setGtTriggerMenuName(const std::string&);
0094 
0095   //
0096   inline const std::string& gtTriggerMenuImplementation() const { return m_triggerMenuImplementation; }
0097 
0098   void setGtTriggerMenuImplementation(const std::string&);
0099 
0100   /// menu associated scale key
0101   inline const std::string& gtScaleDbKey() const { return m_scaleDbKey; }
0102 
0103   void setGtScaleDbKey(const std::string&);
0104 
0105   /// get / set the vectors containing the conditions
0106   inline const std::vector<std::vector<L1GtMuonTemplate> >& vecMuonTemplate() const { return m_vecMuonTemplate; }
0107 
0108   void setVecMuonTemplate(const std::vector<std::vector<L1GtMuonTemplate> >&);
0109 
0110   //
0111   inline const std::vector<std::vector<L1GtCaloTemplate> >& vecCaloTemplate() const { return m_vecCaloTemplate; }
0112 
0113   void setVecCaloTemplate(const std::vector<std::vector<L1GtCaloTemplate> >&);
0114 
0115   //
0116   inline const std::vector<std::vector<L1GtEnergySumTemplate> >& vecEnergySumTemplate() const {
0117     return m_vecEnergySumTemplate;
0118   }
0119 
0120   void setVecEnergySumTemplate(const std::vector<std::vector<L1GtEnergySumTemplate> >&);
0121 
0122   //
0123   inline const std::vector<std::vector<L1GtJetCountsTemplate> >& vecJetCountsTemplate() const {
0124     return m_vecJetCountsTemplate;
0125   }
0126 
0127   void setVecJetCountsTemplate(const std::vector<std::vector<L1GtJetCountsTemplate> >&);
0128 
0129   //
0130   inline const std::vector<std::vector<L1GtCastorTemplate> >& vecCastorTemplate() const { return m_vecCastorTemplate; }
0131 
0132   void setVecCastorTemplate(const std::vector<std::vector<L1GtCastorTemplate> >&);
0133 
0134   //
0135   inline const std::vector<std::vector<L1GtHfBitCountsTemplate> >& vecHfBitCountsTemplate() const {
0136     return m_vecHfBitCountsTemplate;
0137   }
0138 
0139   void setVecHfBitCountsTemplate(const std::vector<std::vector<L1GtHfBitCountsTemplate> >&);
0140 
0141   //
0142   inline const std::vector<std::vector<L1GtHfRingEtSumsTemplate> >& vecHfRingEtSumsTemplate() const {
0143     return m_vecHfRingEtSumsTemplate;
0144   }
0145 
0146   void setVecHfRingEtSumsTemplate(const std::vector<std::vector<L1GtHfRingEtSumsTemplate> >&);
0147 
0148   //
0149   inline const std::vector<std::vector<L1GtBptxTemplate> >& vecBptxTemplate() const { return m_vecBptxTemplate; }
0150 
0151   void setVecBptxTemplate(const std::vector<std::vector<L1GtBptxTemplate> >&);
0152 
0153   //
0154 
0155   inline const std::vector<std::vector<L1GtExternalTemplate> >& vecExternalTemplate() const {
0156     return m_vecExternalTemplate;
0157   }
0158 
0159   void setVecExternalTemplate(const std::vector<std::vector<L1GtExternalTemplate> >&);
0160 
0161   //
0162   inline const std::vector<std::vector<L1GtCorrelationTemplate> >& vecCorrelationTemplate() const {
0163     return m_vecCorrelationTemplate;
0164   }
0165 
0166   void setVecCorrelationTemplate(const std::vector<std::vector<L1GtCorrelationTemplate> >&);
0167 
0168   //
0169   inline const std::vector<std::vector<L1GtMuonTemplate> >& corMuonTemplate() const { return m_corMuonTemplate; }
0170 
0171   void setCorMuonTemplate(const std::vector<std::vector<L1GtMuonTemplate> >&);
0172 
0173   //
0174   inline const std::vector<std::vector<L1GtCaloTemplate> >& corCaloTemplate() const { return m_corCaloTemplate; }
0175 
0176   void setCorCaloTemplate(const std::vector<std::vector<L1GtCaloTemplate> >&);
0177 
0178   // get / set the vectors containing the conditions for correlation templates
0179   //
0180   inline const std::vector<std::vector<L1GtEnergySumTemplate> >& corEnergySumTemplate() const {
0181     return m_corEnergySumTemplate;
0182   }
0183 
0184   void setCorEnergySumTemplate(const std::vector<std::vector<L1GtEnergySumTemplate> >&);
0185 
0186   /// get / set the algorithm map (by name)
0187   inline const AlgorithmMap& gtAlgorithmMap() const { return m_algorithmMap; }
0188 
0189   void setGtAlgorithmMap(const AlgorithmMap&);
0190 
0191   /// get / set the algorithm map (by alias)
0192   inline const AlgorithmMap& gtAlgorithmAliasMap() const { return m_algorithmAliasMap; }
0193 
0194   void setGtAlgorithmAliasMap(const AlgorithmMap&);
0195 
0196   /// get / set the technical trigger map
0197   inline const AlgorithmMap& gtTechnicalTriggerMap() const { return m_technicalTriggerMap; }
0198 
0199   void setGtTechnicalTriggerMap(const AlgorithmMap&);
0200 
0201   /// print the trigger menu
0202   /// allow various verbosity levels
0203   void print(std::ostream&, int&) const;
0204 
0205 public:
0206   /// get the result for algorithm with name algName
0207   /// use directly the format of decisionWord (no typedef)
0208   const bool gtAlgorithmResult(const std::string& algName, const std::vector<bool>& decWord) const;
0209 
0210 private:
0211   /// map containing the conditions (per condition chip) - transient
0212   std::vector<ConditionMap> m_conditionMap COND_TRANSIENT;
0213 
0214 private:
0215   /// menu names
0216   std::string m_triggerMenuInterface;
0217   std::string m_triggerMenuName;
0218   std::string m_triggerMenuImplementation;
0219 
0220   /// menu associated scale key
0221   std::string m_scaleDbKey;
0222 
0223   /// vectors containing the conditions
0224   /// explicit, due to persistency...
0225   std::vector<std::vector<L1GtMuonTemplate> > m_vecMuonTemplate;
0226   std::vector<std::vector<L1GtCaloTemplate> > m_vecCaloTemplate;
0227   std::vector<std::vector<L1GtEnergySumTemplate> > m_vecEnergySumTemplate;
0228   std::vector<std::vector<L1GtJetCountsTemplate> > m_vecJetCountsTemplate;
0229   std::vector<std::vector<L1GtCastorTemplate> > m_vecCastorTemplate;
0230   std::vector<std::vector<L1GtHfBitCountsTemplate> > m_vecHfBitCountsTemplate;
0231   std::vector<std::vector<L1GtHfRingEtSumsTemplate> > m_vecHfRingEtSumsTemplate;
0232   std::vector<std::vector<L1GtBptxTemplate> > m_vecBptxTemplate;
0233   std::vector<std::vector<L1GtExternalTemplate> > m_vecExternalTemplate;
0234 
0235   std::vector<std::vector<L1GtCorrelationTemplate> > m_vecCorrelationTemplate;
0236   std::vector<std::vector<L1GtMuonTemplate> > m_corMuonTemplate;
0237   std::vector<std::vector<L1GtCaloTemplate> > m_corCaloTemplate;
0238   std::vector<std::vector<L1GtEnergySumTemplate> > m_corEnergySumTemplate;
0239 
0240   /// map containing the physics algorithms (by name)
0241   AlgorithmMap m_algorithmMap;
0242 
0243   /// map containing the physics algorithms (by alias)
0244   AlgorithmMap m_algorithmAliasMap;
0245 
0246   /// map containing the technical triggers
0247   AlgorithmMap m_technicalTriggerMap;
0248 
0249   COND_SERIALIZABLE;
0250 };
0251 
0252 #endif /*CondFormats_L1TObjects_L1GtTriggerMenu_h*/