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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
#include "FWCore/TestProcessor/interface/TestProcessor.h"
#include "FWCore/Utilities/interface/Exception.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "CommonTools/UtilAlgos/interface/TFileService.h"
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
// Function to run the catch2 tests
//___________________________________________________________________________________________
void runTestForAnalyzer(const std::string& baseConfig, const std::string& analyzerName) {
edm::test::TestProcessor::Config config{baseConfig};
SECTION(analyzerName + " base configuration is OK") { REQUIRE_NOTHROW(edm::test::TestProcessor(config)); }
SECTION(analyzerName + " No Runs data") {
edm::test::TestProcessor tester(config);
REQUIRE_NOTHROW(tester.testWithNoRuns());
}
SECTION(analyzerName + " beginJob and endJob only") {
edm::test::TestProcessor tester(config);
REQUIRE_NOTHROW(tester.testBeginAndEndJobOnly());
}
SECTION("No event data") {
edm::test::TestProcessor tester(config);
REQUIRE_NOTHROW(tester.test());
}
SECTION("Run with no LuminosityBlocks") {
edm::test::TestProcessor tester(config);
REQUIRE_NOTHROW(tester.testRunWithNoLuminosityBlocks());
}
SECTION("LuminosityBlock with no Events") {
edm::test::TestProcessor tester(config);
REQUIRE_NOTHROW(tester.testLuminosityBlockWithNoEvents());
}
}
// Function to generate base configuration string
//___________________________________________________________________________________________
std::string generateBaseConfig(const std::string& analyzerName, const std::string& rootFileName) {
// Define a raw string literal
constexpr const char* rawString = R"_(from FWCore.TestProcessor.TestProcess import *
process = TestProcess()
process.load("MagneticField.Engine.uniformMagneticField_cfi")
process.load("Configuration.Geometry.GeometryExtended2024Reco_cff")
process.load("Alignment.CommonAlignmentProducer.FakeAlignmentSource_cfi")
from DQM.TrackingMonitorSource.{}_cfi import {}
process.trackAnalyzer = {}
process.moduleToTest(process.trackAnalyzer)
process.add_(cms.Service('DQMStore'))
process.add_(cms.Service('MessageLogger'))
process.add_(cms.Service('JobReportService'))
process.add_(cms.Service('TFileService',fileName=cms.string('{}')))
)_";
// Format the raw string literal using fmt::format
return fmt::format(rawString, analyzerName, analyzerName, analyzerName, rootFileName);
}
//___________________________________________________________________________________________
TEST_CASE("ShortenedTrackResolution tests", "[ShortenedTrackResolution]") {
const std::string baseConfig = generateBaseConfig("shortenedTrackResolution", "test1.root");
runTestForAnalyzer(baseConfig, "ShortenedTrackResolution");
}
//___________________________________________________________________________________________
TEST_CASE("StandaloneTrackMonitor tests", "[StandaloneTrackMonitor]") {
const std::string baseConfig = generateBaseConfig("standaloneTrackMonitorDefault", "test2.root");
runTestForAnalyzer(baseConfig, "StandaloneTrackMonitor");
}
//___________________________________________________________________________________________
TEST_CASE("AlcaRecoTrackSelector tests", "[AlcaRecoTrackSelector]") {
const std::string baseConfig = generateBaseConfig("alcaRecoTrackSelector", "tes3.root");
runTestForAnalyzer(baseConfig, "AlcaRecoTrackSelector");
}
//___________________________________________________________________________________________
//TEST_CASE("HltPathSelector tests", "[HltPathSelector]") {
// const std::string baseConfig = generateBaseConfig("hltPathSelector", "test_hltPathSelector.root");
// runTestForAnalyzer(baseConfig, "HltPathSelector");
//}
//___________________________________________________________________________________________
TEST_CASE("TrackMultiplicityFilter tests", "[TrackMultiplicityFilter]") {
const std::string baseConfig = generateBaseConfig("trackMultiplicityFilter", "test_trackMultiplicityFilter.root");
runTestForAnalyzer(baseConfig, "TrackMultiplicityFilter");
}
//___________________________________________________________________________________________
//TEST_CASE("TrackToTrackComparisonHists tests", "[TrackToTrackComparisonHists]") {
// const std::string baseConfig = generateBaseConfig("trackToTrackComparisonHists", "test_trackToTrackComparisonHists.root");
// runTestForAnalyzer(baseConfig, "TrackToTrackComparisonHists");
//}
//___________________________________________________________________________________________
TEST_CASE("TrackTypeMonitor tests", "[TrackTypeMonitor]") {
const std::string baseConfig = generateBaseConfig("trackTypeMonitor", "test_trackTypeMonitor.root");
runTestForAnalyzer(baseConfig, "TrackTypeMonitor");
}
//___________________________________________________________________________________________
TEST_CASE("TtbarEventSelector tests", "[TtbarEventSelector]") {
const std::string baseConfig = generateBaseConfig("ttbarEventSelector", "test_ttbarEventSelector.root");
runTestForAnalyzer(baseConfig, "TtbarEventSelector");
}
//___________________________________________________________________________________________
TEST_CASE("TtbarTrackProducer tests", "[TtbarTrackProducer]") {
const std::string baseConfig = generateBaseConfig("ttbarTrackProducer", "test_ttbarTrackProducer.root");
runTestForAnalyzer(baseConfig, "TtbarTrackProducer");
}
//___________________________________________________________________________________________
TEST_CASE("V0EventSelector tests", "[V0EventSelector]") {
const std::string baseConfig = generateBaseConfig("v0EventSelector", "test_v0EventSelector.root");
runTestForAnalyzer(baseConfig, "V0EventSelector");
}
//___________________________________________________________________________________________
TEST_CASE("V0VertexTrackProducer tests", "[V0VertexTrackProducer]") {
const std::string baseConfig = generateBaseConfig("v0VertexTrackProducer", "test_v0VertexTrackProducer.root");
runTestForAnalyzer(baseConfig, "V0VertexTrackProducer");
}
//___________________________________________________________________________________________
TEST_CASE("WtoLNuSelector tests", "[WtoLNuSelector]") {
const std::string baseConfig = generateBaseConfig("wtoLNuSelector", "test_wtoLNuSelector.root");
runTestForAnalyzer(baseConfig, "WtoLNuSelector");
}
//___________________________________________________________________________________________
TEST_CASE("ZeeDetails tests", "[ZeeDetails]") {
const std::string baseConfig = generateBaseConfig("zeeDetails", "test_zeeDetails.root");
runTestForAnalyzer(baseConfig, "ZeeDetails");
}
//___________________________________________________________________________________________
TEST_CASE("ZtoEEElectronTrackProducer tests", "[ZtoEEElectronTrackProducer]") {
const std::string baseConfig =
generateBaseConfig("ztoEEElectronTrackProducer", "test_ztoEEElectronTrackProducer.root");
runTestForAnalyzer(baseConfig, "ZtoEEElectronTrackProducer");
}
//___________________________________________________________________________________________
TEST_CASE("ZtoEEEventSelector tests", "[ZtoEEEventSelector]") {
const std::string baseConfig = generateBaseConfig("ztoEEEventSelector", "test_ztoEEEventSelector.root");
runTestForAnalyzer(baseConfig, "ZtoEEEventSelector");
}
//___________________________________________________________________________________________
TEST_CASE("ZtoMMEventSelector tests", "[ZtoMMEventSelector]") {
const std::string baseConfig = generateBaseConfig("ztoMMEventSelector", "test_ztoMMEventSelector.root");
runTestForAnalyzer(baseConfig, "ZtoMMEventSelector");
}
//___________________________________________________________________________________________
TEST_CASE("ZtoMMMuonTrackProducer tests", "[ZtoMMMuonTrackProducer]") {
const std::string baseConfig = generateBaseConfig("ztoMMMuonTrackProducer", "test_ztoMMMuonTrackProducer.root");
runTestForAnalyzer(baseConfig, "ZtoMMMuonTrackProducer");
}
|