Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
import FWCore.ParameterSet.Config as cms

# ------------------------------------------------------------------------------
# configure a filter to run only on the events selected by TkAlMinBias AlcaReco
import copy
from HLTrigger.HLTfilters.hltHighLevel_cfi import *
ALCARECOTkAlMinBiasFilterForSiPixelAli = copy.deepcopy(hltHighLevel)
ALCARECOTkAlMinBiasFilterForSiPixelAli.HLTPaths = ['pathALCARECOTkAlMinBias']
ALCARECOTkAlMinBiasFilterForSiPixelAli.throw = True ## dont throw on unknown path names
ALCARECOTkAlMinBiasFilterForSiPixelAli.TriggerResultsTag = cms.InputTag("TriggerResults","","RECO")

from Alignment.CommonAlignmentProducer.LSNumberFilter_cfi import *

# Ingredient: offlineBeamSpot
from RecoVertex.BeamSpotProducer.BeamSpot_cfi import offlineBeamSpot

# Ingredient: AlignmentTrackSelector
# track selector for HighPurity tracks
#-- AlignmentTrackSelector
from Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi import AlignmentTrackSelector
SiPixelAliHighPuritySelector = AlignmentTrackSelector.clone(
        applyBasicCuts = True,
        #filter = True,
        src = 'ALCARECOTkAlMinBias',
        trackQualities = ["highPurity"],
        pMin = 4.,
        )



# track selection for alignment
from Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi import AlignmentTrackSelector
SiPixelAliTrackSelector = AlignmentTrackSelector.clone(
	src = 'SiPixelAliTrackFitter',
	applyBasicCuts = True,
	pMin = 8.,
	ptMin = 1.0,
	etaMin = -999.,
	etaMax = 999.,
	nHitMin = 8,
	nHitMin2D = 2,
	chi2nMax = 9999.,
	applyMultiplicityFilter = False,
	maxMultiplicity = 1,
	applyNHighestPt = False,
	nHighestPt = 1,
	seedOnlyFrom = 0,
	applyIsolationCut = False,
	minHitIsolation = 0.8,
	applyChargeCheck = False,
	minHitChargeStrip = 30.,
)
#Special option for PCL
SiPixelAliTrackSelector.minHitsPerSubDet.inPIXEL = 2


# Ingredient: SiPixelAliTrackRefitter0
# refitting
from RecoTracker.IterativeTracking.InitialStep_cff import *
from RecoTracker.Configuration.RecoTrackerP5_cff import *
from RecoTracker.TrackProducer.TrackRefitter_cfi import *
# In the following use
# TrackRefitter (normal tracks), TrackRefitterP5 (cosmics) or TrackRefitterBHM (beam halo)

SiPixelAliTrackRefitter0 = TrackRefitter.clone(
        src = 'SiPixelAliHighPuritySelector',   #'ALCARECOTkAlMinBias'#'ALCARECOTkAlCosmicsCTF0T' #'ALCARECOTkAlMuonIsolated'
        NavigationSchool = '',            # to avoid filling hit pattern
                                              )

SiPixelAliTrackRefitter1 = SiPixelAliTrackRefitter0.clone(
	src = 'SiPixelAliTrackSelector'
)

#-- Alignment producer
from Alignment.MillePedeAlignmentAlgorithm.MillePedeAlignmentAlgorithm_cfi import *
from Alignment.CommonAlignmentProducer.AlignmentProducerAsAnalyzer_cff import AlignmentProducer
SiPixelAliMilleAlignmentProducer = copy.deepcopy(AlignmentProducer)
SiPixelAliMilleAlignmentProducer.ParameterBuilder.Selector = cms.PSet(
    alignParams = cms.vstring(
        "PixelHalfBarrels,111111",
        "PXECHalfCylinders,111111",
        )
    )

SiPixelAliMilleAlignmentProducer.doMisalignmentScenario = False #True


SiPixelAliMilleAlignmentProducer.checkDbAlignmentValidity = False
SiPixelAliMilleAlignmentProducer.applyDbAlignment = True
SiPixelAliMilleAlignmentProducer.tjTkAssociationMapTag = 'SiPixelAliTrackRefitter1'

SiPixelAliMilleAlignmentProducer.algoConfig = MillePedeAlignmentAlgorithm
SiPixelAliMilleAlignmentProducer.algoConfig.mode = 'mille'
SiPixelAliMilleAlignmentProducer.algoConfig.runAtPCL = True
SiPixelAliMilleAlignmentProducer.algoConfig.mergeBinaryFiles = cms.vstring()
SiPixelAliMilleAlignmentProducer.algoConfig.binaryFile = 'milleBinary_0.dat'
SiPixelAliMilleAlignmentProducer.algoConfig.TrajectoryFactory = cms.PSet(
      #process.BrokenLinesBzeroTrajectoryFactory
      BrokenLinesTrajectoryFactory
      )




# Ingredient: SiPixelAliTrackerTrackHitFilter
import RecoTracker.FinalTrackSelectors.TrackerTrackHitFilter_cff as HitFilter
# Reference config at /afs/cern.ch/cms/CAF/CMSALCA/ALCA_TRACKERALIGN/MP/MPproduction/aliConfigTemplates/Cosmics38T_BL_default_cfg.py
SiPixelAliTrackerTrackHitFilter = HitFilter.TrackerTrackHitFilter.clone(
    src = 'SiPixelAliTrackRefitter0', #'ALCARECOTkAlCosmicsCTF0T',	
    # this is needed only if you require some selections; but it will work even if you don't ask for them
    useTrajectories= True,
    minimumHits = 8,
    replaceWithInactiveHits = True,
    rejectBadStoNHits = True,
    commands = cms.vstring("keep PXB","keep PXE","keep TIB","keep TID","keep TOB","keep TEC"), #,"drop TID stereo","drop TEC stereo")
    stripAllInvalidHits = False,
    StoNcommands = cms.vstring("ALL 12.0"),
    rejectLowAngleHits = True,
    TrackAngleCut = 0.17, # in rads, starting from the module surface; .35 for cosmcics ok, .17 for collision tracks
    usePixelQualityFlag = True #False
    )

# Ingredient: SiPixelAliSiPixelAliTrackFitter
import RecoTracker.TrackProducer.CTFFinalFitWithMaterial_cff as fitWithMaterial
SiPixelAliTrackFitter = fitWithMaterial.ctfWithMaterialTracks.clone(
        src = 'SiPixelAliTrackerTrackHitFilter',
        # TTRHBuilder = 'WithAngleAndTemplate', #should already be default
        NavigationSchool = ''
        )

### Ingredient: MillePedeFileConverter
##from Alignment.CommonAlignmentProducer.MillePedeFileConverter_cfi import millePedeFileConverter
### We configure the input file name of the millePedeFileConverter
###         with the output file name of the alignmentProducer (=looper).
### Like this we are sure that they are well connected.
##SiPixelAliMillePedeFileConverter = millePedeFileConverter.clone(
##        fileDir = looper.algoConfig.fileDir,
##        binaryFile = looper.algoConfig.binaryFile,
##        )

SiPixelAliMillePedeFileConverter = cms.EDProducer("MillePedeFileConverter",
                                                  #FIXME: convert to untracked?
                                                  fileDir = cms.string(SiPixelAliMilleAlignmentProducer.algoConfig.fileDir.value()),
                                                  inputBinaryFile = cms.string(SiPixelAliMilleAlignmentProducer.algoConfig.binaryFile.value()),
                                                  #FIXME: why was the label removed? Don't we want a label?
                                                  fileBlobLabel = cms.string(''),
                                                 )



seqALCARECOPromptCalibProdSiPixelAli = cms.Sequence(ALCARECOTkAlMinBiasFilterForSiPixelAli*
                                                    LSNumberFilter*
                                                    offlineBeamSpot*
                                                    SiPixelAliHighPuritySelector*
                                                    SiPixelAliTrackRefitter0*
                                                    SiPixelAliTrackerTrackHitFilter*
                                                    SiPixelAliTrackFitter*
						    SiPixelAliTrackSelector*
						    SiPixelAliTrackRefitter1*
                                                    SiPixelAliMilleAlignmentProducer*
                                                    SiPixelAliMillePedeFileConverter)