Alignment
OfflineValidation
python
TkAlAllInOneTool
zMuMuValidationTemplates.py
Go to the documentation of this file.
1
ZMuMuValidationTemplate=
"""
2
compressionSettings = 207
3
###### MuSclFit SETTINGS ##############################################
4
5
### MuScleFit specific configuration
6
7
process.looper = cms.Looper(
8
"MuScleFit",
9
# Only used when reading events from a root tree
10
MaxEventsFromRootTree = cms.int32(-1),
11
12
# Specify a file if you want to read events from a root tree in a local file.
13
# In this case the input source should be an empty source with 0 events.
14
15
InputRootTreeFileName = cms.string(""),
16
17
# Specify the file name where you want to save a root tree with the muon pairs.
18
# Leave empty if no file should be written.
19
20
OutputRootTreeFileName = cms.string(""),
21
22
23
# Choose the kind of muons you want to run on
24
# -------------------------------------------
25
MuonLabel = cms.InputTag("TrackRefitter"),
26
27
28
#MuonType = cms.int32(11),
29
MuonType = cms.int32(5),
30
31
# This line allows to switch to PAT muons. Default is false.
32
# Note that the onia selection works only with onia patTuples.
33
PATmuons = cms.untracked.bool(False),
34
35
# ---------------- #
36
# Select resonance #
37
# ---------------- #
38
# The resonances are to be specified in this order:
39
# Z0, Y(3S), Y(2S), Y(1S), Psi(2S), J/Psi
40
# -------------------------------------------------
41
resfind = cms.vint32(
42
int(".oO[resonance]Oo." == "Z"),
43
int(".oO[resonance]Oo." == "Y3S"),
44
int(".oO[resonance]Oo." == "Y2S"),
45
int(".oO[resonance]Oo." == "Y1S"),
46
int(".oO[resonance]Oo." == "Psi2S"),
47
int(".oO[resonance]Oo." == "JPsi")
48
),
49
50
# Likelihood settings
51
# -------------------
52
maxLoopNumber = cms.untracked.int32(1),
53
# Select which fits to do in which loop (0 = do not, 1 = do)
54
doResolFit = cms.vint32(0),
55
doScaleFit = cms.vint32(0),
56
doBackgroundFit = cms.vint32(0),
57
doCrossSectionFit = cms.vint32(0),
58
59
# Use the probability file or not. If not it will perform a simpler selection taking the muon pair with
60
# invariant mass closer to the pdf value and will crash if some fit is attempted.
61
UseProbsFile = cms.untracked.bool(False),
62
63
# False = use also MC information
64
speedup = cms.bool(True),
65
# Set this to false if you do not want to use simTracks.
66
# (Note that this is skipped anyway if speedup == True).
67
compareToSimTracks = cms.bool(False),
68
69
# Output settings
70
# ---------------
71
# Use compressions settings of TFile
72
# see https://root.cern.ch/root/html534/TFile.html#TFile:SetCompressionSettings
73
# settings = 100 * algorithm + level
74
# level is from 1 (small) to 9 (large compression)
75
# algo: 1 (ZLIB), 2 (LMZA)
76
# see more about compression & performance: https://root.cern.ch/root/html534/guides/users-guide/InputOutput.html#compression-and-performance
77
78
OutputFileName = cms.untracked.string("zmumuHisto.root"),
79
compressionSettings = cms.untracked.int32(compressionSettings),
80
81
# BiasType=0 means no bias to muon momenta
82
# ----------------------------------------
83
BiasType = cms.int32(0),
84
parBias = cms.vdouble(),
85
86
# SmearType=0 means no smearing applied to muon momenta
87
# -----------------------------------------------------
88
SmearType = cms.int32(0),
89
parSmear = cms.vdouble(),
90
91
### taken from J/Psi #########################
92
# ResolFitType = cms.int32(14),
93
# parResol = cms.vdouble(0.007,0.015, -0.00077, 0.0063, 0.0018, 0.0164),
94
# parResolFix = cms.vint32(0, 0, 0,0, 0,0),
95
# parResolOrder = cms.vint32(0, 0, 0, 0, 0, 0),
96
ResolFitType = cms.int32(0),
97
parResol = cms.vdouble(0),
98
parResolFix = cms.vint32(0),
99
parResolOrder = cms.vint32(0),
100
101
102
# -------------------- #
103
# Scale fit parameters #
104
# -------------------- #
105
106
# -----------------------------------------------------------------------------------
107
# ScaleFitType = cms.int32(18),
108
# parScaleOrder = cms.vint32(0, 0, 0, 0),
109
# parScaleFix = cms.vint32(0, 0, 0, 0),
110
# parScale = cms.vdouble(1, 1, 1, 1),
111
ScaleFitType = cms.int32(0),
112
parScaleOrder = cms.vint32(0),
113
parScaleFix = cms.vint32(0),
114
parScale = cms.vdouble(0),
115
116
117
118
# ---------------------------- #
119
# Cross section fit parameters #
120
# ---------------------------- #
121
# Note that the cross section fit works differently than the others, it
122
# fits ratios of parameters. Fix and Order should not be used as is, they
123
# are there mainly for compatibility.
124
parCrossSectionOrder = cms.vint32(0, 0, 0, 0, 0, 0),
125
parCrossSectionFix = cms.vint32(0, 0, 0, 0, 0, 0),
126
parCrossSection = cms.vdouble(1.233, 2.07, 6.33, 13.9, 2.169, 127.2),
127
128
# ------------------------- #
129
# Background fit parameters #
130
# ------------------------- #
131
132
# Window factors for: Z, Upsilons and (J/Psi,Psi2S) regions
133
LeftWindowBorder = cms.vdouble(70., 8., 1.391495),
134
RightWindowBorder = cms.vdouble(110., 12., 5.391495),
135
136
# The two parameters of BgrFitType=2 are respectively:
137
# bgr fraction, (negative of) bgr exp. slope, bgr constant
138
# --------------------------------------------------------
139
# The function types for resonances in a region must be the same
140
BgrFitType = cms.vint32(2, 2, 2), # regions
141
# These empty parameters should be used when there is no background
142
parBgr = cms.vdouble(0., 0., 0., 0., 0., 0.,
143
0., 0., 0., 0., 0., 0., 0.,0., 0.,0., 0.,0.),
144
parBgrFix = cms.vint32(0, 0, 0, 0, 0, 0,
145
# The rest of the parameters is used for the resonance regions. They are automatically fixed in the code
146
# because they are never used to fit the background, but only after the rescaling.
147
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
148
parBgrOrder = cms.vint32(0, 0, 0, 0, 0, 0,
149
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
150
151
152
# ----------------------- #
153
154
# Set Minuit fit strategy
155
FitStrategy = cms.int32(1),
156
157
158
# Fit accuracy and debug parameters
159
StartWithSimplex = cms.bool(True),
160
ComputeMinosErrors = cms.bool(False),
161
MinimumShapePlots = cms.bool(True),
162
163
########## TO BE ENABLED ################################
164
# Set the cuts on muons to be used in the fit
165
MinMuonPt = cms.untracked.double(.oO[minpt]Oo.),
166
MaxMuonPt = cms.untracked.double(.oO[maxpt]Oo.),
167
MinMuonEtaFirstRange = cms.untracked.double(.oO[etaminneg]Oo.),
168
MaxMuonEtaFirstRange = cms.untracked.double(.oO[etamaxneg]Oo.),
169
MinMuonEtaSecondRange = cms.untracked.double(.oO[etaminpos]Oo.),
170
MaxMuonEtaSecondRange = cms.untracked.double(.oO[etamaxpos]Oo.),
171
PileUpSummaryInfo = cms.untracked.InputTag("addPileupInfo"),
172
PrimaryVertexCollection = cms.untracked.InputTag("offlinePrimaryVertices"),
173
174
# The following parameters can be used to filter events
175
TriggerResultsLabel = cms.untracked.string("TriggerResults"),
176
TriggerResultsProcess = cms.untracked.string("HLT"),
177
TriggerPath = cms.untracked.vstring(""),
178
# Negate the result of the trigger
179
NegateTrigger = cms.untracked.bool(False),
180
debug = cms.untracked.int32(0),
181
)
182
183
"""
184
185
186
188
LoadMuonModules =
"""
189
process.load("RecoMuon.DetLayers.muonDetLayerGeometry_cfi")
190
process.load("Geometry.MuonNumbering.muonNumberingInitialization_cfi")
191
process.load("RecoMuon.TrackingTools.MuonServiceProxy_cff")
192
process.load("Configuration.StandardSequences.Reconstruction_cff")
193
"""
194
195
196
198
ZMuMuPath =
"""
199
process.p = cms.Path(
200
process.offlineBeamSpot*process.TrackRefitter
201
)
202
"""
203
204
205
207
zMuMuScriptTemplate=
"""#!/bin/bash
208
source /afs/cern.ch/cms/caf/setup.sh
209
export X509_USER_PROXY=.oO[scriptsdir]Oo./.user_proxy
210
211
echo -----------------------
212
echo Job started at `date`
213
echo -----------------------
214
215
cwd=`pwd`
216
cd .oO[CMSSW_BASE]Oo./src
217
export SCRAM_ARCH=.oO[SCRAM_ARCH]Oo.
218
eval `scram runtime -sh`
219
cd $cwd
220
221
mkdir -p .oO[datadir]Oo.
222
mkdir -p .oO[workingdir]Oo.
223
mkdir -p .oO[logdir]Oo.
224
rm -f .oO[logdir]Oo./*.stdout
225
rm -f .oO[logdir]Oo./*.stderr
226
227
if [[ $HOSTNAME = lxplus[0-9]*[.a-z0-9]* ]] # check for interactive mode
228
then
229
mkdir -p .oO[workdir]Oo.
230
rm -f .oO[workdir]Oo./*
231
cd .oO[workdir]Oo.
232
else
233
mkdir -p $cwd/TkAllInOneTool
234
cd $cwd/TkAllInOneTool
235
fi
236
237
238
.oO[CommandLine]Oo.
239
240
ls -lh .
241
242
cp .oO[MuonAnalysis/MomentumScaleCalibration]Oo./test/Macros/RooFit/CompareBias.oO[resonance]Oo.Validation.cc .
243
cp .oO[MuonAnalysis/MomentumScaleCalibration]Oo./test/Macros/RooFit/Legend.h .
244
cp .oO[MuonAnalysis/MomentumScaleCalibration]Oo./test/Macros/RooFit/FitMassSlices.cc .
245
cp .oO[MuonAnalysis/MomentumScaleCalibration]Oo./test/Macros/RooFit/FitSlices.cc .
246
cp .oO[MuonAnalysis/MomentumScaleCalibration]Oo./test/Macros/RooFit/FitXslices.cc .
247
cp .oO[MuonAnalysis/MomentumScaleCalibration]Oo./test/Macros/RooFit/FitWithRooFit.cc .
248
cp .oO[MuonAnalysis/MomentumScaleCalibration]Oo./test/Macros/RooFit/FitMass1D.cc .
249
250
root -q -b -l "CompareBias.oO[resonance]Oo.Validation.cc+(.oO[rebinphi]Oo., .oO[rebinetadiff]Oo., .oO[rebineta]Oo., .oO[rebinpt]Oo.)"
251
252
cp .oO[MuonAnalysis/MomentumScaleCalibration]Oo./test/Macros/RooFit/tdrstyle.C .
253
cp .oO[MuonAnalysis/MomentumScaleCalibration]Oo./test/Macros/RooFit/MultiHistoOverlap_.oO[resonance]Oo..C .
254
255
if [[ .oO[zmumureference]Oo. == *store* ]]; then xrdcp -f .oO[zmumureference]Oo. BiasCheck_Reference.root; else ln -fs .oO[zmumureference]Oo. ./BiasCheck_Reference.root; fi
256
root -q -b -l MultiHistoOverlap_.oO[resonance]Oo..C
257
258
eos mkdir -p /store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./plots/
259
for RootOutputFile in $(ls *root )
260
do
261
xrdcp -f ${RootOutputFile} root://eoscms//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./
262
cp ${RootOutputFile} .oO[workingdir]Oo.
263
done
264
265
mkdir -p .oO[plotsdir]Oo.
266
for PngOutputFile in $(ls *png ); do
267
xrdcp -f ${PngOutputFile} root://eoscms//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./plots/
268
cp ${PngOutputFile} .oO[plotsdir]Oo.
269
done
270
271
272
echo -----------------------
273
echo Job ended at `date`
274
echo -----------------------
275
276
"""
277
278
280
281
mergeZmumuPlotsExecution=
"""
282
#merge Z->mumu histograms
283
284
cp .oO[mergeZmumuPlotsScriptPath]Oo. .
285
root -l -x -b -q TkAlMergeZmumuPlots.C++
286
287
"""
288
289
291
292
mergeZmumuPlotsTemplate=
"""
293
#include "MuonAnalysis/MomentumScaleCalibration/test/Macros/RooFit/MultiHistoOverlapAll_.oO[resonance]Oo..C"
294
#include <sstream>
295
#include <vector>
296
297
template <typename T> string separatebycommas(vector<T> v){
298
if (v.size()==0) return "";
299
stringstream s;
300
s << v[0];
301
for (unsigned int i = 1; i < v.size(); i++) s << "," << v[i];
302
return s.str();
303
}
304
305
void TkAlMergeZmumuPlots(){
306
vector<string> filenames; vector<string> titles; vector<int> colors; vector<int> linestyles;
307
308
.oO[PlottingInstantiation]Oo.
309
310
vector<int> linestyles_new, markerstyles_new;
311
for (unsigned int j=0; j<linestyles.size(); j++){ linestyles_new.push_back(linestyles.at(j) % 100); markerstyles_new.push_back(linestyles.at(j) / 100); }
312
313
TkAlStyle::legendheader = ".oO[legendheader]Oo.";
314
TkAlStyle::set(.oO[publicationstatus]Oo., .oO[era]Oo., ".oO[customtitle]Oo.", ".oO[customrighttitle]Oo.");
315
316
MultiHistoOverlapAll_.oO[resonance]Oo.(separatebycommas(filenames), separatebycommas(titles), separatebycommas(colors), separatebycommas(linestyles_new), separatebycommas(markerstyles_new), ".oO[datadir]Oo./.oO[PlotsDirName]Oo.", .oO[switchONfit]Oo., .oO[AutoSetRange]Oo., .oO[CustomMinY]Oo., .oO[CustomMaxY]Oo.);
317
}
318
"""
Generated for CMSSW Reference Manual by
1.8.14