def __init__(self, instance, name):
        super( DvHypoSplit, self ).__init__( name )
        
        mlog = logging.getLogger('DvHypoConfig.py')
        
        AllowedInstances = ["EF"]
        
        if instance not in AllowedInstances :
            mlog.error("Instance "+instance+" is not supported!")
            return None
        
        if instance=="EF" :
            self.AcceptAll = False
            self.Instance  = "EF"
            self.UseBeamSpotFlag = False

        self.JetKey = "SplitJet"
        
        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("TimeHistogramForTrigDvHypo")
        time.TimerHistLimits = [0,0.4]
        
        self.AthenaMonTools = [ time ]

        if instance=="EF" :
            from TrigBjetHypo.TrigDvHypoMonitoring import TrigEFDvHypoValidationMonitoring, TrigEFDvHypoOnlineMonitoring
            validation = TrigEFDvHypoValidationMonitoring()
            online     = TrigEFDvHypoOnlineMonitoring()
            self.AthenaMonTools += [ validation, online ]
    def __init__(self, instance, algo, name):
        super( DvFex, self ).__init__( name )
        
        mlog = logging.getLogger('BjetHypoConfig.py')  ## SURE??
        
        AllowedInstances = ["EF"]
        AllowedAlgos     = ["EFID"]
        
        # Pre-configuring
        if instance not in AllowedInstances :
            mlog.error("Instance "+instance+" is not supported!")
            return None
        
        self.JetKey = "SplitJet"
        
        self.AlgoId = -1
    
        if instance == "EF" and algo == "EFID" :
            self.AlgoId = 1
        
        if self.AlgoId == -1:
            mlog.error("AlgoId is wrongly set!")
            return None
        
        self.UseEtaPhiTrackSel  = False
        
        if algo=="EFID" :
            self.TrkSel_Chi2    = 0.0
            self.TrkSel_BLayer  = 0 #1
            self.TrkSel_PixHits = 0
            self.TrkSel_SiHits  = 0 #7
            self.TrkSel_D0      = 1.0*mm #300.0*mm
            self.TrkSel_Z0      = 1500.0*mm
            self.TrkSel_Pt      = 1000.0*MeV #500.0*MeV

        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("TimeHistogramForTrigBjetHypo")
        time.TimerHistLimits = [0,2]
        
        self.AthenaMonTools = [ time ]

        #self.validation = False
        #self.onlinemon  = False
        if instance=="EF" :
            from TrigBjetHypo.TrigDvFexMonitoring import TrigEFDvFexValidationMonitoring, TrigEFDvFexOnlineMonitoring
            validation = TrigEFDvFexValidationMonitoring()
            online     = TrigEFDvFexOnlineMonitoring()    
            self.AthenaMonTools+=[validation,online]
Exemple #3
0
    def __init__(self, name = "EFMultiMuFex_Tau2"):
        super( EFMultiMuFex_Tau2 , self ).__init__( name )

        # AcceptAll flag: if true take events regardless of cuts
        self.AcceptAll = False

        # L2 Bmumu cuts
        self.OppositeSign = False
        self.LowerMassCut      = 0.
        self.UpperMassCut     = 2900.
        self.MuonAlgo = "TrigMuSuperEF"
        self.NMassMuon = 2
        self.CheckNinputTE = False
        
        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("Time")
        from TrigBphysHypo.TrigEFMultiMuFexMonitoring import TrigEFMultiMuFexValidationMonitoring
        validation = TrigEFMultiMuFexValidationMonitoring()
        from TrigBphysHypo.TrigEFMultiMuFexMonitoring import TrigEFMultiMuFexOnlineMonitoring
        online = TrigEFMultiMuFexOnlineMonitoring()
                                
        self.AthenaMonTools = [ validation, online, time ]
Exemple #4
0
 def __init__(self,
              name='EFROBListWriter',
              addCTPResult=False,
              addL2Result=False,
              addEFResult=False,
              etaWidth=0.1,
              phiWidth=0.1):
     super(EFROBListWriter, self).__init__(name)
     self.AddCTPResult = addCTPResult
     self.AddL2Result = addL2Result
     self.AddEFResult = addEFResult
     self.etaWidth = etaWidth
     self.phiWidth = phiWidth
     from TrigDetCalib.TrigDetCalibMonitoring import TrigROBListWriterValidationMonitoring
     from TrigDetCalib.TrigDetCalibMonitoring import TrigROBListWriterOnlineMonitoring
     from TrigDetCalib.TrigDetCalibMonitoring import TrigROBListWriterCosmicMonitoring
     validation = TrigROBListWriterValidationMonitoring()
     online = TrigROBListWriterOnlineMonitoring()
     cosmic = TrigROBListWriterCosmicMonitoring()
     from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
     time = TrigTimeHistToolConfig(name + '_Time')
     self.AthenaMonTools = [validation, online, time, cosmic]
Exemple #5
0
    def __init__(self, name, ptElectronMin, pidKey, defaultThreshold=4650.):
        super(TrigBphysElectronCounter_bBee, self).__init__(name)

        self.nEfElectron = 2
        self.ptElectronMin = []
        self.setEFElectronThresholds(self.ptElectronMin, defaultThreshold)
        self.electronCollectionKey = "egamma_Electrons"
        self.overlapdR = 0.005

        # set up PID - defined in TrigHypothesis/TrigEgammaHypo/python/TrigEgammaPidTools
        from TrigEgammaHypo.TrigEgammaPidTools import (ElectronToolName,
                                                       BLooseISEMBits,
                                                       ElectronIsEMBits)
        if pidKey == None or not pidKey in ElectronToolName.keys():
            log.info(
                " Setting up bphys electron chain with no electron PID requirement"
            )
            self.ApplyIsEM = False
        else:
            self.ApplyIsEM = True
            if "LH" in ElectronToolName[pidKey]:
                self.AthenaElectronLHIDSelectorToolName = 'AsgElectronLikelihoodTool/' + ElectronToolName[
                    pidKey]
                self.UseAthenaElectronLHIDSelectorTool = True
                self.IsEMrequiredBits = 0
            else:
                self.egammaElectronCutIDToolName = ElectronToolName[pidKey]
                self.UseAthenaElectronLHIDSelectorTool = False
                if pidKey in BLooseISEMBits.keys():
                    self.IsEMrequiredBits = BLooseISEMBits[pidKey]
                else:
                    self.IsEMrequiredBits = ElectronIsEMBits[pidKey]

        time = TrigTimeHistToolConfig("Time")
        validation = TrigBphysElectronCounterValidationMonitoring()
        online = TrigBphysElectronCounterOnlineMonitoring()

        self.AthenaMonTools = [validation, online, time]
Exemple #6
0
    def __init__(self, name="T2CaloTau_Tau_custom"):
        super(T2CaloTau_Tau_custom, self).__init__(name)
        self.EtaWidth = 0.4
        self.PhiWidth = 0.4
        self.EtaWidthForID = 0.3
        self.PhiWidthForID = 0.3

        tauAllCaloDRFex = TauAllCaloDRFexConfig()

        self.IAlgToolList = [tauAllCaloDRFex]
        self.TimerNtuple = "T2CaloTau.T2CaTautTot"
        self.TrigTauClusterKey = "T2CaloTrigTauCluster"

        #       monitoring part. To switch off do in topOption TriggerFlags.enableMonitoring = []
        from TrigT2CaloTau.TrigT2CaloTauMonitoring import T2CaloTauValidationMonitoring, T2CaloTauOnlineMonitoring, T2CaloTauCosmicMonitoring
        validation = T2CaloTauValidationMonitoring()
        online = T2CaloTauOnlineMonitoring()
        cosmic = T2CaloTauCosmicMonitoring()

        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("Time")

        self.AthenaMonTools = [time, validation, online, cosmic]
Exemple #7
0
    def __init__(self, name):
        super(L2ElectronFexBase, self).__init__(name)
        from TrigEgammaHypo.TrigL2ElectronHypoMonitoring import TrigL2ElectronFexValidationMonitoring, TrigL2ElectronFexOnlineMonitoring
        validation = TrigL2ElectronFexValidationMonitoring()
        online = TrigL2ElectronFexOnlineMonitoring()
        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("Time")

        self.AthenaMonTools = [time, validation, online]

        # Tracking cuts
        self.TrackPt = 1.0 * GeV
        self.TrackPtHighEt = 2.0 * GeV
        self.ClusEt = 20.0 * GeV
        self.CaloTrackdEtaNoExtrap = 0.3
        self.CaloTrackdEtaNoExtrapHighEt = 0.2
        # Calo-Tracking matching cuts
        self.CaloTrackdETA = 0.3
        self.CaloTrackdPHI = 0.3
        self.CaloTrackdEoverPLow = 0.0
        self.CaloTrackdEoverPHigh = 999.0

        self.ParticleCaloExtensionTool = ParticleCaloExtensionTool
Exemple #8
0
    def __init__(self,
                 name='TrigCheckForMuons_pebM',
                 etaWidth=0.3,
                 phiWidth=0.3):
        super(TrigCheckForMuons_pebM, self).__init__(name)

        self.AddCTPResult = True
        self.AddHLTResult = True
        self.etaWidth = etaWidth
        self.phiWidth = phiWidth
        self.MaxRoIsPerEvent = -1
        self.muonLabels = ["MuonEFInfo", ""]
        self.PEBInfoLabel = "pebM"

        from TrigDetCalib.TrigDetCalibMonitoring import TrigROBListWriterValidationMonitoring
        from TrigDetCalib.TrigDetCalibMonitoring import TrigROBListWriterOnlineMonitoring
        from TrigDetCalib.TrigDetCalibMonitoring import TrigROBListWriterCosmicMonitoring
        validation = TrigROBListWriterValidationMonitoring(
            name + "ValidationMonitoring")
        online = TrigROBListWriterOnlineMonitoring(name + "OnlineMonitoring")
        cosmic = TrigROBListWriterCosmicMonitoring(name + "CosmicMonitoring")
        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig(name + '_Time')
        self.AthenaMonTools = [validation, online, time, cosmic]
Exemple #9
0
    def __init__(self, name="L2MultiMuFex_Upsi"):
        super(TrigL2MultiMuFex, self).__init__(name)

        # AcceptAll flag: if true take events regardless of cuts
        self.AcceptAll = False

        # L2 Bmumu cuts
        # self.TrackPTthr          = 1.4
        # self.TrackAlgoId         = 2
        # self.pTsumTrackPair      = 0.
        self.LowerMassCut = 7000.
        self.UpperMassCut = 13000.
        self.doVertexFit = True
        self.TrigL2VertexFitter = L2VFitTool
        self.TrigVertexingTool = VertexTool

        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("Time")
        from TrigBphysHypo.TrigL2MultiMuFexMonitoring import TrigL2MultiMuFexValidationMonitoring
        validation = TrigL2MultiMuFexValidationMonitoring()
        from TrigBphysHypo.TrigL2MultiMuFexMonitoring import TrigL2MultiMuFexOnlineMonitoring
        online = TrigL2MultiMuFexOnlineMonitoring()

        self.AthenaMonTools = [validation, online, time]
Exemple #10
0
    def __init__(self, name="TrigTauRecMerged_TauFTK"):
        super(TrigTauRecMerged_TauFTK, self).__init__(name)
        self._mytools = []

        # monitoring part. To switch off do in topOption TriggerFlags.enableMonitoring = []
        from TrigTauRec.TrigTauRecMonitoring import TrigTauRecValidationMonitoring, TrigTauRecOnlineMonitoring
        validation = TrigTauRecValidationMonitoring()
        online = TrigTauRecOnlineMonitoring()

        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("Time")
        self.AthenaMonTools = [time, validation, online]

        import TrigTauRec.TrigTauAlgorithmsHolder as taualgs
        tools = []

        taualgs.setPrefix("TrigTauFTK_")

        # Collection name
        self.OutputCollection = "TrigTauRecPreselection"

        # Only include tools needed for pre-selection

        # Set seedcalo energy scale (Full RoI)
        tools.append(taualgs.getJetSeedBuilder())
        #use FTK vertices
        tools.append(taualgs.getTauVertexFinder(doUseTJVA=True))
        # Set LC energy scale (0.2 cone) and intermediate axis (corrected for vertex: useless at trigger)
        tools.append(taualgs.getTauAxis())
        # Count tracks with deltaZ0 cut of 2mm -> Need to remove quality criteria for fast-tracks here
        # Insert bypass later?
        tools.append(
            taualgs.getTauTrackFinder(applyZ0cut=True,
                                      maxDeltaZ0=2,
                                      noSelector=False))
        # Calibrate to TES
        tools.append(
            taualgs.getEnergyCalibrationLC(correctEnergy=True,
                                           correctAxis=False,
                                           postfix='_onlyEnergy'))
        # Calculate cell-based quantities: strip variables, EM and Had energies/radii, centFrac, isolFrac and ring energies
        tools.append(taualgs.getCellVariables(cellConeSize=0.2))
        # tools.append(taualgs.getElectronVetoVars())
        # Variables combining tracking and calorimeter information
        tools.append(taualgs.getTauCommonCalcVars())
        # Cluster-based sub-structure, with dRMax also
        tools.append(taualgs.getTauSubstructure())
        # tools.append(taualgs.getEnergyCalibrationLC(correctEnergy=False, correctAxis=True, postfix='_onlyAxis'))
        tools.append(taualgs.getPileUpCorrection())

        for tool in tools:
            tool.inTrigger = True
            tool.calibFolder = 'TrigTauRec/00-11-02/'
            pass

        self.Tools = tools

        #necessary to write out deltaZ0 between tracks and lead trk
        #self.theTauPVTool = taualgs.getTauPVTrackTool()
        #self.useTauPVTool = True;

        ## add beam type flag
        from AthenaCommon.BeamFlags import jobproperties
        self.BeamType = jobproperties.Beam.beamType()
Exemple #11
0
    def __init__(self, instance, version, cut, name):
        super(BjetHypo, self).__init__(name)

        mlog = logging.getLogger('BjetHypoConfig.py')

        AllowedCuts = [
            "loose", "medium", "tight", "offloose", "offmedium", "offtight",
            "mv2c2040", "mv2c2050", "mv2c2060", "mv2c2070", "mv2c2077",
            "mv2c2085", "mv2c1040", "mv2c1050", "mv2c1060", "mv2c1070",
            "mv2c1077", "mv2c1085", "hmv2c1040", "hmv2c1050", "hmv2c1060",
            "hmv2c1070", "hmv2c1077", "hmv2c1085"
        ]

        AllowedVersions = [
            "2012", "2015", "2017", "2018", "MuJetChain_2012",
            "MuJetChain_2015"
        ]
        AllowedInstances = ["EF", "MuJetChain"]

        if instance not in AllowedInstances:
            mlog.error("Instance " + instance + " is not supported!")
            return None

        if version not in AllowedVersions:
            mlog.error("Version " + version + " is not supported!")
            return None

        if cut not in AllowedCuts:
            mlog.error("Cut " + cut + " is not supported!")
            return None

        if instance == "EF":
            self.AcceptAll = False
            self.Instance = "EF"
            self.UseBeamSpotFlag = False

        self.JetKey = ""

        if instance == "EF":
            from TrigBjetHypo.TrigBjetHypoMonitoring import TrigEFBjetHypoValidationMonitoring, TrigEFBjetHypoOnlineMonitoring
            validation = TrigEFBjetHypoValidationMonitoring()
            online = TrigEFBjetHypoOnlineMonitoring()

        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("TimeHistogramForTrigBjetHypo")
        time.TimerHistLimits = [0, 0.4]

        self.AthenaMonTools = [time, validation, online]

        if instance == "EF":
            if version == "2012":
                self.MethodTag = "COMB"
                if cut == "loose":
                    self.CutXCOMB = 0.25
                elif cut == "medium":
                    self.CutXCOMB = 1.25
                elif cut == "tight":
                    self.CutXCOMB = 2.65

            if version == "2015":
                self.MethodTag = "MV2c20"
                # These are the offline working points
                if cut == "mv2c2040":
                    # Actually XX% efficient
                    self.CutMV2c20 = 0.75
                elif cut == "mv2c2050":
                    # Actually XX% efficient
                    self.CutMV2c20 = 0.5
                elif cut == "mv2c2060":
                    # Actually 62% efficient
                    self.CutMV2c20 = -0.0224729
                elif cut == "mv2c2070":
                    # Actually 72% efficient
                    self.CutMV2c20 = -0.509032
                elif cut == "mv2c2077":
                    # Actually 79% efficient
                    self.CutMV2c20 = -0.764668
                elif cut == "mv2c2085":
                    # Actually 87% efficient
                    self.CutMV2c20 = -0.938441

            if version == "2017":
                self.MethodTag = "MV2c10"
                # These are the offline working points
                if cut == "mv2c1040":
                    # Actually ~45% efficient
                    self.CutMV2c10 = 0.978
                elif cut == "mv2c1050":
                    # Actually ~55% efficient
                    self.CutMV2c10 = 0.948
                elif cut == "mv2c1060":
                    # Actually ~65% efficient
                    self.CutMV2c10 = 0.846
                elif cut == "mv2c1070":
                    # Actually ~75% efficient
                    self.CutMV2c10 = 0.580
                elif cut == "mv2c1077":
                    # Actually ~80% efficient
                    self.CutMV2c10 = 0.162
                elif cut == "mv2c1085":
                    # Actually ~90% efficient
                    self.CutMV2c10 = -0.494

            if version == "2018":
                #                self.MethodTag = "MV2c10_hybrid" # Temporary use mv2c00 for hybrid tuning
                self.MethodTag = "MV2c00"
                # These are the offline working points
                if cut == "hmv2c1040":
                    # Actually ~45% efficient
                    self.CutMV2c10_hybrid = 0.973
                elif cut == "hmv2c1050":
                    # Actually ~55% efficient
                    self.CutMV2c10_hybrid = 0.939
                elif cut == "hmv2c1060":
                    # Actually ~65% efficient
                    self.CutMV2c10_hybrid = 0.835
                elif cut == "hmv2c1070":
                    # Actually ~75% efficient
                    self.CutMV2c10_hybrid = 0.588
                elif cut == "hmv2c1077":
                    # Actually ~80% efficient
                    self.CutMV2c10_hybrid = 0.192
                elif cut == "hmv2c1085":
                    # Actually ~90% efficient
                    self.CutMV2c10_hybrid = -0.402
Exemple #12
0
    def __init__(self, instance, version, btagReqs, name):
        super(BjetHypoAllTE, self).__init__(name)

        mlog = logging.getLogger('BjetHypoAllTEConfig.py')
        #mlog.setLevel(0)
        AllowedVersions = ["2017"]
        AllowedInstances = ["EF"]

        if instance not in AllowedInstances:
            mlog.error("Instance " + instance + " is not supported!")
            return None

        if version not in AllowedVersions:
            mlog.error("Version " + version + " is not supported!")
            return None

        mlog.debug("btagReqs were")
        mlog.debug(btagReqs)

        #
        #  Main idea here is that the btagReqs contains a list of the different btagging requiremnts
        #    eg: 2b55_2j55  would contain a list of two requirements (55,b,2) and (55,j,2)
        #   The following python code:
        #     - updates the requirements to properly handle overlap
        #     - formats these requirements as expected by c++
        #     - checks if the beamspot is needed
        #   The c++ code then recieves a list of requirements to be "AND"ed
        #     and a list of requrirements to be "OR"ed
        #     to handle chains like 2b55_j100 the "OR" requirments need sub-requirements that are "AND"ed

        #
        # Format cut values
        #
        for req in btagReqs:

            # Et in MeV
            req[0] = float(req[0]) * 1000

            # req[1] has to be one of possiblities in AllowedCuts below
            req[1] = req[1].replace("bmv", "mv").replace("boff", "")

            # Mulitplicity Requirement
            req[2] = int(req[2])

        mlog.debug("btagReqs are")
        mlog.debug(btagReqs)

        #
        # These have to be ordered from tighest to loosest
        #
        if version == "2017":
            self.Tagger = "MV2c10_discriminant"
            # All possible cuts
            AllowedCuts = [
                "mv2c1040", "mv2c1050", "mv2c1060", "mv2c1070", "mv2c1077",
                "mv2c1085", "perf"
            ]
            # Subset of cuts requireing a BS to be valid
            CutsRequiringBS = [
                "mv2c1040", "mv2c1050", "mv2c1060", "mv2c1070", "mv2c1077",
                "mv2c1085"
            ]

        #
        # Check that the b-tagging operating points are supported
        #
        for req in btagReqs:
            if req[1] not in AllowedCuts:
                mlog.error("Cut " + req[1] + " is not supported!")
                return None

        #
        # Set the b-tag key
        #
        self.BTaggingKey = "HLTBjetFex"

        #
        # Use the BS for EF
        #
        if instance == "EF":
            self.UseBeamSpotFlag = False

        #
        # Override beamspot valid if not btagging
        #
        self.OverrideBeamSpotValid = True
        for req in btagReqs:
            if req[1] in CutsRequiringBS:
                self.OverrideBeamSpotValid = False

        #
        # Get a list of differnt operation points in this chain
        #   (CutsInThisChain is a unique list of indices for of AllowedCuts)
        CutsInThisChain = []
        for req in btagReqs:
            if req[1] not in CutsInThisChain:
                CutsInThisChain.append(AllowedCuts.index(req[1]))
        CutsInThisChain.sort()

        #
        #  Make a list of jet multiplicities requirements
        #    fullTrigReqAND is the AND of them
        #      eg: 2b35_2j25  is the AND of 2b35 and 4j35)
        fullTrigReqAND = {}
        for jetReq in btagReqs:

            thisPt = jetReq[0]
            thisBTag = AllowedCuts.index(jetReq[1])
            thisMult = jetReq[2]

            # Upper cut on btagging
            #   (Used below for cases when the btagging is on lower pt jets, set it to 99 now)
            #      eg: j100_2b55
            thisMaxBTag = 99

            #
            # Add/Increment this combination of pt and btag.
            #
            if (thisPt, thisBTag, thisMaxBTag) not in fullTrigReqAND:
                fullTrigReqAND[(thisPt, thisBTag, thisMaxBTag)] = thisMult
            else:
                fullTrigReqAND[(thisPt, thisBTag, thisMaxBTag)] += thisMult

            #
            # For each btagging point requested add to the multiplicity of the looser btag requirments
            #  This is effectively dealing with the overlap
            #   eg: for 2b_2j, the multiplicity of the 2b reqirement is added the "j" multiplcity
            #
            for point in CutsInThisChain:
                if point > thisBTag:
                    if (thisPt, point, thisMaxBTag) not in fullTrigReqAND:
                        fullTrigReqAND[(thisPt, point, thisMaxBTag)] = thisMult
                    else:
                        fullTrigReqAND[(thisPt, point,
                                        thisMaxBTag)] += thisMult

        #
        # Update the pt thresholds
        #  (for tagging requirements with the same operating point but differnet pTs,
        #   add the larger pt multiplcity to the smaller Pt to deal with overlap)
        #  eg: b150_b50  gives two requirements 150b  and 2b50
        for jetDef in fullTrigReqAND:
            for otherJetDefs in fullTrigReqAND:
                if jetDef == otherJetDefs:
                    continue
                if jetDef[0] > otherJetDefs[0] and jetDef[1] == otherJetDefs[1]:
                    fullTrigReqAND[otherJetDefs] += fullTrigReqAND[jetDef]

        mlog.debug("full btagReqsAND are")
        mlog.debug(fullTrigReqAND)

        #
        #  Format lists in a way that can be passed to the c++
        #
        EtThresholds = []
        BTagMin = []
        BTagMax = []
        Multiplicities = []
        for reqAND in fullTrigReqAND:
            EtThresholds.append(float(reqAND[0]))
            BTagMin.append(float(self.getCutValue(AllowedCuts[reqAND[1]])))
            BTagMax.append(float(reqAND[2]))
            Multiplicities.append(int(fullTrigReqAND[reqAND]))

        mlog.debug("EtThresholds:")
        mlog.debug(EtThresholds)
        self.EtThresholds = EtThresholds

        mlog.debug("BTagMin:")
        mlog.debug(BTagMin)
        self.BTagMin = BTagMin

        mlog.debug("BTagMax:")
        mlog.debug(BTagMax)
        self.BTagMax = BTagMax

        mlog.debug("Multiplicities:")
        mlog.debug(Multiplicities)
        self.Multiplicities = Multiplicities

        #
        # Handle the cases where have a higher pt looser leg
        #  Here we need to make requirements that get OR
        #  eg: j100_2b55 passes only if:
        #        - (j100 & 3b55) || (j100 & 2b55 & !b100)
        #
        #  NOTE: At the moment the following logic only hold for one highpt/looser requiremnt
        #        It will need to be extending to handle more than 2 operating points if needed.
        #         (eg: j100_2btight55 work fine, but j100_bloose55_btight35 would not)
        #
        fullTrigReqOR = []

        # Loop on unique pairs
        for jetDef in fullTrigReqAND:
            for otherJetDefs in fullTrigReqAND:
                if jetDef == otherJetDefs:
                    continue

                # check if pt is harder
                jetDef_ptBigger = jetDef[0] > otherJetDefs[0]
                mlog.debug("jetDef_ptBigger: " + str(jetDef_ptBigger) + " ( " +
                           str(jetDef[0]) + " > " + str(otherJetDefs[0]) +
                           " )")

                # check if btagging is looser (higher AllowedCuts index means looser btagging)
                jetDef_btagLooser = jetDef[1] > otherJetDefs[1]
                mlog.debug("jetDef_btagLooser: " + str(jetDef_btagLooser) +
                           " ( " + str(jetDef[1]) + " > " +
                           str(otherJetDefs[1]) + " )")

                # if both harder and looser, add two cases to be ORed as example above
                if jetDef_ptBigger and jetDef_btagLooser:

                    # 1st) both requirements pass the tighter btagging
                    #  eg: j100 & 3b55 (in our example above)
                    fullTrigReqOR.append({
                        otherJetDefs:
                        (fullTrigReqAND[otherJetDefs] + fullTrigReqAND[jetDef])
                    })

                    # 2nd) this requriemnts has two sub requirements
                    #      - the tighter btagging requirement passes with its multiplicity
                    #            eg: 2b55
                    #      - the looser btagging requirement passes with its multiplicity, and an upper cut on btagging
                    #            eg: j100 & !b100
                    #  (upper cut is given by the 3rd index in the requirement
                    fullTrigReqOR.append({
                        otherJetDefs:
                        fullTrigReqAND[otherJetDefs],
                        (jetDef[0], jetDef[1], otherJetDefs[1]):
                        fullTrigReqAND[jetDef]
                    })

        #
        #  Format lists of ORs in a way that can be passed to the c++
        #
        mlog.debug("full btagReqsOR are")
        mlog.debug(fullTrigReqOR)

        EtThresholdsOR = []
        BTagMinOR = []
        BTagMaxOR = []
        MultiplicitiesOR = []

        for jetReqAndComo in fullTrigReqOR:
            thisEtThresholdsOR = []
            thisBTagMinOR = []
            thisBTagMaxOR = []
            thisMultiplicitiesOR = []

            for jetReq in jetReqAndComo:
                thisEtThresholdsOR.append(jetReq[0])
                thisBTagMinOR.append(self.getCutValue(AllowedCuts[jetReq[1]]))
                if jetReq[2] < len(AllowedCuts):
                    thisBTagMaxOR.append(
                        self.getCutValue(AllowedCuts[jetReq[2]]))
                else:
                    thisBTagMaxOR.append(jetReq[2])
                thisMultiplicitiesOR.append(jetReqAndComo[jetReq])

            EtThresholdsOR.append(thisEtThresholdsOR)
            BTagMinOR.append(thisBTagMinOR)
            BTagMaxOR.append(thisBTagMaxOR)
            MultiplicitiesOR.append(thisMultiplicitiesOR)

        mlog.debug("EtThresholdsOR:")
        mlog.debug(EtThresholdsOR)
        self.EtThresholdsOR = EtThresholdsOR

        mlog.debug("BTagMinOR:")
        mlog.debug(BTagMinOR)
        self.BTagMinOR = BTagMinOR

        mlog.debug("BTagMaxOR:")
        mlog.debug(BTagMaxOR)
        self.BTagMaxOR = BTagMaxOR

        mlog.debug("MultiplicitiesOR:")
        mlog.debug(MultiplicitiesOR)
        self.MultiplicitiesOR = MultiplicitiesOR

        from TrigBjetHypo.TrigBjetHypoMonitoring import TrigEFBjetHypoAllTEValidationMonitoring, TrigEFBjetHypoAllTEOnlineMonitoring
        validation = TrigEFBjetHypoAllTEValidationMonitoring()
        online = TrigEFBjetHypoAllTEOnlineMonitoring()

        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("TimeHistogramForTrigBjetHypoAllTE")
        time.TimerHistLimits = [0, 0.4]

        self.AthenaMonTools = [time, validation, online]
Exemple #13
0
    def __init__(self, name="TrigSiTrack_Bphysics"):
        TrigSiTrack.__init__(self, name)

        from __main__ import ToolSvc

        trtTool = TrigTRT_TrackExtensionTool(OfflineClusters=False)
        ToolSvc += trtTool
        fitTool = TrigInDetTrackFitter(OfflineClusters=False)
        ToolSvc += fitTool

        self.Tool_SpacePointProviderTool = ospTool
        self.Tool_TRTExtensionTool = trtTool
        self.Tool_ReFitterTool = fitTool

        self.Map_Layer1 = [0, 1, 7]
        self.Map_Layer2 = [1, 2, 7, 8]
        self.Map_Layer3 = [2, 8, 9]
        self.Map_Layer4 = [3, 10, 11]
        self.Map_Layer5 = [4, 12, 13]
        self.Map_Layer6 = [5, 14, 15]
        self.Map_Layer7 = [6, 16, 17, 18]

        self.RoI_HalfWidthPhi = 0.75
        self.RoI_HalfWidthEta = 0.75

        if TrigSiTrackFlags.LoosenCuts:

            self.Seeding_PreCutRZ = TrigSiTrackLoosenCuts.Seeding_PreCutRZ
            self.Seeding_PreCutRPhi = TrigSiTrackLoosenCuts.Seeding_PreCutRPhi
            self.Seeding_CutRZ = TrigSiTrackLoosenCuts.Seeding_CutRZ

        else:

            self.Seeding_PreCutRZ = 10.0
            self.Seeding_PreCutRPhi = 0.0004
            self.Seeding_CutRZ = 1.5

        self.Vertexing_Enable = True
        self.Vertexing_CutRZ = 200.0
        self.Vertexing_CutRPhi = 0.00025
        self.Vertexing_MaxVertices = 3
        self.Vertexing_WindowSize = 2.0
        self.Vertexing_WindowSegments = 4

        if TrigSiTrackFlags.LoosenCuts:

            self.Extension_PreCutRZ = TrigSiTrackLoosenCuts.Extension_PreCutRZ
            self.Extension_PreCutRPhi = TrigSiTrackLoosenCuts.Extension_PreCutRPhi
            self.Extension_PreCutRPhiDiff = TrigSiTrackLoosenCuts.Extension_PreCutRPhiDiff
            self.Extension_CutRZ = TrigSiTrackLoosenCuts.Extension_CutRZ
            self.Extension_CutRPhi = TrigSiTrackLoosenCuts.Extension_CutRPhi

        else:

            self.Extension_PreCutRZ = 10.0
            self.Extension_PreCutRPhi = 0.0003
            self.Extension_PreCutRPhiDiff = 0.0003
            self.Extension_CutRZ = 4.0
            self.Extension_CutRPhi = 0.007

        self.Extension_CutSpacePoints = 2
        self.Extension_MergeSeeds = True
        self.Extension_MergeSeedsCut = 20.0
        self.Extension_SolveTracks = True
        self.Extension_SolveTracksCut = 20.0
        self.Extension_SolveShared = True
        self.Extension_Refit = True
        self.Extension_TRTExtension = True
        self.Extension_UseMagneticField = False

        # monitoring histograms
        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("TimeHistogramForTrigSiTrack")
        time.TimerHistLimits = [0, 50]

        self.AthenaMonTools = [
            TrigSiTrack_ValidationMonitoring(),
            TrigSiTrack_OnlineMonitoring(), time
        ]
Exemple #14
0
    def __init__(self, name="TrigSiTrack_Cosmics"):
        TrigSiTrack.__init__(self, name)

        from __main__ import ToolSvc

        trtTool = TrigTRT_TrackExtensionTool(OfflineClusters=False)
        ToolSvc += trtTool
        fitTool = TrigInDetTrackFitter(OfflineClusters=False)
        ToolSvc += fitTool

        self.Tool_SpacePointProviderTool = ospTool
        self.Tool_TRTExtensionTool = trtTool
        self.Tool_ReFitterTool = fitTool

        self.Map_Layer1 = [
            0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
        ]
        self.Map_Layer2 = [
            0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
        ]
        self.Map_Layer3 = [
            0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
        ]
        self.Map_Layer4 = [
            0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
        ]
        self.Map_Layer5 = [
            0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
        ]
        self.Map_Layer6 = [
            0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
        ]
        self.Map_Layer7 = [
            0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
        ]
        self.Map_UsePixel = False

        self.RoI_HalfWidthPhi = 3.141
        self.RoI_HalfWidthEta = 5.0

        self.Seeding_PreCutRZ = 10.0 * 50
        self.Seeding_PreCutRPhi = 0.005  ### TUNED
        self.Seeding_CutRZ = 1.5 * 50

        self.Vertexing_Enable = False
        self.Vertexing_CutRZ = 1000.0  ### TUNED

        self.Extension_PreCutRZ = 10.0 * 50
        self.Extension_PreCutRPhi = 0.03  ### TUNED
        self.Extension_PreCutRPhiDiff = 0.03  ### TUNED
        self.Extension_CutRZ = 400.0  ### TUNED
        self.Extension_CutRPhi = 0.7  ### TUNED
        self.Extension_CutSpacePoints = 2
        self.Extension_MergeSeeds = True
        self.Extension_MergeSeedsCut = 20.0
        self.Extension_SolveTracks = True
        self.Extension_SolveTracksCut = 20.0
        self.Extension_Refit = True
        self.Extension_TRTExtension = False
        self.Extension_UseMagneticField = False

        self.Debug_Tuning12 = False
        self.Debug_Tuning123 = False
        self.Debug_Shift = False
        self.Debug_ForcedShift = False
        self.Debug_ShiftX = 0.0
        self.Debug_ShiftY = 0.0

        # monitoring histograms
        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("TimeHistogramForTrigSiTrack")
        time.TimerHistLimits = [0, 50]

        self.AthenaMonTools = [
            TrigSiTrack_Cosmic_Monitoring(),
            TrigSiTrack_ValidationMonitoring(),
            TrigSiTrack_OnlineMonitoring(), time
        ]
Exemple #15
0
    def __init__(self, name,threshold):
        super( EFTrackHypo_e, self ).__init__( name )

        # AcceptAll flag: if true take events regardless of cuts
        self.AcceptAll = False
        self.AthenaMonTools = [ EFTrackHypo_ValidationMonitoring(), TrigTimeHistToolConfig("Time") ]
Exemple #16
0
    def __init__(self, name="TrigTauRecMerged_Tau2012"):
        super(TrigTauRecMerged_Tau2012, self).__init__(name)
        self._mytools = []

        # monitoring part. To switch off do in topOption TriggerFlags.enableMonitoring = []
        from TrigTauRec.TrigTauRecMonitoring import TrigTauRecValidationMonitoring, TrigTauRecOnlineMonitoring
        validation = TrigTauRecValidationMonitoring()
        online = TrigTauRecOnlineMonitoring()

        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("Time")
        self.AthenaMonTools = [time, validation, online]

        # Don't try to retrieve for now, should be handled globally
        #if not hasattr(ToolSvc, "LumiBlockMuTool"):
        #        from LumiBlockComps.LumiBlockCompsConf import LumiBlockMuTool
        #        ToolSvc += CfgMgr.LumiBlockMuTool("LumiBlockMuTool")

        import TrigTauRec.TrigTauAlgorithmsHolder as taualgs
        tools = []

        taualgs.setPrefix("TrigTau2012_")

        #what should run in trigger???
        #same as tauRec (but without Pi0 cluster finder)
        tools.append(taualgs.getJetSeedBuilder())
        tools.append(taualgs.getTauVertexFinder(
            doUseTJVA=False))  #don't use TJVA by default
        tools.append(taualgs.getTauAxis())
        tools.append(taualgs.getTauTrackFinder(applyZ0cut=True, maxDeltaZ0=2))
        tools.append(
            taualgs.getEnergyCalibrationLC(correctEnergy=True,
                                           correctAxis=False,
                                           postfix='_onlyEnergy'))

        tools.append(
            taualgs.getCellVariables(cellConeSize=0.2))  #cellConeSize 0.2!!

        #tools.append(taualgs.getElectronVetoVars())  #needed?
        tools.append(taualgs.getTauVertexVariables())
        tools.append(taualgs.getTauCommonCalcVars())
        tools.append(taualgs.getTauSubstructure())
        tools.append(
            taualgs.getEnergyCalibrationLC(correctEnergy=False,
                                           correctAxis=True,
                                           postfix='_onlyAxis'))

        for tool in tools:
            tool.inTrigger = True
            tool.calibFolder = 'TrigTauRec/00-11-02/'
            pass

        self.Tools = tools

        #necessary to write out deltaZ0 between tracks and lead trk
        #self.theTauPVTool = taualgs.getTauPVTrackTool()
        #self.useTauPVTool = True;

        ## add beam type flag
        from AthenaCommon.BeamFlags import jobproperties
        self.BeamType = jobproperties.Beam.beamType()
Exemple #17
0
    def __init__(self, name="EFBMuMuXFex_noVtx"):
        super(TrigEFBMuMuXFex, self).__init__(name)

        # AcceptAll flag: if true take events regardless of cuts
        self.AcceptAll = False
        # muon part
        self.OppositeSign = True  # if check opposite sign of muons
        self.LowerMuMuMassCut = 100.
        self.UpperMuMuMassCut = 5500.
        ##self.LowerMuVtxMassCut = 100.
        ##self.UpperMuVtxMassCut = 5500.
        self.MuVtxChi2Cut = 40.
        # B{+/-} -> K{+/-} Mu Mu
        self.DoB_KMuMuDecay = True
        self.LowerKMuMuMassCut = 4500.
        self.UpperKMuMuMassCut = 5900.
        ##self.LowerB_KMuMuMassCutVtxOff = 4500.
        ##self.UpperB_KMuMuMassCutVtxOff = 5900.
        ##self.LowerBVtxMassCut = 4500.
        ##self.UpperBVtxMassCut = 5900.
        self.DoB_KMuMuVertexing = False
        self.BVtxChi2Cut = 60.  # 300 in L2
        # Bd -> K*(892) Mu Mu
        self.DoBd_KstarMuMuDecay = True
        self.LowerKstar_KaonMassCut = 600.
        self.UpperKstar_KaonMassCut = 1500.
        self.LowerBd_KstarMuMuMassCut = 4600.
        self.UpperBd_KstarMuMuMassCut = 6300.
        ##self.LowerBd_KstarMuMuMassCutVtxOff = 4600.
        ##self.UpperBd_KstarMuMuMassCutVtxOff = 6300.
        ##self.LowerKstarVtxMassCut = 600.
        ##self.UpperKstarVtxMassCut = 1200.
        ##self.LowerBdVtxMassCut = 4600.
        ##self.UpperBdVtxMassCut = 6000.
        self.DoKstar_KPiVertexing = False
        self.DoBd_KstarMuMuVertexing = False
        self.KstarVtxChi2Cut = 40.
        self.BdVtxChi2Cut = 60.
        # Bs -> Phi(1020) Mu Mu
        self.DoBs_Phi1020MuMuDecay = True
        self.LowerPhi1020_KaonMassCut = 990.
        self.UpperPhi1020_KaonMassCut = 1050.
        self.LowerBs_Phi1020MuMuMassCut = 5000.
        self.UpperBs_Phi1020MuMuMassCut = 5800.
        ##self.LowerBs_Phi1020MuMuMassCutVtxOff = 5000.
        ##self.UpperBs_Phi1020MuMuMassCutVtxOff = 5800.
        ##self.LowerPhi1020VtxMassCut = 990.
        ##self.UpperPhi1020VtxMassCut = 1060.
        ##self.LowerBsVtxMassCut = 4600.
        ##self.UpperBsVtxMassCut = 6000.
        self.DoPhi1020_KKVertexing = False
        self.DoBs_Phi1020MuMuVertexing = False
        self.Phi1020VtxChi2Cut = 40.
        self.BsVtxChi2Cut = 60.
        # Lb -> L Mu Mu
        self.DoLb_LambdaMuMuDecay = True
        self.LowerLambda_PrPiMassCut = 1040.  #1040.
        self.UpperLambda_PrPiMassCut = 1250.  #1220.
        self.LowerLambda_PtCut = 1200.
        self.LowerLb_LambdaMuMuMassCut = 3700.  #5090.
        self.UpperLb_LambdaMuMuMassCut = 6600.  #6270.
        self.LowerLb_PtCut = 8000.
        self.UpperLambdaVtxMassCut = 1200.
        self.LowerLbVtxMassCut = 3850.
        self.UpperLbVtxMassCut = 6150.
        self.DoLambda_PPiVertexing = False
        self.DoLb_LambdaMuMuVertexing = False
        self.DoLb_LambdaMuMuCascade = False
        self.LambdaVtxChi2Cut = 90.  #100.
        self.LbVtxChi2Cut = 180.  #100.
        ##self.LbVtxDistanceCut = 0.
        ##self.PiImpactCut = 0.
        ##self.PrImpactCut = 0.
        # vertexing off
        ##self.LowerLb_LambdaMuMuMassCutVtxOff = 1080.
        ##self.UpperLb_LambdaMuMuMassCutVtxOff = 1180.
        # Bc -> D_s* Mu Mu
        self.DoBc_DsMuMuDecay = True
        self.LowerPhiDs_MassCut = 980.
        self.UpperPhiDs_MassCut = 1080.
        self.LowerDs_MassCut = 1600.
        self.UpperDs_MassCut = 2400.
        self.LowerDs_PtCut = 2000.
        self.LowerBc_DsMuMuMassCut = 5450.
        self.UpperBc_DsMuMuMassCut = 7050.
        self.LowerBcDs_PtCut = 8000.
        ##self.LowerDs_LxyCut = 0.3
        self.LowerDs_LxyCut = -999.3
        self.DoDs_Vertexing = False
        self.DoBc_DsMuMuVertexing = False
        self.DoBc_DsMuMuCascade = False
        self.DsVtxChi2Cut = 90.
        self.BcVtxChi2Cut = 120.

        # Bc -> D+ Mu Mu
        self.DoBc_DplusMuMuDecay = True
        ##self.LowerPhiDs_MassCut = 980.
        ##self.UpperPhiDs_MassCut = 1080.
        self.LowerDplus_MassCut = 1500.
        self.UpperDplus_MassCut = 2300.
        self.LowerDplus_PtCut = 2000.
        ##self.LowerBc_DsMuMuMassCut = 1800.
        self.LowerBc_DplusMuMuMassCut = 5450.
        self.UpperBc_DplusMuMuMassCut = 7050.
        self.LowerBcDplus_PtCut = 8000.
        ##self.LowerDplus_LxyCut = 0.3
        self.LowerDplus_LxyCut = 0.01
        self.DoDplus_Vertexing = False
        self.DoBc_DplusMuMuVertexing = False
        self.DoBc_DplusMuMuCascade = False
        self.DplusVtxChi2Cut = 90.
        self.BcDplusVtxChi2Cut = 180.

        # Bc -> Dstar Mu Mu
        self.DoBc_DstarMuMuDecay = True
        self.LowerD0Dstar_MassCut = 1500.
        self.UpperD0Dstar_MassCut = 2300.
        self.UpperDstar_DMCut = 180.
        self.LowerDstar_PtCut = 2000.
        self.LowerDstarKpi_PtCut = 1800.
        self.LowerBc_DstarMuMuMassCut = 5450.
        self.UpperBc_DstarMuMuMassCut = 7050.
        self.LowerBcDstar_PtCut = 8000.
        self.DoD0Dstar_Vertexing = False
        self.DoBc_DstarMuMuVertexing = False
        self.DoBc_DstarMuMuCascade = False
        self.D0DstarVtxChi2Cut = 90.
        self.BcDstarVtxChi2Cut = 120.

        # Bc -> D0 (Dstar with lost pi_s) Mu Mu
        self.DoBc_D0MuMuDecay = True
        self.LowerD0_MassCut = 1500.
        self.UpperD0_MassCut = 2300.
        self.LowerD0_PtCut = 2000.
        self.LowerBc_D0MuMuMassCut = 5250.
        self.UpperBc_D0MuMuMassCut = 6911.
        self.LowerBcD0_PtCut = 8000.
        self.LowerD0_LxyCut = 0.01
        self.DoD0_Vertexing = False
        self.DoBc_D0MuMuVertexing = False
        self.DoBc_D0MuMuCascade = False
        self.D0VtxChi2Cut = 90.
        self.BcD0VtxChi2Cut = 120.
        self.MaxBcD0ToStore = 1000

        from TrigBphysHypo.TrigEFBMuMuXFexMonitoring import EFBMuMuXFexValidationMonitoring
        validation = EFBMuMuXFexValidationMonitoring()

        from TrigBphysHypo.TrigEFBMuMuXFexMonitoring import EFBMuMuXFexOnlineMonitoring
        online = EFBMuMuXFexOnlineMonitoring()

        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("Time")

        self.AthenaMonTools = [validation, online, time]
Exemple #18
0
    def __init__(self, name="TrigExtProcessor_Electron_EF", type="electron"):
        super(InDet__InDetTrigExtensProcessor, self).__init__(name)

        from AthenaCommon.AppMgr import ToolSvc
        from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigTrackFitter, InDetTrigPatternUpdator, InDetTrigExtrapolator, InDetTrigTrackSummaryTool

        if InDetTrigFlags.trtExtensionType() is 'DAF':

            # DAF Fitter setup
            #
            from TrkCompetingRIOsOnTrackTool.TrkCompetingRIOsOnTrackToolConf import Trk__CompetingRIOsOnTrackTool
            InDetTrigCompetingRotCreator =  \
                Trk__CompetingRIOsOnTrackTool( name       = 'InDetTrigCompetingRotCreator',
                                               ToolForCompPixelClusters    = None,      # default
                                               ToolForCompSCT_Clusters     = None,      # default
                                               ToolForCompTRT_DriftCircles = InDetTrigCompetingTRT_DC_Tool )
            ToolSvc += InDetTrigCompetingRotCreator
            if (InDetTrigFlags.doPrintConfigurables()):
                print InDetTrigCompetingRotCreator

            from TrkDeterministicAnnealingFilter.TrkDeterministicAnnealingFilterConf import Trk__DeterministicAnnealingFilter
            InDetTrigExtensionFitter = \
                Trk__DeterministicAnnealingFilter (name                 = 'InDetTrigDAF',
                                                   ToolForExtrapolation = InDetTrigExtrapolator,
                                                   ToolForCompetingROTsCreation   = InDetTrigCompetingRotCreator,
                                                   ToolForUpdating                = InDetTrigPatternUpdator,
                                                   AnnealingScheme                = [200., 81., 9., 4., 1., 1., 1.],
                                                   DropOutlierCutValue            = 1.E-7,
                                                   OutlierCutValue                = 0.01 )

            ToolSvc += InDetTrigExtensionFitter
            if (InDetTrigFlags.doPrintConfigurables()):
                print InDetTrigExtensionFitter

        else:
            if type == "cosmicsN":
                from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigTrackFitterCosmics
                InDetTrigExtensionFitter = InDetTrigTrackFitterCosmics
            else:
                from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigTrackFitter
                InDetTrigExtensionFitter = InDetTrigTrackFitter

            ToolSvc += InDetTrigExtensionFitter
            if (InDetTrigFlags.doPrintConfigurables()):
                print InDetTrigExtensionFitter

        # get configured track extension processor
        #-----------------------------------------------------------------------
        from InDetTrigRecExample.InDetTrigSliceSettings import InDetTrigSliceSettings
        from InDetTrigRecExample.InDetTrigConfigRecLoadTools import \
             InDetTrigTRTDriftCircleCut

        from InDetTrackScoringTools.InDetTrackScoringToolsConf import InDet__InDetAmbiScoringTool
        InDetTrigExtScoringTool = InDet__InDetAmbiScoringTool(
            name='InDetTrigExtScoringTool_' + type,
            Extrapolator=InDetTrigExtrapolator,
            SummaryTool=InDetTrigTrackSummaryTool,
            useAmbigFcn=True,  # this is NewTracking  
            #minPt        = InDetTrigCutValues.minPT(), #see below
            maxRPhiImp=InDetTrigCutValues.maxPrimaryImpact(),
            maxZImp=InDetTrigCutValues.maxZImpact(),
            maxEta=InDetTrigCutValues.maxEta(),
            minSiClusters=InDetTrigCutValues.minClusters(),
            maxSiHoles=InDetTrigCutValues.maxHoles(),
            maxDoubleHoles=InDetTrigCutValues.maxDoubleHoles(),
            usePixel=InDetTrigCutValues.usePixel(),
            useSCT=InDetTrigCutValues.useSCT(),
            doEmCaloSeed=False,
            minTRTonTrk=InDetTrigCutValues.minTRTonTrk(),
            #useSigmaChi2   = False # tuning from Thijs
            DriftCircleCutTool=InDetTrigTRTDriftCircleCut,
        )

        InDetTrigExtScoringTool.minPt = InDetTrigSliceSettings[('pTmin', type)]

        #
        ToolSvc += InDetTrigExtScoringTool
        if (InDetTrigFlags.doPrintConfigurables()):
            print InDetTrigExtScoringTool

        if type == "cosmicsN":
            from InDetTrigRecExample.InDetTrigConfigRecLoadToolsCosmics import InDetTrigTrackSummaryToolCosmics
            from InDetTrackScoringTools.InDetTrackScoringToolsConf import InDet__InDetCosmicScoringTool
            InDetTrigScoringToolCosmics_TRT= \
                InDet__InDetCosmicScoringTool(name = 'InDetTrigCosmicScoringTool_TRT',
                                              nWeightedClustersMin = 0,
                                              minTRTHits = EFIDTrackingCutsCosmics.minTRTonTrk(),
                                              SummaryTool= InDetTrigTrackSummaryToolCosmics
                                              )
            ToolSvc += InDetTrigScoringToolCosmics_TRT
            if (InDetTrigFlags.doPrintConfigurables()):
                print InDetTrigScoringToolCosmics_TRT

        self.TrackFitter = InDetTrigExtensionFitter
        self.ScoringTool = InDet__InDetAmbiScoringTool(
            'InDetTrigExtScoringTool_' + type)

        self.RefitPrds = not (InDetTrigFlags.refitROT() or
                              (InDetTrigFlags.trtExtensionType() is 'DAF'))
        self.suppressHoleSearch = False  # does not work properly
        if type == "cosmicsN":
            self.ScoringTool = InDetTrigScoringToolCosmics_TRT
            self.Cosmics = True

        #Material effects
        if InDetTrigFlags.materialInteractions():
            self.matEffects = 3  # default in code is 4!!
        else:
            self.matEffects = 0
        if type == "cosmicsN" and not InDetTrigFlags.solenoidOn():
            self.matEffects = 0

        #monitoring
        from InDetTrigExtensProcessor.InDetTrigExtensProcessorMonitoring import InDetTrigExtensProcessorValidationMonitor
        from InDetTrigExtensProcessor.InDetTrigExtensProcessorMonitoring import InDetTrigExtensProcessorOnlineMonitor
        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        idexttime = TrigTimeHistToolConfig("IdExtTime")
        idexttime.TimerHistLimits = [0, 200]
        self.AthenaMonTools = [
            InDetTrigExtensProcessorValidationMonitor(),
            InDetTrigExtensProcessorOnlineMonitor(), idexttime
        ]
Exemple #19
0
    def __init__(self, name="TRTTrackExtAlg_Electron_EF", type="electron"):
        super(InDet__TRT_TrigTrackExtensionAlg, self).__init__(name)

        from AthenaCommon.AppMgr import ToolSvc
        from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigPatternPropagator, InDetTrigPatternUpdator

        # TRT detector elements road builder
        #
        from TRT_DetElementsRoadTool_xk.TRT_DetElementsRoadTool_xkConf import InDet__TRT_DetElementsRoadMaker_xk
        InDetTrigTRTDetElementsRoadMaker = InDet__TRT_DetElementsRoadMaker_xk(
            name='InDetTrigTRTRoadMaker',
            #DetectorStoreLocation = 'DetectorStore',
            TRTManagerLocation='TRT',
            MagneticFieldMode='MapSolenoid',
            PropagatorTool=InDetTrigPatternPropagator)

        ToolSvc += InDetTrigTRTDetElementsRoadMaker
        if (InDetTrigFlags.doPrintConfigurables()):
            print InDetTrigTRTDetElementsRoadMaker

        # Track extension to TRT tool
        #
        from AthenaCommon.DetFlags import DetFlags
        if (DetFlags.haveRIO.TRT_on()):
            if InDetTrigFlags.trtExtensionType() is 'xk':

                from TRT_TrackExtensionTool_xk.TRT_TrackExtensionTool_xkConf import InDet__TRT_TrackExtensionTool_xk
                from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigTRTDriftCircleCut
                InDetTrigTRTExtensionTool =  \
                    InDet__TRT_TrackExtensionTool_xk(name   = 'InDetTrigTRTExtensionTool',
                                                     MagneticFieldMode     = 'MapSolenoid',      # default
                                                     TRT_ClustersContainer = 'TRT_TrigDriftCircles', # default
                                                     TrtManagerLocation    = 'TRT',              # default
                                                     PropagatorTool = InDetTrigPatternPropagator,
                                                     UpdatorTool    = InDetTrigPatternUpdator,
                                                     #RIOonTrackToolYesDr = # default for now
                                                     #RIOonTrackToolNoDr  = # default for now
                                                     RoadTool            = InDetTrigTRTDetElementsRoadMaker,
                                                     DriftCircleCutTool = InDetTrigTRTDriftCircleCut,
                                                     MinNumberDriftCircles = EFIDTrackingCuts.minTRTonTrk(),
                                                     ScaleHitUncertainty   = 2.,
                                                     RoadWidth             = 20.,
                                                     UseParameterization   = EFIDTrackingCuts.useParameterizedTRTCuts()
                                                     )
            elif InDetTrigFlags.trtExtensionType() is 'DAF':
                # load TRT Competing ROT tool
                from TrkDeterministicAnnealingFilter.TrkDeterministicAnnealingFilterConf import Trk__DAF_SimpleWeightCalculator
                InDetTrigWeightCalculator = Trk__DAF_SimpleWeightCalculator(
                    name='InDetTrigWeightCalculator')

                ToolSvc += InDetTrigWeightCalculator
                if (InDetTrigFlags.doPrintConfigurables()):
                    print InDetTrigWeightCalculator

                from InDetCompetingRIOsOnTrackTool.InDetCompetingRIOsOnTrackToolConf import InDet__CompetingTRT_DriftCirclesOnTrackTool
                InDetTrigCompetingTRT_DC_Tool =  \
                    InDet__CompetingTRT_DriftCirclesOnTrackTool( name     = 'InDetTrigCompetingTRT_DC_Tool',
                                                                 MagneticFieldMode   = 'MapSolenoid',      # default
                                                                 PropagatorTool          = InDetTrigPatternPropagator,
                                                                 ToolForWeightCalculation= InDetTrigWeightCalculator,
                                                                 ToolForTRT_DriftCircleOnTrackCreation = InDetTrigRotCreator.ToolTRT_DriftCircle)
                ToolSvc += InDetTrigCompetingTRT_DC_Tool
                if (InDetTrigFlags.doPrintConfigurables()):
                    print InDetTrigCompetingTRT_DC_Tool

                from TRT_TrackExtensionTool_DAF.TRT_TrackExtensionTool_DAFConf import InDet__TRT_TrackExtensionTool_DAF
                InDetTrigTRTExtensionTool =  \
                    InDet__TRT_TrackExtensionTool_DAF(name  = 'InDetTrigTRTExtensionTool',
                                                      MagneticFieldMode        = 'MapSolenoid',      # default
                                                      TRT_DriftCircleContainer = 'TRT_TrigDriftCircles', # default
                                                      CompetingDriftCircleTool    = InDetTrigCompetingTRT_DC_Tool,
                                                      PropagatorTool           = InDetTrigPatternPropagator,
                                                      RoadTool                 = InDetTrigTRTDetElementsRoadMaker)
            #
            ToolSvc += InDetTrigTRTExtensionTool
            if (InDetTrigFlags.doPrintConfigurables()):
                print InDetTrigTRTExtensionTool

            self.TrackExtensionTool = InDetTrigTRTExtensionTool

            #monitoring
            from TRT_TrigTrackExtensionAlg.TRT_TrigTrackExtensionAlgMonitoring import TRT_TrigTrackExtensionAlgValidationMonitor
            from TRT_TrigTrackExtensionAlg.TRT_TrigTrackExtensionAlgMonitoring import TRT_TrigTrackExtensionAlgOnlineMonitor
            from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
            exttime = TrigTimeHistToolConfig("ExtTime")
            exttime.TimerHistLimits = [0, 40]
            self.AthenaMonTools = [
                TRT_TrigTrackExtensionAlgValidationMonitor(),
                TRT_TrigTrackExtensionAlgOnlineMonitor(), exttime
            ]
Exemple #20
0
    def __init__(self,
                 name="SiTrigTrackFinder_Electron_EF",
                 type="electron",
                 lowPt=False):
        super(InDet__SiTrigSPSeededTrackFinder, self).__init__(name)

        from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigPrdAssociationTool, \
            InDetTrigPatternPropagator, InDetTrigPatternUpdator, \
            InDetTrigRotCreator, InDetTrigPixelConditionsSummarySvc, InDetTrigSCTConditionsSummarySvc
        from AthenaCommon.AppMgr import ToolSvc

        # configure tools used

        # Space points seeds maker
        #
        from InDetTrigRecExample.InDetTrigSliceSettings import InDetTrigSliceSettings
        from AthenaCommon.DetFlags import DetFlags

        if type == "beamgas":
            from InDetTrigRecExample.InDetTrigConfigRecLoadToolsBeamGas import InDetTrigSiSpacePointsSeedMakerBeamGas
            InDetTrigSiSpacePointsSeedMaker = InDetTrigSiSpacePointsSeedMakerBeamGas

        elif type == "cosmicsN":
            from SiSpacePointsSeedTool_xk.SiSpacePointsSeedTool_xkConf import InDet__SiSpacePointsSeedMaker_Cosmic

            InDetTrigSiSpacePointsSeedMaker = \
                InDet__SiSpacePointsSeedMaker_Cosmic(name                   = 'InDetTrigSiSpacePointsSeedMaker_'+type,
                                                     pTmin                  = InDetTrigSliceSettings[('pTmin',type)],
                                                     maxdImpact             = EFIDTrackingCutsCosmics.maxPrimaryImpact(),
                                                     maxZ                   = EFIDTrackingCutsCosmics.maxZImpact(),
                                                     minZ                   = -EFIDTrackingCutsCosmics.maxZImpact(),
                                                     SpacePointsPixelName   = 'SCT_CosmicsTrigSpacePoints',
                                                     SpacePointsSCTName     = 'PixelCosmicsTrigSpacePoints',
                                                     #SpacePointsOverlapName = InDetKeys.OverlapSpacePoints(),
                                                     UseAssociationTool     = False,
                                                     AssociationTool        =  InDetTrigPrdAssociationTool)
        elif lowPt:
            from InDetTrigRecExample.InDetTrigConfigRecLoadToolsLowPt import InDetTrigSiSpacePointsSeedMakerLowPt
            InDetTrigSiSpacePointsSeedMaker = InDetTrigSiSpacePointsSeedMakerLowPt

        elif type == "heavyIon" or type == "heavyIonFS":
            from SiSpacePointsSeedTool_xk.SiSpacePointsSeedTool_xkConf import InDet__SiSpacePointsSeedMaker_HeavyIon
            InDetTrigSiSpacePointsSeedMaker = \
                InDet__SiSpacePointsSeedMaker_HeavyIon(name=                  'InDetTrigSiSpacePointsSeedMaker_'+type,
                                                     pTmin = InDetTrigSliceSettings[('pTmin',type)],
                                                     maxdImpact = EFIDTrackingCutsHeavyIon.maxPrimaryImpact(),
                                                     maxZ = EFIDTrackingCutsHeavyIon.maxZImpact(),
                                                     minZ = -EFIDTrackingCutsHeavyIon.maxZImpact(),
                                                     #useOverlapSpCollection   = False, #overlapCollections not used in EFID
                                                     useOverlapSpCollection   = InDetTrigFlags.doOverlapSP(), #testing
                                                     usePixel = DetFlags.haveRIO.pixel_on(),
                                                     useSCT   = DetFlags.haveRIO.SCT_on(),
                                                     SpacePointsSCTName = 'SCT_TrigSpacePoints',
                                                     SpacePointsPixelName = 'PixelTrigSpacePoints',
                                                     SpacePointsOverlapName = 'SPTrigOverlap',
                                                     radMax = EFIDTrackingCutsHeavyIon.radMax())

        else:
            from SiSpacePointsSeedTool_xk.SiSpacePointsSeedTool_xkConf import InDet__SiSpacePointsSeedMaker_ATLxk
            InDetTrigSiSpacePointsSeedMaker = \
                InDet__SiSpacePointsSeedMaker_ATLxk( name = 'InDetTrigSiSpacePointsSeedMaker_'+type,
                                                     pTmin = InDetTrigSliceSettings[('pTmin',type)],
                                                     maxdImpact = InDetTrigCutValues.maxPrimaryImpact(),
                                                     maxZ = InDetTrigCutValues.maxZImpact(),
                                                     minZ = -InDetTrigCutValues.maxZImpact(),
                                                     #useOverlapSpCollection   = False, #overlapCollections not used in EFID
                                                     useOverlapSpCollection   = InDetTrigFlags.doOverlapSP(), #testing
                                                     usePixel = DetFlags.haveRIO.pixel_on(),
                                                     useSCT   = DetFlags.haveRIO.SCT_on(),
                                                     SpacePointsSCTName = 'SCT_TrigSpacePoints',
                                                     SpacePointsPixelName = 'PixelTrigSpacePoints',
                                                     SpacePointsOverlapName = 'SPTrigOverlap',
                                                     radMax = InDetTrigCutValues.radMax(),
                                                     maxdImpactPPS = InDetTrigCutValues.maxdImpactPPSSeeds(),
                                                     maxdImpactSSS = InDetTrigCutValues.maxdImpactSSSSeeds(),
                                                     )

        if type != "cosmicsN":
            InDetTrigSiSpacePointsSeedMaker.maxRadius1 = 0.75 * InDetTrigCutValues.radMax(
            )
            InDetTrigSiSpacePointsSeedMaker.maxRadius2 = InDetTrigCutValues.radMax(
            )
            InDetTrigSiSpacePointsSeedMaker.maxRadius3 = InDetTrigCutValues.radMax(
            )

        # if type=="minBias":
        #   InDetTrigSiSpacePointsSeedMaker.maxdImpact=5.

        ToolSvc += InDetTrigSiSpacePointsSeedMaker
        if (InDetTrigFlags.doPrintConfigurables()):
            print InDetTrigSiSpacePointsSeedMaker

        #InDetTrigSiSpacePointsSeedMaker.OutputLevel = 1

        # Z-coordinates primary vertices finder
        #

        from SiZvertexTool_xk.SiZvertexTool_xkConf import InDet__SiZvertexMaker_xk
        InDetTrigZvertexMaker = InDet__SiZvertexMaker_xk(
            name='InDetTrigZvertexMaker_' + type,
            Zmax=InDetTrigCutValues.maxZImpact(),
            Zmin=-InDetTrigCutValues.maxZImpact(),
            minRatio=0.17  # not default
        )
        if type == "heavyIon" or type == "heavyIonFS":
            InDetTrigZvertexMaker.HistSize = 2000
            InDetTrigZvertexMaker.minContent = 30

        #InDetTrigZvertexMaker.SeedMakerTool = InDet__SiSpacePointsSeedMaker_ATLxk('InDetTrigSiSpacePointsSeedMaker_'+type)#to make it tool neutral
        InDetTrigZvertexMaker.SeedMakerTool = ToolSvc.allConfigurables[
            'InDetTrigSiSpacePointsSeedMaker_' + type]
        ToolSvc += InDetTrigZvertexMaker

        #InDetTrigZvertexMaker.OutputLevel=1

        # SCT and Pixel detector elements road builder
        #
        from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigSiDetElementsRoadMaker, InDetTrigSiComTrackFinder

        # Local track finding using space point seed
        #
        from SiTrackMakerTool_xk.SiTrackMakerTool_xkConf import InDet__SiTrackMaker_xk
        InDetTrigSiTrackMaker = InDet__SiTrackMaker_xk(
            name='InDetTrigSiTrackMaker_' + type,
            RoadTool=InDetTrigSiDetElementsRoadMaker,
            CombinatorialTrackFinder=InDetTrigSiComTrackFinder,
            pTmin=InDetTrigSliceSettings[('pTmin', type)],
            nClustersMin=InDetTrigCutValues.minClusters(),
            nHolesMax=InDetTrigCutValues.nHolesMax(),
            nHolesGapMax=InDetTrigCutValues.nHolesGapMax(),
            SeedsFilterLevel=InDetTrigCutValues.seedFilterLevel(),
            Xi2max=InDetTrigCutValues.Xi2max(),
            Xi2maxNoAdd=InDetTrigCutValues.Xi2maxNoAdd(),
            nWeightedClustersMin=InDetTrigCutValues.nWeightedClustersMin(),
            #CosmicTrack              = InDetFlags.doCosmics(),
            Xi2maxMultiTracks=InDetTrigCutValues.Xi2max(),
            UseAssociationTool=False)

        if type == "beamgas":
            InDetTrigSiTrackMaker.pTmin = EFIDTrackingCutsBeamGas.minPT()
            InDetTrigSiTrackMaker.nClustersMin = EFIDTrackingCutsBeamGas.minClusters(
            )
            InDetTrigSiTrackMaker.nHolesMax = EFIDTrackingCutsBeamGas.nHolesMax(
            )
            InDetTrigSiTrackMaker.UseAssociationTool = True  #for BG and LowPt
        elif type == "cosmicsN":
            #create an additional for cosmics
            from InDetTrigRecExample.InDetTrigConfigRecLoadToolsCosmics import InDetTrigSiDetElementsRoadMakerCosmics
            InDetTrigSiTrackMaker.RoadTool = InDetTrigSiDetElementsRoadMakerCosmics
            InDetTrigSiTrackMaker.nClustersMin = EFIDTrackingCutsCosmics.minClusters(
            )
            InDetTrigSiTrackMaker.nHolesMax = EFIDTrackingCutsCosmics.nHolesMax(
            )  #3 vs 7
            InDetTrigSiTrackMaker.nHolesGapMax = EFIDTrackingCutsCosmics.nHolesGapMax(
            )  #3
            InDetTrigSiTrackMaker.CosmicTrack = True
            #InDetTrigSiTrackMaker.GoodSeedClusterCount = 3
        elif type == 'electron' and InDetTrigFlags.doBremRecovery():
            InDetTrigSiTrackMaker.useBremModel = True

        ToolSvc += InDetTrigSiTrackMaker

        if (InDetTrigFlags.doPrintConfigurables()):
            print InDetTrigSiTrackMaker

        self.SeedsTool = InDetTrigSiSpacePointsSeedMaker
        self.ZvertexTool = InDetTrigZvertexMaker
        self.useZvertexTool = InDetTrigFlags.useZvertexTool()
        if type == "beamgas" or type == "cosmicsN":
            self.ZvertexTool = None
            self.useZvertexTool = False
        elif type == "heavyIon" or type == "heavyIonFS":
            self.useZvertexTool = True

        if lowPt:
            from InDetTrigRecExample.InDetTrigConfigRecLoadToolsLowPt \
                import InDetTrigSiSpacePointsSeedMakerLowPt,InDetTrigSiTrackMakerLowPt, InDetTrigZvertexMakerLowPt
            self.TrackTool = InDetTrigSiTrackMakerLowPt
            self.SeedsTool = InDetTrigSiSpacePointsSeedMakerLowPt
            self.useZvertexTool = InDetTrigFlags.useZvertexTool()
            self.ZvertexTool = InDetTrigZvertexMakerLowPt

        else:
            #self.TrackTool = InDetTrigSiTrackMaker
            self.TrackTool = InDet__SiTrackMaker_xk('InDetTrigSiTrackMaker_' +
                                                    type)

        self.EtaHalfWidth = InDetTrigSliceSettings[('etaHalfWidth', type)]
        self.PhiHalfWidth = InDetTrigSliceSettings[('phiHalfWidth', type)]
        self.doFullScan = InDetTrigSliceSettings[('doFullScan', type)]

        #monitoring
        from SiTrigSPSeededTrackFinder.SiTrigSPSeededTrackFinderMonitoring import \
            SiTrigSPSeededTrackFinderValidationMonitor, \
            SiTrigSPSeededTrackFinderOnlineMonitor

        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig

        sitrktime = TrigTimeHistToolConfig("SiTRKTime")
        sitrktime.TimerHistLimits = [0, 200]
        self.AthenaMonTools = [
            SiTrigSPSeededTrackFinderValidationMonitor(type=type),
            SiTrigSPSeededTrackFinderOnlineMonitor(type=type), sitrktime
        ]
Exemple #21
0
    def __init__(self,
                 name="TrigAmbiguitySolver_Electron_EF",
                 type="electron",
                 lowPt=False):
        super(InDet__InDetTrigAmbiguitySolver, self).__init__(name)

        slice = type
        if name.find('FTK') > -1:
            slice = 'FTK'

        from AthenaCommon.AppMgr import ToolSvc
        from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigPrdAssociationTool, \
            InDetTrigTrackFitter, InDetTrigExtrapolator, InDetTrigTrackSummaryTool, \
            InDetTrigTRTDriftCircleCut

        # load InnerDetector TrackSelectionTool
        #

        from InDetTrigRecExample.InDetTrigSliceSettings import InDetTrigSliceSettings

        from InDetTrackScoringTools.InDetTrackScoringToolsConf import InDet__InDetAmbiScoringTool
        #ptint
        ptintcut = InDetTrigSliceSettings[('pTmin', slice)]
        if slice == 'minBias':
            ptintcut = 0.95 * InDetTrigSliceSettings[('pTmin', slice)]
        elif slice == 'minBias400':
            ptintcut = 0.95 * InDetTrigSliceSettings[('pTmin', slice)]

        InDetTrigScoringTool = InDet__InDetAmbiScoringTool(
            name='InDetTrigScoringTool_' + slice,
            Extrapolator=InDetTrigExtrapolator,
            SummaryTool=InDetTrigTrackSummaryTool,
            useAmbigFcn=True,  # this is NewTracking
            useTRT_AmbigFcn=False,
            #to have a steeper turn-n curve
            minPt=ptintcut,
            maxRPhiImp=InDetTrigCutValues.maxPrimaryImpact(),
            maxZImp=InDetTrigCutValues.maxZImpact(),
            maxEta=InDetTrigCutValues.maxEta(),
            minSiClusters=InDetTrigCutValues.minClusters(),
            maxSiHoles=InDetTrigCutValues.maxHoles(),
            maxPixelHoles=InDetTrigCutValues.maxPixelHoles(),
            maxSCTHoles=InDetTrigCutValues.maxSCTHoles(),
            maxDoubleHoles=InDetTrigCutValues.maxDoubleHoles(),
            usePixel=InDetTrigCutValues.usePixel(),
            useSCT=InDetTrigCutValues.useSCT(),
            minTRTonTrk=0,  # no TRT here
            DriftCircleCutTool=InDetTrigTRTDriftCircleCut,
            doEmCaloSeed=False,
            #BeamPositionSvc = default instance ,
        )

        if slice == 'beamgas':
            InDetTrigScoringTool.minPt = EFIDTrackingCutsBeamGas.minPT()
            InDetTrigScoringTool.maxRPhiImp = EFIDTrackingCutsBeamGas.maxPrimaryImpact(
            )
            InDetTrigScoringTool.maxZImp = EFIDTrackingCutsBeamGas.maxZImpact()
            InDetTrigScoringTool.minSiClusters = EFIDTrackingCutsBeamGas.minClusters(
            )
            InDetTrigScoringTool.maxSiHoles = EFIDTrackingCutsBeamGas.maxHoles(
            )
            InDetTrigScoringTool.useTRT_AmbigFcn = False
            InDetTrigScoringTool.useSigmaChi2 = True

        if slice == 'FTK' or slice == 'FTKRefit' or slice == 'FTKMon':
            InDetTrigScoringTool.minSiClusters = FTKTrackingCuts.minClusters()
            InDetTrigScoringTool.maxSiHoles = FTKTrackingCuts.maxHoles()
            InDetTrigScoringTool.maxPixelHoles = FTKTrackingCuts.maxPixelHoles(
            )
            InDetTrigScoringTool.maxSCTHoles = FTKTrackingCuts.maxSCTHoles()
            InDetTrigScoringTool.maxDoubleHoles = FTKTrackingCuts.maxDoubleHoles(
            )

        #
        ToolSvc += InDetTrigScoringTool
        if (InDetTrigFlags.doPrintConfigurables()):
            print InDetTrigScoringTool

        # load Ambiguity Processor
        from InDetTrigRecExample.InDetTrigConfigRecLoadTools import \
            InDetTrigAmbiTrackSelectionTool

        from TrkAmbiguityProcessor.TrkAmbiguityProcessorConf import Trk__SimpleAmbiguityProcessorTool

        InDetTrigAmbiguityProcessor = \
            Trk__SimpleAmbiguityProcessorTool(name = 'InDetTrigAmbiguityProcessor_'+slice,
                                              #AssoTool    = InDetTrigPrdAssociationTool,
                                              Fitter      = InDetTrigTrackFitter,
                                              SelectionTool = InDetTrigAmbiTrackSelectionTool,
                                              RefitPrds   = not InDetTrigFlags.refitROT()
                                              )

        InDetTrigAmbiguityProcessor.ScoringTool = InDet__InDetAmbiScoringTool(
            'InDetTrigScoringTool_' + slice)

        if slice == 'beamgas':
            from InDetTrigRecExample.InDetTrigConfigRecLoadToolsBeamGas import \
                InDetTrigAmbiTrackSelectionToolBeamGas
            InDetTrigAmbiguityProcessor.SelectionTool = InDetTrigAmbiTrackSelectionToolBeamGas

        elif slice == 'cosmicsN':
            from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigTrackFitterCosmics
            from InDetTrigRecExample.InDetTrigConfigRecLoadToolsCosmics \
                import InDetTrigScoringToolCosmics_SiPattern, InDetTrigAmbiTrackSelectionToolCosmicsN

            InDetTrigAmbiguityProcessor.Fitter = InDetTrigTrackFitterCosmics
            InDetTrigAmbiguityProcessor.SuppressHoleSearch = False
            InDetTrigAmbiguityProcessor.SelectionTool = InDetTrigAmbiTrackSelectionToolCosmicsN
            InDetTrigAmbiguityProcessor.ScoringTool = InDetTrigScoringToolCosmics_SiPattern
            #InDetTrigAmbiguityProcessor.SuppressTrackFit = True
            #InDetTrigAmbiguityProcessor.ForceRefit = False
            InDetTrigAmbiguityProcessor.RefitPrds = False
        elif slice == 'electron' and InDetTrigFlags.doBremRecovery():
            InDetTrigAmbiguityProcessor.tryBremFit = True
            import AthenaCommon.SystemOfUnits as Units
            InDetTrigAmbiguityProcessor.pTminBrem = 5 * Units.GeV
        elif slice == 'FTK' or slice == 'FTKRefit' or slice == 'FTKMon':
            from TrigInDetConf.TrigInDetRecToolsFTK import InDetTrigAmbiTrackSelectionToolFTK, InDetTrigTrackFitterFTK
            InDetTrigAmbiguityProcessor.SelectionTool = InDetTrigAmbiTrackSelectionToolFTK
            InDetTrigAmbiguityProcessor.Fitter = InDetTrigTrackFitterFTK
            #InDetTrigAmbiguityProcessor.RefitPrds =

        if InDetTrigFlags.materialInteractions() and InDetTrigFlags.solenoidOn(
        ):
            InDetTrigAmbiguityProcessor.MatEffects = 3
        else:
            InDetTrigAmbiguityProcessor.MatEffects = 0

        ToolSvc += InDetTrigAmbiguityProcessor
        if (InDetTrigFlags.doPrintConfigurables()):
            print InDetTrigAmbiguityProcessor

        self.AmbiguityProcessor = InDetTrigAmbiguityProcessor
        if lowPt:
            from InDetTrigRecExample.InDetTrigConfigRecLoadToolsLowPt import InDetTrigAmbiguityProcessorLowPt
            self.AmbiguityProcessor = InDetTrigAmbiguityProcessorLowPt
            self.OutputTracksLabel = "AmbigSolvLowPt"

        #use either SPSeeded or FTF tracks
        self.InputTracksLabel = ""

        #FIX
        #InDetTrigExtrapolator.ApplyMaterialEffects = False

        #monitoring
        from InDetTrigAmbiguitySolver.InDetTrigAmbiguitySolverMonitoring import InDetTrigAmbiguitySolverValidationMonitor
        from InDetTrigAmbiguitySolver.InDetTrigAmbiguitySolverMonitoring import InDetTrigAmbiguitySolverOnlineMonitor
        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        ambtime = TrigTimeHistToolConfig("AmbTime")
        ambtime.TimerHistLimits = [0, 100]
        if InDetTrigSliceSettings[('doFullScan', slice)]:
            ambtime.TimerHistLimits = [0, 500]
        self.AthenaMonTools = [
            InDetTrigAmbiguitySolverValidationMonitor(),
            InDetTrigAmbiguitySolverOnlineMonitor(), ambtime
        ]
Exemple #22
0
    def __init__(self, name, type):
        TrigFastTrackFinder.__init__(self, name)
        remapped_type = remapper(type)

        self.retrieveBarCodes = False  #Look at truth information for spacepoints from barcodes
        #self.SignalBarCodes = [10001] #single particles
        self.SignalBarCodes = [11, 12]  #z->mumu

        self.useNewLayerNumberScheme = True

        self.OutputCollectionSuffix = type
        from AthenaCommon.AppMgr import ToolSvc

        numberingTool = TrigL2LayerNumberTool(name="TrigL2LayerNumberTool_FTF")
        numberingTool.UseNewLayerScheme = self.useNewLayerNumberScheme
        ToolSvc += numberingTool
        self.LayerNumberTool = numberingTool

        timeHist = TrigTimeHistToolConfig("Time")
        timeHist.TimerHistLimits = [0, 10000]
        from InDetTrigRecExample.InDetTrigSliceSettings import InDetTrigSliceSettings
        self.doResMon = InDetTrigSliceSettings[('doResMon', remapped_type)]
        self.AthenaMonTools = [
            TrigFastTrackFinder_ValidationMonitoring(
                "TrigFastTrackFinder_ValidationMonitoring", self.doResMon),
            TrigFastTrackFinder_OnlineMonitoring(
                "TrigFastTrackFinder_OnlineMonitoring", self.doResMon),
            timeHist
        ]

        if type == "FTK" or type == "FTKRefit" or type == "FTKMon":
            from TrigFTK_RecExample.TrigFTKLoadTools import theFTK_DataProviderSvc
            self.FTK_DataProviderSvc = theFTK_DataProviderSvc
            self.FTK_Mode = True
        if type == "FTKRefit":
            self.FTK_Refit = True
        else:
            #Spacepoint conversion
            from TrigOnlineSpacePointTool.TrigOnlineSpacePointToolConf import TrigSpacePointConversionTool
            spTool = TrigSpacePointConversionTool().clone(
                'TrigSpacePointConversionTool_' + remapped_type)
            spTool.DoPhiFiltering = InDetTrigSliceSettings[('doSpPhiFiltering',
                                                            remapped_type)]
            spTool.UseNewLayerScheme = self.useNewLayerNumberScheme
            spTool.UseBeamTilt = False
            spTool.layerNumberTool = numberingTool
            ToolSvc += spTool
            self.SpacePointProviderTool = spTool
            self.MinSPs = 5  #Only process RoI with more than 5 spacepoints

            self.Triplet_MinPtFrac = 1
            self.Triplet_nMaxPhiSlice = 53
            if remapped_type == "cosmics":
                self.Triplet_nMaxPhiSlice = 2  #Divide detector in 2 halves for cosmics

            self.Triplet_MaxBufferLength = 3
            self.doSeedRedundancyCheck = InDetTrigSliceSettings[(
                'checkRedundantSeeds', remapped_type)]
            self.Triplet_D0Max = InDetTrigSliceSettings[('d0SeedMax',
                                                         remapped_type)]
            self.Triplet_D0_PPS_Max = InDetTrigSliceSettings[('d0SeedPPSMax',
                                                              remapped_type)]
            self.TrackInitialD0Max = 20.
            if remapped_type == 'cosmics':
                self.TrackInitialD0Max = 1000.
                self.TrackZ0Max = 1000.

            self.TripletDoPSS = False
            self.pTmin = InDetTrigSliceSettings[('pTmin', remapped_type)]
            self.DoubletDR_Max = InDetTrigSliceSettings[('dRdoubletMax',
                                                         remapped_type)]
            self.SeedRadBinWidth = InDetTrigSliceSettings[('seedRadBinWidth',
                                                           remapped_type)]

            if remapped_type == "cosmics":
                self.Doublet_FilterRZ = False

            ## SCT and Pixel detector elements road builder
            from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigSiDetElementsRoadMaker
            InDetTrigSiDetElementsRoadMaker_FTF = InDetTrigSiDetElementsRoadMaker.clone(
                'InDetTrigSiDetElementsRoadMaker_FTF')
            InDetTrigSiDetElementsRoadMaker_FTF.RoadWidth = 10.0
            if remapped_type == "cosmics":
                from InDetTrigRecExample.InDetTrigConfigRecLoadToolsCosmics import InDetTrigSiDetElementsRoadMakerCosmics
                InDetTrigSiDetElementsRoadMaker_FTF = InDetTrigSiDetElementsRoadMakerCosmics.clone(
                    'InDetTrigSiDetElementsRoadMaker_FTF')
            ToolSvc += InDetTrigSiDetElementsRoadMaker_FTF

            from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigSiComTrackFinder
            InDetTrigSiComTrackFinder_FTF = InDetTrigSiComTrackFinder.clone(
                "InDetTrigSiComTrackFinder_FTF")
            ToolSvc += InDetTrigSiComTrackFinder_FTF

            from InDetTrigRecExample.ConfiguredNewTrackingTrigCuts import EFIDTrackingCuts
            TrackingCuts = EFIDTrackingCuts
            if remapped_type == "cosmics":
                from InDetTrigRecExample.ConfiguredNewTrackingTrigCuts import EFIDTrackingCutsCosmics
                TrackingCuts = EFIDTrackingCutsCosmics

            from SiTrackMakerTool_xk.SiTrackMakerTool_xkConf import InDet__SiTrackMaker_xk

            TrackMaker_FTF = InDet__SiTrackMaker_xk(
                name='InDetTrigSiTrackMaker_FTF_' + type,
                RoadTool=InDetTrigSiDetElementsRoadMaker_FTF,
                CombinatorialTrackFinder=InDetTrigSiComTrackFinder_FTF,
                pTmin=InDetTrigSliceSettings[('pTmin', remapped_type)],
                nClustersMin=TrackingCuts.minClusters(),
                nHolesMax=TrackingCuts.nHolesMax(),
                nHolesGapMax=TrackingCuts.nHolesGapMax(),
                SeedsFilterLevel=0,  # Do not use built-in seeds filter
                Xi2max=TrackingCuts.Xi2max(),
                Xi2maxNoAdd=TrackingCuts.Xi2maxNoAdd(),
                nWeightedClustersMin=TrackingCuts.nWeightedClustersMin(),
                Xi2maxMultiTracks=TrackingCuts.Xi2max(),
                UseAssociationTool=False)

            from InDetTrigRecExample.InDetTrigFlags import InDetTrigFlags
            if type == 'eGamma' and InDetTrigFlags.doBremRecovery():
                TrackMaker_FTF.useBremModel = True

            if remapped_type == "cosmics":
                TrackMaker_FTF.RoadTool.CosmicTrack = True

            ToolSvc += TrackMaker_FTF
            self.initialTrackMaker = TrackMaker_FTF

            from TrigInDetTrackFitter.TrigInDetTrackFitterConf import TrigInDetTrackFitter
            theTrigInDetTrackFitter = TrigInDetTrackFitter()
            #theTrigInDetTrackFitter.correctClusterPos = False #Flag to control whether to correct cluster position
            theTrigInDetTrackFitter.correctClusterPos = True  #temporarily to true to improve err(z0) estimates

            from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigRotCreator
            theTrigInDetTrackFitter.ROTcreator = InDetTrigRotCreator
            ToolSvc += theTrigInDetTrackFitter
            self.trigInDetTrackFitter = theTrigInDetTrackFitter
            from InDetTrigRecExample.InDetTrigFlags import InDetTrigFlags
            if type == 'eGamma' and InDetTrigFlags.doBremRecovery():
                theTrigInDetTrackFitterBrem = TrigInDetTrackFitter(
                    name='theTrigInDetTrackFitterBrem', doBremmCorrection=True)
                ToolSvc += theTrigInDetTrackFitterBrem
                self.trigInDetTrackFitter = theTrigInDetTrackFitterBrem

            self.doZFinder = InDetTrigSliceSettings[('doZFinder',
                                                     remapped_type)]
            if (self.doZFinder):
                from IDScanZFinder.IDScanZFinderConf import TrigZFinder
                theTrigZFinder = TrigZFinder()
                theTrigZFinder.NumberOfPeaks = 3
                theTrigZFinder.LayerNumberTool = numberingTool

                theTrigZFinder.FullScanMode = True  #TODO: know this from the RoI anyway - should set for every event
                ToolSvc += theTrigZFinder
                self.trigZFinder = theTrigZFinder
                self.doFastZVertexSeeding = True
                self.zVertexResolution = 1

            from TrigInDetConf.TrigInDetRecCommonTools import InDetTrigFastTrackSummaryTool
            self.TrackSummaryTool = InDetTrigFastTrackSummaryTool

            if remapped_type == "tauCore":
                from TrigInDetConf.TrigInDetRecCommonTools import InDetTrigTrackSummaryToolWithHoleSearch
                self.TrackSummaryTool = InDetTrigTrackSummaryToolWithHoleSearch

            from TrigInDetTrackFitter.TrigInDetTrackFitterConf import TrigL2ResidualCalculator
            resCalc = TrigL2ResidualCalculator(OfflineClusters=False)
            ToolSvc += resCalc
            self.TrigL2ResidualCalculator = resCalc
            self.doCloneRemoval = InDetTrigSliceSettings[('doCloneRemoval',
                                                          remapped_type)]
Exemple #23
0
    def __init__(self, name="TrigTauRecMerged_TauPrecision"):
        super(TrigTauRecMerged_TauPrecision, self).__init__(name)
        self._mytools = []

        # monitoring part. To switch off do in topOption TriggerFlags.enableMonitoring = []
        from TrigTauRec.TrigTauRecMonitoring import TrigTauRecValidationMonitoring, TrigTauRecOnlineMonitoring
        validation = TrigTauRecValidationMonitoring()
        online = TrigTauRecOnlineMonitoring()

        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("Time")
        self.AthenaMonTools = [time, validation, online]

        import TrigTauRec.TrigTauAlgorithmsHolder as taualgs
        tools = []

        taualgs.setPrefix("TrigTau_")

        # Collection name
        self.OutputCollection = "TrigTauRecMerged"

        # Include full set of tools

        # Set seedcalo energy scale (Full RoI)
        tools.append(taualgs.getJetSeedBuilder())
        # Associate RoI vertex or Beamspot to tau - don't use TJVA
        tools.append(taualgs.getTauVertexFinder(
            doUseTJVA=False))  #don't use TJVA by default
        # Set LC energy scale (0.2 cone) and intermediate axis (corrected for vertex: useless at trigger)
        tools.append(taualgs.getTauAxis())
        # Count tracks with deltaZ0 cut of 2mm for 2016 and 1mm for 2017 (see ATR-15845)
        if TriggerFlags.run2Config == '2016':
            tools.append(
                taualgs.getTauTrackFinder(applyZ0cut=True,
                                          maxDeltaZ0=2,
                                          prefix='TrigTau2016_'))
        else:
            tools.append(
                taualgs.getTauTrackFinder(applyZ0cut=True, maxDeltaZ0=1))
        # Calibrate to TES
        tools.append(
            taualgs.getEnergyCalibrationLC(correctEnergy=True,
                                           correctAxis=False,
                                           postfix='_onlyEnergy'))
        # Calculate cell-based quantities: strip variables, EM and Had energies/radii, centFrac, isolFrac and ring energies
        tools.append(taualgs.getCellVariables(cellConeSize=0.2))
        # tools.append(taualgs.getElectronVetoVars())
        # Lifetime variables
        tools.append(taualgs.getTauVertexVariables())
        # Variables combining tracking and calorimeter information
        tools.append(taualgs.getTauCommonCalcVars())
        # Cluster-based sub-structure, with dRMax also
        tools.append(taualgs.getTauSubstructure())
        # tools.append(taualgs.getEnergyCalibrationLC(correctEnergy=False, correctAxis=True, postfix='_onlyAxis'))
        tools.append(taualgs.getPileUpCorrection())

        for tool in tools:
            tool.inTrigger = True
            tool.calibFolder = 'TrigTauRec/00-11-02/'
            pass

        self.Tools = tools

        ## add beam type flag
        from AthenaCommon.BeamFlags import jobproperties
        self.BeamType = jobproperties.Beam.beamType()
Exemple #24
0
    def __init__(self, name="TrigMuSuperEF", **kwargs):
        kwargs.setdefault("doInsideOut", True)
        kwargs.setdefault("doOutsideIn", True)
        kwargs.setdefault("insideOutFirst", False)
        kwargs.setdefault("fullScan", False)
        kwargs.setdefault("StandaloneOnly", False)
        kwargs.setdefault("CombinerOnly", False)
        kwargs.setdefault("CaloTagOnly", False)
        kwargs.setdefault("TMEF_standaloneTrackTool",
                          "TrigMuonEFStandaloneTrackTool")
        kwargs.setdefault("MuonCombinedTool", "TMEF_MuonCombinedTool")
        kwargs.setdefault("TrkToTrackParticleConvTool",
                          "TMEF_TrkToTrackParticleConvTool")
        kwargs.setdefault("MuonCreatorTool", "TMEF_MuonCreatorTool")
        kwargs.setdefault("deltaEtaRoI", 0.2)
        kwargs.setdefault("deltaPhiRoI", 0.2)
        kwargs.setdefault("UseL2Info", False)
        kwargs.setdefault("DoCache", True)

        doTrigMuonEF = kwargs["doOutsideIn"]
        doTrigMuGirl = kwargs["doInsideOut"]
        doStandaloneOnly = kwargs["StandaloneOnly"]
        doFullScan = kwargs["fullScan"]
        doCaloTagOnly = kwargs["CaloTagOnly"]
        combinerOnly = kwargs["CombinerOnly"]
        doCosmics = jobproperties.Beam.beamType == 'cosmics'

        # turn on seeded data decoding by default
        TriggerFlags.MuonSlice.doEFRoIDrivenAccess = True

        # make instance
        super(TrigMuSuperEFConfig, self).__init__(name, **kwargs)

        # setup monitoring depending on configuration
        monTools = []
        # top level histograms use Combined Muons
        if not doStandaloneOnly:
            monTools.append(TrigMuSuperEFMonitoring())
            monTools.append(TrigMuSuperEFValidationMonitoring())
        # only add TrigMuonEF monitoring if it is run
        if doTrigMuonEF:
            if not combinerOnly:
                monTools.append(TrigMuonEFStandaloneToolMonitoring())
                monTools.append(TrigMuonEFStandaloneToolValidationMonitoring())
            if not doStandaloneOnly:
                monTools.append(TrigMuonEFCombinerToolMonitoring())
                monTools.append(TrigMuonEFCombinerToolValidationMonitoring())

        from AthenaCommon.CfgGetter import getPublicTool, getPublicToolClone
        self.StauCreatorTool = getPublicToolClone("TMEF_StauCreatorTool",
                                                  "TMEF_MuonCreatorTool",
                                                  BuildStauContainer=True)
        # only add TrigMuGirl monitoring if it is run
        # if doTrigMuGirl:
        kwargs.setdefault("MuGirlTool",
                          getPublicTool("TMEF_MuonInsideOutRecoTool"))
        #from TrigMuGirl.TrigMuGirlMonitoring import TrigMuGirlToolMonitoring
        #montool = TrigMuGirlToolMonitoring()
        #print montool
        #monTools.append( montool )

        # turn off PrepRawData decoders in MuGirl
        if doTrigMuGirl:
            from MuGirlCandidate.MuGirlCandidateConf import MuGirlNS__CandidateTool
            MuGirlNS__CandidateTool.doDecoding = False

        if self.UseL2Info:
            self.TMEF_standaloneTrackTool.useL2Hits = True
        else:
            self.TMEF_standaloneTrackTool.useL2Hits = False

        # always add timing monitoring
        timetool = TrigTimeHistToolConfig("Time")
        timetool.NumberOfHistBins = 100
        timetool.TimerHistLimits = [0, 1000]
        monTools.append(timetool)

        self.AthenaMonTools = monTools
Exemple #25
0
    def __init__(self,
                 name="TrigTauRecMerged_TauPrecisionMVA",
                 doMVATES=False,
                 doTrackBDT=False,
                 doRNN=False):

        super(TrigTauRecMerged_TauPrecisionMVA, self).__init__(name)

        self._mytools = []

        # monitoring part. To switch off do in topOption TriggerFlags.enableMonitoring = []
        from TrigTauRec.TrigTauRecMonitoring import TrigTauRecValidationMonitoring, TrigTauRecOnlineMonitoring
        validation = TrigTauRecValidationMonitoring()
        online = TrigTauRecOnlineMonitoring()

        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("Time")
        self.AthenaMonTools = [time, validation, online]

        import TrigTauRec.TrigTauAlgorithmsHolder as taualgs
        tools = []

        # using same prefix as in TauPrecision sequence should be safe if tools with different configurations have different names
        # e.g. TauTrackFinder in 2016 using dz0=2mm instead of 1mm in 2017
        taualgs.setPrefix("TrigTau_")

        # Collection name
        self.OutputCollection = "TrigTauRecMerged"

        # Include full set of tools

        # Set seedcalo energy scale (Full RoI)
        tools.append(taualgs.getJetSeedBuilder())
        # Associate RoI vertex or Beamspot to tau - don't use TJVA
        tools.append(taualgs.getTauVertexFinder(
            doUseTJVA=False))  #don't use TJVA by default
        # Set LC energy scale (0.2 cone) and intermediate axis (corrected for vertex: useless at trigger)
        tools.append(taualgs.getTauAxis())

        # for now, use 'doMVATES=False' to detect tracktwoEF, instead of introducing new flag
        if not doMVATES:
            # Count tracks with deltaZ0 cut of 1mm for tracktwoEF
            tools.append(
                taualgs.getTauTrackFinder(applyZ0cut=True, maxDeltaZ0=1))
        else:
            # tightened to 0.75 mm for tracktwoMVA (until the track BDT can be used)
            tools.append(
                taualgs.getTauTrackFinder(applyZ0cut=True,
                                          maxDeltaZ0=0.75,
                                          prefix='TrigTauTightDZ_'))

        if doTrackBDT:
            # BDT track classification
            tools.append(taualgs.getTauTrackClassifier())

        # Calibrate to calo TES
        tools.append(
            taualgs.getEnergyCalibrationLC(correctEnergy=True,
                                           correctAxis=False,
                                           postfix='_onlyEnergy'))

        if doMVATES:
            # Compute MVA TES (ATR-17649), stores MVA TES as default tau pt()
            tools.append(taualgs.getMvaTESVariableDecorator())
            tools.append(taualgs.getMvaTESEvaluator())

        # Calculate cell-based quantities: strip variables, EM and Had energies/radii, centFrac, isolFrac and ring energies
        tools.append(taualgs.getCellVariables(cellConeSize=0.2))
        # tools.append(taualgs.getElectronVetoVars())
        # Lifetime variables
        tools.append(taualgs.getTauVertexVariables())
        # Variables combining tracking and calorimeter information
        tools.append(taualgs.getTauCommonCalcVars())
        # Cluster-based sub-structure, with dRMax also
        tools.append(taualgs.getTauSubstructure())
        # tools.append(taualgs.getEnergyCalibrationLC(correctEnergy=False, correctAxis=True, postfix='_onlyAxis'))
        tools.append(taualgs.getPileUpCorrection())

        if doRNN:
            # RNN tau ID
            tools.append(
                taualgs.getTauJetRNNEvaluator(
                    NetworkFile0P="rnnid_config_0p_v3.json",
                    NetworkFile1P="rnnid_config_1p_v3.json",
                    NetworkFile3P="rnnid_config_mp_v3.json",
                    MaxTracks=10,
                    MaxClusters=6,
                    MaxClusterDR=1.0))
            # flattened RNN score and WP
            tools.append(taualgs.getTauWPDecoratorJetRNN())

        for tool in tools:
            tool.inTrigger = True
            tool.calibFolder = 'TrigTauRec/00-11-02/'
            pass

        self.Tools = tools

        ## add beam type flag
        from AthenaCommon.BeamFlags import jobproperties
        self.BeamType = jobproperties.Beam.beamType()
Exemple #26
0
    def __init__(self, name="SCTClustering_Electron_EF", type="electron"):
        super(InDet__SCT_TrgClusterization, self).__init__(name)

        from AthenaCommon.AppMgr import ToolSvc
        from InDetTrigRecExample.InDetTrigFlags import InDetTrigFlags

        from AthenaCommon.AppMgr import ServiceMgr as svcMgr
        from SCT_ConditionsTools.SCT_ConditionsToolsConf import SCT_ByteStreamErrorsTool
        from InDetTrigRecExample.InDetTrigConditionsAccess import SCT_ConditionsSetup
        InDetTrigBSErrorTool = SCT_ByteStreamErrorsTool(
            name=SCT_ConditionsSetup.instanceName(
                "InDetSCT_ByteStreamErrorsTool"))

        from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConf import SCT_RodDecoder
        InDetTrigSCTRodDecoder = SCT_RodDecoder(name="InDetTrigSCTRodDecoder")
        ToolSvc += InDetTrigSCTRodDecoder
        if (InDetTrigFlags.doPrintConfigurables()):
            print(InDetTrigSCTRodDecoder)

        from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConf import SCTRawDataProviderTool
        from InDetTrigRecExample.InDetTrigConditionsAccess import SCT_ConditionsSetup
        InDetTrigSCTRawDataProviderTool = SCTRawDataProviderTool(
            name="InDetTrigSCTRawDataProviderTool",
            Decoder=InDetTrigSCTRodDecoder)
        ToolSvc += InDetTrigSCTRawDataProviderTool

        from InDetTrigRawDataProvider.InDetTrigRawDataProviderConf import InDet__TrigSCTRawDataProvider
        InDetTrigSCTRawDataProvider = \
            InDet__TrigSCTRawDataProvider(name="TrigSCTRawDataProvider_EF",
                                          RDOKey = EF_SCTRDOKey,
                                          RawDataTool = InDetTrigSCTRawDataProviderTool)
        ToolSvc += InDetTrigSCTRawDataProvider

        from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigClusterMakerTool

        from SCT_ConditionsTools.SCT_ConditionsToolsConf import SCT_ConditionsSummaryTool
        self.conditionsSummaryTool = SCT_ConditionsSummaryTool(
            SCT_ConditionsSetup.instanceName(
                'InDetSCT_ConditionsSummaryToolWithoutFlagged'))

        # SCT_ClusteringTool (public)
        from SiClusterizationTool.SiClusterizationToolConf import InDet__SCT_ClusteringTool
        InDetTrigSCT_ClusteringTool = \
            InDet__SCT_ClusteringTool(name          = "InDetTrigSCT_ClusteringTool",
                                      globalPosAlg  = InDetTrigClusterMakerTool,
                                      conditionsTool = self.conditionsSummaryTool
                                      )
        if InDetTrigFlags.doSCTIntimeHits():
            if InDetTrigFlags.InDet25nsec():
                InDetTrigSCT_ClusteringTool.timeBins = "01X"
            else:
                InDetTrigSCT_ClusteringTool.timeBins = "X1X"

        ToolSvc += InDetTrigSCT_ClusteringTool

        self.RawDataProvider = InDetTrigSCTRawDataProvider
        self.clusteringTool = InDetTrigSCT_ClusteringTool
        self.SCT_RDOContainerName = EF_SCTRDOKey

        from InDetTrigRecExample.InDetTrigSliceSettings import InDetTrigSliceSettings
        self.EtaHalfWidth = InDetTrigSliceSettings[('etaHalfWidth', type)]
        self.PhiHalfWidth = InDetTrigSliceSettings[('phiHalfWidth', type)]
        self.doFullScan = InDetTrigSliceSettings[('doFullScan', type)]

        if InDetTrigFlags.cutSCTOccupancy():
            self.maxRDOs = 384  #used to be 77 but it was reached quite frequently

        #monitoring
        from InDetTrigPrepRawDataFormat.InDetTrigPrepRawDataFormatMonitoring import SctTrigPrepRawDataFormatValidationMonitor
        from InDetTrigPrepRawDataFormat.InDetTrigPrepRawDataFormatMonitoring import SctTrigPrepRawDataFormatOnlineMonitor
        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        scttime = TrigTimeHistToolConfig("SctTime")
        scttime.TimerHistLimits = [0, 100]
        self.AthenaMonTools = [
            SctTrigPrepRawDataFormatValidationMonitor(type=type),
            SctTrigPrepRawDataFormatOnlineMonitor(type=type), scttime
        ]
Exemple #27
0
    def __init__(self,
                 instance,
                 name,
                 PriVtxKey="xPrimVx",
                 TrackKey="InDetTrigTrackingxAODCnv_Bjet_IDTrig"):
        super(GSCFexSplit, self).__init__(name)

        mlog = logging.getLogger('BtagHypoConfig.py')

        AllowedInstances = ["EF", "MuJetChain"]

        if instance not in AllowedInstances:
            mlog.error("Instance " + instance + " is not supported!")
            return None

        self.JetKey = "SplitJet"
        if instance == "MuJetChain":
            self.JetKey = "FarawayJet"

        self.PriVtxKey = PriVtxKey
        self.TrackKey = TrackKey

        # IMPORT OFFLINE TOOLS
        self.setupOfflineTools = True
        if self.setupOfflineTools:
            if JetConfigSetupStatus == None:
                self.setupOfflineTools = False
            else:
                #self.GSCCalibrationTool = jrcf.find("AntiKt", 0.4, "EMTopo", "ajg", "reco", "Kt4")
                #print self.GSCCalibrationTool
                myGSCTool = JetCalibrationTool(
                    "myJCTool_trigger",
                    JetCollection="AntiKt4EMTopo",
                    ConfigFile=
                    "JES_data2016_data2015_Recommendation_Dec2016_rel21.config",
                    CalibSequence="JetArea_EtaJES_GSC_Insitu",
                    RhoKey="HLTKt4EMTopoEventShape",
                    IsData=True,
                    #DoTrigger = True
                )
                from AthenaCommon.AppMgr import ToolSvc
                ToolSvc += myGSCTool
                self.GSCCalibrationTool = myGSCTool
                print "Printing GSCCalibrationTool"
                print self.GSCCalibrationTool
                #JetCalibrationTool("myJCTool_trigger",
                #   IsData=True,
                #   ConfigFile="JES_2015dataset_recommendation_Feb2016.config",
                #   CalibSequence="JetArea_EtaJES_GSC",
                #   JetCollection="AntiKt4EMTopo")

        # MONITORING
        from TrigBjetHypo.TrigGSCFexMonitoring import TrigEFGSCFexValidationMonitoring, TrigEFGSCFexOnlineMonitoring  #commented here
        validation = TrigEFGSCFexValidationMonitoring()  #commented here
        online = TrigEFGSCFexOnlineMonitoring()  #commented here

        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("TimeHistogramForTrigBjetHypo")
        time.TimerHistLimits = [0, 2]

        self.AthenaMonTools = [time, validation, online]  #commented here
Exemple #28
0
    def __init__(self, name="PixelClustering_Electron_EF", type="electron"):
        super(InDet__Pixel_TrgClusterization, self).__init__(name)

        from AthenaCommon.AppMgr import ToolSvc
        # configure tools used

        from PixelRawDataByteStreamCnv.PixelRawDataByteStreamCnvConf import PixelRodDecoder
        InDetTrigPixelRodDecoder = PixelRodDecoder(
            name="InDetTrigPixelRodDecoder")
        #InDetTrigPixelRodDecoder.OutputLevel=1
        # Disable duplcated pixel check for data15 because duplication mechanism was used.
        from RecExConfig.RecFlags import rec
        if len(rec.projectName()) >= 6 and rec.projectName()[:6] == "data15":
            InDetTrigPixelRodDecoder.CheckDuplicatedPixel = False
        ToolSvc += InDetTrigPixelRodDecoder

        from PixelRawDataByteStreamCnv.PixelRawDataByteStreamCnvConf import PixelRawDataProviderTool
        InDetTrigPixelRawDataProviderTool = PixelRawDataProviderTool(
            name="InDetTrigPixelRawDataProviderTool",
            Decoder=InDetTrigPixelRodDecoder)
        ToolSvc += InDetTrigPixelRawDataProviderTool

        from InDetTrigRawDataProvider.InDetTrigRawDataProviderConf import InDet__TrigPixRawDataProvider

        InDetTrigPixRawDataProvider = \
            InDet__TrigPixRawDataProvider(name="TrigPixRawDataProvider_EF",
                                          RawDataProviderTool = InDetTrigPixelRawDataProviderTool,
                                          RDOKey = EF_PixRDOKey)
        ToolSvc += InDetTrigPixRawDataProvider

        # ClusterMakerTool (public), needed by Pixel and SCT Clusterization
        from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigClusterMakerTool

        from InDetTrigRecExample.InDetTrigConditionsAccess import PixelConditionsSetup

        # MergedPixelTool (public)
        from SiClusterizationTool.SiClusterizationToolConf import InDet__MergedPixelsTool
        from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigPixelConditionsSummaryTool
        InDetTrigMergedPixelsTool = InDet__MergedPixelsTool(
            name="InDetTrigMergedPixelsTool",
            globalPosAlg=InDetTrigClusterMakerTool,
            PixelConditionsSummaryTool=InDetTrigPixelConditionsSummaryTool,
            #UseSpecialPixelMap = False  #simpler setup for EFID
            UseSpecialPixelMap=True,
            MinimalSplitSize=0,
            MaximalSplitSize=49,
            MinimalSplitProbability=0,
        )
        # Enable duplcated RDO check for data15 because duplication mechanism was used.
        from RecExConfig.RecFlags import rec
        if len(rec.projectName()) >= 6 and rec.projectName()[:6] == "data15":
            InDetTrigMergedPixelsTool.CheckDuplicatedRDO = True

        ToolSvc += InDetTrigMergedPixelsTool

        # PixelGangedAmbiguitiesFinder tool (public)
        from SiClusterizationTool.SiClusterizationToolConf import InDet__PixelGangedAmbiguitiesFinder
        InDetTrigPixelGangedAmbiguitiesFinder = InDet__PixelGangedAmbiguitiesFinder(
            name="InDetTrigPixelGangedAmbiguitiesFinder")
        ToolSvc += InDetTrigPixelGangedAmbiguitiesFinder

        self.RawDataProvider = InDetTrigPixRawDataProvider
        self.clusteringTool = InDetTrigMergedPixelsTool
        self.gangedAmbiguitiesFinder = InDetTrigPixelGangedAmbiguitiesFinder
        self.Pixel_RDOContainerName = EF_PixRDOKey
        from AthenaCommon.GlobalFlags import globalflags
        self.skipBSDecoding = globalflags.InputFormat == 'pool' and not TriggerFlags.doTransientByteStream(
        )

        from InDetTrigRecExample.InDetTrigSliceSettings import InDetTrigSliceSettings
        self.EtaHalfWidth = InDetTrigSliceSettings[('etaHalfWidth', type)]
        self.PhiHalfWidth = InDetTrigSliceSettings[('phiHalfWidth', type)]
        self.doFullScan = InDetTrigSliceSettings[('doFullScan', type)]

        #monitoring
        from InDetTrigPrepRawDataFormat.InDetTrigPrepRawDataFormatMonitoring import PixelTrigPrepRawDataFormatValidationMonitor
        from InDetTrigPrepRawDataFormat.InDetTrigPrepRawDataFormatMonitoring import PixelTrigPrepRawDataFormatOnlineMonitor
        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        pixtime = TrigTimeHistToolConfig("PixTime")
        pixtime.TimerHistLimits = [0, 100]
        self.AthenaMonTools = [
            PixelTrigPrepRawDataFormatValidationMonitor(type=type),
            PixelTrigPrepRawDataFormatOnlineMonitor(type=type), pixtime
        ]
Exemple #29
0
    def __init__(self, name="EFBMuMuXFex_BcMuMuDs"):
        super(TrigEFBMuMuXFex, self).__init__(name)

        #self.VertexFitterTool = ToolSvc.TrigBphysFitter
        # AcceptAll flag: if true take events regardless of cuts
        self.AcceptAll = False
        # muon part
        self.OppositeSign = True  # if check opposite sign of muons
        self.LowerMuMuMassCut = 100.
        self.UpperMuMuMassCut = 5500.
        ##self.LowerMuVtxMassCut = 100.
        ##self.UpperMuVtxMassCut = 5500.
        self.MuVtxChi2Cut = 40.
        # B{+/-} -> K{+/-} Mu Mu
        self.DoB_KMuMuDecay = False
        # Bd -> K*(892) Mu Mu
        self.DoBd_KstarMuMuDecay = False
        # Bs -> Phi(1020) Mu Mu
        self.DoBs_Phi1020MuMuDecay = False
        # Lb -> L Mu Mu
        self.DoLb_LambdaMuMuDecay = False
        # Bc -> D_s* Mu Mu
        self.DoBc_DsMuMuDecay = True
        self.LowerPhiDs_MassCut = 980.
        self.UpperPhiDs_MassCut = 1080.
        self.LowerDs_MassCut = 1600.
        self.UpperDs_MassCut = 2400.
        self.LowerBc_DsMuMuMassCut = 5450.
        self.UpperBc_DsMuMuMassCut = 7050.
        self.DoDs_Vertexing = True
        self.DoBc_DsMuMuVertexing = True
        self.DoBc_DsMuMuCascade = True
        self.DsVtxChi2Cut = 90.
        self.BcVtxChi2Cut = 120.
        self.MaxBcToStore = 1000

        # Bc -> D+ Mu Mu
        self.DoBc_DplusMuMuDecay = True
        self.LowerDplus_MassCut = 1500.
        self.UpperDplus_MassCut = 2300.
        self.LowerDplus_PtCut = 2000.
        self.LowerBc_DplusMuMuMassCut = 5450.
        self.UpperBc_DplusMuMuMassCut = 7050.
        self.LowerBcDplus_PtCut = 8000.
        ##self.LowerDplus_LxyCut = 0.3
        self.LowerDplus_LxyCut = 0.01
        self.DoDplus_Vertexing = True
        self.DoBc_DplusMuMuVertexing = True
        self.DoBc_DplusMuMuCascade = True
        self.DplusVtxChi2Cut = 90.
        self.BcDplusVtxChi2Cut = 180.
        self.MaxBcDplusToStore = 1000

        # Bc -> Dstar Mu Mu
        self.DoBc_DstarMuMuDecay = True
        self.LowerD0Dstar_MassCut = 1500.
        self.UpperD0Dstar_MassCut = 2300.
        self.UpperDstar_DMCut = 180.
        self.LowerDstar_PtCut = 2000.
        self.LowerDstarKpi_PtCut = 1800.
        self.LowerBc_DstarMuMuMassCut = 5450.
        self.UpperBc_DstarMuMuMassCut = 7050.
        self.LowerBcDstar_PtCut = 8000.
        self.LowerD0Dstar_LxyCut = -999.
        self.DoD0Dstar_Vertexing = True
        self.DoBc_DstarMuMuVertexing = True
        self.DoBc_DstarMuMuCascade = True
        self.D0DstarVtxChi2Cut = 90.
        self.BcDstarVtxChi2Cut = 120.
        self.MaxBcDstarToStore = 1000

        # Bc -> D0 (Dstar with lost pi_s) Mu Mu
        self.DoBc_D0MuMuDecay = True
        self.LowerD0_MassCut = 1500.
        self.UpperD0_MassCut = 2300.
        self.LowerD0_PtCut = 2000.
        self.LowerBc_D0MuMuMassCut = 5250.
        self.UpperBc_D0MuMuMassCut = 6911.
        self.LowerBcD0_PtCut = 8000.
        self.LowerD0_LxyCut = 0.01
        self.DoD0_Vertexing = True
        self.DoBc_D0MuMuVertexing = True
        self.DoBc_D0MuMuCascade = True
        self.D0VtxChi2Cut = 90.
        self.BcD0VtxChi2Cut = 120.
        self.MaxBcD0ToStore = 1000

        from TrigBphysHypo.TrigEFBMuMuXFexMonitoring import EFBMuMuXFexValidationMonitoring
        validation = EFBMuMuXFexValidationMonitoring()

        from TrigBphysHypo.TrigEFBMuMuXFexMonitoring import EFBMuMuXFexOnlineMonitoring_BcMuMuDs
        online = EFBMuMuXFexOnlineMonitoring_BcMuMuDs()

        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("Time")

        self.AthenaMonTools = [validation, online, time]
Exemple #30
0
    def __init__(self, name="TrigMuSuperEF", **kwargs):
        kwargs.setdefault("doInsideOut", True)
        kwargs.setdefault("doOutsideIn", True)
        kwargs.setdefault("insideOutFirst", False)
        kwargs.setdefault("fullScan", False)
        kwargs.setdefault("StandaloneOnly", False)
        kwargs.setdefault("CombinerOnly", False)
        kwargs.setdefault("CaloTagOnly", False)
        kwargs.setdefault("TMEF_standaloneTrackTool",
                          "TrigMuonEFStandaloneTrackTool")
        kwargs.setdefault("MuonCombinedTool", "TMEF_MuonCombinedTool")
        kwargs.setdefault("TrkToTrackParticleConvTool",
                          "TMEF_TrkToTrackParticleConvTool")
        kwargs.setdefault("MuonCreatorTool", "TMEF_MuonCreatorTool")
        kwargs.setdefault("deltaEtaRoI", 0.2)
        kwargs.setdefault("deltaPhiRoI", 0.2)
        kwargs.setdefault("UseL2Info", False)
        kwargs.setdefault("DoCache", True)

        from TrkExTools.AtlasExtrapolator import AtlasExtrapolator
        from TrackToCalo.TrackToCaloConf import Trk__ParticleCaloExtensionTool

        from MuonTGRecTools.MuonTGRecToolsConf import Muon__MuonSystemExtensionTool
        pcExtensionTool = Trk__ParticleCaloExtensionTool(
            Extrapolator=AtlasExtrapolator())

        muonExtTool = Muon__MuonSystemExtensionTool(
            Extrapolator=AtlasExtrapolator(),
            ParticleCaloExtensionTool=pcExtensionTool)
        kwargs.setdefault("MuonSystemExtensionTool", muonExtTool)

        doTrigMuonEF = kwargs["doOutsideIn"]
        doTrigMuGirl = kwargs["doInsideOut"]
        doStandaloneOnly = kwargs["StandaloneOnly"]
        combinerOnly = kwargs["CombinerOnly"]

        # turn on seeded data decoding by default
        TriggerFlags.MuonSlice.doEFRoIDrivenAccess = True

        # make instance
        super(TrigMuSuperEFConfig, self).__init__(name, **kwargs)

        # setup monitoring depending on configuration
        monTools = []
        # top level histograms use Combined Muons
        if not doStandaloneOnly:
            monTools.append(TrigMuSuperEFMonitoring())
            monTools.append(TrigMuSuperEFValidationMonitoring())
        # only add TrigMuonEF monitoring if it is run
        if doTrigMuonEF:
            if not combinerOnly:
                monTools.append(TrigMuonEFStandaloneToolMonitoring())
                monTools.append(TrigMuonEFStandaloneToolValidationMonitoring())
            if not doStandaloneOnly:
                monTools.append(TrigMuonEFCombinerToolMonitoring())
                monTools.append(TrigMuonEFCombinerToolValidationMonitoring())

        from AthenaCommon.CfgGetter import getPublicTool, getPublicToolClone
        self.StauCreatorTool = getPublicToolClone("TMEF_StauCreatorTool",
                                                  "TMEF_MuonCreatorTool",
                                                  BuildStauContainer=True)
        # only add TrigMuGirl monitoring if it is run
        if doTrigMuGirl:
            self.MuGirlTool = getPublicTool("TMEF_MuonInsideOutRecoTool")

        if self.UseL2Info:
            self.TMEF_standaloneTrackTool.useL2Hits = True
        else:
            self.TMEF_standaloneTrackTool.useL2Hits = False

        # always add timing monitoring
        timetool = TrigTimeHistToolConfig("Time")
        timetool.NumberOfHistBins = 100
        timetool.TimerHistLimits = [0, 1000]
        monTools.append(timetool)

        self.AthenaMonTools = monTools
Exemple #31
0
    def __init__(self, instance, version, algo, name):
        super(BjetFexFTKVtx, self).__init__(name)

        mlog = logging.getLogger('BjetHypoConfig.py')

        AllowedInstances = ["EF", "MuJetChain"]
        AllowedVersions = ["2012"]
        AllowedAlgos = ["EFID"]

        if instance not in AllowedInstances:
            mlog.error("Instance " + instance + " is not supported!")
            return None

        if version not in AllowedVersions:
            mlog.error("Version " + version + " is not supported!")
            return None

        self.JetKey = "SplitJet"
        # Hack to get muon-jet chains working properly
        if instance == "MuJetChain":
            self.JetKey = "FarawayJet"
            instance = "EF"

        if instance == "EF":
            calibInstance = "EF"

        self.PriVtxKey = "PrimVertexFTK"  #"EFHistoPrmVtx"
        self.TrackKey = "InDetTrigTrackingxAODCnv_Bjet_IDTrig"

        self.par_0_MC = getTuning_par_0_MC(calibInstance)
        self.par_1_MC = getTuning_par_1_MC(calibInstance)
        self.par_0_DT = getTuning_par_0_DT(calibInstance)
        self.par_1_DT = getTuning_par_1_DT(calibInstance)

        self.SizeIP1D_Grade1 = getTuning_SizeIP1D_Grade1(calibInstance)
        self.bIP1D_Grade1 = getTuning_bIP1D_Grade1(calibInstance)
        self.uIP1D_Grade1 = getTuning_uIP1D_Grade1(calibInstance)
        self.SizeIP2D_Grade1 = getTuning_SizeIP2D_Grade1(calibInstance)
        self.bIP2D_Grade1 = getTuning_bIP2D_Grade1(calibInstance)
        self.uIP2D_Grade1 = getTuning_uIP2D_Grade1(calibInstance)
        self.SizeIP3D_Grade1 = getTuning_SizeIP3D_Grade1(calibInstance)
        self.bIP3D_Grade1 = getTuning_bIP3D_Grade1(calibInstance)
        self.uIP3D_Grade1 = getTuning_uIP3D_Grade1(calibInstance)

        self.SizeIP1D_Grade2 = getTuning_SizeIP1D_Grade2(calibInstance)
        self.bIP1D_Grade2 = getTuning_bIP1D_Grade2(calibInstance)
        self.uIP1D_Grade2 = getTuning_uIP1D_Grade2(calibInstance)
        self.SizeIP2D_Grade2 = getTuning_SizeIP2D_Grade2(calibInstance)
        self.bIP2D_Grade2 = getTuning_bIP2D_Grade2(calibInstance)
        self.uIP2D_Grade2 = getTuning_uIP2D_Grade2(calibInstance)
        self.SizeIP3D_Grade2 = getTuning_SizeIP3D_Grade2(calibInstance)
        self.bIP3D_Grade2 = getTuning_bIP3D_Grade2(calibInstance)
        self.uIP3D_Grade2 = getTuning_uIP3D_Grade2(calibInstance)

        self.SizeSV = getTuning_SizeSV(calibInstance)
        self.bSV = getTuning_bSV(calibInstance)
        self.uSV = getTuning_uSV(calibInstance)
        self.SizeMVtx = getTuning_SizeMVtx(calibInstance)
        self.bMVtx = getTuning_bMVtx(calibInstance)
        self.uMVtx = getTuning_uMVtx(calibInstance)
        self.SizeEVtx = getTuning_SizeEVtx(calibInstance)
        self.bEVtx = getTuning_bEVtx(calibInstance)
        self.uEVtx = getTuning_uEVtx(calibInstance)
        self.SizeNVtx = getTuning_SizeNVtx(calibInstance)
        self.bNVtx = getTuning_bNVtx(calibInstance)
        self.uNVtx = getTuning_uNVtx(calibInstance)

        self.AlgoId = -1

        if instance == "EF":
            if algo == "EFID":
                self.AlgoId = 1

        if self.AlgoId == -1:
            mlog.error("AlgoId is wrongly set!")
            return None

        ## Unset = -1; HLT jet direction = 1; HLT track-jet direction = 2; LVL1 jet RoI direction =3
        self.UseJetDirection = -1

        if version == "2012":
            self.UseJetDirection = 1
            self.RetrieveHLTJets = True

        if self.UseJetDirection == -1:
            mlog.error("UseJetDirection is wrongly set!")
            return None

        ## Unset = -1; EF jets = 3
        self.TagHLTJets = -1

        if version == "2012":
            if instance == "EF":
                self.TagHLTJets = 3

        if self.TagHLTJets == -1:
            mlog.error("TagHLTJets is wrongly set!")
            return None

        if instance == "EF":
            self.Instance = "EF"

        self.UseBeamSpotFlag = False
        self.SetBeamSpotWidth = 1 * mm
        self.UseParamFromData = False
        self.useGrading = True

        self.UseErrIPParam = False
        self.UseEtaPhiTrackSel = False

        self.Taggers = [
            "IP1D", "IP2D", "IP3D", "CHI2", "MVTX", "EVTX", "NVTX", "SVTX",
            "COMB"
        ]

        if algo == "EFID":
            self.TrkSelGrade1_Chi2 = 0.0
            self.TrkSelGrade1_Innermost = 1
            self.TrkSelGrade1_NextToInnermost = 0
            self.TrkSelGrade1_PixHits = 2
            self.TrkSelGrade1_SiHits = 7
            self.TrkSelGrade1_D0 = 1 * mm
            self.TrkSelGrade1_Z0 = 1.5 * mm
            self.TrkSelGrade1_Pt = 1 * GeV
            self.TrkSelGrade1_Eta = 0.4
            self.TrkSelGrade1_Phi = 0.4
            self.TrkSelGrade1_R = 0.4
            self.TrkSelGrade2_Chi2 = 0.0
            self.TrkSelGrade2_Innermost = 0
            self.TrkSelGrade2_NextToInnermost = 1
            self.TrkSelGrade2_PixHits = 2
            self.TrkSelGrade2_SiHits = 7
            self.TrkSelGrade2_D0 = 1 * mm
            self.TrkSelGrade2_Z0 = 1.5 * mm
            self.TrkSelGrade2_Pt = 1 * GeV
            self.TrkSelGrade2_Eta = 0.4
            self.TrkSelGrade2_Phi = 0.4
            self.TrkSelGrade2_R = 0.4

        if instance == "EF":
            from TrigBjetHypo.TrigBjetFexMonitoring import TrigEFBjetFexValidationMonitoring, TrigEFBjetFexOnlineMonitoring
            validation = TrigEFBjetFexValidationMonitoring()
            online = TrigEFBjetFexOnlineMonitoring()

        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("TimeHistogramForTrigBjetHypo")
        time.TimerHistLimits = [0, 2]

        self.AthenaMonTools = [time, validation, online]
Exemple #32
0
    def __init__(self, name="EFBMuMuXHypo_1"):
        super(TrigEFBMuMuXHypo, self).__init__(name)

        # AcceptAll flag: if true take events regardless of cuts
        self.AcceptAll = False
        # decay modes flags
        self.AcceptBplus = True
        self.AcceptBd = True
        self.AcceptBs = True
        self.AcceptLb = True
        self.AcceptBc = False
        self.AcceptBcDplus = False
        self.AcceptBcDstar = False
        self.AcceptBcD0 = False
        # mass cuts
        # B+
        self.LowerBplusMassCut = 4400.
        self.UpperBplusMassCut = 5800.
        self.BplusChi2Cut = 50.
        # Bd
        self.LowerBdMassCut = 4600.
        self.UpperBdMassCut = 5900.
        self.BdChi2Cut = 60.
        self.LowerKstarMassCut = 700.
        self.UpperKstarMassCut = 1100.
        self.KstarChi2Cut = 400.
        # Bs
        self.LowerBsMassCut = 4800.
        self.UpperBsMassCut = 5800.
        self.BsChi2Cut = 60.
        self.LowerPhi1020MassCut = 940.
        self.UpperPhi1020MassCut = 1100.
        self.Phi1020Chi2Cut = 400.
        # Lb
        self.LowerLbMassCut = 5100.
        self.UpperLbMassCut = 6100.
        self.LbChi2Cut = 100.
        self.LowerLambdaMassCut = 1040.
        self.UpperLambdaMassCut = 1200.
        self.LambdaChi2Cut = 400.
        # Bc
        self.LowerBcMassCut = 5450.
        self.UpperBcMassCut = 7050.
        self.BcChi2Cut = 120.
        self.LowerDsMassCut = 1600.
        self.UpperDsMassCut = 2400.
        self.DsChi2Cut = 90.
        # BcDplus
        self.LowerBcDplusMassCut = 5450.
        self.UpperBcDplusMassCut = 7050.
        self.BcDplusChi2Cut = 180.
        self.LowerDplusMassCut = 1500.
        self.UpperDplusMassCut = 2300.
        self.DplusChi2Cut = 90.
        # BcDstar
        self.LowerBcDstarMassCut = 5450.
        self.UpperBcDstarMassCut = 7050.
        self.BcDstarChi2Cut = 120.
        self.LowerDstarMassCut = 1500.
        self.UpperDstarMassCut = 2500.
        self.DstarChi2Cut = 90.
        # BcD0
        self.LowerBcD0MassCut = 5250.
        self.UpperBcD0MassCut = 6911.
        self.BcD0Chi2Cut = 120.
        self.LowerD0MassCut = 1500.
        self.UpperD0MassCut = 2300.
        self.D0Chi2Cut = 90.

        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
        time = TrigTimeHistToolConfig("Time")