//____________________________________________________________________
//
// Leptonic W boson decay class
// 
//  
// Author: Oliver Maria Kind <mailto: kind@mail.desy.de>
//
#ifndef ATLAS_AtlWDecayLNu
#define ATLAS_AtlWDecayLNu
#ifndef HEP_HepWDecay
#include <HepWDecay.h>
#endif
#ifndef ATLAS_HepParticle
#include <HepParticle.h>
#endif

//____________________________________________________________________

class AtlWDecayLNu : public HepWDecay {

 protected:
    HepParticle *fChargedLepton;  // Charged lepton containing the
                                  // momentum computed during the W
                                  // reconstruction. The PDG code is
                                  // taken from the original lepton
    
 public:
    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);
    virtual ~AtlWDecayLNu();
    virtual void Clear(Option_t *option = "");
    virtual void Print(Option_t *option = "");

    inline virtual Bool_t IsHadronicDecay() const
    { return kFALSE; }
    inline virtual Bool_t IsLeptonicDecay() const
    { return kTRUE; }
    inline HepParticle* GetChargedLeptonOrig() const {
	//
	// Reference to the (original) charged lepton
	//
	// Note that the momentum of this lepton remains unchanged by
	// the W reconstruction. To get the re-computed momentum use
	// GetChargedLepton()
	//
	return (HepParticle*)GetDaughter1();
    }
    inline HepParticle* GetChargedLepton() const {
	//
	// Reference to the charged lepton
	//
	// Note that the momentum of this lepton has been changed by
	// the W reconstruction. To get the original (unchanged)
	// use lepton GetChargedLeptonOrig()
	//
	return fChargedLepton;
    }
    inline HepParticle* GetNeutrino() const {
	//
	// Get reference to the outgoing neutrino which has been
	// obtained by the W reconstruction
	//
	return (HepParticle*)GetDaughter2();
    }

    ClassDef(AtlWDecayLNu,2) // Leptonic W decay
};
#endif
 AtlWDecayLNu.h:1
 AtlWDecayLNu.h:2
 AtlWDecayLNu.h:3
 AtlWDecayLNu.h:4
 AtlWDecayLNu.h:5
 AtlWDecayLNu.h:6
 AtlWDecayLNu.h:7
 AtlWDecayLNu.h:8
 AtlWDecayLNu.h:9
 AtlWDecayLNu.h:10
 AtlWDecayLNu.h:11
 AtlWDecayLNu.h:12
 AtlWDecayLNu.h:13
 AtlWDecayLNu.h:14
 AtlWDecayLNu.h:15
 AtlWDecayLNu.h:16
 AtlWDecayLNu.h:17
 AtlWDecayLNu.h:18
 AtlWDecayLNu.h:19
 AtlWDecayLNu.h:20
 AtlWDecayLNu.h:21
 AtlWDecayLNu.h:22
 AtlWDecayLNu.h:23
 AtlWDecayLNu.h:24
 AtlWDecayLNu.h:25
 AtlWDecayLNu.h:26
 AtlWDecayLNu.h:27
 AtlWDecayLNu.h:28
 AtlWDecayLNu.h:29
 AtlWDecayLNu.h:30
 AtlWDecayLNu.h:31
 AtlWDecayLNu.h:32
 AtlWDecayLNu.h:33
 AtlWDecayLNu.h:34
 AtlWDecayLNu.h:35
 AtlWDecayLNu.h:36
 AtlWDecayLNu.h:37
 AtlWDecayLNu.h:38
 AtlWDecayLNu.h:39
 AtlWDecayLNu.h:40
 AtlWDecayLNu.h:41
 AtlWDecayLNu.h:42
 AtlWDecayLNu.h:43
 AtlWDecayLNu.h:44
 AtlWDecayLNu.h:45
 AtlWDecayLNu.h:46
 AtlWDecayLNu.h:47
 AtlWDecayLNu.h:48
 AtlWDecayLNu.h:49
 AtlWDecayLNu.h:50
 AtlWDecayLNu.h:51
 AtlWDecayLNu.h:52
 AtlWDecayLNu.h:53
 AtlWDecayLNu.h:54
 AtlWDecayLNu.h:55
 AtlWDecayLNu.h:56
 AtlWDecayLNu.h:57
 AtlWDecayLNu.h:58
 AtlWDecayLNu.h:59
 AtlWDecayLNu.h:60
 AtlWDecayLNu.h:61
 AtlWDecayLNu.h:62
 AtlWDecayLNu.h:63
 AtlWDecayLNu.h:64
 AtlWDecayLNu.h:65
 AtlWDecayLNu.h:66
 AtlWDecayLNu.h:67
 AtlWDecayLNu.h:68
 AtlWDecayLNu.h:69
 AtlWDecayLNu.h:70
 AtlWDecayLNu.h:71
 AtlWDecayLNu.h:72