ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/L1RpcTriggerAnalysis/src/Pattern.cc
Revision: 1.4
Committed: Mon May 27 11:02:41 2013 UTC (11 years, 11 months ago) by konec
Content type: text/plain
Branch: MAIN
Changes since 1.3: +14 -1 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 konec 1.1 #include "UserCode/L1RpcTriggerAnalysis/interface/Pattern.h"
2    
3     #include "DataFormats/MuonDetId/interface/MuonSubdetId.h"
4     #include "DataFormats/MuonDetId/interface/RPCDetId.h"
5     #include "DataFormats/MuonDetId/interface/CSCDetId.h"
6     #include "DataFormats/MuonDetId/interface/DTChamberId.h"
7     #include "UserCode/L1RpcTriggerAnalysis/interface/RPCDetIdUtil.h"
8     #include "UserCode/L1RpcTriggerAnalysis/interface/DTphDigiSpec.h"
9     #include "UserCode/L1RpcTriggerAnalysis/interface/CSCDigiSpec.h"
10     #include "UserCode/L1RpcTriggerAnalysis/interface/RPCDigiSpec.h"
11    
12 konec 1.4 bool Pattern::operator==(const Pattern& o) const
13     {
14     unsigned int thissize = theData.size();
15     if (thissize != o.size()) return false;
16     for (unsigned int idx=0; idx<thissize; idx++) {
17     if (theData[idx].first != o.theData[idx].first) return false;
18     if (theData[idx].second != o.theData[idx].second) return false;
19     }
20     return true;
21     }
22    
23 konec 1.3 Pattern Pattern::addOrCopy( std::pair<uint32_t, unsigned int > aData)
24 konec 1.1 {
25 konec 1.3 for (unsigned int idx=0; idx < theData.size(); ++idx) {
26     if (theData[idx].first == aData.first) {
27     Pattern modified = *this;
28     modified.theData[idx].second = aData.second;
29     return modified;
30 konec 1.4 // if (*this == modified) return Pattern(); // nothing to do
31     // else return modified; // really duplicate
32 konec 1.1 }
33     }
34     theData.push_back(aData);
35 konec 1.3 return Pattern();
36 konec 1.1 }
37    
38 konec 1.3 void Pattern::add ( std::vector<Pattern> & vpat, std::pair<uint32_t, unsigned int > aData)
39 konec 1.2 {
40     std::vector<Pattern> copied;
41     for (std::vector<Pattern>::iterator ip = vpat.begin(); ip != vpat.end(); ++ip) {
42 konec 1.3 Pattern modified = ip->addOrCopy(aData);
43 konec 1.4 if (modified && (find(copied.begin(), copied.end(), modified) == copied.end()) ) copied.push_back(modified);
44 konec 1.2 }
45     if (copied.size() != 0) vpat.insert(vpat.end(), copied.begin(), copied.end());
46     }
47    
48    
49    
50 konec 1.1 std::ostream & operator << (std::ostream &out, const Pattern &o)
51     {
52     out <<" Pattern: size: "<<o.size();
53     for (Pattern::DataType::const_iterator it=o.theData.begin(); it!= o.theData.end(); it++) {
54     DetId detId( it->first);
55     switch (detId.subdetId()) {
56     case MuonSubdetId::RPC: { out << std::endl <<" RPC: "<<RPCDigiSpec(it->first, it->second); break; }
57     case MuonSubdetId::DT: { out << std::endl <<" DT: "<<DTphDigiSpec(it->first, it->second); break; }
58     case MuonSubdetId::CSC: { out << std::endl <<" CSC: "<<CSCDigiSpec(it->first, it->second); break; }
59     };
60     }
61     return out;
62     }
63