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 |
|
|
|