test
CMS 3D CMS Logo

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