Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
CondTools
BTau
python
generateStandaloneCode.py
Go to the documentation of this file.
1
#!/usr/bin/env python
2
3
import
os
4
from
os.path
import
join
5
6
7
def
main
():
8
path_cms =
join
(os.environ[
'CMSSW_BASE'
],
'src'
)
9
path_tools =
join
(path_cms,
'CondTools/BTau/test'
)
10
11
# headers
12
file_h =
join
(path_tools,
'BTagCalibrationStandalone.h'
)
13
print
'Creating'
, file_h
14
with open(file_h,
'w'
)
as
fout:
15
for
fname
in
[
'CondFormats/BTauObjects/interface/BTagEntry.h'
,
16
'CondFormats/BTauObjects/interface/BTagCalibration.h'
,
17
'CondTools/BTau/interface/BTagCalibrationReader.h'
]:
18
with open(
join
(path_cms, fname))
as
fin:
19
for
line
in
fin:
20
if
(line.startswith(
'#include "Cond'
)
or
21
'COND_SERIALIZABLE'
in
line):
22
continue
23
fout.write(line)
24
fout.write(
'\n\n'
)
25
26
# implementation
27
file_cc =
join
(path_tools,
'BTagCalibrationStandalone.cpp'
)
28
print
'Creating'
, file_cc
29
with open(file_cc,
'w'
)
as
fout:
30
fout.write(
'#include "BTagCalibrationStandalone.h"\n'
)
31
fout.write(
'#include <iostream>\n'
)
32
fout.write(
'#include <exception>\n'
)
33
for
fname
in
[
'CondFormats/BTauObjects/src/BTagEntry.cc'
,
34
'CondFormats/BTauObjects/src/BTagCalibration.cc'
,
35
'CondTools/BTau/src/BTagCalibrationReader.cc'
]:
36
with open(
join
(path_cms, fname))
as
fin:
37
err_on_line = -3
38
for
line_no, line
in
enumerate(fin):
39
if
(line.startswith(
'#include "Cond'
)
or
40
line.startswith(
'#include "FWCore'
)):
41
continue
42
43
# cms exceptions cannot be used in the standalone version
44
# in the cpp source, exceptions must be formatted to span three lines, where
45
# the first and last lines are replaced.
46
elif
'throw cms::Exception'
in
line:
47
line =
'std::cerr << "ERROR in BTagCalibration: "\n'
48
err_on_line = line_no
49
elif
line_no == err_on_line + 2:
50
line +=
'throw std::exception();\n'
51
fout.write(line)
52
fout.write(
'\n\n'
)
53
54
55
if
__name__ ==
'__main__'
:
56
main
()
generateStandaloneCode.main
def main
Definition:
generateStandaloneCode.py:7
join
static std::string join(char **cmd)
Definition:
RemoteFile.cc:18
main
Definition:
main.py:1
Generated for CMSSW Reference Manual by
1.8.5