ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/L1RpcTriggerAnalysis/src/Pattern.cc
(Generate patch)

Comparing UserCode/L1RpcTriggerAnalysis/src/Pattern.cc (file contents):
Revision 1.3 by konec, Fri May 24 10:26:12 2013 UTC vs.
Revision 1.5 by akalinow, Tue Jun 25 10:49:35 2013 UTC

# Line 9 | Line 9
9   #include "UserCode/L1RpcTriggerAnalysis/interface/CSCDigiSpec.h"
10   #include "UserCode/L1RpcTriggerAnalysis/interface/RPCDigiSpec.h"
11  
12 + bool Pattern::operator==(const Pattern& o) const
13 + {
14 +  unsigned int thissize = theData.size();
15 + if (thissize != o.size()) return false;
16 +
17 +  for (unsigned int idx=0; idx<thissize; idx++) {
18 +     if (theData[idx].first != o.theData[idx].first) return false;
19 +     if (theData[idx].second != o.theData[idx].second) return false;
20 +  }
21 +
22 +  return true;
23 + }
24 +
25   Pattern Pattern::addOrCopy( std::pair<uint32_t,  unsigned int > aData)
26   {
27 +
28    for (unsigned int idx=0; idx < theData.size(); ++idx) {
29      if (theData[idx].first == aData.first) {
30        Pattern modified =  *this;
31        modified.theData[idx].second = aData.second;
32        return modified;
33 + //      if (*this == modified) return Pattern(); // nothing to do
34 + //      else  return modified;                   // really duplicate
35      }
36    }
37    theData.push_back(aData);
# Line 27 | Line 43 | void Pattern::add (  std::vector<Pattern
43    std::vector<Pattern> copied;
44    for (std::vector<Pattern>::iterator ip = vpat.begin(); ip != vpat.end(); ++ip) {
45      Pattern modified =  ip->addOrCopy(aData);
46 <    if (modified) copied.push_back(modified);
46 >    if (modified && (find(copied.begin(), copied.end(), modified) == copied.end()) ) copied.push_back(modified);
47    }
48    if (copied.size() != 0) vpat.insert(vpat.end(), copied.begin(), copied.end());
49   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines