//____________________________________________________________________
//
// Hadronic W boson decay class
// 
//  
// Author: Oliver Maria Kind <mailto: kind@mail.desy.de>
//
#ifndef ATLAS_AtlWDecayJJ
#define ATLAS_AtlWDecayJJ
#ifndef HEP_HepWDecay
#include <HepWDecay.h>
#endif
#ifndef ATLAS_AtlJet
#include <AtlJet.h>
#endif

//____________________________________________________________________

class AtlWDecayJJ : public HepWDecay {
    
  protected:
    HepJet  *fJet1;  // Jet 1 containing the 4-momentum computed during
                     // the W reconstruction
    HepJet  *fJet2;  // Jet 2 containing the 4-momentum computed during
                     // the W reconstruction
    
  public:
    AtlWDecayJJ();
    AtlWDecayJJ(Int_t Id, Float_t Px_W, Float_t Py_W, Float_t Pz_W,
		Float_t E_W, AtlJet *jet1_orig, AtlJet *jet2_orig,
		Float_t Px_j1, Float_t Py_j1, Float_t Pz_j1, Float_t E_j1,
		Float_t Px_j2, Float_t Py_j2, Float_t Pz_j2, Float_t E_j2,
		ProductionMode mode);
    virtual ~AtlWDecayJJ();
    virtual void Clear(Option_t *option = "");
    virtual void Print(Option_t *option = "");
    
    inline AtlJet* GetJet1_Orig() const {
	// Reference to the (original) jet 1
	//
	// Note that the 4-momentuum of this jet remains unchanged by
	// the W reconstruction. To get the improved momentum use GetJet1()
	//
	return (AtlJet*)GetDaughter1();
    }
    inline AtlJet* GetJet2_Orig() const {
	// Reference to the (original) jet 2
	//
	// Note that the 4-momentuum of this jet remains unchanged by
	// the W reconstruction. To get the improved momentum use GetJet1()
	//
	return (AtlJet*)GetDaughter2();
    }
    inline HepJet* GetJet1() const {
	//
	// Reference to jet 1
	//
	// Note that the momentum of this jet had been changed by
	// the W reconstruction. To get the original (unchanged)
	// jet use GetJet1_Orig()
	//
	return fJet1;
    }
    inline HepJet* GetJet2() const {
	//
	// Reference to jet 2
	//
	// Note that the momentum of this jet had been changed by
	// the W reconstruction. To get the original (unchanged)
	// jet use GetJet2_Orig()
	//
	return fJet2;
    }
    inline virtual Bool_t IsHadronicDecay() const
    { return kTRUE; }
    inline virtual Bool_t IsLeptonicDecay() const
    { return kFALSE; }

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