class RochesterCorrections(object):
    
    def __init__(self):
        self.cor = RochCor()
        self.cor2012 = RochCor2012()

    def corrected_p4( self, particle, run ):
        '''Returns the corrected p4 for a particle.

        The particle remains unchanged. 
        '''
        ptc = particle
        p4 = ptc.p4()
        tlp4 = TLorentzVector( p4.px(), p4.py(), p4.pz(), p4.energy() )
        cortlp4 = copy.copy(tlp4)
        if run<100:
            if is2012:
                self.cor2012.momcor_mc( cortlp4, ptc.charge(), 0.0, 0 )
            else:
                self.cor.momcor_mc( cortlp4, ptc.charge(), 0.0, 0 )
        else: # data
            if is2012:
                self.cor2012.momcor_data( cortlp4, ptc.charge(), 0.0, 0 )
            else:
                self.cor.momcor_data( cortlp4, ptc.charge(), 0.0, int(run>173692) )
        corp4 = p4.__class__( cortlp4.Px(), cortlp4.Py(), cortlp4.Pz(), cortlp4.Energy() )        
        return corp4

        
    def correct( self, particles, run ):
        '''Correct a list of particles.

        The p4 of each particle will change
        '''
        for ptc in particles: 
            corp4 = corrected_p4(ptc, run) 
            ptc.setP4( corp4 )
class RochesterCorrections(object):
    def __init__(self):
        self.cor = RochCor()
        self.cor2012 = RochCor2012()

    def corrected_p4(self, particle, run):
        '''Returns the corrected p4 for a particle.

        The particle remains unchanged. 
        '''
        ptc = particle
        p4 = ptc.p4()
        tlp4 = TLorentzVector(p4.px(), p4.py(), p4.pz(), p4.energy())
        cortlp4 = copy.copy(tlp4)
        if run < 100:
            if is2012:
                self.cor2012.momcor_mc(cortlp4, ptc.charge(), 0.0, 0)
            else:
                self.cor.momcor_mc(cortlp4, ptc.charge(), 0.0, 0)
        else:  # data
            if is2012:
                self.cor2012.momcor_data(cortlp4, ptc.charge(), 0.0, 0)
            else:
                self.cor.momcor_data(cortlp4, ptc.charge(), 0.0,
                                     int(run > 173692))
        corp4 = p4.__class__(cortlp4.Px(), cortlp4.Py(), cortlp4.Pz(),
                             cortlp4.Energy())
        return corp4

    def correct(self, particles, run):
        '''Correct a list of particles.

        The p4 of each particle will change
        '''
        for ptc in particles:
            corp4 = corrected_p4(ptc, run)
            ptc.setP4(corp4)
 def __init__(self):
     self.cor = RochCor()
     self.cor2012 = RochCor2012()
 def __init__(self):
     self.cor = RochCor()
     self.cor2012 = RochCor2012()