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.

514 lines
21 KiB

  1. from GaudiConf import IOHelper
  2. #MC
  3. IOHelper('ROOT').inputFiles([
  4. '/afs/cern.ch/work/r/rekopecn/public/B_2_KstarMuMu/DaVinciDev_v38r1p3/00038003_00000002_1.allstreams.dst']) #MC 11 B0 down
  5. ############# Global settings
  6. runFilters = False
  7. reference = False
  8. phsp = False
  9. data = False
  10. down = True
  11. year = "2011"
  12. stream = "AllStreams"
  13. line = "B2XMuMu_Line"
  14. MCB0 = True
  15. #subdecay chains
  16. KShortPiPlus = False
  17. KplusPi0Merged = False
  18. KplusPi0Resolved = True
  19. from Gaudi.Configuration import *
  20. from Configurables import DaVinci
  21. from Configurables import FilterDesktop
  22. from Configurables import CombineParticles
  23. from Configurables import GaudiSequencer
  24. from Configurables import TupleToolP2VV, MCTupleToolP2VV
  25. MessageSvc().Format = "% F%100W%S%7W%R%T %0W%M"
  26. #Run1 or Run2
  27. #DST or MDST?
  28. Run1 = True
  29. MDST = True
  30. if (year == "2011" or year == "2012"):
  31. Run1 = True
  32. elif (year == "2015" or year == "2016"):
  33. Run1 = False
  34. else:
  35. print "[WARNING]\tWrong year input!\n"
  36. if (MCB0):
  37. MDST = False
  38. print "\n[INFO]\tUsing DST as input.\n"
  39. else:
  40. if( not data and Run1 ):
  41. MDST = False
  42. print "\n[INFO]\tUsing DST as input.\n"
  43. else:
  44. print "\n[INFO]\tUsing MDST as input.\n"
  45. #MC Truthmatching fix for run 1 (obsolete)
  46. #if (not data and Run1):
  47. # from Configurables import PhysConf
  48. # PhysConf().CaloReProcessing=True
  49. #triggerlines
  50. if (Run1):
  51. print "[INFO]\tTriggerlines for Run 1 added!\n"
  52. triggerlines = [
  53. #l0
  54. "L0HadronDecision",
  55. "L0MuonDecision",
  56. "L0GlobalDecision",
  57. #hlt1
  58. "Hlt1TrackMuonDecision",
  59. "Hlt1DiMuonHighMassDecision",
  60. "Hlt1DiMuonLowMassDecision",
  61. "Hlt1TrackAllL0Decision",
  62. "Hlt1TrackAllL0TightDecision",
  63. "Hlt1L0AnyDecision",
  64. "Hlt1MBNoBiasDecision",
  65. "Hlt1GlobalDecision",
  66. #hlt2
  67. "Hlt2CharmHadD2HHHHDecision",
  68. "Hlt2CharmHadD2HHHHWideMassDecision",
  69. "Hlt2IncPhiDecision",
  70. "Hlt2ExpressDs2PhiPiDecision",
  71. "Hlt2Topo2BodySimpleDecision",
  72. "Hlt2Topo3BodySimpleDecision",
  73. "Hlt2Topo2BodyBBDTDecision",
  74. "Hlt2Topo3BodyBBDTDecision",
  75. "Hlt2TopoMu2BodyBBDTDecision",
  76. "Hlt2TopoMu3BodyBBDTDecision",
  77. "Hlt2TopoE2BodyBBDTDecision",
  78. "Hlt2TopoE3BodyBBDTDecision",
  79. "Hlt2RadiativeTopoTrackTOSDecision",
  80. "Hlt2RadiativeTopoPhotonL0Decision",
  81. "Hlt2SingleMuonDecision",
  82. "Hlt2DiMuonDetachedDecision",
  83. "Hlt2DiMuonDetachedHeavyDecision"]
  84. else:
  85. print "[INFO]\tTriggerlines for Run 2 added!\n"
  86. triggerlines = [
  87. #l0
  88. "L0HadronDecision",
  89. "L0MuonDecision",
  90. "L0DiMuonDecision",
  91. #"L0GlobalDecision",
  92. #hlt1
  93. "Hlt1TrackMuonDecision",
  94. "Hlt1DiMuonHighMassDecision",
  95. "Hlt1DiMuonLowMassDecision",
  96. "Hlt1TrackMVADecision",
  97. "Hlt1TwoTrackMVADecision",
  98. "Hlt1L0AnyDecision",
  99. "Hlt1MBNoBiasDecision",
  100. "Hlt1GlobalDecision",
  101. #hlt2
  102. "Hlt2Topo2BodyDecision",
  103. "Hlt2Topo3BodyDecision",
  104. "Hlt2TopoMu2BodyDecision",
  105. "Hlt2TopoMu3BodyDecision",
  106. "Hlt2TopoMuMu2BodyDecision",
  107. "Hlt2TopoMuMu3BodyDecision",
  108. "Hlt2SingleMuonDecision",
  109. "Hlt2SingleMuonHighPTDecision",
  110. "Hlt2SingleMuonLowPTDecision",
  111. "Hlt2DiMuonDetachedDecision",
  112. "Hlt2DiMuonDetachedHeavyDecision"]
  113. ############### Pre Filter, does not really do much except choose only candidates passing the Stripping line, maybe beneficial to performance
  114. #from Configurables import LoKi__HDRFilter as StripFilter
  115. #stripFilter = StripFilter( "stripPassFilter",\
  116. # Code = "HLT_PASS('StrippingB2XMuMu_LineDecision')",\
  117. # Location= "/Event/Strip/Phys/DecReports")
  118. ############# DecayTreeTuple
  119. from DecayTreeTuple.Configuration import *
  120. from Configurables import TupleToolTISTOS
  121. from PhysSelPython.Wrappers import AutomaticData, Selection, SelectionSequence
  122. from Configurables import PrintDecayTree, PrintDecayTreeTool
  123. ############# MCDecayTreeTuple
  124. from Configurables import MCDecayTreeTuple
  125. from Configurables import MCTupleToolKinematic, TupleToolMCBackgroundInfo, TupleToolMCTruth
  126. #Fix Truthmatching
  127. from Configurables import BackgroundCategory,Calo2MCTool,DaVinciSmartAssociator
  128. ##subpid stuff
  129. #from Configurables import SubPIDMMFilter
  130. from Configurables import SubstitutePID ,BTaggingTool
  131. from Configurables import TupleToolDecayTreeFitter, TupleToolTrackIsolation, TupleToolConeIsolation
  132. from Configurables import LoKi__Hybrid__TupleTool
  133. #LoKiToolb2KstmumuTuple = LoKi__Hybrid__TupleTool( 'LoKiTool')
  134. ##########################################
  135. ###B+ -> (K*(892)+ -> KS0 pi+) mu+ mu- ### (> 1 <)
  136. ##########################################
  137. ### AND/OR ###
  138. ##########################################################
  139. ###B+ -> (K*(892)+ -> K+ (pi0 -> gamma gamma)) mu+ mu- ### (> 2 <)
  140. ##########################################################
  141. # this is needed to emulate Stripping 21 on Stripping 20
  142. #if MCB0 is True:
  143. #from Configurables import PhysConf
  144. #PhysConf().CaloReProcessing = True
  145. #This is probably a very stupid idea but python should be okay with it
  146. b2KstmumuTupleList= []
  147. b2KstmumuTupleList.append(DecayTreeTuple("b2KstKs0pimumu_Tuple"))
  148. b2KstmumuTupleList.append(DecayTreeTuple("b2KstKpi0mumuResolvedTuple"))
  149. for b2KstmumuTuple in b2KstmumuTupleList:
  150. if (MDST):
  151. b2KstmumuTuple.RootInTES = '/Event/{0}'.format(stream)
  152. b2KstmumuTuple.Inputs = ['Phys/{0}/Particles'.format(line)]
  153. else:
  154. b2KstmumuTuple.Inputs = ['{0}/Phys/{1}/Particles'.format(stream, line)]
  155. #decay descriptor
  156. b2KstmumuTupleList[0].Decay = "[B+ -> ^(K*(892)+ -> ^(KS0 -> ^pi+ ^pi-) ^pi+) ^(J/psi(1S) -> ^mu- ^mu+)]CC"
  157. b2KstmumuTupleList[0].addBranches({
  158. "B_plus" : "^([B+ -> (K*(892)+ -> (KS0 -> pi+ pi-) pi+) (J/psi(1S) -> mu- mu+)]CC)" ,
  159. "K_star_plus" : "[B+ -> ^(K*(892)+ -> (KS0 -> pi+ pi-) pi+) (J/psi(1S) -> mu- mu+)]CC",
  160. "K_short" : "[B+ -> (K*(892)+ -> ^(KS0 -> pi+ pi-) pi+) (J/psi(1S) -> mu- mu+)]CC",
  161. "Ks_pi_plus" : "[B+ -> (K*(892)+ -> (KS0 -> ^pi+ pi-) pi+) (J/psi(1S) -> mu- mu+)]CC",
  162. "Ks_pi_minus" : "[B+ -> (K*(892)+ -> (KS0 -> pi+ ^pi-) pi+) (J/psi(1S) -> mu- mu+)]CC",
  163. "pi_plus" : "[B+ -> (K*(892)+ -> (KS0 -> pi+ pi-) ^pi+) (J/psi(1S) -> mu- mu+)]CC",
  164. "J_psi" : "[B+ -> (K*(892)+ -> (KS0 -> pi+ pi-) pi+) ^(J/psi(1S) -> mu- mu+)]CC",
  165. "mu_minus" : "[B+ -> (K*(892)+ -> (KS0 -> pi+ pi-) pi+) (J/psi(1S) -> ^mu- mu+)]CC",
  166. "mu_plus" : "[B+ -> (K*(892)+ -> (KS0 -> pi+ pi-) pi+) (J/psi(1S) -> mu- ^mu+)]CC"
  167. })
  168. b2KstmumuTupleList[1].Decay = "[B+ -> ^(K*(892)+ -> ^K+ ^(pi0 -> ^gamma ^gamma)) ^(J/psi(1S) -> ^mu- ^mu+)]CC"
  169. b2KstmumuTupleList[1].addBranches({
  170. "B_plus" : "^([B+ -> (K*(892)+ -> K+ (pi0 -> gamma gamma)) (J/psi(1S) -> mu- mu+)]CC)",
  171. "K_star_plus" : "[B+ -> ^(K*(892)+ -> K+ (pi0 -> gamma gamma)) (J/psi(1S) -> mu- mu+)]CC",
  172. "K_plus" : "[B+ -> (K*(892)+ -> ^K+ (pi0 -> gamma gamma)) (J/psi(1S) -> mu- mu+)]CC",
  173. "pi_zero_resolved" : "[B+ -> (K*(892)+ -> K+ ^(pi0 -> gamma gamma)) (J/psi(1S) -> mu- mu+)]CC",
  174. "gamma1" : "[B+ -> (K*(892)+ -> K+ (pi0 -> ^gamma gamma)) (J/psi(1S) -> mu- mu+)]CC",
  175. "gamma2" : "[B+ -> (K*(892)+ -> K+ (pi0 -> gamma ^gamma)) (J/psi(1S) -> mu- mu+)]CC",
  176. "J_psi" : "[B+ -> (K*(892)+ -> K+ (pi0 -> gamma gamma)) ^(J/psi(1S) -> mu- mu+)]CC",
  177. "mu_minus" : "[B+ -> (K*(892)+ -> K+ (pi0 -> gamma gamma)) (J/psi(1S) -> ^mu- mu+)]CC",
  178. "mu_plus" : "[B+ -> (K*(892)+ -> K+ (pi0 -> gamma gamma)) (J/psi(1S) -> mu- ^mu+)]CC"
  179. })
  180. #add tools
  181. for b2KstmumuTuple in b2KstmumuTupleList:
  182. b2KstmumuTuple.ToolList = ["TupleToolKinematic",
  183. "TupleToolPrimaries",
  184. "TupleToolEventInfo",
  185. "TupleToolTrackInfo",
  186. "TupleToolRecoStats",
  187. "TupleToolAngles",
  188. "TupleToolPid",
  189. "TupleToolPhotonInfo"]
  190. #add MCtools
  191. if not (data):
  192. b2KstmumuMCTuple = b2KstmumuTuple.addTupleTool("TupleToolMCTruth/b2KstmumuMCTuple")
  193. b2KstmumuMCTuple.addTupleTool("MCTupleToolHierarchy")
  194. b2KstmumuTuple.ToolList += ["MCTupleToolKinematic",
  195. "TupleToolMCBackgroundInfo"]
  196. #Adding Angle Calculator
  197. b2KstmumuTuple.B_plus.addTool(TupleToolMCTruth, name="B_plusMCTruth")
  198. b2KstmumuTuple.B_plus.ToolList = [ "TupleToolMCTruth/B_plusMCTruth"]
  199. b2KstmumuTuple.B_plus.B_plusMCTruth.ToolList = [ "MCTupleToolP2VV/B2KsMuMu"]
  200. b2KstmumuTuple.B_plus.B_plusMCTruth.addTool( MCTupleToolP2VV, name="B2KsMuMu" )
  201. b2KstmumuTuple.B_plus.B_plusMCTruth.B2KsMuMu.Calculator = 'MCBu2KstarMuMuAngleCalculator'
  202. #add tools to branches
  203. if (KplusPi0Resolved):
  204. b2KstmumuTupleList[1].pi_zero_resolved.addTupleTool("TupleToolPi0Info")
  205. b2KstmumuTupleList[1].pi_zero_resolved.addTupleTool("TupleToolCaloHypo")
  206. b2KstmumuTupleList[1].pi_zero_resolved.addTupleTool("TupleToolGeometry/Geo")
  207. b2KstmumuTupleList[1].pi_zero_resolved.Geo.Verbose = True
  208. b2KstmumuTupleList[1].gamma1.addTupleTool("TupleToolProtoPData")
  209. b2KstmumuTupleList[1].gamma1.addTupleTool("TupleToolPhotonInfo")
  210. b2KstmumuTupleList[1].gamma1.addTupleTool("TupleToolCaloHypo")
  211. b2KstmumuTupleList[1].gamma2.addTupleTool("TupleToolProtoPData")
  212. b2KstmumuTupleList[1].gamma2.addTupleTool("TupleToolPhotonInfo")
  213. b2KstmumuTupleList[1].gamma2.addTupleTool("TupleToolCaloHypo")
  214. for b2KstmumuTuple in b2KstmumuTupleList:
  215. b2KstmumuTuple.B_plus.addTupleTool("TupleToolGeometry/Geo")
  216. b2KstmumuTuple.B_plus.Geo.Verbose = True
  217. b2KstmumuTuple.B_plus.addTupleTool("TupleToolPropertime")
  218. #Adding Angle Calculator
  219. TupleToolP2VV_Bu = TupleToolP2VV('TupleToolP2VV_Bu')
  220. TupleToolP2VV_Bu.Calculator = 'Bu2KstarMuMuAngleCalculator'
  221. b2KstmumuTuple.B_plus.addTool(TupleToolP2VV_Bu)
  222. b2KstmumuTuple.B_plus.ToolList += ["TupleToolP2VV/TupleToolP2VV_Bu"]
  223. b2KstmumuTuple.J_psi.addTupleTool("TupleToolGeometry/Geo")
  224. b2KstmumuTuple.J_psi.Geo.Verbose = True
  225. b2KstmumuTuple.mu_minus.addTupleTool("TupleToolGeometry/Geo")
  226. b2KstmumuTuple.mu_minus.Geo.Verbose = True
  227. b2KstmumuTuple.mu_plus.addTupleTool("TupleToolGeometry/Geo")
  228. b2KstmumuTuple.mu_plus.Geo.Verbose = True
  229. if (KShortPiPlus):
  230. b2KstmumuTupleList[0].K_short.addTupleTool("TupleToolGeometry/Geo")
  231. b2KstmumuTupleList[0].K_short.Geo.Verbose = True
  232. b2KstmumuTupleList[0].pi_plus.addTupleTool("TupleToolGeometry/Geo")
  233. b2KstmumuTupleList[0].pi_plus.Geo.Verbose = True
  234. if (KplusPi0Resolved):
  235. b2KstmumuTupleList[1].K_plus.addTupleTool("TupleToolGeometry/Geo")
  236. b2KstmumuTupleList[1].K_plus.Geo.Verbose = True
  237. ### DST isolation info tools ###
  238. for b2KstmumuTuple in b2KstmumuTupleList:
  239. if not(MDST):
  240. b2KstmumuTuple.addTupleTool("TupleToolTrackIsolation/TrackIso")
  241. b2KstmumuTuple.TrackIso.Verbose = True
  242. b2KstmumuTuple.addTupleTool("TupleToolConeIsolation/ConeIso")
  243. b2KstmumuTuple.addTool(TupleToolDecay, name="TupleToolDecayBplus")
  244. #decay tree fitter (BTF)
  245. b2KstmumuTuple.B_plus.addTupleTool('TupleToolDecayTreeFitter/DTF')
  246. b2KstmumuTuple.B_plus.DTF.constrainToOriginVertex = True
  247. b2KstmumuTuple.B_plus.DTF.UpdateDaughters = True
  248. b2KstmumuTuple.B_plus.DTF.Verbose = True
  249. #Add mass constraints
  250. if (KShortPiPlus):
  251. b2KstmumuTupleList[0].B_plus.DTF.daughtersToConstrain = ['KS0']
  252. if (KplusPi0Resolved):
  253. b2KstmumuTupleList[1].B_plus.DTF.daughtersToConstrain = ['pi0']
  254. #LoKi tools
  255. for b2KstmumuTuple in b2KstmumuTupleList:
  256. LoKiToolb2KstmumuTuple = b2KstmumuTuple.addTupleTool("LoKi::Hybrid::TupleTool/LoKiTool")
  257. LoKiToolb2KstmumuTuple.Variables = {"ETA" : "ETA" ,
  258. "PHI" : "PHI" ,
  259. "DOCA1" : "DOCA(1,2)" ,
  260. # "ETA" : "RELINFO('/Event/Dimuon" + stream + "/Phys/B2XMuMu_Line/ETA', 'ETA', -1.)"
  261. # "PHI" : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/ConeIsoInfo', 'PHI', -1.)",
  262. # 'DOCA1' : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/ConeIsoInfo', 'DOCA(1,2)', -1.)",
  263. "CONEANGLE" : "RELINFO('/Event/Dimuon" + stream + "/Phys/B2XMuMu_Line/ConeIsoInfo', 'CONEANGLE', -1.)",
  264. "CONEMULT" : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/ConeIsoInfo', 'CONEMULT', -1.)",
  265. 'CONEPTASYM' : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/ConeIsoInfo', 'CONEPTASYM', -1.)",
  266. 'CONEPT': "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/ConeIsoInfo', 'CONEPT', -1.)",
  267. 'CONEP': "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/ConeIsoInfo', 'CONEP', -1.)",
  268. 'CONEPASYM' : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/ConeIsoInfo', 'CONEPASYM', -1.)",
  269. 'CONEDELTAETA' : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/ConeIsoInfo', 'CONEDELTAETA', -1.)",
  270. 'CONEDELTAPHI' : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/ConeIsoInfo', 'CONEDELTAPHI', -1.)",
  271. 'VTXISONUMVTX' : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/VtxIsoInfo', 'VTXISONUMVTX', -1.)",
  272. 'VTXISODCHI2ONETRACK': "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/VtxIsoInfo', 'VTXISODCHI2ONETRACK', -1.)",
  273. 'VTXISODCHI2MASSONETRACK' : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/VtxIsoInfo', 'VTXISODCHI2MASSONETRACK', -1.)",
  274. 'VTXISODCHI2TWOTRACK' : "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/VtxIsoInfo', 'VTXISODCHI2TWOTRACK', -1.)",
  275. 'VTXISODCHI2MASSTWOTRACK': "RELINFO('/Event/" + stream + "/Phys/B2XMuMu_Line/VtxIsoInfo', 'VTXISODCHI2MASSTWOTRACK', -1.)"
  276. };
  277. #trigger config
  278. b2KstmumuTT = b2KstmumuTuple.addTupleTool(TupleToolTISTOS)
  279. b2KstmumuTT.TriggerList = triggerlines
  280. b2KstmumuTT.FillL0 = True
  281. b2KstmumuTT.FillHlt1 = True
  282. b2KstmumuTT.FillHlt2 = True
  283. b2KstmumuTT.Verbose = True
  284. b2KstmumuTT.VerboseL0 = True
  285. b2KstmumuTT.VerboseHlt1 = True
  286. b2KstmumuTT.VerboseHlt2 = True
  287. ###########################
  288. ##Main sequence
  289. ###########################
  290. b2KstmumuSeq = GaudiSequencer("b2KstmumuSeq")
  291. if (KShortPiPlus):
  292. b2KstmumuSeq.Members += [b2KstmumuTupleList[0]]
  293. if (KplusPi0Resolved):
  294. b2KstmumuSeq.Members += [b2KstmumuTupleList[1]]
  295. b2KstmumuSeq.ModeOR = True
  296. b2KstmumuSeq.ShortCircuit = False
  297. ###########################
  298. ##DaVinci configurations
  299. ###########################
  300. dv = DaVinci()
  301. #dv.EventPreFilters = [stripFilter]
  302. dv.UserAlgorithms += [b2KstmumuSeq]
  303. if(MDST):
  304. dv.InputType = "MDST"
  305. else:
  306. dv.InputType = "DST"
  307. dv.RootInTES = "/Event/{0}".format(stream)
  308. dv.DataType = year
  309. dv.Simulation = not data
  310. dv.Lumi = True
  311. #dv.VerboseMessages = True
  312. dv.EvtMax = -1 #10000 #100000 #100000
  313. dv.PrintFreq = 1000
  314. dv.TupleFile = "b2Kstmumu.root"
  315. #tags from http://lhcb-release-area.web.cern.ch/LHCb-release-area/DOC/dbase/conddb/release_notes.html
  316. if (data):
  317. if(year == "2011"): #'2011'
  318. dv.CondDBtag = "cond-20150409-1"
  319. dv.DDDBtag = "dddb-20150928"
  320. elif(year == "2012"): #'2012'
  321. dv.CondDBtag = "cond-20150409-1"
  322. dv.DDDBtag = "dddb-20150928"
  323. elif(year == "2015"): #'2015'
  324. dv.CondDBtag = "cond-20150828"
  325. dv.DDDBtag = "dddb-20150724"
  326. else: #'2016'
  327. dv.CondDBtag = "cond-20161004"
  328. dv.DDDBtag = "dddb-20150724"
  329. else: #MC
  330. if(KShortPiPlus):
  331. if(year == "2011"): #'2011'
  332. if (down):
  333. dv.CondDBtag = "sim-20160614-1-vc-md100"#"sim-20111111-vc-md100
  334. dv.DDDBtag = "dddb-20160318-1"#"MC11-20111102"
  335. if (reference):
  336. dv.CondDBtag = "sim-20160614-1-vc-md100"#"sim-20111111-vc-md100"
  337. dv.DDDBtag = "dddb-20160318-1"#"MC11-20111102"
  338. else: #'up'
  339. dv.CondDBtag = "sim-20160614-1-vc-mu100"#"sim-20111111-vc-mu100"
  340. dv.DDDBtag = "dddb-20160318-1"#"MC11-20111102"
  341. if (reference):
  342. dv.CondDBtag = "sim-20160614-1-vc-mu100"#"sim-20111111-vc-mu100"
  343. dv.DDDBtag = "dddb-20160318-1"#"MC11-20111102"
  344. elif(year == "2012"): #'2012'
  345. if (down):
  346. dv.CondDBtag = "sim-20160321-2-vc-md100"#"Sim08-20130503-1-vc-md100"
  347. dv.DDDBtag = "dddb-20150928"#"Sim08-20130503-1"
  348. if (reference):
  349. dv.CondDBtag = "sim-20160321-2-vc-md100"#"sim-20141210-1-vc-md100"
  350. dv.DDDBtag = "dddb-20150928"#"MC11-20111102"
  351. else: #'up'
  352. dv.CondDBtag = "sim-20160321-2-vc-mu100"#"Sim08-20130503-1-vc-mu100"
  353. dv.DDDBtag = "dddb-20150928"#"Sim08-20130503-1"
  354. if (reference):
  355. dv.CondDBtag = "sim-20160321-2-vc-mu100"#"sim-20141210-1-vc-mu100"
  356. dv.DDDBtag = "dddb-20150928"#"MC11-20111102"
  357. elif(year == "2015"): #'2015'
  358. if (down):
  359. dv.CondDBtag = "sim-20161124-vc-md100"
  360. dv.DDDBtag = "dddb-20150724"
  361. if (reference):
  362. dv.CondDBtag = ""
  363. dv.DDDBtag = ""
  364. else: #'up'
  365. dv.CondDBtag = "sim-20161124-vc-mu100"
  366. dv.DDDBtag = "dddb-20150724"
  367. if (reference):
  368. dv.CondDBtag = ""
  369. dv.DDDBtag = ""
  370. else: #'2016'
  371. if (down):
  372. dv.CondDBtag = "sim-20170721-2-vc-md100"
  373. dv.DDDBtag = "dddb-20170721-3"
  374. if (reference):
  375. dv.CondDBtag = ""
  376. dv.DDDBtag = ""
  377. else: #'up'
  378. dv.CondDBtag = "sim-20170721-2-vc-mu100"
  379. dv.DDDBtag = "dddb-20170721-3"
  380. if (reference):
  381. dv.CondDBtag = ""
  382. dv.DDDBtag = ""
  383. if(KplusPi0Resolved):
  384. if(year == "2011"): #'2011'
  385. if (down):
  386. dv.CondDBtag = "sim-20160614-1-vc-md100"#"sim-20111111-vc-md100
  387. dv.DDDBtag = "dddb-20160318-1"#"Sim08-20130503-1"
  388. if (reference):
  389. dv.CondDBtag = "sim-20160614-1-vc-md100"#"sim-20111111-vc-md100"
  390. dv.DDDBtag = "dddb-20160318-1"#"MC11-20111102"
  391. if (MCB0):
  392. dv.CondDBtag = ""
  393. dv.DDDBtag = ""
  394. else: #'up'
  395. dv.CondDBtag = "sim-20160614-1-vc-mu100"#"sim-20111111-vc-mu100
  396. dv.DDDBtag = "dddb-20160318-1"#"Sim08-20130503-1"
  397. if (reference):
  398. dv.CondDBtag = "sim-20160614-1-vc-mu100"#"sim-20111111-vc-mu100"
  399. dv.DDDBtag = "dddb-20160318-1"#"MC11-20111102"
  400. if (MCB0):
  401. dv.CondDBtag = ""
  402. dv.DDDBtag = ""
  403. elif(year == "2012"): #'2012'
  404. if (down):
  405. dv.CondDBtag = "sim-20160321-2-vc-md100"#"Sim08-20130503-1-vc-md100"
  406. dv.DDDBtag = "dddb-20150928"#"Sim08-20130503-1"
  407. if (reference):
  408. dv.CondDBtag = "sim-20160321-2-vc-md100"#"sim-20141210-1-vc-md100"
  409. dv.DDDBtag = "dddb-20150928"#"MC11-20111102"
  410. if (MCB0):
  411. dv.CondDBtag = ""
  412. dv.DDDBtag = ""
  413. else: #'up'
  414. dv.CondDBtag = "sim-20160321-2-vc-mu100"#"Sim08-20130503-1-vc-mu100"
  415. dv.DDDBtag = "dddb-20150928"#"Sim08-20130503-1"
  416. if (reference):
  417. dv.CondDBtag = "sim-20160321-2-vc-mu100"#"sim-20141210-1-vc-mu100"
  418. dv.DDDBtag = "dddb-20150928"#"MC11-20111102"
  419. if (MCB0):
  420. dv.CondDBtag = ""
  421. dv.DDDBtag = ""
  422. elif(year == "2015"): #'2015'
  423. if (down):
  424. dv.CondDBtag = "sim-20161124-vc-md100"
  425. dv.DDDBtag = "dddb-20150724"
  426. if (reference):
  427. dv.CondDBtag = ""
  428. dv.DDDBtag = ""
  429. else: #'up'
  430. dv.CondDBtag = "sim-20161124-vc-mu100"
  431. dv.DDDBtag = "dddb-20150724"
  432. if (reference):
  433. dv.CondDBtag = ""
  434. dv.DDDBtag = ""
  435. else: #'2016'
  436. if (down):
  437. dv.CondDBtag = "sim-20170721-2-vc-md100"
  438. dv.DDDBtag = "dddb-20170721-3"
  439. if (reference):
  440. dv.CondDBtag = ""
  441. dv.DDDBtag = ""
  442. else: #'up'
  443. dv.CondDBtag = "sim-20170721-2-vc-mu100"
  444. dv.DDDBtag = "dddb-20170721-3"
  445. if (reference):
  446. dv.CondDBtag = ""
  447. dv.DDDBtag = ""