//____________________________________________________________________
//
// W -> l nu decay
//
// Author: Oliver Maria Kind <mailto: kind@mail.desy.de>
// Update: $Id: AtlWDecayLNu.cxx,v 1.6 2014/02/18 12:19:56 kind Exp $
// Copyright: 2009 (C) Oliver Maria Kind
//
#ifndef ATLAS_AtlWDecayLNu
#include <AtlWDecayLNu.h>
#endif

#include <iostream>

using namespace std;

#ifndef __CINT__
ClassImp(AtlWDecayLNu);
#endif

//____________________________________________________________________

AtlWDecayLNu::AtlWDecayLNu() {
    //
    // Default constructor
    //
    fChargedLepton = new HepParticle;
}

//____________________________________________________________________

AtlWDecayLNu::AtlWDecayLNu(Int_t Id, Float_t Px_W, Float_t Py_W,
			   Float_t Pz_W, Float_t E_W, HepParticle *lepton_orig,
			   Float_t Px_lep, Float_t Py_lep, Float_t Pz_lep,
			   Float_t E_lep, HepParticle *neutrino,
			   ProductionMode mode) :
    HepWDecay(Id, Px_W, Py_W, Pz_W, E_W, (TObject*)lepton_orig, (TObject*)neutrino,
	      mode) {
    //
    // Normal constructor
    //
    // The reference to the (unchanged) charged lepton used for the W
    // reconstruction is given by lepton_orig. The compoments Px_lep,
    // Py_lep, ... denote the 4-momentum of the charged lepton
    // improved by the W reconstruction. The neutrino is the reference
    // to the reconstructed outgoing neutrino. Note that the latter
    // has to be created and added to the event by using
    // AtlEvent::AddNeutrino() before.
    //
    fChargedLepton = new HepParticle(1, Px_lep, Py_lep, Pz_lep,
				     E_lep, lepton_orig->GetPdgCode());
}

//____________________________________________________________________

AtlWDecayLNu::~AtlWDecayLNu() {
    //
    // Default destructor
    //
    delete fChargedLepton;
}

//____________________________________________________________________

void AtlWDecayLNu::Clear(Option_t *option) {
    //
    // Clear this object
    //
    HepWDecay::Clear(option);
    fChargedLepton->Clear(option);
}

//____________________________________________________________________

void AtlWDecayLNu::Print(Option_t *option) {
    //
    // Print object information
    //
    cout << endl << endl
	 << "Leptonic W-boson decay #" << fId << endl
	 << "============================" << endl
	 << "Kinematic fit result: chi^2/NDoF = "
	 << fChi2 << " / " << fNDoF << "   Prob = " << fProb << endl << endl
	 << "Reconstructed W-boson:" << endl;
    HepParticle::Print();
    cout << endl
	 << "Outgoing (original) charged lepton:" << endl;
    GetChargedLeptonOrig()->Print();
    cout << "Improved charged lepton 4-momentum: ";
    HepParticle::PrintLorentzVector(GetChargedLepton()->P());
    cout << endl
	 << "Outgoing reconstructed neutrino:" << endl;
    GetNeutrino()->Print();
    cout << endl;
}
 AtlWDecayLNu.cxx:1
 AtlWDecayLNu.cxx:2
 AtlWDecayLNu.cxx:3
 AtlWDecayLNu.cxx:4
 AtlWDecayLNu.cxx:5
 AtlWDecayLNu.cxx:6
 AtlWDecayLNu.cxx:7
 AtlWDecayLNu.cxx:8
 AtlWDecayLNu.cxx:9
 AtlWDecayLNu.cxx:10
 AtlWDecayLNu.cxx:11
 AtlWDecayLNu.cxx:12
 AtlWDecayLNu.cxx:13
 AtlWDecayLNu.cxx:14
 AtlWDecayLNu.cxx:15
 AtlWDecayLNu.cxx:16
 AtlWDecayLNu.cxx:17
 AtlWDecayLNu.cxx:18
 AtlWDecayLNu.cxx:19
 AtlWDecayLNu.cxx:20
 AtlWDecayLNu.cxx:21
 AtlWDecayLNu.cxx:22
 AtlWDecayLNu.cxx:23
 AtlWDecayLNu.cxx:24
 AtlWDecayLNu.cxx:25
 AtlWDecayLNu.cxx:26
 AtlWDecayLNu.cxx:27
 AtlWDecayLNu.cxx:28
 AtlWDecayLNu.cxx:29
 AtlWDecayLNu.cxx:30
 AtlWDecayLNu.cxx:31
 AtlWDecayLNu.cxx:32
 AtlWDecayLNu.cxx:33
 AtlWDecayLNu.cxx:34
 AtlWDecayLNu.cxx:35
 AtlWDecayLNu.cxx:36
 AtlWDecayLNu.cxx:37
 AtlWDecayLNu.cxx:38
 AtlWDecayLNu.cxx:39
 AtlWDecayLNu.cxx:40
 AtlWDecayLNu.cxx:41
 AtlWDecayLNu.cxx:42
 AtlWDecayLNu.cxx:43
 AtlWDecayLNu.cxx:44
 AtlWDecayLNu.cxx:45
 AtlWDecayLNu.cxx:46
 AtlWDecayLNu.cxx:47
 AtlWDecayLNu.cxx:48
 AtlWDecayLNu.cxx:49
 AtlWDecayLNu.cxx:50
 AtlWDecayLNu.cxx:51
 AtlWDecayLNu.cxx:52
 AtlWDecayLNu.cxx:53
 AtlWDecayLNu.cxx:54
 AtlWDecayLNu.cxx:55
 AtlWDecayLNu.cxx:56
 AtlWDecayLNu.cxx:57
 AtlWDecayLNu.cxx:58
 AtlWDecayLNu.cxx:59
 AtlWDecayLNu.cxx:60
 AtlWDecayLNu.cxx:61
 AtlWDecayLNu.cxx:62
 AtlWDecayLNu.cxx:63
 AtlWDecayLNu.cxx:64
 AtlWDecayLNu.cxx:65
 AtlWDecayLNu.cxx:66
 AtlWDecayLNu.cxx:67
 AtlWDecayLNu.cxx:68
 AtlWDecayLNu.cxx:69
 AtlWDecayLNu.cxx:70
 AtlWDecayLNu.cxx:71
 AtlWDecayLNu.cxx:72
 AtlWDecayLNu.cxx:73
 AtlWDecayLNu.cxx:74
 AtlWDecayLNu.cxx:75
 AtlWDecayLNu.cxx:76
 AtlWDecayLNu.cxx:77
 AtlWDecayLNu.cxx:78
 AtlWDecayLNu.cxx:79
 AtlWDecayLNu.cxx:80
 AtlWDecayLNu.cxx:81
 AtlWDecayLNu.cxx:82
 AtlWDecayLNu.cxx:83
 AtlWDecayLNu.cxx:84
 AtlWDecayLNu.cxx:85
 AtlWDecayLNu.cxx:86
 AtlWDecayLNu.cxx:87
 AtlWDecayLNu.cxx:88
 AtlWDecayLNu.cxx:89
 AtlWDecayLNu.cxx:90
 AtlWDecayLNu.cxx:91
 AtlWDecayLNu.cxx:92
 AtlWDecayLNu.cxx:93
 AtlWDecayLNu.cxx:94
 AtlWDecayLNu.cxx:95