20 cond_(cfg.getParameter<
std::
string >(
"condition")),
21 hltPath_(cfg.getParameter<
std::
string >(
"hltPath")){ }
24 bool singleTrigFlag0 =
false;
25 bool singleTrigFlag1 =
false;
26 bool exactlyOneTriggerFlag =
false;
27 bool bothTriggerFlag =
false;
28 bool atLeastOneTriggerFlag=
false;
29 bool FirstTriggerFlag =
false;
30 bool globalisTriggerFlag =
false;
31 if((((cond_ !=
"exactlyOneMatched" && cond_!=
"atLeastOneMatched") && cond_ !=
"bothMatched") && cond_ !=
"firstMatched") && cond_ !=
"globalisMatched")
33 <<
"Invalid condition type: " << cond_ <<
". Valid types are:" 34 <<
" exactlyOneMatched, atLeastOneMatched, bothMatched, firstMatched,globalisMatched\n";
38 bool firstismuon = (dau0->
isGlobalMuon() ?
true :
false);
40 bool firstisTrackerMuon = (dau0->
isTrackerMuon() ?
true :
false);
41 if(mu0 !=
nullptr && (firstismuon ||firstisStandAlone||firstisTrackerMuon )){
46 int dimTrig0 = mu0HLTMatches.size();
48 singleTrigFlag0 =
true;
53 bool secondismuon = (dau1->
isGlobalMuon() ?
true :
false);
55 bool secondisTrackerMuon = (dau1->
isTrackerMuon() ?
true :
false);
57 if(mu1 !=
nullptr && (secondismuon ||secondisStandAlone||secondisTrackerMuon ) ){
62 int dimTrig1 = mu1HLTMatches.size();
64 singleTrigFlag1 =
true;
67 if(!singleTrigFlag0 && !singleTrigFlag1)
return false;
68 if((singleTrigFlag0 && singleTrigFlag1) && firstismuon && secondismuon ) bothTriggerFlag =
true;
69 if(((singleTrigFlag0 && !singleTrigFlag1) && firstismuon && secondismuon) || ((!singleTrigFlag0 && singleTrigFlag1) && firstismuon && secondismuon)) exactlyOneTriggerFlag =
true;
70 if((((singleTrigFlag0 && firstismuon) && (secondisStandAlone || secondisTrackerMuon ) ) && !secondismuon ) || (((singleTrigFlag1 && secondismuon) && (firstisStandAlone|| firstisTrackerMuon) ) && !firstismuon))globalisTriggerFlag =
true;
72 if((singleTrigFlag0 && !singleTrigFlag1) && !secondismuon) FirstTriggerFlag =
true;
73 if((singleTrigFlag0 || singleTrigFlag1) && firstismuon && secondismuon) atLeastOneTriggerFlag=
true;
74 if(cond_==
"exactlyOneMatched")
return exactlyOneTriggerFlag;
75 if(cond_==
"atLeastOneMatched")
return atLeastOneTriggerFlag;
76 if(cond_==
"bothMatched")
return bothTriggerFlag;
77 if(cond_==
"firstMatched")
return FirstTriggerFlag;
78 if(cond_==
"globalisMatched")
return globalisTriggerFlag;
virtual bool isStandAloneMuon() const =0
ZHLTMatchFilter(const edm::ParameterSet &cfg, edm::ConsumesCollector &iC)
virtual const Candidate * daughter(size_type i) const =0
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
SingleObjectSelector< edm::View< reco::Candidate >, modules::ZHLTMatchFilter > ZHLTMatchFilter
std::vector< TriggerObjectStandAlone > TriggerObjectStandAloneCollection
Collection of TriggerObjectStandAlone.
virtual bool isTrackerMuon() const =0
#define DEFINE_FWK_MODULE(type)
const TriggerObjectStandAloneCollection triggerObjectMatchesByPath(const std::string &namePath, const bool pathLastFilterAccepted=false, const bool pathL3FilterAccepted=true) const
virtual const CandidateBaseRef & masterClone() const =0
virtual bool isGlobalMuon() const =0
bool operator()(const reco::Candidate &z) const
virtual size_type numberOfDaughters() const =0
number of daughters
Analysis-level muon class.