Repository navigation
Expand file tree
/
Copy pathMakefile
More file actions
155 lines (118 loc) · 4.52 KB
/
Copy pathMakefile
File metadata and controls
155 lines (118 loc) · 4.52 KB
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
# Locations
BIN := ./bin
SRC := ./src
LIB := ./lib
CXX := g++
ROOT_CFLAGS := $(filter-out -std=c++%,$(shell root-config --cflags))
ROOT_LIBS := $(shell root-config --libs)
CORR_CFLAGS := $(filter-out -std=c++%,$(shell correction config --cflags))
CORR_LIBS := $(shell correction config --ldflags)
BOOST_INC := -I/cvmfs/cms.cern.ch/el9_amd64_gcc12/external/boost/1.80.0-4e27c6908892e3529bfbcf4445a96fe6/include
BOOST_LIB := -L/cvmfs/cms.cern.ch/el9_amd64_gcc12/external/boost/1.80.0-4e27c6908892e3529bfbcf4445a96fe6/lib
FLAGS := -O2 -g -Wall -std=c++20 $(ROOT_CFLAGS) $(CORR_CFLAGS) -I$(LIB) $(BOOST_INC)
LIBS := $(ROOT_LIBS) $(CORR_LIBS) $(BOOST_LIB)
# Analyzer sources and header
ANALYZER_SRC := $(SRC)/LeptonEfficiencyCorrector.cc \
$(SRC)/JetCorrector.cc \
$(SRC)/MuonScaRe.cc \
$(SRC)/MainEvent.cc \
$(SRC)/WeightCalculatorFromHistogram.cc \
$(SRC)/HmmAnalyzer.cc
ANALYZER_HEADERS := $(LIB)/BTagCalibrationStandalone.h \
$(LIB)/LeptonEfficiencyCorrector.h \
$(LIB)/JetCorrector.h \
$(LIB)/MuonScaRe.h \
$(LIB)/MainEvent.h \
$(LIB)/WeightCalculatorFromHistogram.h \
$(LIB)/HmmAnalyzer.h
# Tuple sources and header
TUPLE_SRC := $(SRC)/CreateTuple.cc
TUPLE_HEADERS := $(LIB)/Run3Constants.h $(LIB)/Constants.h $(LIB)/CreateTuple.h
# Histogram sources and header
SKIM_ggH_SRC := $(SRC)/SkimTuplesggH.cc
SKIM_VBF_SRC := $(SRC)/SkimTuples_VBF.cc
SKIM_HEADERS := $(LIB)/Run3Constants.h $(LIB)/Constants.h
SOURCES := $(ANALYZER_SRC) $(HISTOGRAM_SRC) $(SKIM_ggH_SRC) $(SKIM_VBF_SRC) $(TUPLE_SRC)
# Object files
JERC_OBJECTS := JecConfigReader.o \
JecApplication.o \
JvmConfigReader.o \
JvmApplication.o
ANALYZER_OBJECTS := LeptonEfficiencyCorrector.o \
MuonScaRe.o \
JetCorrector.o \
MainEvent.o \
WeightCalculatorFromHistogram.o \
HmmAnalyzer.o
TUPLE_OBJECTS := CreateTuple.o
SKIM_ggH_OBJECTS := SkimTuplesggH.o
SKIM_VBF_OBJECTS := SkimTuples_VBF.o
OBJECTS := $(ANALYZER_OBJECTS) $(TUPLE_OBJECTS)
# Executables
ANALYZER_EXECUTABLE := $(BIN)/HmmAnalyzer
SKIM_ggH_EXECUTABLE := $(BIN)/SkimTuplesggH
SKIM_VBF_EXECUTABLE := $(BIN)/SkimTuples_VBF
TUPLE_EXECUTABLE := $(BIN)/CreateTuple
# Default target: build both executables
.PHONY: all
all: $(ANALYZER_EXECUTABLE) $(SKIM_ggH_EXECUTABLE) $(SKIM_VBF_EXECUTABLE) $(TUPLE_EXECUTABLE)
# Compile only the Analyzer
.PHONY: analyzer
analyzer: $(ANALYZER_EXECUTABLE)
# Compile only the tuples
.PHONY: tuple
tuple: $(TUPLE_EXECUTABLE)
# Compile only the Skim ggH
.PHONY: skim
skim: $(SKIM_ggH_EXECUTABLE)
# Compile only the Skim VBF
.PHONY: skim_vbf
skim_vbf: $(SKIM_VBF_EXECUTABLE)
# Compile all the objects
$(OBJECTS): %.o: $(SRC)/%.cc $(LIB)/%.h
#$(OBJECTS): %.o: $(SOURCES) $(LIB)/%.h
@echo "Compiling $<..."
$(CXX) $(FLAGS) -c $< -o $@
$(JERC_OBJECTS): %.o: $(SRC)/%.cc $(LIB)/%.h
@echo "Compiling $<..."
$(CXX) $(FLAGS) -c $< -o $@
HmmAnalyzer.o: $(LIB)/JecApplication.h $(LIB)/JecConfigReader.h $(LIB)/JvmApplication.h $(LIB)/JvmConfigReader.h
# Special rule for SkimTuplesggH.o without a header file
$(SKIM_ggH_OBJECTS): %.o: $(SRC)/%.cc
@echo "Compiling $<..."
$(CXX) $(FLAGS) -c $< -o $@
# Special rule for SkimTuples_VBF.o without a header file
$(SKIM_VBF_OBJECTS): %.o: $(SRC)/%.cc
@echo "Compiling $<..."
$(CXX) $(FLAGS) -c $< -o $@
# Linking for HmmAnalyzer
$(ANALYZER_EXECUTABLE): $(ANALYZER_OBJECTS) $(JERC_OBJECTS)
@echo "Linking $(ANALYZER_EXECUTABLE)..."
$(CXX) $(FLAGS) -o $@ $^ $(LIBS)
@echo "done"
# Linking for CrekteHistograms
$(HISTOGRAM_EXECUTABLE): $(HISTOGRAM_OBJECTS)
@echo "Linking $(HISTOGRAM_EXECUTABLE)..."
$(CXX) $(FLAGS) -o $@ $^ $(LIBS)
@echo "done"
# Linking for Tuples
$(TUPLE_EXECUTABLE): $(TUPLE_OBJECTS)
@echo "Linking $(TUPLE_EXECUTABLE)..."
$(CXX) $(FLAGS) -o $@ $^ $(LIBS)
@echo "done"
# Linking for Skim ggH tuples
$(SKIM_ggH_EXECUTABLE): $(SKIM_ggH_OBJECTS)
@echo "Linking $(SKIM_ggH_EXECUTABLE)..."
$(CXX) $(FLAGS) -o $@ $^ $(LIBS)
@echo "done"
# Linking for Skim VBF tuples
$(SKIM_VBF_EXECUTABLE): $(SKIM_VBF_OBJECTS)
@echo "Linking $(SKIM_VBF_EXECUTABLE)..."
$(CXX) $(FLAGS) -o $@ $^ $(LIBS)
@echo "done"
# Specifying the object files as intermediates deletes them automatically after the build process.
.INTERMEDIATE: $(ANALYZER_OBJECTS) $(JERC_OBJECTS) $(HISTOGRAM_OBJECTS) $(SKIM_ggH_OBJECTS) $(SKIM_VBF_OBJECTS) $(TUPLE_OBJECTS)
# Clean target
.PHONY: clean
clean:
rm -f $(ANALYZER_OBJECTS) $(JERC_OBJECTS) $(HISTOGRAM_OBJECTS) $(SKIM_ggH_OBJECTS) $(SKIM_VBF_OBJECTS) $(TUPLE_OBJECTS) $(ANALYZER_EXECUTABLE) $(HISTOGRAM_EXECUTABLE) $(SKIM_ggH_EXECUTABLE) $(SKIM_VBF_EXECUTABLE) $(TUPLE_EXECUTABLE)