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
|
/**
\file
Test suit for DTDigis
\author Stefano ARGIRO
\date 29 Jun 2005
\note This test is not exaustive
*/
#include <cppunit/extensions/HelperMacros.h>
#include <DataFormats/DTDigi/interface/DTDigi.h>
#include <DataFormats/DTDigi/interface/DTDigiCollection.h>
#include <DataFormats/MuonDetId/interface/DTLayerId.h>
using namespace std;
class testDTDigis : public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(testDTDigis);
CPPUNIT_TEST(testDigiCollectionInsert);
CPPUNIT_TEST(testDigiCollectionPut);
CPPUNIT_TEST(testTime2TDCConversion);
CPPUNIT_TEST_SUITE_END();
public:
void setUp() {}
void tearDown() {}
void testDigiCollectionInsert();
void testDigiCollectionPut();
void testTime2TDCConversion();
};
///registration of the test so that the runner can find it
CPPUNIT_TEST_SUITE_REGISTRATION(testDTDigis);
void testDTDigis::testDigiCollectionPut() {
DTLayerId layer(2, 3, 8, 1, 4);
DTDigiCollection digiCollection;
std::vector<DTDigi> digivec;
for (int i = 0; i < 10; ++i) {
DTDigi digi(1 + i, 5 + i, 100 + i);
digivec.push_back(digi);
}
digiCollection.put(std::make_pair(digivec.begin(), digivec.end()), layer);
// Loop over the DetUnits with digis
DTDigiCollection::DigiRangeIterator detUnitIt;
for (detUnitIt = digiCollection.begin(); detUnitIt != digiCollection.end(); ++detUnitIt) {
const DTLayerId& id = (*detUnitIt).first;
const DTDigiCollection::Range& range = (*detUnitIt).second;
// // We have inserted digis for only one DetUnit...
CPPUNIT_ASSERT(id == layer);
// Loop over the digis of this DetUnit
int i = 0;
for (DTDigiCollection::const_iterator digiIt = range.first; digiIt != range.second;
// detUnitIt->second.first;
// digiIt!=detUnitIt->second.second;
++digiIt) {
CPPUNIT_ASSERT((*digiIt).wire() == 1 + i);
CPPUNIT_ASSERT((*digiIt).countsTDC() == 5 + i);
CPPUNIT_ASSERT((*digiIt).number() == 100 + i);
i++;
// Test the channel() functionality
// DTDigi digi2((*digiIt).channel(),(*digiIt).countsTDC());
// CPPUNIT_ASSERT((*digiIt)==digi2);
} // for digis in layer
} // for layers
}
void testDTDigis::testDigiCollectionInsert() {
DTDigi digi(1, 5, 4);
DTLayerId layer(2, 3, 8, 1, 4);
DTDigiCollection digiCollection;
digiCollection.insertDigi(layer, digi);
unsigned int count = 0;
// Loop over the DetUnits with digis
DTDigiCollection::DigiRangeIterator detUnitIt;
for (detUnitIt = digiCollection.begin(); detUnitIt != digiCollection.end(); ++detUnitIt) {
const DTLayerId& id = (*detUnitIt).first;
const DTDigiCollection::Range& range = (*detUnitIt).second;
// We have inserted digis for only one DetUnit...
CPPUNIT_ASSERT(id == layer);
// Loop over the digis of this DetUnit
for (DTDigiCollection::const_iterator digiIt = range.first; digiIt != range.second; ++digiIt) {
//std::cout << (*digiIt) << std::endl;
CPPUNIT_ASSERT((*digiIt).wire() == 1);
CPPUNIT_ASSERT((*digiIt).number() == 4);
CPPUNIT_ASSERT((*digiIt).countsTDC() == 5);
count++;
} // for digis in layer
} // for layers
CPPUNIT_ASSERT(count != 0);
}
void testDTDigis::testTime2TDCConversion() {
float time = 243;
float reso = 25. / 32.;
int tdc = int(time / reso);
int pos = 2;
int wire = 1;
DTDigi digi(wire, time, pos);
CPPUNIT_ASSERT(digi.countsTDC() == tdc);
}
#include <Utilities/Testing/interface/CppUnit_testdriver.icpp>
|