//____________________________________________________________________
//
// Abstract Z0 boson decay class
// 
//  
// Author: Oliver Maria Kind <mailto: kind@mail.desy.de>
// Update: $Id: HepZ0Decay.cxx,v 1.5 2016/04/10 20:25:34 kind Exp $
// Copyright: 2009 (C) Oliver Maria Kind
//
#ifndef HEP_HepZ0Decay
#include <HepZ0Decay.h>
#endif
#ifndef __CINT__
ClassImp(HepZ0Decay);
#endif

//____________________________________________________________________

HepZ0Decay::HepZ0Decay() {
    //
    // Default constructor
    //
    fDaughter1 = new TRef;
    fDaughter2 = new TRef;
}

//____________________________________________________________________

HepZ0Decay::HepZ0Decay(Int_t Id, Float_t Px, Float_t Py, Float_t Pz,
		       Float_t E, TObject *Daughter1, TObject *Daughter2) :
    HepDecayParticle(Id, Px, Py, Pz, E, 23) {
    //
    // Normal constructor
    //
    fDaughter1 = new TRef; *fDaughter1 = Daughter1;
    fDaughter2 = new TRef; *fDaughter2 = Daughter2;
}

//____________________________________________________________________

HepZ0Decay::HepZ0Decay(Int_t Id, Float_t Px, Float_t Py, Float_t Pz,
		       Float_t E, TObject *Daughter1, TObject *Daughter2,
                       HepParticle ReFitDaughter1, HepParticle ReFitDaughter2) :
    HepDecayParticle(Id, Px, Py, Pz, E, 23) {
    //
    // Normal constructor for kinematic fitter
    //
    fDaughter1 = new TRef; *fDaughter1 = Daughter1;
    fDaughter2 = new TRef; *fDaughter2 = Daughter2;
    fReFitDaughter1 = ReFitDaughter1;
    fReFitDaughter2 = ReFitDaughter2;
}

//____________________________________________________________________

HepZ0Decay::~HepZ0Decay() {
    //
    // Default destructor
    //
    delete fDaughter1;
    delete fDaughter2;
}

//____________________________________________________________________

void HepZ0Decay::Clear(Option_t *option) {
    //
    // Clear this object
    //
    HepDecayParticle::Clear(option);
    delete fDaughter1; fDaughter1 = 0;
    delete fDaughter2; fDaughter2 = 0;
    fReFitDaughter1.Clear();
    fReFitDaughter2.Clear();
}

//____________________________________________________________________

Int_t HepZ0Decay::Compare(const TObject *obj) const {
    //
    // Compare invariant mass of Z decay candidates
    //
    // Return values:
    //    +1 = invariant mass of this decay is closer to the pole-mass of
    //         91.187GeV than the given decay
    //     0 = both invariant masses are equal
    //    -1 = invariant mass of the compared decay is closer to the
    //         pole-mass than this decay
    //
    static const Double_t m_Z = 91.187;
    if ( TMath::Abs(M("rec") - m_Z)
	 < TMath::Abs(((HepZ0Decay*)obj)->M("rec") - m_Z) ) return  1;
    if ( TMath::Abs(M("rec") - m_Z)
	 > TMath::Abs(((HepZ0Decay*)obj)->M("rec") - m_Z) ) return -1;
    return 0;
}
 HepZ0Decay.cxx:1
 HepZ0Decay.cxx:2
 HepZ0Decay.cxx:3
 HepZ0Decay.cxx:4
 HepZ0Decay.cxx:5
 HepZ0Decay.cxx:6
 HepZ0Decay.cxx:7
 HepZ0Decay.cxx:8
 HepZ0Decay.cxx:9
 HepZ0Decay.cxx:10
 HepZ0Decay.cxx:11
 HepZ0Decay.cxx:12
 HepZ0Decay.cxx:13
 HepZ0Decay.cxx:14
 HepZ0Decay.cxx:15
 HepZ0Decay.cxx:16
 HepZ0Decay.cxx:17
 HepZ0Decay.cxx:18
 HepZ0Decay.cxx:19
 HepZ0Decay.cxx:20
 HepZ0Decay.cxx:21
 HepZ0Decay.cxx:22
 HepZ0Decay.cxx:23
 HepZ0Decay.cxx:24
 HepZ0Decay.cxx:25
 HepZ0Decay.cxx:26
 HepZ0Decay.cxx:27
 HepZ0Decay.cxx:28
 HepZ0Decay.cxx:29
 HepZ0Decay.cxx:30
 HepZ0Decay.cxx:31
 HepZ0Decay.cxx:32
 HepZ0Decay.cxx:33
 HepZ0Decay.cxx:34
 HepZ0Decay.cxx:35
 HepZ0Decay.cxx:36
 HepZ0Decay.cxx:37
 HepZ0Decay.cxx:38
 HepZ0Decay.cxx:39
 HepZ0Decay.cxx:40
 HepZ0Decay.cxx:41
 HepZ0Decay.cxx:42
 HepZ0Decay.cxx:43
 HepZ0Decay.cxx:44
 HepZ0Decay.cxx:45
 HepZ0Decay.cxx:46
 HepZ0Decay.cxx:47
 HepZ0Decay.cxx:48
 HepZ0Decay.cxx:49
 HepZ0Decay.cxx:50
 HepZ0Decay.cxx:51
 HepZ0Decay.cxx:52
 HepZ0Decay.cxx:53
 HepZ0Decay.cxx:54
 HepZ0Decay.cxx:55
 HepZ0Decay.cxx:56
 HepZ0Decay.cxx:57
 HepZ0Decay.cxx:58
 HepZ0Decay.cxx:59
 HepZ0Decay.cxx:60
 HepZ0Decay.cxx:61
 HepZ0Decay.cxx:62
 HepZ0Decay.cxx:63
 HepZ0Decay.cxx:64
 HepZ0Decay.cxx:65
 HepZ0Decay.cxx:66
 HepZ0Decay.cxx:67
 HepZ0Decay.cxx:68
 HepZ0Decay.cxx:69
 HepZ0Decay.cxx:70
 HepZ0Decay.cxx:71
 HepZ0Decay.cxx:72
 HepZ0Decay.cxx:73
 HepZ0Decay.cxx:74
 HepZ0Decay.cxx:75
 HepZ0Decay.cxx:76
 HepZ0Decay.cxx:77
 HepZ0Decay.cxx:78
 HepZ0Decay.cxx:79
 HepZ0Decay.cxx:80
 HepZ0Decay.cxx:81
 HepZ0Decay.cxx:82
 HepZ0Decay.cxx:83
 HepZ0Decay.cxx:84
 HepZ0Decay.cxx:85
 HepZ0Decay.cxx:86
 HepZ0Decay.cxx:87
 HepZ0Decay.cxx:88
 HepZ0Decay.cxx:89
 HepZ0Decay.cxx:90
 HepZ0Decay.cxx:91
 HepZ0Decay.cxx:92
 HepZ0Decay.cxx:93
 HepZ0Decay.cxx:94
 HepZ0Decay.cxx:95
 HepZ0Decay.cxx:96