def selMuonPParts(name, trackingSeq):
    """
       Make ProtoParticles out of VeloMuon tracks
   """
    veloprotos = ChargedProtoParticleMaker(name + "ProtoPMaker")
    veloprotos.Inputs = ["Rec/VeloMuon/Tracks"]
    veloprotos.Output = "Rec/ProtoP/" + name + "ProtoPMaker/ProtoParticles"
    veloprotos.addTool(DelegatingTrackSelector, name="TrackSelector")
    tracktypes = ["Long"]
    veloprotos.TrackSelector.TrackTypes = tracktypes
    selector = veloprotos.TrackSelector
    for tsname in tracktypes:
        selector.addTool(TrackSelector, name=tsname)
        ts = getattr(selector, tsname)
        # Set Cuts
        ts.TrackTypes = [tsname]

    veloprotoseq = GaudiSequencer(name + "ProtoPSeq")
    veloprotoseq.Members += [veloprotos]

    return GSWrapper(name="WrappedVeloMuonProtoPSeqFor" + name,
                     sequencer=veloprotoseq,
                     output='Rec/ProtoP/' + name +
                     'ProtoPMaker/ProtoParticles',
                     requiredSelections=[trackingSeq])
示例#2
0
 def MakeVeloTracks(self,prefilter):
     
     if self.__confdict__["DoVeloDecoding"]:
         from DAQSys.Decoders import DecoderDB
         from DAQSys.DecoderClass import decodersForBank
         decs=[]
         vdec=DecoderDB["DecodeVeloRawBuffer/createBothVeloClusters"]
         vdec.Active=True
         DecoderDB["DecodeVeloRawBuffer/createVeloClusters"].Active=False
         DecoderDB["DecodeVeloRawBuffer/createVeloLiteClusters"].Active=False
         decs=decs+[vdec]
         VeloDecoding = GaudiSequencer("RecoDecodingSeq")
         VeloDecoding.Members += [d.setup() for d in decs ]
     
     MyFastVeloTracking = FastVeloTracking("For%sFastVelo"%self.name,OutputTracksName=self.VeloTrackOutputLocation)
     MyFastVeloTracking.OnlyForward = True
     MyFastVeloTracking.ResetUsedFlags = True
     ### prepare for fitting
     preve = TrackStateInitAlg("For%sInitSeedFit"%self.name,TrackLocation = self.VeloTrackOutputLocation)
     preve.StateInitTool.VeloFitterName = "FastVeloFitLHCbIDs"
     copyVelo = TrackContainerCopy( "For%sCopyVelo"%self.name )
     copyVelo.inputLocations = [self.VeloTrackOutputLocation]
     copyVelo.outputLocation = self.FittedVeloTrackOutputLocation
     
     ### fitting
     if self.__confdict__["VeloFitter"] == "ForwardStraightLine":
         MyVeloFit = ConfiguredForwardStraightLineEventFitter(Name="For%sVeloRefitterAlg"%self.name,
                                                              TracksInContainer=self.FittedVeloTrackOutputLocation)
     elif self.__confdict__["VeloFitter"] == "SimplifiedGeometry":
         MyVeloFit = ConfiguredEventFitter(Name="For%sVeloRefitterAlg"%self.name,
                                           TracksInContainer=self.FittedVeloTrackOutputLocation,
                                           SimplifiedGeometry = True)
     else:
         MyVeloFit = ConfiguredEventFitter(Name="For%sVeloRefitterAlg"%self.name,
                                           TracksInContainer=self.FittedVeloTrackOutputLocation)
         
     #### making the proto particles
     MakeVeloProtos = ChargedProtoParticleMaker('For%sVeloProtoMaker'%self.name)
     MakeVeloProtos.Inputs=[self.FittedVeloTrackOutputLocation]
     MakeVeloProtos.Output = self.VeloProtoOutputLocation
     MakeVeloProtos.addTool( DelegatingTrackSelector, name="TrackSelector" )
     MakeVeloProtos.TrackSelector.TrackTypes = [ "Velo" ]
 
     #### the full sequence
     makeparts = GaudiSequencer('For%sMakeVeloTracksGS'%self.name)
     if self.__confdict__["DoVeloDecoding"]:
         makeparts.Members += [ VeloDecoding ] 
     makeparts.Members += [ MyFastVeloTracking ] 
     makeparts.Members += [ preve ] 
     makeparts.Members += [ copyVelo ] 
     makeparts.Members += [ MyVeloFit ] 
     makeparts.Members += [ MakeVeloProtos ] 
 
     #### some python magic to maek this appear like a "Selection"
     return GSWrapper(name="For%sWrappedVeloTrackingFor"%self.name,
                      sequencer=makeparts,
                      output=self.VeloProtoOutputLocation,
                      requiredSelections =  prefilter)
示例#3
0
def selMuonPParts(name, DataType, downstreamSeq):
   """
       Make ProtoParticles out of Downstream tracks
   """
   unpacker = UnpackTrack(name+"UnpackTrack")  # do we need this or is it here for historical reason ?
   unpacker.InputName="pRec/Downstream/FittedTracks"
   unpacker.OutputName="Rec/Downstream/FittedTracks"

   idalg = MuonIDAlg(name+"IDalg")
   cm=ConfiguredMuonIDs.ConfiguredMuonIDs( DataType ) #data=DaVinci().getProp("DataType"))
   cm.configureMuonIDAlg(idalg)
   idalg.TrackLocation = "Rec/Downstream/FittedTracks"
   idalg.MuonIDLocation = "Rec/Muon/MuonPID/Downstream"
   idalg.MuonTrackLocation = "Rec/Track/MuonForDownstream" # I would call it FromDownstream …but just to be »Klugscheißer«

   downprotoseq = GaudiSequencer(name+"ProtoPSeq")
   downprotos = ChargedProtoParticleMaker(name+"ProtoPMaker")
   downprotos.Inputs = ["Rec/Downstream/FittedTracks"]
   downprotos.Output = "Rec/ProtoP/"+name+"ProtoPMaker/ProtoParticles"
   downprotos.addTool( DelegatingTrackSelector, name="TrackSelector" )
   #tracktypes = [ "Long","Upstream","Downstream","Ttrack","Velo","VeloR" ] # only downstream needed …
   tracktypes = ["Downstream"]
   #if (trackcont == "Best") :
   #	tracktypes = [ "Long" ]
   downprotos.TrackSelector.TrackTypes = tracktypes
   selector = downprotos.TrackSelector
   for tsname in tracktypes:
   	selector.addTool(TrackSelector,name=tsname)
   	ts = getattr(selector,tsname)
   	# Set Cuts
   	ts.TrackTypes = [tsname]
#	ts.MinNDoF = 1 
	ts.MaxChi2Cut = 10

   addmuonpid = ChargedProtoParticleAddMuonInfo(name+"addmuoninfo")
   addmuonpid.InputMuonPIDLocation = "Rec/Muon/MuonPID/Downstream"
   addmuonpid.ProtoParticleLocation = "Rec/ProtoP/"+name+"ProtoPMaker/ProtoParticles"
   #addmuonpid.OutputLevel = 0
   combinedll = ChargedProtoCombineDLLsAlg(name+"CombineDLL")
   combinedll.ProtoParticleLocation = "Rec/ProtoP/"+name+"ProtoPMaker/ProtoParticles"
   #combinedll.OutputLevel = 0
   # DST post treatment
   #TrackToDST(name+"TrackToDST").TracksInContainer = "Rec/Downstream/Tracks"
   #downprotoseq.Members += [ TrackToDST(name+"TrackToDST"), downprotos, addmuonpid, combinedll ]
   downprotoseq.Members += [ downprotos, addmuonpid, combinedll ]
#        
   DataOnDemandSvc().AlgMap.update( {
                "/Event/Rec/Downstream/Tracks" : unpacker.getFullName(),
                "/Event/Rec/Muon/MuonPID/Downstream" : idalg.getFullName(),
#                "/Event/Rec/ProtoP/"+name+"ProtoPMaker" : downprotoseq.getFullName()
		} )

   return GSWrapper(name="WrappedDownMuonProtoPSeqFor"+name,
                    sequencer=downprotoseq,
                    output='Rec/ProtoP/' + name +'ProtoPMaker/ProtoParticles',
                    requiredSelections = [ downstreamSeq])
示例#4
0
def configIso():
    from Configurables import ChargedProtoParticleMaker, DaVinci
    veloprotos = ChargedProtoParticleMaker("ProtoPMaker")
    veloprotos.Inputs = ["Rec/Track/Best"]
    veloprotos.Output = "Rec/ProtoP/myProtoPMaker/ProtoParticles"
    DaVinci().appendToMainSequence( [ veloprotos ])

    from Configurables       import ProtoParticleCALOFilter, CombinedParticleMaker,NoPIDsParticleMaker
    from CommonParticles.Utils import trackSelector, updateDoD
    algorithm = NoPIDsParticleMaker('StdNoPIDsVeloPions',  Particle =
            'pion',  )
    algorithm.Input = "Rec/ProtoP/myProtoPMaker/ProtoParticles"
    selector = trackSelector ( algorithm , trackTypes = ['Velo'] )
    locations = updateDoD ( algorithm )
    DaVinci().appendToMainSequence( [ algorithm ]) 
示例#5
0
 def MakeVeloProtos(self,prefilter):
                 
     #### making the proto particles
     MakeVeloProtos = ChargedProtoParticleMaker('For%sVeloProtoMaker'%self.name())
     MakeVeloProtos.Inputs = [self.VeloTrackInputLocaton] 
     MakeVeloProtos.Output = self.VeloProtoOutputLocation
     MakeVeloProtos.addTool( DelegatingTrackSelector, name="TrackSelector" )
     MakeVeloProtos.TrackSelector.TrackTypes = [ "Velo" ]
 
     #### the full sequence
     makeparts = GaudiSequencer('For%sMakeVeloProtosGS'%self.name())
     makeparts.Members += [ MakeVeloProtos ] 
 
     #### some python magic to maek this appear like a "Selection"
     return GSWrapper(name="For%sWrappedVeloTrackingFor"%self.name(),
                      sequencer=makeparts,
                      output=self.VeloProtoOutputLocation,
                      requiredSelections =  prefilter)
示例#6
0
def selMuonPParts(name, trackingSeq):
   """
       Make ProtoParticles out of VeloMuon tracks
   """
   unpacker = UnpackTrack(name+"UnpackTrack")
   unpacker.InputName="pRec/VeloMuon/Tracks"
   unpacker.OutputName="Rec/VeloMuon/Tracks"

   veloprotos = ChargedProtoParticleMaker(name+"ProtoPMaker")
   veloprotos.Inputs = ["Rec/VeloMuon/Tracks"]
   veloprotos.Output = "Rec/ProtoP/"+name+"ProtoPMaker/ProtoParticles"
   veloprotos.addTool( DelegatingTrackSelector, name="TrackSelector" )
   tracktypes = [ "Long" ]
   #veloprotos.OutputLevel =0
   #if (trackcont == "Best") :
   #	tracktypes = [ "Long" ]
   veloprotos.TrackSelector.TrackTypes = tracktypes
   selector = veloprotos.TrackSelector
   for tsname in tracktypes:
   	selector.addTool(TrackSelector,name=tsname)
   	ts = getattr(selector,tsname)
   	# Set Cuts
   	ts.TrackTypes = [tsname]

#        
   DataOnDemandSvc().AlgMap.update( {
                "/Event/Rec/VeloMuon/Tracks" : unpacker.getFullName(),
		} )

   veloprotoseq = GaudiSequencer(name+"ProtoPSeq")
   veloprotoseq.Members += [ veloprotos ]

   return GSWrapper(name="WrappedVeloMuonProtoPSeqFor" + name,
                    sequencer=veloprotoseq,
                    output='Rec/ProtoP/' + name +'ProtoPMaker/ProtoParticles',
                    requiredSelections = [ trackingSeq])
示例#7
0
hlt1_emu.Variables = []
hlt1_emu.nltValue = 16.

DaVinci().appendToMainSequence([relinfo_HLT1])

##############################################################################################
##### PRODUCTION OF THE VELO PARTICLE INPUT CONTAINER FOR THE CHARGED ISOLATION TUPLE TOOL
#############################################################################################

#To produce the Velo particles input container (the gain in performance from adding velo tracks is actually pretty negligible...)

from Configurables import ChargedProtoParticleMaker

name = "Lambdab2Lcmunu"
veloprotos = ChargedProtoParticleMaker(name + "ProtoPMaker")
veloprotos.Inputs = ["Rec/Track/Best"]
veloprotos.Output = "Rec/ProtoP/myProtoPMaker/ProtoParticles"

DaVinci().appendToMainSequence([veloprotos])

from Gaudi.Configuration import *
from Configurables import ProtoParticleCALOFilter, CombinedParticleMaker, NoPIDsParticleMaker
from CommonParticles.Utils import *

algorithm = NoPIDsParticleMaker(
    'StdNoPIDsVeloPions',
    Particle='pion',
)
algorithm.Input = "Rec/ProtoP/myProtoPMaker/ProtoParticles"
selector = trackSelector(algorithm, trackTypes=['Velo'])
示例#8
0
# Debug options
DaVinci().EvtMax = -1


###################################
# Customize DaVinci main sequence #
###################################

from Configurables import ChargedProtoParticleMaker
from Configurables import NoPIDsParticleMaker
from CommonParticles.Utils import trackSelector, updateDoD

# Provide required information for VELO pions.
ms_all_protos = ChargedProtoParticleMaker(name='MyProtoPMaker')
ms_all_protos.Inputs = ['Rec/Track/Best']
ms_all_protos.Output = 'Rec/ProtoP/MyProtoPMaker/ProtoParticles'

# NOTE: The name 'StdNoPIDsVeloPions' is hard-coded in the tuple tool, so the
#       name should not be changed.
ms_velo_pions = NoPIDsParticleMaker('StdNoPIDsVeloPions', Particle='pion')
ms_velo_pions.Input = ms_all_protos.Output

trackSelector(ms_velo_pions, trackTypes=['Velo'])
updateDoD(ms_velo_pions)

DaVinci().appendToMainSequence([ms_all_protos, ms_velo_pions])


#######################
# Particle references #
    def __hlt2ProbeMuonProtos(self):
        """
        Charged muon protoparticles
        Requires chargedProtos and muon ID
        """
        from Configurables import (ChargedProtoParticleAddMuonInfo,
                                   ChargedProtoCombineDLLsAlg, MuonIDAlg,
                                   ChargedProtoParticleMaker,
                                   DelegatingTrackSelector)
        from MuonID import ConfiguredMuonIDs

        ProbeMuonProtosOutputLocation = _baseProtoPLocation(
            "Hlt2",
            HltDefaultFitSuffix + "/" + TrackEffNames[self.trackType()])

        Hlt2ProbeMuonProtoMaker = ChargedProtoParticleMaker(
            self.__pidAlgosAndToolsPrefix() + 'ProbeProtoPAlg')

        if (self.trackType() == "MuonTT"):
            # create the protos
            bm_members = [self.__hlt2MuonTTTracking()]
            Hlt2ProbeMuonProtoMaker.Inputs = [
                self.__hlt2MuonTTTracking().outputSelection()
            ]
            Hlt2ProbeMuonProtoMaker.addTool(DelegatingTrackSelector)
            Hlt2ProbeMuonProtoMaker.Output = ProbeMuonProtosOutputLocation
            Hlt2ProbeMuonProtoMaker.DelegatingTrackSelector.TrackTypes = [
                "Long"
            ]
            bm_members += [Hlt2ProbeMuonProtoMaker]

        elif (self.trackType() == "VeloMuon"):
            #build protos out of tracks
            bm_members = [self.__hlt2VeloMuonTracking()]
            Hlt2ProbeMuonProtoMaker.Inputs = [
                self.__hlt2VeloMuonTracking().outputSelection()
            ]
            Hlt2ProbeMuonProtoMaker.Output = ProbeMuonProtosOutputLocation
            Hlt2ProbeMuonProtoMaker.addTool(DelegatingTrackSelector,
                                            name='delTrackSel')
            Hlt2ProbeMuonProtoMaker.delTrackSel.TrackTypes = ['Long']
            bm_members += [Hlt2ProbeMuonProtoMaker]

        elif (self.trackType() == "FullDownstream"):
            # add muon ID
            bm_members = [self.__hlt2FullDownstreamTracking()]
            idalgname = self.__pidAlgosAndToolsPrefix() + "IDalg"
            cm = ConfiguredMuonIDs.ConfiguredMuonIDs(
                data=self.getProp("DataType"))
            idalg = cm.configureMuonIDAlgLite(idalgname)
            idalg.TracksLocations = [
                self.__hlt2FullDownstreamTracking().outputSelection()
            ]
            idalg.MuonIDLocation = Hlt2TrackRoot + HltDefaultFitSuffix + "/" + HltSharedPIDPrefix + "/" + HltMuonIDSuffix
            idalg.MuonTrackLocation = Hlt2TrackRoot + HltDefaultFitSuffix + "/" + HltSharedPIDPrefix + "/" + HltMuonTracksName

            # Configure moun ID tools explicitly, would be better if the ConfiguredMuonIDs class
            # provided a comprehensive method. All tools are public, but should configure
            # everywhere, where they are used to be safe.
            import Configurables
            for tool, fun in (("CommonMuonTool",
                               "IsMuonTool"), ("DLLMuonTool", "DLLMuonTool"),
                              ("MakeMuonTool", "MakeMuonTool")):
                tool = getattr(Configurables, tool)()
                getattr(cm, "configure" + fun)(tool)

            # make protos
            Hlt2ProbeMuonProtoMaker.Inputs = [
                self.__hlt2FullDownstreamTracking().outputSelection()
            ]
            Hlt2ProbeMuonProtoMaker.Output = ProbeMuonProtosOutputLocation
            Hlt2ProbeMuonProtoMaker.addTool(DelegatingTrackSelector,
                                            name="TrackSelector")
            tracktypes = ["Downstream"]
            Hlt2ProbeMuonProtoMaker.TrackSelector.TrackTypes = tracktypes
            addmuonpid = ChargedProtoParticleAddMuonInfo("addmuonpid")
            addmuonpid.InputMuonPIDLocation = idalg.MuonIDLocation
            addmuonpid.ProtoParticleLocation = Hlt2ProbeMuonProtoMaker.Output
            combinedll = ChargedProtoCombineDLLsAlg("combineDLL")
            combinedll.ProtoParticleLocation = Hlt2ProbeMuonProtoMaker.Output
            bm_members += [
                idalg, Hlt2ProbeMuonProtoMaker, addmuonpid, combinedll
            ]

        from HltLine.HltLine import bindMembers
        # Build the bindMembers

        bm_name = self.__pidAlgosAndToolsPrefix() + "ProbeMuonProtosSeq"
        bm_output = ProbeMuonProtosOutputLocation

        return bindMembers(bm_name, bm_members).setOutputSelection(bm_output)
    def setupPF(self):

        ## set the algorithm
        alg = ParticleFlow(self.name)

        if "Velo" in self.paramDef['TrackSelector'].keys(
        ) and not self.paramDef['UseVelo']:
            self.paramDef['UseVelo'] = True

        # set all params
        for prop, value in self.paramDef.items():
            if prop != 'TrackSelector' and prop != 'TrackVelo' and prop != "scalingANDsmearing":
                setattr(alg, prop, value)
            else:
                self.__dict__[prop] = value

        if (self.name != "PF"):
            alg.PFOutputLocation = "Phys/" + self.name + "/Particles"

        ## List of algorithms to put in the sequencer
        if self.scalingANDsmearing:
            from Configurables import TrackScaleState as SCALER
            scaler = SCALER('PFStateScale')
            self.PFSeq.Members += [scaler]
            if self.MCCor:
                from Configurables import TrackSmearState as SMEAR
                smear = SMEAR('PFStateSmear')
                self.PFSeq.Members += [smear]

        ## Definition of cuts to apply to input tracks for inputselection
        TrackCuts = {}
        if self.paramDef['UseVelo'] and not "Velo" in self.TrackSelector.keys(
        ):
            self.TrackSelector["Velo"] = self.TrackVelo

        for trtype in self.TrackSelector.keys():
            if trtype == "Long":
                TrackCuts[trtype] = {
                    "Chi2Cut": [0, self.TrackSelector[trtype]['Chi2Max']],
                    "MinPtCut": self.TrackSelector[trtype]['PtMin'],
                    "MaxGhostProbCut":
                    self.TrackSelector[trtype]['MaxGhostProb']
                }
            if trtype == "Downstream":
                TrackCuts[trtype] = {
                    "Chi2Cut": [0, self.TrackSelector[trtype]['Chi2Max']],
                    "MinPtCut": self.TrackSelector[trtype]['PtMin'],
                    "MaxGhostProbCut":
                    self.TrackSelector[trtype]['MaxGhostProb']
                }
            if trtype == "Upstream":
                TrackCuts[trtype] = {
                    "Chi2Cut": [0, self.TrackSelector[trtype]['Chi2Max']],
                    "MinPtCut": self.TrackSelector[trtype]['PtMin']
                }
            if trtype == "Velo":
                TrackCuts[trtype] = {
                    "Chi2Cut": [0, self.TrackSelector[trtype]['Chi2Max']]
                }

                protos = ChargedProtoParticleMaker("VeloProtoPMaker")
                protos.Inputs = ["Rec/Track/Best"]
                protos.Output = "Rec/ProtoP/VeloProtoPMaker"
                protos.addTool(DelegatingTrackSelector, name="TrackSelector")
                protos.TrackSelector.TrackTypes = ["Velo"]
                self.setupTypeTrackSelector("Velo", protos.TrackSelector,
                                            TrackCuts["Velo"])
                self.PFSeq.Members += [protos]

        pLocations = []
        pCompLocations = []
        alg.MC_recovery = self.MCCor

        #re set default to false
        alg.UseHCAL = False
        alg.NeutralRecovery = False

        for t in self.InputParticles:
            if t == 'Photons':
                pLocations.append('Phys/StdLooseAllPhotons/Particles')

            elif t == 'NeutralHadrons':
                ## Set the HCAL uses
                alg.UseHCAL = True
                self.setupHCAL()

            elif t == 'Charged':
                ## Track selector
                alg.TrackSelectorType = "DelegatingTrackSelector"
                alg.addTool(DelegatingTrackSelector, name="TrackSelector")
                tracktypes = TrackCuts.keys()
                alg.TrackSelector.TrackTypes = self.TrackSelector.keys()
                for type in tracktypes:
                    self.setupTypeTrackSelector(type, alg.TrackSelector,
                                                TrackCuts)

            elif t == 'Pi0s':
                pLocations.append('Phys/StdLooseResolvedPi0/Particles')
                pLocations.append('Phys/StdLooseMergedPi0/Particles')

            elif t == 'V0s':
                pCompLocations.append("Phys/StdKs2PiPiLL/Particles")
                pCompLocations.append("Phys/StdKs2PiPiDD/Particles")
                pCompLocations.append("Phys/StdLambda2PPiLL/Particles")
                pCompLocations.append("Phys/StdLambda2PPiDD/Particles")

            elif t == 'PFNeutrals':
                alg.NeutralRecovery = True

            else:
                print t, "are not supported!"
                exit(1)

            if len(self.paramDef['CompositeParticleLocations']) > 0.5:
                for t in self.paramDef['CompositeParticleLocations']:
                    pCompLocations.append(t)

        alg.ParticleLocations = pLocations
        alg.CompositeParticleLocations = pCompLocations
        self.PFSeq.Members += [alg]
        self.algorithms.append(self.PFSeq)
    def setupPF(self):
        ## List of algorithms to put in the sequencer

        ## set the algorithm
        alg = ParticleFlow4Jets(self.name)

        ## Definition of cuts to apply to input tracks for inputselection

        TrackCuts = {}
        print '###################################### ', self.TrackType
        if self.UseVelo and not "Velo" in self.TrackType:
            self.TrackType.append("Velo")
        for trtype in self.TrackType:
            if trtype == "Long":
                TrackCuts["Long"] = {
                    "Chi2Cut": [0, self.Chi2MaxLong],
                    "MinPtCut": self.PtMinLong,
                    "CloneDistCut": [5000, 9e+99],
                    "AcceptClones": self.AcceptClone
                }
            if trtype == "Downstream":
                TrackCuts["Downstream"] = {
                    "Chi2Cut": [0, self.Chi2MaxDown],
                    "MinPtCut": self.PtMinDown
                }
            if trtype == "Upstream":
                TrackCuts["Upstream"] = {
                    "Chi2Cut": [0, self.Chi2MaxUp],
                    "MinPtCut": self.PtMinUp
                }
            if trtype == "Velo":
                TrackCuts["Velo"] = {"Chi2Cut": [0, self.Chi2MaxVelo]}
                protos = ChargedProtoParticleMaker("VeloProtoPMaker")
                protos.Inputs = ["Rec/Track/Best"]
                protos.Output = "Rec/ProtoP/VeloProtoPMaker"
                protos.addTool(DelegatingTrackSelector, name="TrackSelector")
                protos.TrackSelector.TrackTypes = ["Velo"]
                self.setupTypeTrackSelector("Velo", protos.TrackSelector,
                                            TrackCuts["Velo"])
                self.algorithms.append(protos)

        ## Neutral related cuts

        pLocations = []

        alg.UseTTrackBanning = True
        alg.CandidateToBanLocation = self.CandidateToBanLocation
        alg.VerticesLocation = self.VerticesLocation
        alg.PFOutputLocation = self.PFOutputLocation
        alg.PFBannedOutputLocation = self.PFBannedOutputLocation
        alg.PFHiddenNeutralOutputLocation = self.PFHiddenNeutralOutputLocation
        alg.PFProtoParticlesOutputLocation = self.PFProtoParticlesOutputLocation
        alg.PFCaloHypoOutputLocation = self.PFCaloHypoOutputLocation

        for t in self.InputParticles:
            if t == 'Photons':
                pLocations.append('Phys/StdLooseAllPhotons/Particles')
                alg.MinPhotonID4Photon = self.MinPhotonID4Photon
                alg.MinPhotonID4PhotonTtrack = self.MinPhotonID4PhotonTtrack

            if t == 'NeutralHadrons':
                ## Set the HCAL uses
                alg.UseHCAL = self.UseHCAL
                self.setupHCAL()
                alg.MinHCALE = self.MinHCALE
                ## Match track and clusters
                alg.MaxMatchHCALLowEValue = self.MaxMatchHCALLowEValue
                alg.MaxMatchHCALHighEValue = self.MaxMatchHCALHighEValue
                alg.MaxMatchHCALTrSmallE = self.MaxMatchHCALTrSmallE
                alg.MaxMatchHCALTrMediumE = self.MaxMatchHCALTrMediumE
                alg.MaxMatchHCALTrLargeE = self.MaxMatchHCALTrLargeE
                alg.MaxMatchHCALTr_T = self.MaxMatchHCALTr_T

            if t == 'Charged':
                ## Track selector
                alg.TrackSelectorType = "DelegatingTrackSelector"
                alg.addTool(DelegatingTrackSelector, name="TrackSelector")
                tracktypes = TrackCuts.keys()
                alg.TrackSelector.TrackTypes = self.TrackType
                for type in tracktypes:
                    self.setupTypeTrackSelector(type, alg.TrackSelector,
                                                TrackCuts)

                ## Track related cuts
                alg.MinInfMomentumCut = self.MinInfMomentumCut
                alg.MaxChi2NoTT = self.MaxChi2NoTT
                alg.UseTTHits = self.UseTTHits
                alg.MaxMatchECALTr = self.MaxMatchECALTr
                alg.MaxMatchECALTr_T = self.MaxMatchECALTr_T
                alg.UsePIDInfo = self.UsePIDInfo

            if t == 'Pi0s':
                pLocations.append('Phys/StdLooseResolvedPi0/Particles')
                pLocations.append('Phys/StdLooseMergedPi0/Particles')
                alg.MinPhotonIDMax4ResolvedPi0 = self.MinPhotonIDMax4ResolvedPi0
                alg.MinPhotonIDMin4ResolvedPi0 = self.MinPhotonIDMin4ResolvedPi0

            if t == 'V0s':
                pLocations.append('Phys/StdLooseKsDD/Particles')
                pLocations.append('Phys/StdLooseKsLL/Particles')
                pLocations.append('Phys/StdLooseLambdaDD/Particles')
                pLocations.append('Phys/StdLooseLambdaLL/Particles')

            if t == 'PFNeutrals':
                alg.NeutralRecovery = True
                alg.UsePIDInfo = True
                alg.CalibECAL_EovP = self.CalibECAL_EovP
                alg.CalibHCAL_EovP = self.CalibHCAL_EovP
                alg.NSigmaForCaloRecovery = self.NSigmaForCaloRecovery

        alg.ParticleLocations = pLocations
        #alg.OutputLevel = 0
        self.algorithms.append(alg)
示例#12
0
Hlt2FullDownParts.Output = "Hlt2/Hlt2DownstreamMuons/Particles"

##########################################################################
#
# Velo particles
#
##########################################################################

from HltTracking.HltTrackNames import HltSharedTrackLoc, HltDefaultFitSuffix, _baseProtoPLocation, TrackName, Hlt2TrackEffRoot
from HltLine.HltLine import bindMembers
from Configurables import CombinedParticleMaker, ChargedProtoParticleMaker, BestPIDParticleMaker, NoPIDsParticleMaker
from Configurables import DelegatingTrackSelector
from HltTracking.HltSharedTracking import RevivedVelo, FittedVelo

Hlt2VeloProtos = ChargedProtoParticleMaker('Hlt2VeloProtosForTrackEff')
Hlt2VeloProtos.Inputs = [FittedVelo.outputSelection()]
Hlt2VeloProtos.Output = _baseProtoPLocation(
    "Hlt2", Hlt2TrackEffRoot + "/" + TrackName["Velo"])
Hlt2VeloProtos.addTool(DelegatingTrackSelector, name='delTrackSelVelo')
Hlt2VeloProtos.delTrackSelVelo.TrackTypes = ['Velo']

Hlt2VeloPionParts = NoPIDsParticleMaker("Hlt2VeloPionParts")
Hlt2VeloPionParts.Particle = 'pion'
Hlt2VeloPionParts.Input = Hlt2VeloProtos.Output
Hlt2VeloPionParts.Output = Hlt2TrackEffRoot + "/Hlt2VeloPions/Particles"

Hlt2VeloKaonParts = NoPIDsParticleMaker("Hlt2VeloKaonParts")
Hlt2VeloKaonParts.Particle = 'kaon'
Hlt2VeloKaonParts.Input = Hlt2VeloProtos.Output
Hlt2VeloKaonParts.Output = Hlt2TrackEffRoot + "/Hlt2VeloKaons/Particles"