Newer
Older
Analysis / ganga / Lb2Lcmunu / Lb2Lcmunu_S20_data_12_NEWJET.py
@elena elena on 13 Jan 2016 10 KB first commit: files from Marcin
########################################################################
from os import environ
import math
from Gaudi.Configuration import *
#from GaudiPython import AppMgr
from Configurables import DecayTreeTuple,BTaggingTool,SubstitutePID,TrackScaleState
from Configurables import CombineParticles, FilterDesktop,TupleToolDecayTreeFitter,TupleToolDecay
from Configurables import TupleToolTrigger, BackgroundCategory, TupleToolTISTOS,TupleToolRecoStats, TupleToolTagging
from Configurables import DaVinci,HltSelReportsDecoder,HltVertexReportsDecoder,HltDecReportsDecoder,LoKi__Hybrid__TupleTool,TupleToolJets
from DecayTreeTuple.Configuration import *
from StrippingConf.Configuration import StrippingConf, StrippingStream
from StrippingSettings.Utils import strippingConfiguration
from StrippingArchive.Utils import buildStreams, cloneLinesFromStream
from Configurables import CombineParticles
from StrippingArchive import strippingArchive


trigger_list = [
    'L0HadronDecision',
    'L0ElectronDecision',
    'L0ElectronHiDecision',
    'L0MuonDecision',
    'L0DiMuonDecision',


    # 'Hlt1SingleMuonNoIPDecision',                  
    # 'Hlt1SingleMuonHighPTDecision',                
    # 'Hlt1DiMuonHighMassDecision',                  
    # 'Hlt1DiMuonLowMassDecision',                   
    'Hlt1GlobalDecision',
    'Hlt1TrackAllL0Decision',
    'Hlt1SingleMuonNoIPDecision',
    'Hlt1SingleMuonHighPTDecision',
    'Hlt1TrackMuonDecision',
    'Hlt1MuTrackDecision',
    # 'Hlt1GlobalDecision',                          

    'Hlt2TopoOSTF2BodyDecision',
    'Hlt2TopoOSTF3BodyDecision',
    'Hlt2TopoOSTF4BodyDecision',
    'Hlt2Topo2BodySimpleDecision',
    'Hlt2Topo3BodySimpleDecision',
    'Hlt2Topo4BodySimpleDecision',
    'Hlt2Topo2BodyBBDTDecision',
    'Hlt2Topo3BodyBBDTDecision',
    'Hlt2Topo4BodyBBDTDecision',
    'Hlt2TopoMu2BodyBBDTDecision',
    'Hlt2TopoMu3BodyBBDTDecision',
    'Hlt2TopoMu4BodyBBDTDecision',
    'Hlt2TopoE2BodyBBDTDecision',
    'Hlt2TopoE3BodyBBDTDecision',
    'Hlt2TopoE4BodyBBDTDecision',
    # 'Hlt2MuonFromHLT1Decision',                    
    'Hlt2SingleMuonDecision',
    # 'Hlt2SingleMuonHighPTDecision',                
    # 'Hlt2SingleMuonLowPTDecision',                 
    # 'Hlt2DisplVerticesLowMassSingleDecision',      
    # 'Hlt2DisplVerticesHighMassSingleDecision',     
    # 'Hlt2DisplVerticesDoubleDecision',             
    # 'Hlt2DisplVerticesSinglePostScaledDecision',   
    # 'Hlt2DisplVerticesHighFDSingleDecision',       
    # 'Hlt2DisplVerticesSingleDownDecision',         
    # 'Hlt2DiMuonDecision',                          
    # 'Hlt2DiMuonLowMassDecision',                   
    # 'Hlt2DiMuonBDecision',                         
    'Hlt2DiMuonDetachedDecision',
    'Hlt2MuTrackDecision',
    'Hlt2GlobalDecision'
    ]


###########################################################################
# First run the stripping

eventNodeKiller = EventNodeKiller('Stripkiller')
eventNodeKiller.Nodes = [ '/Event/AllStreams', '/Event/Strip' ]


stripping='stripping20'
#get the configuration dictionary from the database
config  = strippingConfiguration(stripping)
#get the line builders from the archive
archive = strippingArchive(stripping)
streams = buildStreams(stripping = config, archive = archive)
MyStream = StrippingStream("MyStream")
MyLines = [ 'Strippingb2LcMuXB2DMuNuXLine' ]

for stream in streams:
    for line in stream.lines:
        if line.name() in MyLines:
                        print 'Strippingb2LcMuXB2DMuNuXLine'
                        MyStream.appendLines( [ line ] )


from Configurables import ProcStatusCheck
filterBadEvents = ProcStatusCheck()

sc = StrippingConf( Streams = [ MyStream ],
                                        MaxCandidates = 2000,
                                        AcceptBadEvents = False,
                                        BadEventSelection = filterBadEvents )

###########################################################################


#from StandardParticles import StdAllLoosePions


Lc_star = CombineParticles("Lc_star")
Lc_star.Inputs  = ["Phys/StdAllLoosePions/Particles"  ,"Phys/Lc2PKPiforB2DMuNuX/Particles"]
Lc_star.DecayDescriptors  = ["[Lambda_c(2595)+ -> Lambda_c+ pi+ pi-]cc"]
Lc_star.MotherCut = "(M<3000) & (M>2300) & (VFASPF(VCHI2/VDOF) < 7.0) "
Lc_star.DaughtersCuts ={ "pi+" : "PT>0", "pi-": "PT>0", "Lambda_c+": "ADMASS('Lambda_c+') < 50.0 *MeV" }
#############################################################################

Lb_SL = CombineParticles("Lb_SL")
Lb_SL.Inputs  = [ "Phys/MuforB2DMuNuX/Particles", "Phys/Lc_star/Particles"]
Lb_SL.DecayDescriptors  = [ "[Lambda_b0 -> Lambda_c(2595)+ mu-]cc" ]
Lb_SL.MotherCut = "(M<6500) & (VFASPF(VCHI2/VDOF) < 7.0) & (BPVDIRA>0.999)"



'''
################################################################################
Lb_SLSel = CombineParticles("Lb_SLSel")
Lb_SLSel.Preambulo=JJACUT
Lb_SLSel.Inputs  = ["Phys/Lb_SL/Particles","Phys/StdJetsJEC/Particles"]

Lb_SLSel.DecayDescriptors  = ["[H_10 -> Lambda_b0 CELLjet]cc"]
Lb_SLSel.Preambulo = JJACUT

Lb_SLSel.MotherCut = "(M<15000)"
Lb_SLSel.CombinationCut = "(AM < 15000)&(DR<1.5)"
'''




########################################################################
#decay = "[ B*_s20 -> ^(B- -> ^(J/psi(1S) -> ^mu+ ^mu-) ^K-) ^[pi+]CC]CC"
decay0 = "[Lambda_b0 -> ^(Lambda_c(2595)+ -> ^(Lambda_c+ -> ^K- ^p+ ^pi+ ) ^pi+ ^pi-) ^mu- ]CC"
#decay0 = "[H_10 -> ^( B*_s20 -> ^K+ ^(B- -> ^(D0 -> ^K- ^pi+) ^mu-)) ^CELLjet ]CC"
#decay0 = "[H_10 -> ^( Lambda_b0 -> ^(Lambda_c(2595)+ -> ^(Lambda_c+ ->  K- p+ pi+  )   ) ^mu- ) ^CELLjet ]CC"
#decay1 = "[H_10 -> ^(  B*_s20-> ^K- ^(B- -> ^(D0 -> ^K- ^pi+) ^mu-)) ^CELLjet ]CC"
########################################################################
Lb_SL_OfflineTree = DecayTreeTuple("Lb_SL_OfflineTree")
Lb_SL_OfflineTree.Inputs = ["Phys/Lb_SL/Particles"]
Lb_SL_OfflineTree.Decay = decay0
Lb_SL_OfflineTree.Branches = {
#   "H_10": "[^H_10 -> (Lambda_b0 -> (Lambda_c(2595)+ -> (Lambda_c+ -> K- p+ pi+ ) pi+ pi-) mu- ) CELLjet]CC",
   "Lambda_b0": "[Lambda_b0 -> (Lambda_c(2595)+ -> (Lambda_c+ -> K- p+ pi+ ) pi+ pi-) mu- ]CC",
#   "CELLjet": "[H_10 -> (Lambda_b0 -> (Lambda_c(2595)+ -> (Lambda_c+ -> K- p+ pi+ ) pi+ pi-) mu- ) ^CELLjet]CC",
   "Lambda_c_STAR": "[Lambda_b0 -> ^(Lambda_c(2595)+ -> (Lambda_c+ -> K- p+ pi+ ) pi+ pi-) mu- ]CC",
   "mu": "[Lambda_b0 -> (Lambda_c(2595)+ -> (Lambda_c+ -> K- p+ pi+ ) pi+ pi-) ^mu- ]CC",
   "Lambda_c": "[Lambda_b0 -> (Lambda_c(2595)+ -> ^(Lambda_c+ -> K- p+ pi+ ) pi+ pi-) mu- ]CC",
   "pi_plus": "[Lambda_b0 -> (Lambda_c(2595)+ -> (Lambda_c+ -> K- p+ pi+ ) ^pi+ pi-) mu- ]CC",
   "pi_minus": "[Lambda_b0 -> (Lambda_c(2595)+ -> (Lambda_c+ -> K- p+ pi+ ) pi+ ^pi-) mu- ]CC",
   "p": "[Lambda_b0 -> (Lambda_c(2595)+ -> (Lambda_c+ -> K- ^p+ pi+ ) pi+ pi-) mu- ]CC",
   "pi_Lc": "[Lambda_b0 -> (Lambda_c(2595)+ -> (Lambda_c+ -> K- p+ ^pi+ ) pi+ pi-) mu- ]CC",
   "K_Lc": "[Lambda_b0 -> (Lambda_c(2595)+ -> (Lambda_c+ -> ^K- p+ pi+ ) pi+ pi-) mu- ]CC"
}
Lb_SL_OfflineTree.ToolList = [
    "TupleToolKinematic",
    "TupleToolPid",
    "TupleToolGeometry",
    "TupleToolPrimaries",
    "TupleToolTrackInfo",
    "TupleToolEventInfo",
    "TupleToolRecoStats",
    "TupleToolAngles",
    "TupleToolNeutrinoReco",
    "TupleToolMCBackgroundInfo",
    "TupleToolMCTruth",
    "TupleToolJets",
    'TupleToolTrigger',
    'TupleToolTISTOS',
    'TupleToolRICHPid',
    'TupleToolDira',
    'TupleToolEventInfo',
    'TupleToolPropertime',
    'TupleToolRecoStats',
    'TupleToolTrackPosition'
    ]




Lb_SL_OfflineTree.addTool( TupleToolTrigger, name='TupleToolTrigger' )
Lb_SL_OfflineTree.TupleToolTrigger.Verbose = True
Lb_SL_OfflineTree.TupleToolTrigger.TriggerList = trigger_list


Lb_SL_OfflineTree.addTool( TupleToolTISTOS, name='TupleToolTISTOS' )
Lb_SL_OfflineTree.TupleToolTISTOS.Verbose = True
Lb_SL_OfflineTree.TupleToolTISTOS.TriggerList = trigger_list
Lb_SL_OfflineTree.ToolList += [ "TupleToolTISTOS" ]


########################################################################
from Configurables import TupleToolNeutrinoReco
Lb_SL_OfflineTree.addTool( TupleToolNeutrinoReco,name = "TupleToolNeutrinoReco" )
Lb_SL_OfflineTree.TupleToolNeutrinoReco.Verbose = True
Lb_SL_OfflineTree.TupleToolNeutrinoReco.MotherMass=5619.5 #MeV
Lb_SL_OfflineTree.TupleToolNeutrinoReco.ExtraName='mLb'

from Configurables import TupleToolKinematic
Lb_SL_OfflineTree.addTool( TupleToolKinematic,name = "TupleToolKinematic" )
Lb_SL_OfflineTree.TupleToolKinematic.Verbose = True

from Configurables import TupleToolGeometry
Lb_SL_OfflineTree.addTool( TupleToolGeometry, name = "TupleToolGeometry" )
Lb_SL_OfflineTree.TupleToolGeometry.Verbose = True

Lb_SL_OfflineTree.addTool(TupleToolRecoStats, name="TupleToolRecoStats")
Lb_SL_OfflineTree.TupleToolRecoStats.Verbose = True
Lb_SL_OfflineTree.UseLabXSyntax = True
Lb_SL_OfflineTree.RevertToPositiveID = False

from Configurables import TupleToolTrackIsolation
Lb_SL_OfflineTree.addTupleTool('TupleToolTrackIsolation/TrackIsolation')
Lb_SL_OfflineTree.TrackIsolation.MinConeAngle = 0.5
Lb_SL_OfflineTree.TrackIsolation.MaxConeAngle = 1.5
Lb_SL_OfflineTree.TrackIsolation.StepSize = 0.1
Lb_SL_OfflineTree.TrackIsolation.Verbose= True





##################################################
#DaVinci().Input = ([
#'root://eoslhcb.cern.ch//eos/lhcb/grid/prod/lhcb/MC/2012/ALLSTREAMS.DST/00025296/0000/00025296_00000002_1.allstreams.dst'
#'root://eoslhcb.cern.ch//eos/lhcb/grid/prod/lhcb/MC/2012/ALLSTREAMS.DST/00025296/0000/00025296_00000003_1.allstreams.dst',
#'root://eoslhcb.cern.ch//eos/lhcb/grid/prod/lhcb/MC/2012/ALLSTREAMS.DST/00025296/0000/00025296_00000004_1.allstreams.dst'
#])
from Configurables import DaVinci
#DaVinci().EventPreFilters = fltrs.filters('Filters')
DaVinci().EvtMax = -1                           # Number of events
DaVinci().SkipEvents = 0                       # Events to skip
DaVinci().PrintFreq = 10000
DaVinci().DataType = "2012"                    # Default is "DC06"
DaVinci().Simulation   = False
DaVinci().Lumi = True
DaVinci().appendToMainSequence( [ eventNodeKiller ] )
DaVinci().appendToMainSequence( [ sc.sequence() ] )
DaVinci().UserAlgorithms = [    HltSelReportsDecoder(),
                                HltVertexReportsDecoder(),
                                HltDecReportsDecoder(),
                                Lc_star, Lb_SL,
                                Lb_SL_OfflineTree]
DaVinci().TupleFile = "Lb_Lcstarmunu.root"

#DaVinci().CondDBtag = "Sim08-20130503-1-vc-md100"
#DaVinci().DDDBtag   = "Sim08-20130503-1"
#appMgr = AppMgr()
#appMgr.initialize()
#appMgr.run( DaVinci().EvtMax )