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
import Alignment.CommonAlignment.tools.trackselectionRefitting as TrackRefitterSequencer

strTrackConstrainer=None
strtbdsel=""
if hasattr(optpy,"TBDsel"):
   strtbdsel=optpy.TBDsel
if (hasattr(optpy, "TBDconstraint") and strtbdsel!=""):
   strtbdconstr=optpy.TBDconstraint
   if "momconstr" in strtbdconstr:
      process.load("RecoTracker.TrackProducer.TwoBodyDecayMomConstraintProducer_cff")
      process.TwoBodyDecayMomConstraint.src = "AlignmentTrackSelector"
      if "y1ssel" in strtbdsel:
         process.TwoBodyDecayMomConstraint.primaryMass = cms.double(9.46)
         process.TwoBodyDecayMomConstraint.primaryWidth = cms.double(0.05)
      elif "zsel" in strtbdsel: # zsel
         process.TwoBodyDecayMomConstraint.primaryMass = cms.double(91.1876)
         process.TwoBodyDecayMomConstraint.primaryWidth = cms.double(1.4)
      process.TwoBodyDecayMomConstraint.rescaleError = cms.double(1.0)
      process.TwoBodyDecayMomConstraint.chi2Cut = cms.double(99999.)
      strTrackConstrainer="TwoBodyDecayMomConstraint,momentum"

   elif "fullconstr" in strtbdconstr:
      process.load("RecoTracker.TrackProducer.TwoBodyDecayConstraintProducer_cff")
      process.TwoBodyDecayConstraint.src = "AlignmentTrackSelector"
      if "y1ssel" in strtbdsel:
         process.TwoBodyDecayConstraint.primaryMass = cms.double(9.46)
         process.TwoBodyDecayConstraint.primaryWidth = cms.double(0.05)
      elif "zsel" in strtbdsel: # zsel
         process.TwoBodyDecayConstraint.primaryMass = cms.double(91.1876)
         process.TwoBodyDecayConstraint.primaryWidth = cms.double(1.4)
      process.TwoBodyDecayConstraint.rescaleError = cms.double(1.0)
      process.TwoBodyDecayConstraint.chi2Cut = cms.double(99999.)
      strTrackConstrainer="TwoBodyDecayConstraint,trackParameters"
elif hasattr(optpy, "applyPVConstraint"):
   # Existence of PVtype is guaranteed in the option parser
   strpvtype=optpy.PVtype
   process.load("TrackingTools.TransientTrack.TransientTrackBuilder_cfi")
   process.load("RecoVertex.PrimaryVertexProducer.OfflinePrimaryVertices_cfi")
   process.offlinePrimaryVertices.TrackLabel=cms.InputTag("AlignmentTrackSelector")
   if strpvtype=="withbs":
      process.goodOfflinePrimaryVertices=cms.EDFilter("VertexSelector",
                                            src = cms.InputTag("offlinePrimaryVertices","WithBS"),
                                            cut = cms.string("!isFake && ndof >= 4.0 && abs(z) <= 24.0 && abs(position.Rho) <= 2.0"),
                                            filter = cms.bool(True)
                                         )
   else:
      process.goodOfflinePrimaryVertices=cms.EDFilter("VertexSelector",
                                            src = cms.InputTag("offlinePrimaryVertices"),
                                            cut = cms.string("!isFake && ndof >= 4.0 && abs(z) <= 24.0 && abs(position.Rho) <= 2.0"),
                                            filter = cms.bool(True)
                                         )
   process.load("RecoTracker.TrackProducer.VertexConstraintProducer_cfi")
   process.vertexConstraint.srcTrk = "AlignmentTrackSelector"
   process.vertexConstraint.srcVtx = "goodOfflinePrimaryVertices"
   strTrackConstrainer="vertexConstraint,vertex"


process.TrackRefitterSequence = TrackRefitterSequencer.getSequence(
   process,
   strtrackcollname,
   TTRHBuilder = strTTRHBuilder,
   usePixelQualityFlag = None, # Keep default behavior ("WithAngleAndTemplate" -> True, "WithTrackAngle" -> False)
   openMassWindow = False,
   cosmicsDecoMode = False,
   cosmicsZeroTesla = False,
   momentumConstraint = strTrackConstrainer, # Should be a momentum constraint object
   cosmicTrackSplitting = False,
   use_d0cut = True
   )

if (strTrackConstrainer is not None and strtbdsel!=""):
   process.AlignmentTrackSelector.TwoBodyDecaySelector.daughterMass = 0.0 # Causes tiny bias in mass, but should not be very important
   if "y1ssel" in strtbdsel:
      process.AlignmentTrackSelector.ptMin   = 3.0
      process.AlignmentTrackSelector.TwoBodyDecaySelector.minXMass = 9.2
      process.AlignmentTrackSelector.TwoBodyDecaySelector.maxXMass = 9.65
   elif "zsel" in strtbdsel: # zsel
      process.AlignmentTrackSelector.ptMin   = 15.0
      process.AlignmentTrackSelector.TwoBodyDecaySelector.minXMass = 80.0
      process.AlignmentTrackSelector.TwoBodyDecaySelector.maxXMass = 100.0

# OVerride some settings in track selection
process.HighPurityTrackSelector.pMin   = 0.
process.AlignmentTrackSelector.etaMin  = -999.
process.AlignmentTrackSelector.etaMax  = 999.
process.AlignmentTrackSelector.minHitsPerSubDet.inPIXEL = cms.int32(1)