def test_iso1(self): p4 = TLorentzVector() p4.SetPtEtaPhiM(10, 0, 0, 0.105) lepton = Particle(13, 1, p4) p4 = TLorentzVector() p4.SetPtEtaPhiM(1, 0, 0, 0.105) ptc = Particle(211, 1, p4) # test iso calc computer = IsolationComputer([EtaPhiCircle(0.4)]) iso = computer.compute(lepton, [ptc,ptc]) self.assertEqual(iso.sumpt, 2*ptc.pt()) self.assertEqual(iso.sume, 2*ptc.e()) self.assertEqual(iso.num, 2) # test IsolationInfo addition iso2 = copy.copy(iso) iso2 += iso self.assertEqual(iso2.sumpt, 4*ptc.pt()) self.assertEqual(iso2.sume, 4*ptc.e()) self.assertEqual(iso2.num, 4) # test veto computer = IsolationComputer([EtaPhiCircle(0.4)], [EtaPhiCircle(0.1)]) iso = computer.compute(lepton, [ptc]) self.assertEqual(iso.sumpt, 0.)
def process(self, event): #sqrts = self.cfg_ana.sqrts sqrts = 240. #sqrts = random.gauss(240.,240.*0.0012) #sqrts = random.gauss(240.,10.) jets = getattr(event, self.cfg_ana.input_jets) misenergy = getattr(event, self.cfg_ana.misenergy) # solving the equation vis_p4 = TLorentzVector(0, 0, 0, 0) for jet in jets: vis_p4 += jet.p4() vis = Recoil(0, 0, vis_p4, 1) # m=m_Z constrain a = vis.e() * sqrts / (vis.m()**2) b = a**2 - (sqrts**2 - 91.**2) / (vis.m()**2) # sf stands for scaling factor if b < 0: sf = 1 setattr(event, self.cfg_ana.det, 1) else: #sf2 corresponds to the solution where the missing energy is negative therefore sf is the scaling factor that makes sense from a physics pov. sf = a - math.sqrt(b) sf2 = a + math.sqrt(b) setattr(event, self.cfg_ana.det, 2) ######test #visscaled1=TLorentzVector(0,0,0,0) #visscaled2=TLorentzVector(0,0,0,0) #for jet in jets: # visscaled1+=jet.p4()*sf # visscaled2+=jet.p4()*sf2 #cms=TLorentzVector(0,0,0,240) #v1=cms-visscaled1 #v2=cms-visscaled2 #print v1.E(),v2.E() setattr(event, self.cfg_ana.scalingfac, sf) setattr(event, self.cfg_ana.scalingfac2, sf2) scale_factors = [sf] * 2 output = [] for jet, factor in zip(jets, scale_factors): # the jets should not be deepcopied # as they are heavy objects containing # in particular a list of consistuent particles scaled_jet = copy.copy(jet) scaled_jet._tlv = copy.deepcopy(jet._tlv) scaled_jet._tlv *= factor output.append(scaled_jet) setattr(event, self.cfg_ana.output_jets, output)