58 const vector<BPHRecoConstCandPtr>* cCollection = *
compCollectList.begin();
78 map<string, int>::const_iterator iter =
sourceId.find(
name);
87 map<string, int>::const_iterator iter =
srCompId.find(
name);
96 map<string, int>::const_iterator iter =
srCompId.find(
name);
105 map<string, int>::const_iterator iter =
srCompId.find(
name);
132 for (i = 0; i <
n; ++
i) {
137 for (i = 0; i <
n; ++
i) {
142 for (i = 0; i <
n; ++
i) {
157 vector<ComponentSet> candList;
170 if ((lrcTrack !=
nullptr) && ((lrcTrack == rrcTrack) || (lrcTrack == rpfTrack)))
172 if ((lpfTrack !=
nullptr) && ((lpfTrack == rrcTrack) || (lpfTrack == rpfTrack)))
176 double pDMod = pDiff.mag2();
177 double pMMod = pMean.mag2();
178 if (((pDMod / pMMod) < minPDifference) && (lCand->
charge() == rCand->
charge()))
187 <<
"Decay product already inserted with name " <<
name <<
" , skipped";
204 <<
"Decay product already inserted with name " <<
name <<
" , skipped";
216 vector<BPHRecoSource*>::const_iterator r_iter,
217 vector<BPHRecoSource*>::const_iterator r_iend,
218 vector<BPHCompSource*>::const_iterator c_iter,
219 vector<BPHCompSource*>::const_iterator c_iend)
const {
220 if (r_iter == r_iend) {
221 if (c_iter == c_iend) {
223 compList.push_back(compSet);
227 const vector<BPHRecoConstCandPtr>* collection = source->
collection;
228 vector<const BPHMomentumSelect*> momSelector = source->
momSelector;
229 vector<const BPHVertexSelect*> vtxSelector = source->
vtxSelector;
230 vector<const BPHFitSelect*> fitSelector = source->
fitSelector;
233 int n = collection->size();
236 for (i = 0; i <
n; ++
i) {
241 m = momSelector.size();
242 for (j = 0; j <
m; ++
j) {
243 if (!momSelector[j]->
accept(*cand))
246 m = vtxSelector.size();
247 for (j = 0; j <
m; ++
j) {
248 if (!vtxSelector[j]->
accept(*cand))
251 m = fitSelector.size();
252 for (j = 0; j <
m; ++
j) {
253 if (!fitSelector[j]->
accept(*cand))
259 build(compList, compSet, r_iter, r_iend, c_iter, c_iend);
266 vector<const BPHRecoSelect*>& selector = source->
selector;
269 int n = collection->
size();
270 int m = selector.size();
272 for (i = 0; i <
n; ++
i) {
277 for (j = 0; j <
m; ++
j) {
278 if (!selector[j]->
accept(cand,
this))
290 build(compList, compSet, r_iter, r_iend, c_iter, c_iend);
298 map<string, BPHDecayMomentum::Component>& dMap = compSet.
daugMap;
299 map<string, BPHDecayMomentum::Component>::const_iterator d_iter;
300 map<string, BPHDecayMomentum::Component>::const_iterator d_iend = dMap.end();
301 for (d_iter = dMap.begin(); d_iter != d_iend; ++d_iter) {
312 map<string, BPHRecoConstCandPtr>::const_iterator c_iter;
313 map<string, BPHRecoConstCandPtr>::const_iterator c_iend =
compMap.end();
314 const vector<const reco::Candidate*>& dCand = cCand->daughFull();
316 int m = dCand.size();
319 for (j = 0; j <
m; ++
j) {
321 map<string, BPHDecayMomentum::Component>& dMap = compSet.
daugMap;
322 map<string, BPHDecayMomentum::Component>::const_iterator d_iter;
323 map<string, BPHDecayMomentum::Component>::const_iterator d_iend = dMap.end();
324 for (d_iter = dMap.begin(); d_iter != d_iend; ++d_iter) {
332 for (c_iter =
compMap.begin(); c_iter != c_iend; ++c_iter) {
333 const pair<string, BPHRecoConstCandPtr>&
entry = *c_iter;
335 const vector<const reco::Candidate*>& dCChk = cCChk->daughFull();
337 for (k = 0; k <
l; ++
k) {
std::vector< const BPHRecoSelect * > selector
const reco::Candidate * cand
static bool sameTrack(const reco::Candidate *lCand, const reco::Candidate *rCand, double minPDifference)
void setMinPDiffererence(double pMin)
static const reco::Track * getFromPF(const reco::Candidate &rc)
math::XYZVector Vector
point in the space
std::map< std::string, BPHRecoConstCandPtr > compMap
BPHGenericPtr< const BPHRecoCandidate >::type BPHRecoConstCandPtr
virtual ~BPHRecoBuilder()
std::vector< ComponentSet > build() const
build a set of combinations of particles fulfilling the selections
unique_ptr< ClusterSequence > cs
std::vector< const BPHFitSelect * > fsList
const std::vector< BPHRecoConstCandPtr > * collection
std::map< std::string, BPHDecayMomentum::Component > daugMap
const edm::EventSetup * evSetup
bool accept(const BPHRecoCandidate &cand) const
std::vector< BPHCompSource * > srCompList
const BPHGenericCollection * collection
const edm::EventSetup * eventSetup() const
get the EventSetup set in the constructor
static BPHGenericCollection * createCollection(const edm::Handle< T > &collection, const std::string &list="cfhpmig")
std::vector< const BPHVertexSelect * > vsList
static const reco::Track * getFromRC(const reco::Candidate &rc)
std::map< std::string, const reco::Candidate * > daugMap
std::vector< const BPHFitSelect * > fitSelector
std::vector< BPHRecoSource * > sourceList
void add(const std::string &name, const BPHGenericCollection *collection, double mass=-1.0, double msig=-1.0)
const std::string & searchList() const
std::vector< const BPHMomentumSelect * > momSelector
virtual Vector momentum() const =0
spatial momentum vector
virtual const reco::Candidate & get(int i) const =0
virtual int charge() const =0
electric charge
void filter(const std::string &name, const BPHRecoSelect &sel) const
std::map< std::string, BPHRecoConstCandPtr > compMap
std::vector< const BPHMomentumSelect * > msList
std::vector< const BPHVertexSelect * > vtxSelector
bool contained(ComponentSet &compSet, const reco::Candidate *cand) const
std::set< const std::vector< BPHRecoConstCandPtr > * > compCollectList
BPHRecoBuilder(const edm::EventSetup &es)
virtual int size() const =0
std::map< std::string, int > srCompId
static std::string const source
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*","!HLTx*"if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL.It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of"!*"before the partial wildcard feature was incorporated).Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run
std::map< std::string, int > sourceId