Angular analysis of B+->K*+(K+pi0)mumu
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

677 lines
29 KiB

  1. from Gaudi.Configuration import *
  2. from Configurables import DaVinci
  3. from Configurables import FilterDesktop
  4. from Configurables import CombineParticles
  5. from Configurables import GaudiSequencer
  6. from Configurables import TupleToolP2VV, MCTupleToolP2VV
  7. #### testing if it solves the problem
  8. #from PhysConf.Selections import CheckPVSelection, ValidBPVSelection
  9. ### testing delete me later ###
  10. ############# Global settings
  11. runFilters = False
  12. reference = False
  13. phsp = False
  14. BkgStudy = False
  15. data = False
  16. down = True
  17. year = "2018"
  18. stream = "AllStreams"
  19. line = "B2XMuMu_Line"
  20. #subdecay chains
  21. KShortPiPlus = False
  22. KplusPi0Merged = False
  23. KplusPi0Resolved = True
  24. #MC/2016/12113100/Beam6500GeV-2016-MagUp-Nu1.6-25ns-Pythia8/Sim09c/Trig0x6138160F/Reco16/Turbo03/Stripping28NoPrescalingFlagged/ALLSTREAMS.MDST
  25. from GaudiConf import IOHelper
  26. #MC
  27. #if (KplusPi0Resolved):
  28. #IOHelper('ROOT').inputFiles(['/afs/cern.ch/work/r/rekopecn/public/B_2_KstarMuMu/DaVinciDev/tuplecreation/optfiles/00065610_00000010_7.AllStreams.mdst']) #MC 16 up pi0
  29. #IOHelper('ROOT').inputFiles(['/afs/cern.ch/work/r/rekopecn/public/B_2_KstarMuMu/DaVinciDev/tuplecreation/optfiles/00054096_00000047_2.AllStreams.dst']) #MC 11 down pi0 VERTEX ERROR evt. 210
  30. #IOHelper('ROOT').inputFiles(['/afs/cern.ch/work/r/rekopecn/public/B_2_KstarMuMu/DaVinciDev/tuplecreation/optfiles/00066811_00000018_5.AllStreams.dst']) #MC 11 down pi0
  31. #IOHelper('ROOT').inputFiles(['/afs/cern.ch/work/r/rekopecn/public/B_2_KstarMuMu/DaVinciDev/tuplecreation/optfiles/00054094_00000004_2.AllStreams.dst']) #MCref 2011 down
  32. #if (KShortPiPlus):
  33. #IOHelper('ROOT').inputFiles(['/afs/cern.ch/work/r/rekopecn/public/B_2_KstarMuMu/DaVinciDev/tuplecreation/optfiles/00065608_00000023_7.AllStreams.mdst']) #MC 16 up pi+
  34. #IOHelper('ROOT').inputFiles(['/afs/cern.ch/work/r/rekopecn/public/B_2_KstarMuMu/DaVinciDev/tuplecreation/optfiles/00054096_00000012_2.AllStreams.dst']) #MC 2011 DOWN
  35. #IOHelper('ROOT').inputFiles(['/afs/cern.ch/work/r/rekopecn/public/B_2_KstarMuMu/DaVinciDev/tuplecreation/optfiles/00054084_00000020_2.dst']) #MCref 2011 UP IOHelper('ROOT').inputFiles(['/afs/cern.ch/work/r/rekopecn/public/B_2_KstarMuMu/DaVinciDev/tuplecreation/optfiles/ 00050877_00002436_1.leptonic.mdst']) #Data 11 up
  36. #data
  37. if (down): pol_str = "Down"
  38. else: pol_str = "Up"
  39. #MC
  40. IOHelper('ROOT').inputFiles(['/afs/cern.ch/work/r/rekopecn/public/B_2_KstarMuMu/DaVinciDev_v41r2/tuplecreation/test_files/00105371_00000017_7.AllStreams.dst']) #MC Kplus 18 down
  41. #IOHelper('ROOT').inputFiles(['/afs/cern.ch/work/r/rekopecn/public/B_2_KstarMuMu/DaVinciDev_v41r2/tuplecreation/test_files/MC'+year+'Mag'+pol_str+'_Kshort.dst'])
  42. #IOHelper('ROOT').inputFiles(['/afs/cern.ch/work/r/rekopecn/public/B_2_KstarMuMu/DaVinciDev/tuplecreation/optfiles/00049592_00000602_1.leptonic.mdst']) #Data 15 down
  43. #PHSP
  44. #IOHelper('ROOT').inputFiles(['/afs/cern.ch/work/r/rekopecn/public/B_2_KstarMuMu/DaVinciDev/tuplecreation/optfiles/00067811_00000002_1.b2xmumu.strip.dst']) #phsp 11 Down K0 pi+
  45. #IOHelper('ROOT').inputFiles(['/afs/cern.ch/work/r/rekopecn/public/B_2_KstarMuMu/DaVinciDev/tuplecreation/optfiles/00067814_00000001_1.b2xmumu.strip.dst']) #phsp 11 Down K+ pi0
  46. ###############################
  47. #MessageSvc().OutputLevel = VERBOSE
  48. #MessageSvc().OutputLevel = DEBUG
  49. MessageSvc().Format = "% F%100W%S%7W%R%T %0W%M"
  50. ###############################
  51. from Gaudi.Configuration import *
  52. from Configurables import DaVinci
  53. from Configurables import FilterDesktop
  54. from Configurables import CombineParticles
  55. from Configurables import GaudiSequencer
  56. from Configurables import TupleToolP2VV, MCTupleToolP2VV
  57. #Run1 or Run2
  58. #DST or MDST?
  59. Run1 = True
  60. MDST = True
  61. if (year == "2011" or year == "2012"):
  62. Run1 = True
  63. elif (year == "2015" or year == "2016" or year == "2017" or year == "2018"):
  64. Run1 = False
  65. else:
  66. print "[WARNING]\tWrong year input!\n"
  67. if (BkgStudy):
  68. MDST = False
  69. else:
  70. if( not data and Run1 ):
  71. MDST = False
  72. if (year == "2018" and (not data) and (not phsp) and (not reference)):
  73. MDST = False
  74. if (reference and Run1 == False and not KShortPiPlus):
  75. MDST = False
  76. if (MDST):
  77. print "\n[INFO]\tUsing MDST as input.\n"
  78. else:
  79. print "\n[INFO]\tUsing DST as input.\n"
  80. #MC Truthmatching fix for run 1 (obsolete)
  81. #if (not data and Run1):
  82. # from Configurables import PhysConf
  83. # PhysConf().CaloReProcessing=True
  84. #triggerlines
  85. if (Run1):
  86. print "[INFO]\tTriggerlines for Run 1 added!\n"
  87. triggerlines = [
  88. #l0
  89. "L0HadronDecision",
  90. "L0MuonDecision",
  91. "L0GlobalDecision",
  92. #hlt1
  93. "Hlt1TrackMuonDecision",
  94. "Hlt1DiMuonHighMassDecision",
  95. "Hlt1DiMuonLowMassDecision",
  96. "Hlt1TrackAllL0Decision",
  97. "Hlt1TrackAllL0TightDecision",
  98. "Hlt1L0AnyDecision",
  99. "Hlt1MBNoBiasDecision",
  100. "Hlt1GlobalDecision",
  101. #hlt2
  102. "Hlt2CharmHadD2HHHHDecision",
  103. "Hlt2CharmHadD2HHHHWideMassDecision",
  104. "Hlt2IncPhiDecision",
  105. "Hlt2ExpressDs2PhiPiDecision",
  106. "Hlt2Topo2BodySimpleDecision",
  107. "Hlt2Topo3BodySimpleDecision",
  108. "Hlt2Topo2BodyBBDTDecision",
  109. "Hlt2Topo3BodyBBDTDecision",
  110. "Hlt2TopoMu2BodyBBDTDecision",
  111. "Hlt2TopoMu3BodyBBDTDecision",
  112. "Hlt2TopoE2BodyBBDTDecision",
  113. "Hlt2TopoE3BodyBBDTDecision",
  114. "Hlt2RadiativeTopoTrackTOSDecision",
  115. "Hlt2RadiativeTopoPhotonL0Decision",
  116. "Hlt2SingleMuonDecision",
  117. "Hlt2DiMuonDetachedDecision",
  118. "Hlt2DiMuonDetachedHeavyDecision"]
  119. else:
  120. print "[INFO]\tTriggerlines for Run 2 added!\n"
  121. triggerlines = [
  122. #l0
  123. "L0HadronDecision",
  124. "L0MuonDecision",
  125. "L0DiMuonDecision",
  126. #"L0GlobalDecision",
  127. #hlt1
  128. "Hlt1TrackMuonDecision",
  129. "Hlt1DiMuonHighMassDecision",
  130. "Hlt1DiMuonLowMassDecision",
  131. "Hlt1TrackMVADecision",
  132. "Hlt1TwoTrackMVADecision",
  133. "Hlt1L0AnyDecision",
  134. "Hlt1MBNoBiasDecision",
  135. "Hlt1GlobalDecision",
  136. #hlt2
  137. "Hlt2Topo2BodyDecision",
  138. "Hlt2Topo3BodyDecision",
  139. "Hlt2TopoMu2BodyDecision",
  140. "Hlt2TopoMu3BodyDecision",
  141. "Hlt2TopoMuMu2BodyDecision",
  142. "Hlt2TopoMuMu3BodyDecision",
  143. "Hlt2SingleMuonDecision",
  144. "Hlt2SingleMuonHighPTDecision",
  145. "Hlt2SingleMuonLowPTDecision",
  146. "Hlt2DiMuonDetachedDecision",
  147. "Hlt2DiMuonDetachedHeavyDecision"]
  148. ############### Pre Filter, does not really do much except choose only candidates passing the Stripping line, maybe beneficial to performance
  149. #from Configurables import LoKi__HDRFilter as StripFilter
  150. #stripFilter = StripFilter( "stripPassFilter",\
  151. # Code = "HLT_PASS('StrippingB2XMuMu_LineDecision')",\
  152. # Location= "/Event/Strip/Phys/DecReports")
  153. ############# DecayTreeTuple
  154. from DecayTreeTuple.Configuration import *
  155. from Configurables import TupleToolTISTOS
  156. from PhysSelPython.Wrappers import AutomaticData, Selection, SelectionSequence
  157. from Configurables import PrintDecayTree, PrintDecayTreeTool
  158. ############# MCDecayTreeTuple
  159. from Configurables import MCDecayTreeTuple
  160. from Configurables import MCTupleToolKinematic, TupleToolMCBackgroundInfo, TupleToolMCTruth
  161. #Fix Truthmatching
  162. from Configurables import BackgroundCategory,Calo2MCTool,DaVinciSmartAssociator
  163. ##subpid stuff
  164. #from Configurables import SubPIDMMFilter
  165. from Configurables import SubstitutePID ,BTaggingTool
  166. from Configurables import TupleToolDecayTreeFitter, TupleToolTrackIsolation, TupleToolConeIsolation
  167. from Configurables import LoKi__Hybrid__TupleTool
  168. ##########################################
  169. ###B+ -> (K*(892)+ -> KS0 pi+) mu+ mu- ### (> 1 <)
  170. ##########################################
  171. ### AND/OR ###
  172. ##########################################################
  173. ###B+ -> (K*(892)+ -> K+ (pi0 -> gamma gamma)) mu+ mu- ### (> 2 <)
  174. ##########################################################
  175. #This is probably a very stupid idea but python should be okay with it
  176. b2KstmumuTupleList= []
  177. b2KstmumuTupleList.append(DecayTreeTuple("b2KstKs0pimumu_Tuple"))
  178. b2KstmumuTupleList.append(DecayTreeTuple("b2KstKpi0mumuResolvedTuple"))
  179. for b2KstmumuTuple in b2KstmumuTupleList:
  180. if (MDST):
  181. b2KstmumuTuple.RootInTES = '/Event/{0}'.format(stream)
  182. b2KstmumuTuple.Inputs = ['Phys/{0}/Particles'.format(line)]
  183. else:
  184. b2KstmumuTuple.Inputs = ['{0}/Phys/{1}/Particles'.format(stream, line)]
  185. #decay descriptor
  186. b2KstmumuTupleList[0].Decay = "[B+ -> ^(K*(892)+ -> ^(KS0 -> ^pi+ ^pi-) ^pi+) ^(J/psi(1S) -> ^mu- ^mu+)]CC"
  187. b2KstmumuTupleList[0].addBranches({
  188. "B_plus" : "^([B+ -> (K*(892)+ -> (KS0 -> pi+ pi-) pi+) (J/psi(1S) -> mu- mu+)]CC)" ,
  189. "K_star_plus" : "[B+ -> ^(K*(892)+ -> (KS0 -> pi+ pi-) pi+) (J/psi(1S) -> mu- mu+)]CC",
  190. "K_short" : "[B+ -> (K*(892)+ -> ^(KS0 -> pi+ pi-) pi+) (J/psi(1S) -> mu- mu+)]CC",
  191. "Ks_pi_plus" : "[B+ -> (K*(892)+ -> (KS0 -> ^pi+ pi-) pi+) (J/psi(1S) -> mu- mu+)]CC",
  192. "Ks_pi_minus" : "[B+ -> (K*(892)+ -> (KS0 -> pi+ ^pi-) pi+) (J/psi(1S) -> mu- mu+)]CC",
  193. "pi_plus" : "[B+ -> (K*(892)+ -> (KS0 -> pi+ pi-) ^pi+) (J/psi(1S) -> mu- mu+)]CC",
  194. "J_psi" : "[B+ -> (K*(892)+ -> (KS0 -> pi+ pi-) pi+) ^(J/psi(1S) -> mu- mu+)]CC",
  195. "mu_minus" : "[B+ -> (K*(892)+ -> (KS0 -> pi+ pi-) pi+) (J/psi(1S) -> ^mu- mu+)]CC",
  196. "mu_plus" : "[B+ -> (K*(892)+ -> (KS0 -> pi+ pi-) pi+) (J/psi(1S) -> mu- ^mu+)]CC"
  197. })
  198. b2KstmumuTupleList[1].Decay = "[B+ -> ^(K*(892)+ -> ^K+ ^(pi0 -> ^gamma ^gamma)) ^(J/psi(1S) -> ^mu- ^mu+)]CC"
  199. b2KstmumuTupleList[1].addBranches({
  200. "B_plus" : "^([B+ -> (K*(892)+ -> K+ (pi0 -> gamma gamma)) (J/psi(1S) -> mu- mu+)]CC)",
  201. "K_star_plus" : "[B+ -> ^(K*(892)+ -> K+ (pi0 -> gamma gamma)) (J/psi(1S) -> mu- mu+)]CC",
  202. "K_plus" : "[B+ -> (K*(892)+ -> ^K+ (pi0 -> gamma gamma)) (J/psi(1S) -> mu- mu+)]CC",
  203. "pi_zero_resolved" : "[B+ -> (K*(892)+ -> K+ ^(pi0 -> gamma gamma)) (J/psi(1S) -> mu- mu+)]CC",
  204. "gamma1" : "[B+ -> (K*(892)+ -> K+ (pi0 -> ^gamma gamma)) (J/psi(1S) -> mu- mu+)]CC",
  205. "gamma2" : "[B+ -> (K*(892)+ -> K+ (pi0 -> gamma ^gamma)) (J/psi(1S) -> mu- mu+)]CC",
  206. "J_psi" : "[B+ -> (K*(892)+ -> K+ (pi0 -> gamma gamma)) ^(J/psi(1S) -> mu- mu+)]CC",
  207. "mu_minus" : "[B+ -> (K*(892)+ -> K+ (pi0 -> gamma gamma)) (J/psi(1S) -> ^mu- mu+)]CC",
  208. "mu_plus" : "[B+ -> (K*(892)+ -> K+ (pi0 -> gamma gamma)) (J/psi(1S) -> mu- ^mu+)]CC"
  209. })
  210. #add tools
  211. for b2KstmumuTuple in b2KstmumuTupleList:
  212. b2KstmumuTuple.ToolList = ["TupleToolKinematic",
  213. "TupleToolPrimaries",
  214. "TupleToolEventInfo",
  215. "TupleToolTrackInfo",
  216. "TupleToolRecoStats",
  217. "TupleToolAngles",
  218. "TupleToolPid",
  219. "TupleToolPhotonInfo"]
  220. #add MCtools
  221. if not (data):
  222. b2KstmumuMCTuple = b2KstmumuTuple.addTupleTool("TupleToolMCTruth/b2KstmumuMCTuple")
  223. b2KstmumuMCTuple.addTupleTool("MCTupleToolHierarchy")
  224. b2KstmumuTuple.ToolList += ["MCTupleToolKinematic",
  225. "TupleToolMCBackgroundInfo"]
  226. #Adding Angle Calculator
  227. b2KstmumuTuple.B_plus.addTool(TupleToolMCTruth, name="B_plusMCTruth")
  228. b2KstmumuTuple.B_plus.ToolList = [ "TupleToolMCTruth/B_plusMCTruth"]
  229. b2KstmumuTuple.B_plus.B_plusMCTruth.ToolList = [ "MCTupleToolP2VV/B2KsMuMu"]
  230. b2KstmumuTuple.B_plus.B_plusMCTruth.addTool( MCTupleToolP2VV, name="B2KsMuMu" )
  231. b2KstmumuTuple.B_plus.B_plusMCTruth.B2KsMuMu.Calculator = 'MCBu2KstarMuMuAngleCalculator'
  232. #add tools to branches
  233. if (KplusPi0Resolved):
  234. b2KstmumuTupleList[1].pi_zero_resolved.addTupleTool("TupleToolPi0Info")
  235. b2KstmumuTupleList[1].pi_zero_resolved.addTupleTool("TupleToolCaloHypo")
  236. b2KstmumuTupleList[1].pi_zero_resolved.addTupleTool("TupleToolGeometry/Geo")
  237. b2KstmumuTupleList[1].pi_zero_resolved.Geo.Verbose = True
  238. b2KstmumuTupleList[1].gamma1.addTupleTool("TupleToolProtoPData")
  239. b2KstmumuTupleList[1].gamma1.addTupleTool("TupleToolPhotonInfo")
  240. if (year != "2018"): b2KstmumuTupleList[1].gamma1.addTupleTool("TupleToolCaloHypo")
  241. b2KstmumuTupleList[1].gamma2.addTupleTool("TupleToolProtoPData")
  242. b2KstmumuTupleList[1].gamma2.addTupleTool("TupleToolPhotonInfo")
  243. if (year != "2018"): b2KstmumuTupleList[1].gamma2.addTupleTool("TupleToolCaloHypo")
  244. for b2KstmumuTuple in b2KstmumuTupleList:
  245. b2KstmumuTuple.B_plus.addTupleTool("TupleToolGeometry/Geo")
  246. b2KstmumuTuple.B_plus.Geo.Verbose = True
  247. b2KstmumuTuple.B_plus.addTupleTool("TupleToolPropertime")
  248. #Adding Angle Calculator
  249. TupleToolP2VV_Bu = TupleToolP2VV('TupleToolP2VV_Bu')
  250. TupleToolP2VV_Bu.Calculator = 'Bu2KstarMuMuAngleCalculator'
  251. b2KstmumuTuple.B_plus.addTool(TupleToolP2VV_Bu)
  252. b2KstmumuTuple.B_plus.ToolList += ["TupleToolP2VV/TupleToolP2VV_Bu"]
  253. b2KstmumuTuple.K_star_plus.addTupleTool("TupleToolGeometry/Geo")
  254. b2KstmumuTuple.K_star_plus.Geo.Verbose = True
  255. b2KstmumuTuple.J_psi.addTupleTool("TupleToolGeometry/Geo")
  256. b2KstmumuTuple.J_psi.Geo.Verbose = True
  257. b2KstmumuTuple.mu_minus.addTupleTool("TupleToolGeometry/Geo")
  258. b2KstmumuTuple.mu_minus.Geo.Verbose = True
  259. b2KstmumuTuple.mu_plus.addTupleTool("TupleToolGeometry/Geo")
  260. b2KstmumuTuple.mu_plus.Geo.Verbose = True
  261. if (KShortPiPlus):
  262. b2KstmumuTupleList[0].K_short.addTupleTool("TupleToolGeometry/Geo")
  263. b2KstmumuTupleList[0].K_short.Geo.Verbose = True
  264. b2KstmumuTupleList[0].pi_plus.addTupleTool("TupleToolGeometry/Geo")
  265. b2KstmumuTupleList[0].pi_plus.Geo.Verbose = True
  266. if (KplusPi0Resolved):
  267. b2KstmumuTupleList[1].K_plus.addTupleTool("TupleToolGeometry/Geo")
  268. b2KstmumuTupleList[1].K_plus.Geo.Verbose = True
  269. ### DST isolation info tools ###
  270. for b2KstmumuTuple in b2KstmumuTupleList:
  271. if not(MDST):
  272. b2KstmumuTuple.addTupleTool("TupleToolTrackIsolation/TrackIso")
  273. b2KstmumuTuple.TrackIso.Verbose = True
  274. b2KstmumuTuple.addTupleTool("TupleToolConeIsolation/ConeIso")
  275. b2KstmumuTuple.addTool(TupleToolDecay, name="TupleToolDecayBplus")
  276. #decay tree fitter (DTF)
  277. b2KstmumuTuple.B_plus.addTupleTool('TupleToolDecayTreeFitter/DTF')
  278. b2KstmumuTuple.B_plus.DTF.constrainToOriginVertex = True
  279. b2KstmumuTuple.B_plus.DTF.UpdateDaughters = True
  280. b2KstmumuTuple.B_plus.DTF.Verbose = True
  281. #Add mass constraints
  282. if (KShortPiPlus):
  283. b2KstmumuTupleList[0].B_plus.DTF.daughtersToConstrain = ['KS0']
  284. if (KplusPi0Resolved):
  285. b2KstmumuTupleList[1].B_plus.DTF.daughtersToConstrain = ['pi0']
  286. #LoKi tools
  287. for b2KstmumuTuple in b2KstmumuTupleList:
  288. LoKiToolb2KstmumuTuple = b2KstmumuTuple.addTupleTool("LoKi::Hybrid::TupleTool/LoKiToolb2KstmumuTuple")
  289. LoKiToolb2KstmumuTuple.Variables = {"ETA" : "ETA" ,
  290. "PHI" : "PHI" ,
  291. "DOCA1" : "DOCA(1,2)" ,
  292. "CONEANGLE" : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/ConeIsoInfo', 'CONEANGLE', -1.)",
  293. "CONEMULT" : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/ConeIsoInfo', 'CONEMULT', -1.)",
  294. 'CONEPTASYM' : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/ConeIsoInfo', 'CONEPTASYM', -1.)",
  295. 'CONEPT': "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/ConeIsoInfo', 'CONEPT', -1.)",
  296. 'CONEP': "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/ConeIsoInfo', 'CONEP', -1.)",
  297. 'CONEPASYM' : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/ConeIsoInfo', 'CONEPASYM', -1.)",
  298. 'CONEDELTAETA' : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/ConeIsoInfo', 'CONEDELTAETA', -1.)",
  299. 'CONEDELTAPHI' : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/ConeIsoInfo', 'CONEDELTAPHI', -1.)",
  300. 'VTXISONUMVTX' : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/VtxIsoInfo', 'VTXISONUMVTX', -1.)",
  301. 'VTXISODCHI2ONETRACK': "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/VtxIsoInfo', 'VTXISODCHI2ONETRACK', -1.)",
  302. 'VTXISODCHI2MASSONETRACK' : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/VtxIsoInfo', 'VTXISODCHI2MASSONETRACK', -1.)",
  303. 'VTXISODCHI2TWOTRACK' : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/VtxIsoInfo', 'VTXISODCHI2TWOTRACK', -1.)",
  304. 'VTXISODCHI2MASSTWOTRACK': "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/VtxIsoInfo', 'VTXISODCHI2MASSTWOTRACK', -1.)"
  305. };
  306. #trigger config
  307. b2KstmumuTT = b2KstmumuTuple.addTupleTool(TupleToolTISTOS)
  308. b2KstmumuTT.TriggerList = triggerlines
  309. b2KstmumuTT.FillL0 = True
  310. b2KstmumuTT.FillHlt1 = True
  311. b2KstmumuTT.FillHlt2 = True
  312. b2KstmumuTT.Verbose = True
  313. b2KstmumuTT.VerboseL0 = True
  314. b2KstmumuTT.VerboseHlt1 = True
  315. b2KstmumuTT.VerboseHlt2 = True
  316. ###########################
  317. ## Main sequence
  318. ###########################
  319. b2KstmumuSeq = GaudiSequencer("b2KstmumuSeq")
  320. if (KShortPiPlus):
  321. b2KstmumuSeq.Members += [b2KstmumuTupleList[0]]
  322. if (KplusPi0Resolved):
  323. b2KstmumuSeq.Members += [b2KstmumuTupleList[1]]
  324. b2KstmumuSeq.ModeOR = True
  325. b2KstmumuSeq.ShortCircuit = False
  326. ###########################
  327. ## DaVinci configurations
  328. ###########################
  329. dv = DaVinci()
  330. #dv.EventPreFilters = [stripFilter]
  331. dv.UserAlgorithms += [b2KstmumuSeq]
  332. if(MDST):
  333. dv.InputType = "MDST"
  334. else:
  335. dv.InputType = "DST"
  336. dv.RootInTES = "/Event/{0}".format(stream)
  337. dv.DataType = year
  338. dv.Simulation = not data
  339. dv.Lumi = True
  340. #dv.VerboseMessages = True
  341. dv.EvtMax = 100000 #100000 #100000
  342. dv.PrintFreq = 1000
  343. dv.TupleFile = "b2Kstmumu"+year+"Mag"+pol_str+".root"
  344. #tags from http://lhcb-release-area.web.cern.ch/LHCb-release-area/DOC/dbase/conddb/release_notes.html
  345. if (data):
  346. if(year == "2011"): #'2011'
  347. dv.CondDBtag = "cond-20150409-1"
  348. dv.DDDBtag = "dddb-20150928"
  349. elif(year == "2012"): #'2012'
  350. dv.CondDBtag = "cond-20150409-1"
  351. dv.DDDBtag = "dddb-20150928"
  352. elif(year == "2015"): #'2015'
  353. dv.CondDBtag = "cond-20150828"
  354. dv.DDDBtag = "dddb-20150724"
  355. elif(year == "2016"):
  356. dv.CondDBtag = "cond-20161004"
  357. dv.DDDBtag = "dddb-20150724"
  358. elif(year == "2017"):
  359. dv.CondDBtag = "cond-20170724"
  360. dv.DDDBtag = "dddb-20170721-3"
  361. else: # year=="2018"
  362. dv.CondDBtag = "cond-20180202"
  363. dv.DDDBtag = "dddb-20171030-3"
  364. else: #MC
  365. if(KShortPiPlus):
  366. if(year == "2011"): #'2011'
  367. if (down):
  368. dv.CondDBtag = "sim-20160614-1-vc-md100"#"sim-20111111-vc-md100
  369. dv.DDDBtag = "dddb-20160318-1"#"MC11-20111102"
  370. if (reference):
  371. dv.CondDBtag = "sim-20160614-1-vc-md100"#"sim-20111111-vc-md100"
  372. dv.DDDBtag = "dddb-20160318-1"#"MC11-20111102"
  373. if (phsp):
  374. dv.CondDBtag = "sim-20160614-1-vc-md100"
  375. dv.DDDBtag = "dddb-20170721-1"
  376. else: #'up'
  377. dv.CondDBtag = "sim-20160614-1-vc-mu100"#"sim-20111111-vc-mu100"
  378. dv.DDDBtag = "dddb-20160318-1"#"MC11-20111102"
  379. if (reference):
  380. dv.CondDBtag = "sim-20160614-1-vc-mu100"#"sim-20111111-vc-mu100"
  381. dv.DDDBtag = "dddb-20160318-1"#"MC11-20111102"
  382. if (phsp):
  383. dv.CondDBtag = "sim-20160614-1-vc-mu100"
  384. dv.DDDBtag = "dddb-20170721-1"
  385. elif(year == "2012"): #'2012'
  386. if (down):
  387. dv.CondDBtag = "sim-20160321-2-vc-md100"#"Sim08-20130503-1-vc-md100"
  388. dv.DDDBtag = "dddb-20150928"#"Sim08-20130503-1"
  389. if (reference):
  390. dv.CondDBtag = "sim-20160321-2-vc-md100"#"sim-20141210-1-vc-md100"
  391. dv.DDDBtag = "dddb-20150928"#"MC11-20111102"
  392. if (phsp):
  393. dv.CondDBtag = "sim-20160321-2-vc-md100"
  394. dv.DDDBtag = "dddb-20170721-2"
  395. else: #'up'
  396. dv.CondDBtag = "sim-20160321-2-vc-mu100"#"Sim08-20130503-1-vc-mu100"
  397. dv.DDDBtag = "dddb-20150928"#"Sim08-20130503-1"
  398. if (reference):
  399. dv.CondDBtag = "sim-20160321-2-vc-mu100"#"sim-20141210-1-vc-mu100"
  400. dv.DDDBtag = "dddb-20150928"#"MC11-20111102"
  401. if (phsp):
  402. dv.CondDBtag = "sim-20160321-2-vc-mu100"
  403. dv.DDDBtag = "dddb-20170721-2"
  404. elif(year == "2015"): #'2015'
  405. if (down):
  406. dv.CondDBtag = "sim-20161124-vc-md100"
  407. dv.DDDBtag = "dddb-20150724"
  408. if (reference):
  409. dv.CondDBtag = ""
  410. dv.DDDBtag = ""
  411. if (phsp):
  412. dv.CondDBtag = "sim-20161124-vc-md100"
  413. dv.DDDBtag = "dddb-20170721-3"
  414. else: #'up'
  415. dv.CondDBtag = "sim-20161124-vc-mu100"
  416. dv.DDDBtag = "dddb-20150724"
  417. if (reference):
  418. dv.CondDBtag = ""
  419. dv.DDDBtag = ""
  420. if (phsp):
  421. dv.CondDBtag = "sim-20161124-vc-mu100"
  422. dv.DDDBtag = "dddb-20170721-3"
  423. elif(year == "2016"): #'2016'
  424. if (down):
  425. dv.CondDBtag = "sim-20170721-2-vc-md100"
  426. dv.DDDBtag = "dddb-20170721-3"
  427. if (reference):
  428. dv.CondDBtag = "sim-20170721-2-vc-mu100"
  429. dv.DDDBtag = "dddb-20170721-3"
  430. if (phsp):
  431. dv.CondDBtag = "sim-20170721-2-vc-md100"
  432. dv.DDDBtag = "dddb-20170721-3"
  433. else: #'up'
  434. dv.CondDBtag = "sim-20170721-2-vc-mu100"
  435. dv.DDDBtag = "dddb-20170721-3"
  436. if (reference):
  437. dv.CondDBtag = "sim-20170721-2-vc-mu100"
  438. dv.DDDBtag = "dddb-20170721-3"
  439. if (phsp):
  440. dv.CondDBtag = "sim-20170721-2-vc-mu100"
  441. dv.DDDBtag = "dddb-20170721-3"
  442. elif(year == "2017"): #'2017'
  443. if (down):
  444. dv.CondDBtag = "sim-20180411-vc-md100"
  445. dv.DDDBtag = "dddb-20170721-3"
  446. if (reference):
  447. dv.CondDBtag = ""
  448. dv.DDDBtag = ""
  449. if (phsp):
  450. dv.CondDBtag = "sim-20180411-vc-md100"
  451. dv.DDDBtag = "dddb-20170721-3"
  452. else: #'up'
  453. dv.CondDBtag = "sim-20180411-vc-mu100"
  454. dv.DDDBtag = "dddb-20170721-3"
  455. if (reference):
  456. dv.CondDBtag = ""
  457. if (phsp):
  458. dv.CondDBtag = "sim-20180411-vc-mu100"
  459. dv.DDDBtag = "dddb-20170721-3"
  460. else: #'2018' #Preparation for 2018
  461. if (down):
  462. dv.CondDBtag = ""
  463. dv.DDDBtag = ""
  464. if (reference):
  465. dv.CondDBtag = ""
  466. dv.DDDBtag = ""
  467. if (phsp):
  468. dv.CondDBtag = "sim-20190128-vc-md100"
  469. dv.DDDBtag = "dddb-20170721-3"
  470. else: #'up'
  471. dv.CondDBtag = ""
  472. dv.DDDBtag = ""
  473. if (reference):
  474. dv.CondDBtag = ""
  475. dv.DDDBtag = ""
  476. if (phsp):
  477. dv.CondDBtag = "sim-20190128-vc-mu100"
  478. dv.DDDBtag = "dddb-20170721-3"
  479. if(KplusPi0Resolved):
  480. if(year == "2011"): #'2011'
  481. if (down):
  482. dv.CondDBtag = "sim-20160614-1-vc-md100"#"sim-20111111-vc-md100
  483. dv.DDDBtag = "dddb-20160318-1"#"Sim08-20130503-1"
  484. if (reference):
  485. dv.CondDBtag = "sim-20160614-1-vc-md100"#"sim-20111111-vc-md100"
  486. dv.DDDBtag = "dddb-20160318-1"#"MC11-20111102"
  487. if (phsp):
  488. dv.CondDBtag = "sim-20160614-1-vc-md100"
  489. dv.DDDBtag = "dddb-20170721-1"
  490. else: #'up'
  491. dv.CondDBtag = "sim-20160614-1-vc-mu100"#"sim-20111111-vc-mu100
  492. dv.DDDBtag = "dddb-20160318-1"#"Sim08-20130503-1"
  493. if (reference):
  494. dv.CondDBtag = "sim-20160614-1-vc-mu100"#"sim-20111111-vc-mu100"
  495. dv.DDDBtag = "dddb-20160318-1"#"MC11-20111102"
  496. if (phsp):
  497. dv.CondDBtag = "sim-20160614-1-vc-mu100"
  498. dv.DDDBtag = "dddb-20170721-1"
  499. elif(year == "2012"): #'2012'
  500. if (down):
  501. dv.CondDBtag = "sim-20160321-2-vc-md100"#"Sim08-20130503-1-vc-md100"
  502. dv.DDDBtag = "dddb-20150928"#"Sim08-20130503-1"
  503. if (reference):
  504. dv.CondDBtag = "sim-20160321-2-vc-md100"#"sim-20141210-1-vc-md100"
  505. dv.DDDBtag = "dddb-20150928"#"MC11-20111102"
  506. if (phsp):
  507. dv.CondDBtag = "sim-20160321-2-vc-md100"
  508. dv.DDDBtag = "dddb-20170721-2"
  509. else: #'up'
  510. dv.CondDBtag = "sim-20160321-2-vc-mu100"#"Sim08-20130503-1-vc-mu100"
  511. dv.DDDBtag = "dddb-20150928"#"Sim08-20130503-1"
  512. if (reference):
  513. dv.CondDBtag = "sim-20160321-2-vc-mu100"#"sim-20141210-1-vc-mu100"
  514. dv.DDDBtag = "dddb-20150928"#"MC11-20111102"
  515. if (phsp):
  516. dv.CondDBtag = "sim-20160321-2-vc-mu100"
  517. dv.DDDBtag = "dddb-20170721-2"
  518. elif(year == "2015"): #'2015'
  519. if (down):
  520. dv.CondDBtag = "sim-20161124-vc-md100"
  521. dv.DDDBtag = "dddb-20150724"
  522. if (reference):
  523. dv.CondDBtag = "sim-20161124-vc-md100"
  524. dv.DDDBtag = "dddb-20170721-3"
  525. if (phsp):
  526. dv.CondDBtag = "sim-20161124-vc-md100"
  527. dv.DDDBtag = "dddb-20170721-3"
  528. else: #'up'
  529. dv.CondDBtag = "sim-20161124-vc-mu100"
  530. dv.DDDBtag = "dddb-20150724"
  531. if (reference):
  532. dv.CondDBtag = "sim-20161124-vc-mu100"
  533. dv.DDDBtag = "dddb-20170721-3"
  534. if (phsp):
  535. dv.CondDBtag = "sim-20161124-vc-mu100"
  536. dv.DDDBtag = "dddb-20170721-3"
  537. elif(year == "2016"): #'2016'
  538. if (down):
  539. dv.CondDBtag = "sim-20170721-2-vc-md100"
  540. dv.DDDBtag = "dddb-20170721-3"
  541. if (reference):
  542. dv.CondDBtag = "sim-20170721-2-vc-md100"
  543. dv.DDDBtag = "dddb-20170721-3"
  544. if (phsp):
  545. dv.CondDBtag = "sim-20170721-2-vc-md100"
  546. dv.DDDBtag = "dddb-20170721-3"
  547. else: #'up'
  548. dv.CondDBtag = "sim-20170721-2-vc-mu100"
  549. dv.DDDBtag = "dddb-20170721-3"
  550. if (reference):
  551. dv.CondDBtag = "sim-20170721-2-vc-mu100"
  552. dv.DDDBtag = "dddb-20170721-3"
  553. if (phsp):
  554. dv.CondDBtag = "sim-20170721-2-vc-mu100"
  555. dv.DDDBtag = "dddb-20170721-3"
  556. elif(year == "2017"): #'2017'
  557. if (down):
  558. dv.CondDBtag = "sim-20180411-vc-md100"
  559. dv.DDDBtag = "dddb-20170721-3"
  560. if (reference):
  561. dv.CondDBtag = ""
  562. dv.DDDBtag = ""
  563. if (phsp):
  564. dv.CondDBtag = "sim-20180411-vc-md100"
  565. dv.DDDBtag = "dddb-20170721-3"
  566. else: #'up'
  567. dv.CondDBtag = "sim-20180411-vc-mu100"
  568. dv.DDDBtag = "dddb-20170721-3"
  569. if (reference):
  570. dv.CondDBtag = ""
  571. dv.DDDBtag = ""
  572. if (phsp):
  573. dv.CondDBtag = "sim-20180411-vc-mu100"
  574. dv.DDDBtag = "dddb-20170721-3"
  575. else: #'2018' #Preparation for 2018
  576. if (down):
  577. dv.CondDBtag = "sim-20190430-vc-md100"
  578. dv.DDDBtag = "dddb-20170721-3"
  579. if (reference):
  580. dv.CondDBtag = ""
  581. dv.DDDBtag = ""
  582. if (phsp):
  583. dv.CondDBtag = "sim-20190128-vc-md100"
  584. dv.DDDBtag = "dddb-20170721-3"
  585. else: #'up'
  586. dv.CondDBtag = "sim-20190430-vc-md100"
  587. dv.DDDBtag = "dddb-20170721-3"
  588. if (reference):
  589. dv.CondDBtag = ""
  590. dv.DDDBtag = ""
  591. if (phsp):
  592. dv.CondDBtag = "sim-20190128-vc-mu100"
  593. dv.DDDBtag = "dddb-20170721-3"