00001 # MillePedeAlignmentAlgorithm 00002 # --------------------------- 00003 00004 import FWCore.ParameterSet.Config as cms 00005 00006 from Alignment.ReferenceTrajectories.TrajectoryFactories_cff import * 00007 00008 MillePedeAlignmentAlgorithm = cms.PSet( 00009 algoName = cms.string('MillePedeAlignmentAlgorithm'), 00010 mode = cms.untracked.string('full'), ## possible modes: full, mille, pede, pedeSteer, pedeRun, pedeRead 00011 fileDir = cms.untracked.string(''), 00012 00013 # Where mille writes (and pede reads) derivatives, labels etc. 00014 binaryFile = cms.string('milleBinary.dat'), 00015 # Resulting and initial parameters, absolute (original) positions, result etc. 00016 treeFile = cms.string('treeFile.root'), 00017 # Must be empty if mille runs, otherwise for merging (pede) jobs should be parallel with each 00018 # other. Then 'treeFile' is merged result and 'binaryFile' should be empty. 00019 mergeBinaryFiles = cms.vstring(), 00020 mergeTreeFiles = cms.vstring(), 00021 00022 monitorFile = cms.untracked.string('millePedeMonitor.root'), ## if empty: no monitoring... 00023 00024 pedeSteerer = cms.PSet( 00025 fileDir = cms.untracked.string(''), 00026 steerFile = cms.string('pedeSteer'), ## beginning of steering file names 00027 # If MillePedeAlignmentAlgorithm.mode causes pede to run (e.g. 'full', 'pede' etc.), 00028 # the pede command line is constructed as: 00029 # 'pedeCommand' 'steerFile'Master.txt 00030 # (and - if pedeDump is not empty - extended by: > 'pedeDump') 00031 # (MillePedeAlignmentAlgorithm.theDir is taken into account...) 00032 pedeCommand = cms.untracked.string('/afs/cern.ch/user/f/flucke/cms/pede/versWebEndMay2007/pede'), 00033 00034 parameterSign = cms.untracked.int32(1), ## old pede versions (before May '07) need a sign flip 00035 pedeDump = cms.untracked.string('pede.dump'), 00036 method = cms.string('sparseGMRES 6 0.8'), ## "inversion 6 0.8" 00037 options = cms.vstring('entries 50', # min. number of measurements (parameters with less will be skipped) 00038 # "chisqcut 20.0 4.5", # simple chi^2 cut for outliers OR ... 00039 # "outlierdownweighting 3", "dwfractioncut 0.1" #, # ... 3x Huber down weighting OR... 00040 'outlierdownweighting 4', 00041 'dwfractioncut 0.2', 00042 'bandwidth 6'), # for method sparseGMRES for preconditioning 00043 00044 # Special selection of parameters to fix, use as reference coordinate system etc. 00045 # ------------------------------------------------------------------------------ 00046 # All this is determined from what is given as 00047 # AlignmentProducer.ParameterBuilder.Selector, cf. Twiki page SWGuideMillepedeIIAlgorithm. 00048 Presigmas = cms.VPSet() 00049 ), 00050 00051 pedeReader = cms.PSet( 00052 readFile = cms.string('millepede.res'), 00053 # directory of 'readFile', if empty: 00054 # take from pedeSteerer (inheriting from MillePedeAlignmentAlgorithm) 00055 fileDir = cms.untracked.string('') 00056 ), 00057 00058 readPedeInput = cms.bool(False), ## if true, following used to read in pede result as input 00059 pedeReaderInput = cms.PSet( 00060 fileDir = cms.untracked.string('./'), 00061 readFile = cms.string('millepede.res') 00062 ), 00063 00064 TrajectoryFactory = cms.PSet( 00065 ReferenceTrajectoryFactory # from trajectoryFactories 00066 # BzeroReferenceTrajectoryFactory 00067 # TwoBodyDecayReferenceTrajectoryFactory 00068 ), 00069 minNumHits = cms.int32(5), ## minimum number of hits (with alignable parameters) 00070 max2Dcorrelation = cms.double(0.05), ## if correlation >5% 2D measurements get diagonalized 00071 useTrackTsos = cms.bool(False) ## Tsos from track or from reference trajectory for global derivatives 00072 ) 00073