def selMuonPParts(name, DataType, downstreamSeq): """ Make ProtoParticles out of Downstream tracks """ unpacker = UnpackTrack(name+"UnpackTrack") # do we need this or is it here for historical reason ? unpacker.InputName="pRec/Downstream/FittedTracks" unpacker.OutputName="Rec/Downstream/FittedTracks" idalg = MuonIDAlg(name+"IDalg") cm=ConfiguredMuonIDs.ConfiguredMuonIDs( DataType ) #data=DaVinci().getProp("DataType")) cm.configureMuonIDAlg(idalg) idalg.TrackLocation = "Rec/Downstream/FittedTracks" idalg.MuonIDLocation = "Rec/Muon/MuonPID/Downstream" idalg.MuonTrackLocation = "Rec/Track/MuonForDownstream" # I would call it FromDownstream …but just to be »Klugscheißer« downprotoseq = GaudiSequencer(name+"ProtoPSeq") downprotos = ChargedProtoParticleMaker(name+"ProtoPMaker") downprotos.Inputs = ["Rec/Downstream/FittedTracks"] downprotos.Output = "Rec/ProtoP/"+name+"ProtoPMaker/ProtoParticles" downprotos.addTool( DelegatingTrackSelector, name="TrackSelector" ) #tracktypes = [ "Long","Upstream","Downstream","Ttrack","Velo","VeloR" ] # only downstream needed … tracktypes = ["Downstream"] #if (trackcont == "Best") : # tracktypes = [ "Long" ] downprotos.TrackSelector.TrackTypes = tracktypes selector = downprotos.TrackSelector for tsname in tracktypes: selector.addTool(TrackSelector,name=tsname) ts = getattr(selector,tsname) # Set Cuts ts.TrackTypes = [tsname] # ts.MinNDoF = 1 ts.MaxChi2Cut = 10 addmuonpid = ChargedProtoParticleAddMuonInfo(name+"addmuoninfo") addmuonpid.InputMuonPIDLocation = "Rec/Muon/MuonPID/Downstream" addmuonpid.ProtoParticleLocation = "Rec/ProtoP/"+name+"ProtoPMaker/ProtoParticles" #addmuonpid.OutputLevel = 0 combinedll = ChargedProtoCombineDLLsAlg(name+"CombineDLL") combinedll.ProtoParticleLocation = "Rec/ProtoP/"+name+"ProtoPMaker/ProtoParticles" #combinedll.OutputLevel = 0 # DST post treatment #TrackToDST(name+"TrackToDST").TracksInContainer = "Rec/Downstream/Tracks" #downprotoseq.Members += [ TrackToDST(name+"TrackToDST"), downprotos, addmuonpid, combinedll ] downprotoseq.Members += [ downprotos, addmuonpid, combinedll ] # DataOnDemandSvc().AlgMap.update( { "/Event/Rec/Downstream/Tracks" : unpacker.getFullName(), "/Event/Rec/Muon/MuonPID/Downstream" : idalg.getFullName(), # "/Event/Rec/ProtoP/"+name+"ProtoPMaker" : downprotoseq.getFullName() } ) return GSWrapper(name="WrappedDownMuonProtoPSeqFor"+name, sequencer=downprotoseq, output='Rec/ProtoP/' + name +'ProtoPMaker/ProtoParticles', requiredSelections = [ downstreamSeq])
def getMuonIDSeq(self): """ general method for MuonIDAlg configuration. Creates MuonIDAlg instance and configures it. Finally puts it in gaudi sequencer. """ if self.debug: print "# APPLYING GENERAL MUONID CONFIGURATION" ## create output gaudi sequencer myg = GaudiSequencer("MuonIDSeq") ## for the new algorithm ## create and configure MuonIDAlgLite instance if (self.newAlgo and self.data not in ['2008', '2009', 'MC09', 'Upgrade']): muid = MuonIDAlgLite() self.configureMuonIDAlgLite(muid) ismutool = CommonMuonTool() self.configureIsMuonTool(ismutool) dlltool = DLLMuonTool() self.configureDLLMuonTool(dlltool) mmtool = MakeMuonTool() self.configureMakeMuonTool(mmtool) muid.addTool(ismutool) muid.addTool(dlltool) muid.addTool(mmtool) ## for the new algorithm ## create and configure MuonIDAlgLite instance else: muid = MuonIDAlg() self.configureMuonIDAlg(muid) ## if kalman_foi: add the algorithm that looks for muon hits if self.kalman_foi: mmm = MakeMuonMeasurements() self.configureMakeMuonMeasurements(mmm) myg.Members.append(mmm) ## add to gaudi sequencer and return myg.Members.append(muid) return myg
def configureMuonIDAlg(self, muonid): """ general configuration of MuonIDAlg. Equivalent to old MuonID.py Also configures muonIDtool used as extra_info. This can either be chi2 or dist. Default chi2. """ if self.debug: print "# CONFIGURING MUONIDALG" ## check if input is already an instance or this must be created if isinstance(muonid, MuonIDAlg): mymuid = muonid else: mymuid = MuonIDAlg(str(muonid)) ## general MuonIDAlg properties mymuid.OverrideDB = self.info.OverrideDB if "UseUncrossed" in dir(self.info): mymuid.UseUncrossed = self.info.UseUncrossed mymuid.MomentumCuts = self.info.MomentumCuts mymuid.AllMuonTracks = self.info.AllMuonTracks mymuid.FindQuality = self.info.FindQuality mymuid.KalmanFoI = self.kalman_foi if "cosmics" in self.specialData: print "# MuonID WARNING: MuonTrack Fit disabled for SpecialData = cosmics" mymuid.FindQuality = False mymuid.XFOIParameter1 = self.info.XFOIParameter1 mymuid.XFOIParameter2 = self.info.XFOIParameter2 mymuid.XFOIParameter3 = self.info.XFOIParameter3 mymuid.YFOIParameter1 = self.info.YFOIParameter1 mymuid.YFOIParameter2 = self.info.YFOIParameter2 mymuid.YFOIParameter3 = self.info.YFOIParameter3 mymuid.FOIfactor = self.info.FOIfactor mymuid.PreSelMomentum = self.info.PreSelMomentum mymuid.distMuon = self.info.distMuon mymuid.distPion = self.info.distPion ## GL & SF & XCV: if "DLL_flag" in dir(self.info): mymuid.DLL_flag = self.info.DLL_flag if self.kalman_foi and self.info.DLL_flag == 0: print "# MuonID WARNING: KalmanFoi incompatible DLL_flag 0. Setting DLL_flag to 1" mymuid.DLL_flag = 1 if "step" in dir(self.info): mymuid.step = self.info.step if "nMax_bin" in dir(self.info): mymuid.nMax_bin = self.info.nMax_bin #Landau's paramateres: #Muons - Region1: if "MuLandauParameterR1_1" in dir(self.info): mymuid.MuLandauParameterR1_1 = self.info.MuLandauParameterR1_1 if "MuLandauParameterR1_2" in dir(self.info): mymuid.MuLandauParameterR1_2 = self.info.MuLandauParameterR1_2 if "MuLandauParameterR1_3" in dir(self.info): mymuid.MuLandauParameterR1_3 = self.info.MuLandauParameterR1_3 if "MuLandauParameterR1_4" in dir(self.info): mymuid.MuLandauParameterR1_4 = self.info.MuLandauParameterR1_4 if "MuLandauParameterR1_5" in dir(self.info): mymuid.MuLandauParameterR1_5 = self.info.MuLandauParameterR1_5 if "MuLandauParameterR1_6" in dir(self.info): mymuid.MuLandauParameterR1_6 = self.info.MuLandauParameterR1_6 if "MuLandauParameterR1_7" in dir(self.info): mymuid.MuLandauParameterR1_7 = self.info.MuLandauParameterR1_7 #Muons - Region2: if "MuLandauParameterR2_1" in dir(self.info): mymuid.MuLandauParameterR2_1 = self.info.MuLandauParameterR2_1 if "MuLandauParameterR2_2" in dir(self.info): mymuid.MuLandauParameterR2_2 = self.info.MuLandauParameterR2_2 if "MuLandauParameterR2_3" in dir(self.info): mymuid.MuLandauParameterR2_3 = self.info.MuLandauParameterR2_3 if "MuLandauParameterR2_4" in dir(self.info): mymuid.MuLandauParameterR2_4 = self.info.MuLandauParameterR2_4 if "MuLandauParameterR2_5" in dir(self.info): mymuid.MuLandauParameterR2_5 = self.info.MuLandauParameterR2_5 #Muons - Region3: if "MuLandauParameterR3_1" in dir(self.info): mymuid.MuLandauParameterR3_1 = self.info.MuLandauParameterR3_1 if "MuLandauParameterR3_2" in dir(self.info): mymuid.MuLandauParameterR3_2 = self.info.MuLandauParameterR3_2 if "MuLandauParameterR3_3" in dir(self.info): mymuid.MuLandauParameterR3_3 = self.info.MuLandauParameterR3_3 if "MuLandauParameterR3_4" in dir(self.info): mymuid.MuLandauParameterR3_4 = self.info.MuLandauParameterR3_4 if "MuLandauParameterR3_5" in dir(self.info): mymuid.MuLandauParameterR3_5 = self.info.MuLandauParameterR3_5 #Muons - Region4: if "MuLandauParameterR4_1" in dir(self.info): mymuid.MuLandauParameterR4_1 = self.info.MuLandauParameterR4_1 if "MuLandauParameterR4_2" in dir(self.info): mymuid.MuLandauParameterR4_2 = self.info.MuLandauParameterR4_2 if "MuLandauParameterR4_3" in dir(self.info): mymuid.MuLandauParameterR4_3 = self.info.MuLandauParameterR4_3 if "MuLandauParameterR4_4" in dir(self.info): mymuid.MuLandauParameterR4_4 = self.info.MuLandauParameterR4_4 if "MuLandauParameterR4_5" in dir(self.info): mymuid.MuLandauParameterR4_5 = self.info.MuLandauParameterR4_5 #Non-Muons - Region1-2-3-4: if "NonMuLandauParameterR1" in dir(self.info): mymuid.NonMuLandauParameterR1 = self.info.NonMuLandauParameterR1 if "NonMuLandauParameterR2" in dir(self.info): mymuid.NonMuLandauParameterR2 = self.info.NonMuLandauParameterR2 if "NonMuLandauParameterR3" in dir(self.info): mymuid.NonMuLandauParameterR3 = self.info.NonMuLandauParameterR3 if "NonMuLandauParameterR4" in dir(self.info): mymuid.NonMuLandauParameterR4 = self.info.NonMuLandauParameterR4 # Binning for the Distance for muons: if "nMupBinsR1" in dir(self.info): mymuid.nMupBinsR1 = self.info.nMupBinsR1 if "nMupBinsR2" in dir(self.info): mymuid.nMupBinsR2 = self.info.nMupBinsR2 if "nMupBinsR3" in dir(self.info): mymuid.nMupBinsR3 = self.info.nMupBinsR3 if "nMupBinsR4" in dir(self.info): mymuid.nMupBinsR4 = self.info.nMupBinsR4 if "MupBinsR1" in dir(self.info): mymuid.MupBinsR1 = self.info.MupBinsR1 if "MupBinsR2" in dir(self.info): mymuid.MupBinsR2 = self.info.MupBinsR2 if "MupBinsR3" in dir(self.info): mymuid.MupBinsR3 = self.info.MupBinsR3 if "MupBinsR4" in dir(self.info): mymuid.MupBinsR4 = self.info.MupBinsR4 ## Configure hyperbolic tangent tanh(dist2) parameters if "tanhScaleFactorsR1" in dir(self.info): mymuid.tanhScaleFactorsR1 = self.info.tanhScaleFactorsR1 if "tanhScaleFactorsR2" in dir(self.info): mymuid.tanhScaleFactorsR2 = self.info.tanhScaleFactorsR2 if "tanhScaleFactorsR3" in dir(self.info): mymuid.tanhScaleFactorsR3 = self.info.tanhScaleFactorsR3 if "tanhScaleFactorsR4" in dir(self.info): mymuid.tanhScaleFactorsR4 = self.info.tanhScaleFactorsR4 ## Signal muons if "tanhCumulHistoMuonR1_1" in dir(self.info): mymuid.tanhCumulHistoMuonR1_1 = self.info.tanhCumulHistoMuonR1_1 if "tanhCumulHistoMuonR1_2" in dir(self.info): mymuid.tanhCumulHistoMuonR1_2 = self.info.tanhCumulHistoMuonR1_2 if "tanhCumulHistoMuonR1_3" in dir(self.info): mymuid.tanhCumulHistoMuonR1_3 = self.info.tanhCumulHistoMuonR1_3 if "tanhCumulHistoMuonR1_4" in dir(self.info): mymuid.tanhCumulHistoMuonR1_4 = self.info.tanhCumulHistoMuonR1_4 if "tanhCumulHistoMuonR1_5" in dir(self.info): mymuid.tanhCumulHistoMuonR1_5 = self.info.tanhCumulHistoMuonR1_5 if "tanhCumulHistoMuonR1_6" in dir(self.info): mymuid.tanhCumulHistoMuonR1_6 = self.info.tanhCumulHistoMuonR1_6 if "tanhCumulHistoMuonR1_7" in dir(self.info): mymuid.tanhCumulHistoMuonR1_7 = self.info.tanhCumulHistoMuonR1_7 if "tanhCumulHistoMuonR2_1" in dir(self.info): mymuid.tanhCumulHistoMuonR2_1 = self.info.tanhCumulHistoMuonR2_1 if "tanhCumulHistoMuonR2_2" in dir(self.info): mymuid.tanhCumulHistoMuonR2_2 = self.info.tanhCumulHistoMuonR2_2 if "tanhCumulHistoMuonR2_3" in dir(self.info): mymuid.tanhCumulHistoMuonR2_3 = self.info.tanhCumulHistoMuonR2_3 if "tanhCumulHistoMuonR2_4" in dir(self.info): mymuid.tanhCumulHistoMuonR2_4 = self.info.tanhCumulHistoMuonR2_4 if "tanhCumulHistoMuonR2_5" in dir(self.info): mymuid.tanhCumulHistoMuonR2_5 = self.info.tanhCumulHistoMuonR2_5 if "tanhCumulHistoMuonR3_1" in dir(self.info): mymuid.tanhCumulHistoMuonR3_1 = self.info.tanhCumulHistoMuonR3_1 if "tanhCumulHistoMuonR3_2" in dir(self.info): mymuid.tanhCumulHistoMuonR3_2 = self.info.tanhCumulHistoMuonR3_2 if "tanhCumulHistoMuonR3_3" in dir(self.info): mymuid.tanhCumulHistoMuonR3_3 = self.info.tanhCumulHistoMuonR3_3 if "tanhCumulHistoMuonR3_4" in dir(self.info): mymuid.tanhCumulHistoMuonR3_4 = self.info.tanhCumulHistoMuonR3_4 if "tanhCumulHistoMuonR3_5" in dir(self.info): mymuid.tanhCumulHistoMuonR3_5 = self.info.tanhCumulHistoMuonR3_5 if "tanhCumulHistoMuonR4_1" in dir(self.info): mymuid.tanhCumulHistoMuonR4_1 = self.info.tanhCumulHistoMuonR4_1 if "tanhCumulHistoMuonR4_2" in dir(self.info): mymuid.tanhCumulHistoMuonR4_2 = self.info.tanhCumulHistoMuonR4_2 if "tanhCumulHistoMuonR4_3" in dir(self.info): mymuid.tanhCumulHistoMuonR4_3 = self.info.tanhCumulHistoMuonR4_3 if "tanhCumulHistoMuonR4_4" in dir(self.info): mymuid.tanhCumulHistoMuonR4_4 = self.info.tanhCumulHistoMuonR4_4 if "tanhCumulHistoMuonR4_5" in dir(self.info): mymuid.tanhCumulHistoMuonR4_5 = self.info.tanhCumulHistoMuonR4_5 ## Bakground Comb muons: Also per regions AND momentum bins. Not suitable for low statistics if "tanhCumulHistoNonMuonR1_1" in dir(self.info): mymuid.tanhCumulHistoNonMuonR1_1 = self.info.tanhCumulHistoNonMuonR1_1 if "tanhCumulHistoNonMuonR1_2" in dir(self.info): mymuid.tanhCumulHistoNonMuonR1_2 = self.info.tanhCumulHistoNonMuonR1_2 if "tanhCumulHistoNonMuonR1_3" in dir(self.info): mymuid.tanhCumulHistoNonMuonR1_3 = self.info.tanhCumulHistoNonMuonR1_3 if "tanhCumulHistoNonMuonR1_4" in dir(self.info): mymuid.tanhCumulHistoNonMuonR1_4 = self.info.tanhCumulHistoNonMuonR1_4 if "tanhCumulHistoNonMuonR1_5" in dir(self.info): mymuid.tanhCumulHistoNonMuonR1_5 = self.info.tanhCumulHistoNonMuonR1_5 if "tanhCumulHistoNonMuonR1_6" in dir(self.info): mymuid.tanhCumulHistoNonMuonR1_6 = self.info.tanhCumulHistoNonMuonR1_6 if "tanhCumulHistoNonMuonR1_7" in dir(self.info): mymuid.tanhCumulHistoNonMuonR1_7 = self.info.tanhCumulHistoNonMuonR1_7 if "tanhCumulHistoNonMuonR2_1" in dir(self.info): mymuid.tanhCumulHistoNonMuonR2_1 = self.info.tanhCumulHistoNonMuonR2_1 if "tanhCumulHistoNonMuonR2_2" in dir(self.info): mymuid.tanhCumulHistoNonMuonR2_2 = self.info.tanhCumulHistoNonMuonR2_2 if "tanhCumulHistoNonMuonR2_3" in dir(self.info): mymuid.tanhCumulHistoNonMuonR2_3 = self.info.tanhCumulHistoNonMuonR2_3 if "tanhCumulHistoNonMuonR2_4" in dir(self.info): mymuid.tanhCumulHistoNonMuonR2_4 = self.info.tanhCumulHistoNonMuonR2_4 if "tanhCumulHistoNonMuonR2_5" in dir(self.info): mymuid.tanhCumulHistoNonMuonR2_5 = self.info.tanhCumulHistoNonMuonR2_5 if "tanhCumulHistoNonMuonR3_1" in dir(self.info): mymuid.tanhCumulHistoNonMuonR3_1 = self.info.tanhCumulHistoNonMuonR3_1 if "tanhCumulHistoNonMuonR3_2" in dir(self.info): mymuid.tanhCumulHistoNonMuonR3_2 = self.info.tanhCumulHistoNonMuonR3_2 if "tanhCumulHistoNonMuonR3_3" in dir(self.info): mymuid.tanhCumulHistoNonMuonR3_3 = self.info.tanhCumulHistoNonMuonR3_3 if "tanhCumulHistoNonMuonR3_4" in dir(self.info): mymuid.tanhCumulHistoNonMuonR3_4 = self.info.tanhCumulHistoNonMuonR3_4 if "tanhCumulHistoNonMuonR3_5" in dir(self.info): mymuid.tanhCumulHistoNonMuonR3_5 = self.info.tanhCumulHistoNonMuonR3_5 if "tanhCumulHistoNonMuonR4_1" in dir(self.info): mymuid.tanhCumulHistoNonMuonR4_1 = self.info.tanhCumulHistoNonMuonR4_1 if "tanhCumulHistoNonMuonR4_2" in dir(self.info): mymuid.tanhCumulHistoNonMuonR4_2 = self.info.tanhCumulHistoNonMuonR4_2 if "tanhCumulHistoNonMuonR4_3" in dir(self.info): mymuid.tanhCumulHistoNonMuonR4_3 = self.info.tanhCumulHistoNonMuonR4_3 if "tanhCumulHistoNonMuonR4_4" in dir(self.info): mymuid.tanhCumulHistoNonMuonR4_4 = self.info.tanhCumulHistoNonMuonR4_4 if "tanhCumulHistoNonMuonR4_5" in dir(self.info): mymuid.tanhCumulHistoNonMuonR4_5 = self.info.tanhCumulHistoNonMuonR4_5 ## add and configure either DistMuIDTool or Chi2MuIDTool. ## no need to initialize all sub tools there prev = self.initializeAll self.initializeAll = False if self.use_dist: mymuid.addTool(DistMuIDTool(), name='myMuIDTool') else: mymuid.addTool(Chi2MuIDTool(), name='myMuIDTool') out = self.configureMuIDTool(mymuid.myMuIDTool) self.initializeAll = prev if self.kalman_foi: mom_cuts = copy.copy(self.info.MomentumCuts) mom_cuts.insert(0, self.info.PreSelMomentum) mymuid.addTool(IsMuonCandidateC(), name='IsMuonTool') out = self.configureIsMuonCandidateC(mymuid.IsMuonTool) mymuid.IsMuonTool.IsMuonOpt = 3 mymuid.IsMuonTool.MomRangeIsMuon = mom_cuts mymuid.addTool(IsMuonCandidateC(), name='IsMuonLooseTool') out = self.configureIsMuonCandidateC(mymuid.IsMuonLooseTool) mymuid.IsMuonLooseTool.IsMuonOpt = 2 mymuid.IsMuonLooseTool.MomRangeIsMuon = mom_cuts mymuid.addTool(DistMuIDTool(), name='DistMuIDTool') prev = self.initializeAll self.initializeAll = False out = self.configureMuIDTool(mymuid.DistMuIDTool) self.initializeAll = prev mymuid.addTool(NShared(), name='NSharedTool') return mymuid
def makeMyProtoP(trackcont): unpacker = UnpackTrack(trackcont + "UnpackTrack") unpacker.InputName = "pRec/Track/" + trackcont unpacker.OutputName = "Rec/Track/" + trackcont smeartracks = TrackSmeared(trackcont + "TrackSmeared") smeartracks.InputLocation = "Rec/Track/" + trackcont outputLocation = "Smeared" smeartracks.OutputLocation = outputLocation smeartracks.smearCopied = True smeartracks.smear = 1 #smeartracks.makePlots = 1 #smeartracks.OutputLevel = 2 protoseq = GaudiSequencer(trackcont + "ProtoPSeq") protos = ChargedProtoParticleMaker(trackcont + "ProtoPMaker") protos.InputTrackLocation = ["Rec/Track/" + outputLocation] protos.OutputProtoParticleLocation = "Rec/ProtoP/" + trackcont + "ProtoPMaker" protos.addTool(DelegatingTrackSelector, name="TrackSelector") #protos.OutputLevel = 0 tracktypes = ["Long", "Upstream", "Downstream", "Ttrack", "Velo", "VeloR"] protos.TrackSelector.TrackTypes = tracktypes selector = protos.TrackSelector for tsname in tracktypes: selector.addTool(TrackSelector, name=tsname) ts = getattr(selector, tsname) # Set Cuts ts.TrackTypes = [tsname] # Add PID information idalg = MuonIDAlg("BestIDalg") #idalg.OutputLevel = 5 cm = ConfiguredMuonIDs.ConfiguredMuonIDs( data=DaVinci().getProp("DataType")) cm.configureMuonIDAlg(idalg) idalg.TrackLocation = "Rec/Track/" + outputLocation idalg.MuonIDLocation = "Rec/Muon/MuonPID/" + outputLocation from Configurables import ( ChargedProtoParticleAddRichInfo, ChargedProtoParticleAddMuonInfo, ChargedProtoParticleAddEcalInfo, ChargedProtoParticleAddBremInfo, ChargedProtoParticleAddHcalInfo, ChargedProtoParticleAddPrsInfo, ChargedProtoParticleAddSpdInfo, ChargedProtoParticleAddVeloInfo, ChargedProtoCombineDLLsAlg) addmuonpid = ChargedProtoParticleAddMuonInfo("Bestaddmuoninfo") addmuonpid.InputMuonPIDLocation = "Rec/Muon/MuonPID/" + outputLocation addmuonpid.ProtoParticleLocation = "Rec/ProtoP/" + trackcont + "ProtoPMaker" addrichpid = ChargedProtoParticleAddRichInfo("Bestaddrichinfo") addrichpid.ProtoParticleLocation = "Rec/ProtoP/" + trackcont + "ProtoPMaker" # The rich pid is added to the track in TrackSmeared, thus only kaon pion pid is consistent # the others are not implemented. The modes smearBest and smearProto don't have the problems #addcalopid = ChargedProtoParticleAddCaloInfo("Bestaddcaloinfo") #addcalopid.InputRichCALOLocation = "Rec/Rich/"+outputLocation #addcalopid.ProtoParticleLocation = "Rec/ProtoP/"+trackcont+"ProtoPMaker" #ecal = ChargedProtoParticleAddEcalInfo("ChargedProtoPAddEcal") #ecal.ProtoParticleLocation = "Rec/ProtoP/"+trackcont+"ProtoPMaker" #brem = ChargedProtoParticleAddBremInfo("ChargedProtoPAddBrem") #brem.ProtoParticleLocation = "Rec/ProtoP/"+trackcont+"ProtoPMaker" #hcal = ChargedProtoParticleAddHcalInfo("ChargedProtoPAddHcal") #hcal.ProtoParticleLocation = "Rec/ProtoP/"+trackcont+"ProtoPMaker" #prs = ChargedProtoParticleAddPrsInfo("ChargedProtoPAddPrs") #prs.ProtoParticleLocation = "Rec/ProtoP/"+trackcont+"ProtoPMaker" #spd = ChargedProtoParticleAddSpdInfo("ChargedProtoPAddSpd") #spd.ProtoParticleLocation = "Rec/ProtoP/"+trackcont+"ProtoPMaker" #velo = ChargedProtoParticleAddVeloInfo("ChargedProtoPAddVeloDEDX") #velo.ProtoParticleLocation = "Rec/ProtoP/"+trackcont+"ProtoPMaker" combinedll = ChargedProtoCombineDLLsAlg("BestCombineDLL") combinedll.ProtoParticleLocation = "Rec/ProtoP/" + trackcont + "ProtoPMaker" #set up associators assoctr = TrackAssociator(trackcont + "AssocTr") assoctr.TracksInContainer = "Rec/Track/" + outputLocation assocpp = ChargedPP2MC(trackcont + "AssocPP") assocpp.TrackLocations = ["Rec/Track/" + outputLocation] assocpp.InputData = ["Rec/ProtoP/" + trackcont + "ProtoPMaker"] assocpp.OutputTable = "Relations/Rec/ProtoP/" + trackcont + "ProtoPMaker" # DST post treatment TrackToDST(trackcont + "TrackToDST").TracksInContainer = "Rec/Track/" + trackcont if not DaVinci().Simulation: protoseq.Members += [TrackToDST(trackcont + "TrackToDST"), protos] protoseq.Members += [ ecal, brem, hcal, prs, spd, velo, addrichpid, addmuonpid, combinedll ] DataOnDemandSvc().AlgMap.update({ "/Event/Rec/Track/" + trackcont: unpacker.getFullName(), "/Event/Rec/Track/" + outputLocation: smeartracks.getFullName(), "/Event/Rec/Rich/" + outputLocation: protoseq.getFullName(), "/Event/Rec/Muon/MuonPID/" + outputLocation: idalg.getFullName(), "/Event/Rec/ProtoP/" + trackcont + "ProtoPMaker": protoseq.getFullName(), "/Event/Relations/Rec/ProtoP/" + trackcont + "ProtoPMaker": protoseq.getFullName() }) else: if (DaVinci().Simulation): protoseq.Members += [ TrackToDST(trackcont + "TrackToDST"), assoctr, protos ] #protoseq.Members += [ ecal,brem,hcal,prs,spd,velo,addrichpid,addmuonpid,combinedll,assocpp ] protoseq.Members += [ idalg, addmuonpid, addrichpid, combinedll, assocpp ] DataOnDemandSvc().AlgMap.update({ "/Event/Rec/Track/" + trackcont: unpacker.getFullName(), "/Event/Rec/Track/" + outputLocation: smeartracks.getFullName(), "/Event/Rec/Rich/" + outputLocation: protoseq.getFullName(), "/Event/Rec/Muon/MuonPID/" + outputLocation: idalg.getFullName(), "/Event/Rec/ProtoP/" + trackcont + "ProtoPMaker": protoseq.getFullName(), "/Event/Relations/Rec/ProtoP/" + trackcont + "ProtoPMaker": protoseq.getFullName() })