CMS 3D CMS Logo

MillePedeAlignmentAlgorithm_cfi.py
Go to the documentation of this file.
1 # MillePedeAlignmentAlgorithm
2 # ---------------------------
3 
4 import FWCore.ParameterSet.Config as cms
5 
8 
9 MillePedeAlignmentAlgorithm = cms.PSet(
10  algoName = cms.string('MillePedeAlignmentAlgorithm'),
11  mode = cms.untracked.string('full'),
12  fileDir = cms.untracked.string(''),
13 
14  # Where mille writes (and pede reads) derivatives, labels etc.
15  binaryFile = cms.string('milleBinary.dat'),
16  # Resulting and initial parameters, absolute (original) positions, result etc.
17  treeFile = cms.string('treeFile.root'),
18  # Must be empty if mille runs, otherwise for merging (pede) jobs should be parallel with each
19  # other. Then 'treeFile' is merged result and 'binaryFile' should be empty.
20  mergeBinaryFiles = cms.vstring(),
21  mergeTreeFiles = cms.vstring(),
22 
23  monitorFile = cms.untracked.string('millePedeMonitor.root'),
24 
25  runAtPCL = cms.bool(False), # at the PCL the mille binaries are reset at lumi-section boundaries
26  ignoreFirstIOVCheck = cms.untracked.bool(False), # flag to ignore check if data is prior to first IOV
27  ignoreHitsWithoutGlobalDerivatives = cms.bool(False), # - if all alignables and calibration for a
28  # hit are set to '0', the hit is ignored
29  # - has only an effect with non-GBL
30  # material-effects description
31  skipGlobalPositionRcdCheck = cms.bool(False), # since the change of the GlobalPositionRcd is
32  # mostly driven by changes of the muon system
33  # it is often safe to ignore this change for
34  # tracker alignment
35 
36  # PSet that allows to configure the pede labeler, i.e. select the actual
37  # labeler plugin to use and parameters for the selected plugin
38  pedeLabeler = cms.PSet(
39  #plugin = cms.string('MomentumDependentPedeLabeler')
40  #parameterInstances = cms.VPSet(
41  # cms.PSet(momentumRanges = cms.vstring('0.0:50.0','50.0:10000.0'),
42  # selector = cms.vstring('ExtrasBeamSpot,1111'))
43  # )
44  ),
45 
46  pedeSteerer = cms.PSet(
47  fileDir = cms.untracked.string(''),
48  runDir = cms.untracked.string(''),
49  steerFile = cms.string('pedeSteer'),
50  steerFileDebug = cms.untracked.bool(False),
51  # If MillePedeAlignmentAlgorithm.mode causes pede to run (e.g. 'full', 'pede' etc.),
52  # the pede command line is constructed as:
53  # 'pedeCommand' 'steerFile'Master.txt
54  # (and - if pedeDump is not empty - extended by: > 'pedeDump')
55  # (MillePedeAlignmentAlgorithm.theDir is taken into account...)
56  pedeCommand = cms.untracked.string('pede'),
57 
58  parameterSign = cms.untracked.int32(1),
59  pedeDump = cms.untracked.string('pede.dump'),
60  method = cms.string('sparseMINRES 6 0.8'),
61  options = cms.vstring('entries 50', # min. number of measurements (parameters with less will be skipped)
62  # 'regularisation 1.0 0.01', # regularisation with default pre-sigma 0.01
63  # "chisqcut 20.0 4.5", # simple chi^2 cut for outliers AND/OR ...
64  # "outlierdownweighting 3", "dwfractioncut 0.1" #, # ... 3x Huber down weighting OR...
65  'outlierdownweighting 5', 'dwfractioncut 0.2'),
66 
67  # Special selection of parameters to fix, use as reference coordinate system etc.
68  # ------------------------------------------------------------------------------
69  # All this is determined from what is given as
70  # AlignmentProducer.ParameterBuilder.Selector, cf. Twiki page SWGuideMillepedeIIAlgorithm.
71  Presigmas = cms.VPSet(),
72  minHieraConstrCoeff = cms.double(1.e-10), # min abs value of coeff. in hierarchy constr.
73  minHieraParPerConstr = cms.uint32(1), # ignore hierarchy constraints with less params
74  constrPrecision = cms.uint32(10), # precision for writing constraints to text file. Default is 6 and can be setup with constrPrecision = cms.uint32(0)
75  # specify additional steering files
76  additionalSteerFiles = cms.vstring(), # obsolete - can be given as entries in 'options'
77 
78  # Parameter vector for the systematic geometry deformations
79  # Empty vector -> constraints are NOT applied (default)
80  constraints = cms.VPSet()
81  ),
82 
83  pedeReader = cms.PSet(
84  readFile = cms.string('millepede.res'),
85  # directory of 'readFile', if empty:
86  # take from pedeSteerer (inheriting from MillePedeAlignmentAlgorithm)
87  fileDir = cms.untracked.string('')
88  ),
89 
90  # Array of PSet's like 'pedeReader' above to be applied before running mille,
91  # i.e. for iterative running of Millepede without going via DB constants
92  # (note: if 'fileDir' empty, the one from 'pedeSteerer' will be used...):
93  pedeReaderInputs = cms.VPSet(),
94 
95  TrajectoryFactory = BrokenLinesTrajectoryFactory, # from TrajectoryFactories
96  # BrokenLinesBzeroTrajectoryFactory
97  # TwoBodyDecayReferenceTrajectoryFactory, # for this overwrite MaterialEffects for BL
98  minNumHits = cms.uint32(7),
99  max2Dcorrelation = cms.double(0.05),
100  doubleBinary = cms.bool(False),
101 
102  # Parameters for PXB survey steering
103  surveyPixelBarrel = cms.PSet(
104  doSurvey = cms.bool(False),
105  infile = cms.FileInPath("Alignment/SurveyAnalysis/data/BPix_Survey_info_raw.txt"),
106  doOutputOnStdout = cms.bool(False),
107  # Settings for toy survey - produces a file with toy survey data according to given parameters
108  doToySurvey = cms.bool(False),
109  toySurveyFile = cms.untracked.string('toySurveyInfo.txt'),
110  toySurveySeed = cms.uint32(12),
111  toySurveyParameters = cms.VPSet(
112  # Position of photo in local frame (unit: pixels in photo)
113  cms.PSet(name = cms.string('a0'), mean = cms.double(1800.), sigma = cms.double(150.)),
114  cms.PSet(name = cms.string('a1'), mean = cms.double(2600.), sigma = cms.double(200.)),
115  # Scale of photo (unit: pixels per cm)
116  cms.PSet(name = cms.string('scale'), mean = cms.double(1150.), sigma = cms.double(50.)),
117  # Rotation of photo in local frame (unit: rads)
118  cms.PSet(name = cms.string('phi'), mean = cms.double(0.), sigma = cms.double(0.0025)),
119  # Smearing of measurements in u and v coordinate (unit: pixels in photo)
120  cms.PSet(name = cms.string('u'), mean = cms.double(0.), sigma = cms.double(0.175)), cms.PSet(name = cms.string('v'), mean = cms.double(0.), sigma = cms.double(0.175))
121  )
122  ),
123 
124  #parameters used to read the pede files back for DQM and check on parameters
125  MillePedeFileReader = cms.PSet(MillePedeFileReader),
126 )
127