CMS 3D CMS Logo

TriggerObjectStandAlone.h
Go to the documentation of this file.
1 #ifndef DataFormats_PatCandidates_TriggerObjectStandAlone_h
2 #define DataFormats_PatCandidates_TriggerObjectStandAlone_h
3 
4 // -*- C++ -*-
5 //
6 // Package: PatCandidates
7 // Class: pat::TriggerObjectStandAlone
8 //
9 //
26 namespace edm {
27  class TriggerNames;
28 }
29 
30 namespace pat {
31 
36 
38  std::vector<std::string> filterLabels_;
39  std::vector<uint16_t> filterLabelIndices_;
40 
42  std::vector<std::string> pathNames_;
43  std::vector<uint16_t> pathIndices_;
44 
49  std::vector<bool> pathLastFilterAccepted_;
53  std::vector<bool> pathL3FilterAccepted_;
54 
56 
58 
60  static const char wildcard_ = '*';
61 
63 
65  bool hasAnyName(const std::string &name, const std::vector<std::string> &nameVec) const;
68  if (!hasFilterOrCondition(name))
69  filterLabels_.push_back(name);
70  };
72  void addPathOrAlgorithm(const std::string &name, bool pathLastFilterAccepted, bool pathL3FilterAccepted);
74  const std::vector<std::string> &filtersOrConditions() const {
75  checkIfFiltersAreUnpacked();
76  return filterLabels_;
77  };
79  std::vector<std::string> pathsOrAlgorithms(bool pathLastFilterAccepted, bool pathL3FilterAccepted) const;
81  bool hasFilterOrCondition(const std::string &name) const;
83  bool hasPathOrAlgorithm(const std::string &name, bool pathLastFilterAccepted, bool pathL3FilterAccepted) const;
85  bool hasLastFilter() const {
86  return (!pathLastFilterAccepted_.empty() && pathLastFilterAccepted_.size() == pathNames_.size());
87  };
88  bool hasL3Filter() const {
89  return (!pathL3FilterAccepted_.empty() && pathL3FilterAccepted_.size() == pathNames_.size());
90  };
91 
93  bool checkIfPathsAreUnpacked(bool throwIfPacked = true) const;
95  bool checkIfFiltersAreUnpacked(bool throwIfPacked = true) const;
96 
97  public:
99 
103  TriggerObjectStandAlone(const TriggerObject &trigObj);
112 
115 
117 
118  TriggerObjectStandAlone copy() const { return *this; }
119 
121  void addFilterLabel(const std::string &filterLabel) { addFilterOrCondition(filterLabel); };
123  void addConditionName(const std::string &conditionName) { addFilterOrCondition(conditionName); };
126  bool pathLastFilterAccepted = true,
127  bool pathL3FilterAccepted = true) {
128  addPathOrAlgorithm(pathName, pathLastFilterAccepted, pathL3FilterAccepted);
129  };
131  void addAlgorithmName(const std::string &algorithmName, bool algoCondAccepted = true) {
132  addPathOrAlgorithm(algorithmName, algoCondAccepted, false);
133  };
135  const std::vector<std::string> &filterLabels() const { return filtersOrConditions(); };
137  const std::vector<std::string> &conditionNames() const { return filtersOrConditions(); };
139  std::vector<std::string> pathNames(bool pathLastFilterAccepted = false, bool pathL3FilterAccepted = true) const {
140  return pathsOrAlgorithms(pathLastFilterAccepted, pathL3FilterAccepted);
141  };
143  std::vector<std::string> algorithmNames(bool algoCondAccepted = true) const {
144  return pathsOrAlgorithms(algoCondAccepted, false);
145  };
147  TriggerObject triggerObject();
149  bool hasFilterLabel(const std::string &filterLabel) const { return hasFilterOrCondition(filterLabel); };
151  bool hasConditionName(const std::string &conditionName) const { return hasFilterOrCondition(conditionName); };
154  bool pathLastFilterAccepted = false,
155  bool pathL3FilterAccepted = true) const {
156  return hasPathOrAlgorithm(pathName, pathLastFilterAccepted, pathL3FilterAccepted);
157  };
159  bool hasAlgorithmName(const std::string &algorithmName, bool algoCondAccepted = true) const {
160  return hasPathOrAlgorithm(algorithmName, algoCondAccepted, false);
161  };
163  bool hasCollection(const std::string &collName) const override;
164  bool hasCollection(const edm::InputTag &collName) const override { return hasCollection(collName.encode()); };
166  bool hasPathLastFilterAccepted() const { return hasLastFilter(); };
167  bool hasAlgoCondAccepted() const { return hasLastFilter(); };
168  bool hasPathL3FilterAccepted() const { return hasL3Filter(); };
169 
173 
175  bool filter(const std::string &filterLabel) const { return hasFilterLabel(filterLabel); };
177  bool cond(const std::string &conditionName) const { return hasConditionName(conditionName); };
179  bool path(const std::string &pathName,
180  unsigned pathLastFilterAccepted = 0,
181  unsigned pathL3FilterAccepted = 1) const {
182  return hasPathName(pathName, bool(pathLastFilterAccepted), bool(pathL3FilterAccepted));
183  };
185  bool algo(const std::string &algorithmName, unsigned algoCondAccepted = 1) const {
186  return hasAlgorithmName(algorithmName, bool(algoCondAccepted));
187  };
189  bool coll(const std::string &collName) const override { return hasCollection(collName); };
190 
192  void setPSetID(const edm::ParameterSetID &psetId) { psetId_ = psetId; }
193 
194  const edm::ParameterSetID &psetID() const { return psetId_; }
195 
198  void packPathNames(const edm::TriggerNames &names);
200  void unpackPathNames(const edm::TriggerNames &names);
202  void packFilterLabels(const std::vector<std::string> &labels);
204  void unpackFilterLabels(const std::vector<std::string> &labels);
206  void unpackFilterLabels(const edm::EventBase &event, const edm::TriggerResults &res);
208  void unpackNamesAndLabels(const edm::EventBase &event, const edm::TriggerResults &res);
209 
211  void packP4();
212 
213  std::vector<std::string> const *allLabels(edm::ParameterSetID const &psetid,
214  const edm::EventBase &event,
215  const edm::TriggerResults &res) const;
216  };
217 
219  typedef std::vector<TriggerObjectStandAlone> TriggerObjectStandAloneCollection;
230 
231 } // namespace pat
232 
233 #endif
bool hasPathName(const std::string &pathName, bool pathLastFilterAccepted=false, bool pathL3FilterAccepted=true) const
Checks, if a certain HLT path name is assigned.
std::vector< TriggerObjectStandAlone > TriggerObjectStandAloneCollection
Collection of TriggerObjectStandAlone.
std::vector< uint16_t > filterLabelIndices_
bool algo(const std::string &algorithmName, unsigned algoCondAccepted=1) const
Calls &#39;hasAlgorithmName(...)&#39;.
void addAlgorithmName(const std::string &algorithmName, bool algoCondAccepted=true)
Adds a new L1 algorithm name.
const std::string names[nVars_]
std::string encode() const
Definition: InputTag.cc:159
void addConditionName(const std::string &conditionName)
Adds a new L1 condition name.
void addFilterLabel(const std::string &filterLabel)
Adds a new HLT filter label.
Definition: Electron.h:6
TriggerObjectStandAlone copy() const
Methods.
Definition: HeavyIon.h:7
edm::RefVectorIterator< TriggerObjectStandAloneCollection > TriggerObjectStandAloneRefVectorIterator
Const iterator over vector of persistent references to items in the same TriggerObjectStandAloneColle...
Single trigger physics object (e.g., an isolated muon)
Definition: TriggerObject.h:21
bool path(const std::string &pathName, unsigned pathLastFilterAccepted=0, unsigned pathL3FilterAccepted=1) const
Calls &#39;hasPathName(...)&#39;.
bool hasAlgorithmName(const std::string &algorithmName, bool algoCondAccepted=true) const
Checks, if a certain L1 algorithm name is assigned.
void addPathName(const std::string &pathName, bool pathLastFilterAccepted=true, bool pathL3FilterAccepted=true)
Adds a new HLT path name.
const std::vector< std::string > & filtersOrConditions() const
Gets all HLT filter labels or L1 condition names.
bool coll(const std::string &collName) const override
Calls &#39;hasCollection(...)&#39; (method override)
void setPSetID(const edm::ParameterSetID &psetId)
set the psetid of the trigger process
edm::RefProd< TriggerObjectStandAloneCollection > TriggerObjectStandAloneRefProd
Persistent reference to a TriggerObjectStandAloneCollection product.
bool hasPathLastFilterAccepted() const
Checks, if the usage indicator vector has been filled.
std::vector< bool > pathLastFilterAccepted_
bool hasLastFilter() const
Check, if the usage indicator vectors have been filled.
const std::vector< std::string > & filterLabels() const
Gets all HLT filter labels.
bool hasFilterLabel(const std::string &filterLabel) const
Checks, if a certain HLT filter label is assigned.
bool hasConditionName(const std::string &conditionName) const
Checks, if a certain L1 condition name is assigned.
edm::Ref< TriggerObjectStandAloneCollection > TriggerObjectStandAloneRef
Persistent reference to an item in a TriggerObjectStandAloneCollection.
bool cond(const std::string &conditionName) const
Calls &#39;hasConditionName(...)&#39;.
std::vector< std::string > pathNames_
Vector of names of all HLT paths or L1 algorithms the trigger objects has been used in...
void addFilterOrCondition(const std::string &name)
Adds a new HLT filter label or L1 condition name.
const edm::ParameterSetID & psetID() const
bool filter(const std::string &filterLabel) const
Calls &#39;hasFilterLabel(...)&#39;.
std::vector< std::string > filterLabels_
Vector of labels of all HLT filters or names of L1 conditions the trigger objects has been used in...
edm::RefVector< TriggerObjectStandAloneCollection > TriggerObjectStandAloneRefVector
Vector of persistent references to items in the same TriggerObjectStandAloneCollection.
edm::Association< TriggerObjectStandAloneCollection > TriggerObjectStandAloneMatch
Association of TriggerObjectStandAlones to store matches to Candidates.
HLT enums.
math::PtEtaPhiMLorentzVector PolarLorentzVector
Lorentz vector.
Definition: Particle.h:23
const std::vector< std::string > & conditionNames() const
Gets all L1 condition names.
bool hasCollection(const edm::InputTag &collName) const override
std::vector< std::string > pathNames(bool pathLastFilterAccepted=false, bool pathL3FilterAccepted=true) const
Gets all HLT path names.
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:21
std::vector< uint16_t > pathIndices_
std::vector< bool > pathL3FilterAccepted_
std::vector< std::string > algorithmNames(bool algoCondAccepted=true) const
Gets all L1 algorithm names.
Definition: event.py:1
Analysis-level trigger object class (stand-alone)
~TriggerObjectStandAlone() override
Destructor.