1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
/* \file testCSCTriggerMapping.cc
*
* \author Lindsey Gray
* Based on template from S. Argiro & N. Amapane
*/
#include <cppunit/extensions/HelperMacros.h>
#include <FWCore/Utilities/interface/Exception.h>
#include "FWCore/PluginManager/interface/ProblemTracker.h"
#include <CondFormats/CSCObjects/interface/CSCTriggerMappingFromFile.h>
#include <DataFormats/MuonDetId/interface/CSCDetId.h>
#include "Utilities/Testing/interface/CppUnit_testdriver.icpp"
#include <iostream>
#include <cstdlib>
std::string treleasetop(getenv("CMSSW_BASE"));
std::string tmappingFilePath = treleasetop + "/src/CondFormats/CSCObjects/test/";
class testCSCTriggerMapping : public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(testCSCTriggerMapping);
CPPUNIT_TEST(testRead);
CPPUNIT_TEST_SUITE_END();
public:
testCSCTriggerMapping()
: myName_("testCSCTriggerMapping"), dashedLineWidth(104), dashedLine(std::string(dashedLineWidth, '-')) {}
void setUp() {
char* ret = getenv("CMSSW_BASE");
if (!ret) {
std::cerr << "env variable SCRAMRT_LOCALRT not set, try eval `scramv1 runt -sh`" << std::endl;
exit(1);
}
}
void tearDown() {}
void testRead();
private:
const std::string myName_;
const int dashedLineWidth;
std::string dashedLine;
};
void testCSCTriggerMapping::testRead() {
std::cout << myName_ << ": --- t e s t C S C T r i g g e r M a p p i n g ---" << std::endl;
std::cout << "start " << dashedLine << std::endl;
std::string mappingFileName = tmappingFilePath + "csc_trigger_test_map.txt";
CSCTriggerMappingFromFile theMapping(mappingFileName);
//theMapping.setDebugV( true );
// Loop over all possible endcaps, stations, sectors, subsectors and cscids
// TEST CSCTriggerMapping::chamber(...)
for (int endcap = 1; endcap <= 1; ++endcap)
for (int station = 2; station <= 3; ++station)
for (int sector = 5; sector <= 5; ++sector)
for (int cscid = 1; cscid <= 9; ++cscid) {
if (station == 1)
for (int subs = 1; subs <= 2; ++subs) {
std::cout << "\n"
<< myName_ << ": search for sw id for hw labels, endcap= " << endcap << ", station=" << station
<< ", sector=" << sector << ", subsector=" << subs << ", cscid= " << cscid << std::endl;
int id = theMapping.chamber(endcap, station, sector, subs, cscid);
std::cout << myName_ << ": found chamber rawId = " << id << std::endl;
CSCDetId cid(id);
std::cout << myName_ << ": from CSCDetId for this chamber, endcap= " << cid.endcap()
<< ", station=" << cid.station() << ", ring=" << cid.ring() << ", chamber=" << cid.chamber()
<< std::endl;
// Now try direct mapping for specific layers
// TEST CSCTriggerMapping::detId(...)
for (int layer = 1; layer <= 6; ++layer) {
std::cout << myName_ << ": map layer with hw labels, endcap= " << endcap << ", station=" << station
<< ", sector=" << sector << ", subsector=" << subs << ", cscid= " << cscid
<< ", layer=" << layer << std::endl;
CSCDetId lid = theMapping.detId(endcap, station, sector, subs, cscid, layer);
// And check what we've actually selected...
std::cout << myName_ << ": from CSCDetId for this layer, endcap= " << lid.endcap()
<< ", station=" << lid.station() << ", ring=" << lid.ring() << ", chamber=" << lid.chamber()
<< ", layer=" << lid.layer() << std::endl;
}
}
else {
std::cout << "\n"
<< myName_ << ": search for sw id for hw labels, endcap= " << endcap << ", station=" << station
<< ", sector=" << sector << ", subsector=" << 0 << ", cscid= " << cscid << std::endl;
int id = theMapping.chamber(endcap, station, sector, 0, cscid);
std::cout << myName_ << ": found chamber rawId = " << id << std::endl;
CSCDetId cid(id);
std::cout << myName_ << ": from CSCDetId for this chamber, endcap= " << cid.endcap()
<< ", station=" << cid.station() << ", ring=" << cid.ring() << ", chamber=" << cid.chamber()
<< std::endl;
// Now try direct mapping for specific layers
// TEST CSCTriggerMapping::detId(...)
for (int layer = 1; layer <= 6; ++layer) {
std::cout << myName_ << ": map layer with hw labels, endcap= " << endcap << ", station=" << station
<< ", sector=" << sector << ", subsector=" << 0 << ", cscid= " << cscid << ", layer=" << layer
<< std::endl;
CSCDetId lid = theMapping.detId(endcap, station, sector, 0, cscid, layer);
// And check what we've actually selected...
std::cout << myName_ << ": from CSCDetId for this layer, endcap= " << lid.endcap()
<< ", station=" << lid.station() << ", ring=" << lid.ring() << ", chamber=" << lid.chamber()
<< ", layer=" << lid.layer() << std::endl;
}
}
std::cout << std::endl;
}
std::cout << dashedLine << " end" << std::endl;
}
///registration of the test so that the runner can find it
CPPUNIT_TEST_SUITE_REGISTRATION(testCSCTriggerMapping);
|