Ejemplo n.º 1
0
 def smear_track(self, track, detector, accept=False):
     # TODO smearing depends on particle type!
     ptres = detector.pt_resolution(track)
     scale_factor = random.gauss(1, ptres)
     smeared_track = SmearedTrack(track, track.p3 * scale_factor, track.charge, track.path)
     pdebugger.info(" ".join(("Made", smeared_track.__str__())))
     if detector.acceptance(smeared_track) or accept:
         return smeared_track
     else:
         pdebugger.info(str("Rejected {}".format(smeared_track)))
         return None
Ejemplo n.º 2
0
 def make_smeared_track(self, track, resolution):
     '''create a new smeared track'''
     #TODO smearing depends on particle type!
     scale_factor = random.gauss(1, resolution)
     smeared_track = SmearedTrack(track,
                                  track.p3 * scale_factor,
                                  track.charge,
                                  track.path,
                                  index=len(self.smeared_tracks))
     pdebugger.info(" ".join(("Made", smeared_track.__str__())))
     return smeared_track
Ejemplo n.º 3
0
 def make_smeared_track(self, track, resolution):
     '''create a new smeared track'''
     #TODO smearing depends on particle type!
     scale_factor = random.gauss(1, resolution)
     smeared_track = SmearedTrack(track,
                                  track.p3 * scale_factor,
                                  track.charge,
                                  track.path,
                                  index = len(self.smeared_tracks))
     pdebugger.info(" ".join(("Made", smeared_track.__str__())))
     return smeared_track  
Ejemplo n.º 4
0
 def smear_track(self, track, detector, accept=False):
     #TODO smearing depends on particle type!
     ptres = detector.pt_resolution(track)
     scale_factor = random.gauss(1, ptres)
     smeared_track = SmearedTrack(track, track.p3 * scale_factor,
                                  track.charge, track.path)
     pdebugger.info(" ".join(("Made", smeared_track.__str__())))
     if detector.acceptance(smeared_track) or accept:
         return smeared_track
     else:
         pdebugger.info(str('Rejected {}'.format(smeared_track)))
         return None
Ejemplo n.º 5
0
 def make_and_store_smeared_track(self, ptc, track,
                                  detector_resolution, detector_acceptance):
     '''create a new smeared track'''
     #TODO smearing depends on particle type!
     resolution = detector_resolution(ptc)
     scale_factor = random.gauss(1, resolution)
     smeared_track = SmearedTrack(track,
                                  track.p3 * scale_factor,
                                  track.charge,
                                  track.path,
                                  index = len(self.smeared_tracks))
     pdebugger.info(" ".join(("Made", smeared_track.__str__())))
     if detector_acceptance(smeared_track):
         self.smeared_tracks[smeared_track.uniqueid] = smeared_track
         self.update_history(track.uniqueid, smeared_track.uniqueid )   
         ptc.track_smeared = smeared_track             
         return smeared_track  
     else:
         pdebugger.info(str('Rejected {}'.format(smeared_track)))
         return None
Ejemplo n.º 6
0
 def make_and_store_smeared_track(self, ptc, track,
                                  detector_resolution, detector_acceptance):
     '''create a new smeared track'''
     #TODO smearing depends on particle type!
     resolution = detector_resolution(track)
     scale_factor = random.gauss(1, resolution)
     smeared_track = SmearedTrack(track,
                                  track._p3 * scale_factor,
                                  track.charge,
                                  track.path,
                                  index = len(self.smeared_tracks))
     pdebugger.info(" ".join(("Made", smeared_track.__str__())))
     if detector_acceptance(track):
         self.smeared_tracks[smeared_track.uniqueid] = smeared_track
         self.update_history(track.uniqueid, smeared_track.uniqueid)   
         ptc.track_smeared = smeared_track             
         return smeared_track  
     else:
         pdebugger.info(str('Rejected {}'.format(smeared_track)))
         return None
Ejemplo n.º 7
0
 def simulate_muon(self, ptc):
     '''Simulate a muon corresponding to gen particle ptc
     
     Uses the methods detector.muon_energy_resolution
     and detector.muon_acceptance to smear the muon track.
     Later on, the particle flow algorithm will use the tracks
     coming from a muon to reconstruct muons.
     
     This method does not simulate energy deposits in the calorimeters
     '''
     pdebugger.info("Simulating Muon")
     self.propagate(ptc)
     ptres = self.detector.muon_pt_resolution(ptc)
     scale_factor = random.gauss(1, ptres)
     track = ptc.track
     smeared_track = SmearedTrack(track, track.p3 * scale_factor,
                                  track.charge, track.path)
     pdebugger.info(" ".join(("Made", smeared_track.__str__())))
     if self.detector.muon_acceptance(smeared_track):
         ptc.track_smeared = smeared_track
     else:
         pdebugger.info(str('Rejected {}'.format(smeared_track)))
Ejemplo n.º 8
0
 def simulate_electron(self, ptc):
     '''Simulate an electron corresponding to gen particle ptc.
     
     Uses the methods detector.electron_energy_resolution
     and detector.electron_acceptance to smear the electron track.
     Later on, the particle flow algorithm will use the tracks
     coming from an electron to reconstruct electrons.
     
     This method does not simulate an electron energy deposit in the ECAL.
     '''
     pdebugger.info("Simulating Electron")
     ecal = self.detector.elements['ecal']
     propagator(ptc.q()).propagate_one(
         ptc, ecal.volume.inner, self.detector.elements['field'].magnitude)
     eres = self.detector.electron_energy_resolution(ptc)
     scale_factor = random.gauss(1, eres)
     track = ptc.track
     smeared_track = SmearedTrack(track, track.p3 * scale_factor,
                                  track.charge, track.path)
     pdebugger.info(" ".join(("Made", smeared_track.__str__())))
     if self.detector.electron_acceptance(smeared_track):
         ptc.track_smeared = smeared_track
     else:
         pdebugger.info(str('Rejected {}'.format(smeared_track)))