CMS 3D CMS Logo

Package Alignment/MillePedeAlignmentAlgorithm

Source code (CVS tag: @) - Administrative privileges

Description

MillePedeAlignmentAlgorithm implements the CMSSW interface to the Millepede II program written by V. Blobel. Millepede II is the successor of Millpede. The algorithm is meant to be used as a plugin loaded by the Alignment/AlignmentProducer. Currently it can deal with tracker, but not with muon alignment.

Millepede is separated into two part:

1) Mille: Writes out measurements, global and local derivatives into a binary file. This part is fully integrated into CMSSW.

2) Pede: This standalone program is the main part of Millepede II. After reading one (or more) of the binary files from Mille and possibly some text steering files, it computes the result and writes them out as a text file.

This CMSSW package handles also automatically the writing and reading of the text files for communication with Pede. Further documentation will hopefully be reachable in some time with a few clicks from this page in the SWGuide.

Public interface

Since the package is a plugin, there are no interfaces. Unfortunately these classes have their header still in the interface directory:

Modules

The following block from data/MillePedeAlignmentAlgorithm.cfi is intended to be used via using declaration as AlignmentProducer.algoConfig:

# MillePedeAlignmentAlgorithm # --------------------------- include "Alignment/ReferenceTrajectories/data/TrajectoryFactories.cff" block MillePedeAlignmentAlgorithm = { string algoName = "MillePedeAlignmentAlgorithm" untracked string mode = "full" # possible modes: full, mille, pede, pedeSteer, pedeRun, pedeRead untracked string fileDir = "" # if given, everything (in/output) is expected there/goes there # Where mille writes (and pede reads) derivatives, labels etc. string binaryFile = "milleBinary.dat" # Resulting and initial parameters, absolute (original) positions, result etc. string treeFile = "treeFile.root" # if empty: no treeFile # Must be empty if mille runs, otherwise for merging (pede) jobs should be parallel with each # other. Then 'treeFile' is merged result and 'binaryFile' should be empty. vstring mergeBinaryFiles = {} vstring mergeTreeFiles = {} untracked string monitorFile = "millePedeMonitor.root" # if empty: no monitoring... PSet pedeSteerer = { untracked string fileDir = "" # if empty: taken from 'MillePedeAlignmentAlgorithm.fileDir' string steerFile = "pedeSteer" # beginning of steering file names # If MillePedeAlignmentAlgorithm.mode causes pede to run (e.g. 'full', 'pede' etc.), # the pede command line is constructed as: # 'pedeCommand' 'steerFile'Master.txt # (and - if pedeDump is not empty - extended by: > 'pedeDump') # (MillePedeAlignmentAlgorithm.theDir is taken into account...) untracked string pedeCommand = "/afs/cern.ch/user/f/flucke/cms/pede/versWebEndMay2007/pede" untracked int32 parameterSign = 1 # old pede versions (before May '07) need a sign flip untracked string pedeDump = "pede.dump" string method = "sparseGMRES 6 0.8" # "inversion 6 0.8" # n(iter) Delta(F) vstring options = { "entries 50", # min. number of measurements (parameters with less will be skipped) # "chisqcut 20.0 4.5", # simple chi^2 cut for outliers OR ... # "outlierdownweighting 3", "dwfractioncut 0.1" #, # ... 3x Huber down weighting OR... "outlierdownweighting 4", "dwfractioncut 0.2", # ...3x Huber + 1x Cauchy down weighting "bandwidth 6" # for method sparseGMRES for preconditioning } # Special selection of parameters to fix, use as reference coordinate system etc. # ------------------------------------------------------------------------------ # All this is determined from what is given as # AlignmentProducer.ParameterBuilder.Selector, cf. Twiki page SWGuideMillepedeIIAlgorithm. VPSet Presigmas = {} } PSet pedeReader = { string readFile = "millepede.res" # directory of 'readFile', if empty: # take from pedeSteerer (inheriting from MillePedeAlignmentAlgorithm) untracked string fileDir = "" } bool readPedeInput = false # if true, following used to read in pede result as input PSet pedeReaderInput = { string readFile = "millepede.res" untracked string fileDir = "./" } PSet TrajectoryFactory = { using ReferenceTrajectoryFactory # from TrajectoryFactories # using BzeroReferenceTrajectoryFactory # using TwoBodyDecayReferenceTrajectoryFactory } int32 minNumHits = 5 # minimum number of hits (with alignable parameters) double max2Dcorrelation = 0.05 # if correlation >5% 2D measurements get diagonalized bool useTrackTsos = false # Tsos from track or from reference trajectory for global derivatives }

Unit tests and examples

No unit tests so far, but an example cfg can be found the test directory:

Status and planned development

Under development.


Last updated: @ Author: Gero Flucke
Generated on Tue Jun 9 17:56:13 2009 for CMSSW by  doxygen 1.5.4