//  
// author: Oliver Maria Kind <mailto: kind@mail.desy.de>
// Update: $Id: AtlJet.h,v 1.63 2014/11/20 14:43:29 stamm Exp $
// Copyright: 2009 (C) Oliver Maria Kind
//
#ifndef ATLAS_AtlJet
#define ATLAS_AtlJet
#ifndef ROOT_HepJet
#include <HepJet.h>
#endif
#ifndef ROOT_TRef
#include <TRef.h>
#endif
#ifndef ROOT_TRefArray
#include <TRefArray.h>
#endif
#ifndef ATLAS_AtlBTag
#include <AtlBTag.h>
#endif
#ifndef HEP_HepParticle
#include <HepParticle.h>
#endif
#ifndef HEP_HepMCParticle
#include <HepMCParticle.h>
#endif
#ifndef ATLAS_AtlElectron
#include <AtlElectron.h>
#endif
#ifndef ATLAS_AtlMuon
#include <AtlMuon.h>
#endif
#ifndef ATLAS_AtlIDTrack
#include <AtlIDTrack.h>
#endif
#ifndef ATLAS_AtlK0sDecayPiPi
#include <AtlK0sDecayPiPi.h>
#endif
#ifndef ATLAS_AtlTriggerMatch
#include <AtlTriggerMatch.h>
#endif
#ifndef ATLAS_AtlMETWeights
#include <AtlMETWeights.h>
#endif



class AtlJet : public HepJet, public AtlTriggerMatch, public AtlMETWeights {

 public:
    enum EType {
	kInvalidType = -1,
	kCone4H1Tower, kCone7H1Tower,
	kCone4H1Topo, kCone7H1Topo,
	kMCCone4Hadron, kMCCone7Hadron, 
	kMCAntiKt4Hadron, kMCAntiKt6Hadron, kMCAntiKt4HadronPileup,
	kAntiKt4H1Topo, kAntiKt4H1Tower, kAntiKt6H1Tower,
	kAntiKt4TopoEM, kAntiKt4TopoEMJES, 
	kAntiKt4LCTopo, kAntiKt4Tower,  kAntiKt6TopoEM,
	kAntiKt4Topo, kAntiKt6Tower, kAntiKt6LCTopo,
	kAntiKt6Topo,
	kAtlFast, kNumTypes };
    
    enum EFlavour {
	kUnknownFlavour,
	kLightFlavoured,
	kCharm,
	kBeauty,
	kTau,
    // Insert new flavours above
	kNumFlavours
    };
    
    enum EJetQuality {
      kInvalid        = BIT(0),
      kIsUgly         = BIT(1),
      kIsBad          = BIT(2),
      kIsGood         = BIT(3),
      kIsLooseBad     = BIT(4),
      kIsMediumBad    = BIT(5),
      kIsTightBad     = BIT(6),
      kJetQuality = ( kInvalid | 
		      kIsUgly | 
		      kIsBad | 
		      kIsGood |
		      kIsLooseBad |
		      kIsMediumBad |
		      kIsTightBad )
		      };
  
 private:
    AtlBTag        fTaggers[AtlBTag::kNumTaggers]; // how this jet was tagged by various taggers
    EFlavour       fTruthFlavour;      // MC truth flavour set by Athena
    TRefArray     *fTruthParticles;    // Reference to HepMCTruth particles in jet cone sorted by Pt in descending order by Athena
    TRefArray     *fTracks;            // Reference to AtlIDTracks in the jet, set by Athena'sd TrackAssociation (filled with tracks inside a jetcone by ParticleToJetAssociator)
    TRefArray     *fK0sCanditates;     // Reference to AtlK0sDecayPiPi in the jet, set by K0sFinder
    TRef          *fFakeCandidate;     // Reference to a lepton/photon faking the jet
    EJetQuality    fJetQuality;        // Result of Invalid, Ugly, Bad or Good Jet Quality Criteria are described here: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/HowToCleanJets
    TLorentzVector fP_EMSCALE;         // 4-momentum (Px, Py, Pz, E) in GeV of uncalibrated EMScale-jet
    TLorentzVector fP_JESCorrSCALE;    // 4-momentum (Px, Py, Pz, E) in GeV of corrected JES-jet

    //
    // Jet quality variables for computation of refined jet qualities
    //
    // NOTE:
    // These refined quality definitions are tested only for jets of type
    // AntiKt4Topo or AntiKt6Topo and ARE NOT SET for the "Tower" and "Cone" jets!
    Double_t fLArQuality;           //
    Double_t fHecQuality;           //
    Double_t fNegEnergy;            //
    Double_t fN90;                  //
    Double_t fEMFraction;           //
    Double_t fHecF;                 //
    Double_t fTiming;               //
    Int_t    fSamplingMax;          //
    Double_t fFracSamplingMax;      //
    Double_t fSumPtTrk;             //
    Double_t fEMJES_EtaCorr;        //
    Double_t fBCH_CORR_CELL;        // fraction of the jet energy coming from this correction 
    Double_t fBCH_CORR_JET;         // fraction of the jet energy coming from this correction
    Float_t  fEta_offsetJES;        // corrected eta (sgtop d3pds)

    Float_t  fTruthDeltaRminBeauty; // DeltaR to next true B hadron
    Float_t  fTruthDeltaRminCharm;  // DeltaR to next true charmed hadron
    Float_t  fTruthDeltaRminTau;    // DeltaR to next true tau

    Double_t fJet_SF_MV1_60;               // jet scale factors with syst. variations (SgTopD3PDs)
    Double_t fJet_SF_btag_up_MV1_60;       //
    Double_t fJet_SF_btag_down_MV1_60;     //  -> 60% efficiency working point
    Double_t fJet_SF_ctag_up_MV1_60;       //
    Double_t fJet_SF_ctag_down_MV1_60;     //
    Double_t fJet_SF_mistag_up_MV1_60;     //
    Double_t fJet_SF_mistag_down_MV1_60;   // 

    Double_t fJet_SF_MV1_70;               // jet scale factors with syst. variations (SgTopD3PDs)
    Double_t fJet_SF_btag_up_MV1_70;       //
    Double_t fJet_SF_btag_down_MV1_70;     //  -> 70% efficiency working point
    Double_t fJet_SF_ctag_up_MV1_70;       //
    Double_t fJet_SF_ctag_down_MV1_70;     //
    Double_t fJet_SF_mistag_up_MV1_70;     //
    Double_t fJet_SF_mistag_down_MV1_70;   //

    Double_t fJet_SF_MV1_80;               // jet scale factors with syst. variations (SgTopD3PDs)
    Double_t fJet_SF_btag_up_MV1_80;       //
    Double_t fJet_SF_btag_down_MV1_80;     //  -> 80% efficiency working point
    Double_t fJet_SF_ctag_up_MV1_80;       //
    Double_t fJet_SF_ctag_down_MV1_80;     //
    Double_t fJet_SF_mistag_up_MV1_80;     //
    Double_t fJet_SF_mistag_down_MV1_80;   //

    Double_t fJet_SF_MV1c_50;               // jet scale factors with syst. variations (SgTopD3PDs)
    Double_t fJet_SF_btag_up_MV1c_50;       //
    Double_t fJet_SF_btag_down_MV1c_50;     //  -> 50% efficiency working point
    Double_t fJet_SF_ctag_up_MV1c_50;       //
    Double_t fJet_SF_ctag_down_MV1c_50;     //
    Double_t fJet_SF_mistag_up_MV1c_50;     //
    Double_t fJet_SF_mistag_down_MV1c_50;   //

  public:
    AtlJet();
    AtlJet(Int_t Id, Float_t E, Float_t Px, Float_t Py, Float_t Pz,
	   EJetQuality jetquality,
	   TLorentzVector P_EMSCALE, TLorentzVector P_JESCorrSCALE,
	   Double_t EMJES_EtaCorr, Double_t BCH_CORR_CELL, Double_t BCH_CORR_JET,
	   Float_t eta_offsetJES);
    virtual ~AtlJet();
    virtual void Clear(Option_t *option = "");
    virtual void Print(Option_t *option = "");
    static void PrintHeader();
    static void PrintFooter();
    const AtlBTag* GetTag(AtlBTag::ETagger tagger);
    AtlBTag* AddTag(AtlBTag::ETagger tagger, Double_t weight,
		    Bool_t IsValid);
    void AddTrack(AtlIDTrack *trk, Float_t deltaR_max); 
    static const char* NameOfType(EType type);
    void SetQualityVars(Double_t LArQuality,
			Double_t HecQuality,
			Double_t NegEnergy,
			Double_t N90,
			Double_t EMFraction,
			Double_t HecF,
			Double_t Timing,
			Int_t    SamplingMax,
			Double_t FracSamplingMax,
			Double_t SumPtTrk);
    void SetRefinedQualityFlag();
    EFlavour GetTruthFlavourByDeltaRmin(Float_t DeltaRmax) const;
	
    inline static Bool_t IsMCJet(EType type) {
	// Is detector level or parton level jet type ?
	return ( type == kMCCone4Hadron   ||
		 type == kMCCone7Hadron   ||
		 type == kMCAntiKt4Hadron ||
		 type == kMCAntiKt6Hadron ||
		 type == kMCAntiKt4HadronPileup );
    }

    inline void SetTruthFlavour(EFlavour TruthFlavour) {
	// Set MC truth flavour
	fTruthFlavour = TruthFlavour;
    } 
    inline EFlavour GetTruthFlavour() const {
	// Return MC true jet flavour
	return fTruthFlavour;
    }
    inline void AddTruthParticle(HepMCParticle *prt) {
	// Add particle to list of truth particles inside jet cone
	fTruthParticles->Add(prt);
    }
    inline const TRefArray* GetTruthParticles() const {
	// Return array of HepMCTruth particles in jet cone, sorted by Pt
        return fTruthParticles;
    }
    inline void AddTrack(AtlIDTrack * trk) {
	// Add track to list of tracks inside the jet
	fTracks->Add(trk);
    }
    inline const TRefArray* GetTracks() const {
	// Return array of AtlIDTrack's in the jet
	return fTracks;
    }
    inline void AddK0sCanditate(AtlK0sDecayPiPi * K0s) {
	// Add K0sCanditate to list of K0sCanditates inside the jet
	fK0sCanditates->Add(K0s);
    } 
    inline const TRefArray* GetK0sCanditates() const {
	// Return array of AtlK0sDecayPiPi's in the jet
	return fK0sCanditates;
    } 
    inline void SetFakeCandidate(HepParticle *prt) {
	// Fills the data member fFakeCandidate with lepton/photon identified as faking the jet
	*fFakeCandidate = (TObject*)prt;
    }
    inline HepParticle*  GetFakeCandidate() const {
	// Returns pointer to lepton/photon that fakes the jet
	return (HepParticle*)fFakeCandidate->GetObject();	
    }
    inline Bool_t IsFaked() const {
	// Is the jet faked by a lepton or a photon?
	return ( GetFakeCandidate() != 0 );
    }
    inline Bool_t IsInvalidJet() const { return fJetQuality & kInvalid; }
    inline Bool_t IsUglyJet() const { return fJetQuality & kIsUgly; }
    inline Bool_t IsBadJet() const { return fJetQuality & kIsBad; }
    inline Bool_t IsGoodJet() const { return fJetQuality & kIsGood; }
    inline Bool_t IsLooseBadJet() const { return fJetQuality & kIsLooseBad; }
    inline Bool_t IsMediumBadJet() const { return fJetQuality & kIsMediumBad; }
    inline Bool_t IsTightBadJet() const { return fJetQuality & kIsTightBad; }

    //inline Float_t GetEMFraction() const { return fEMFraction; }


    //
    // EMScale kinematics
    //
    inline const TLorentzVector& P_EMSCALE() const {
	// Return 4-momentum vector (GeV)
	return fP_EMSCALE;
    }
    
    inline Float_t EMScaleM() const {
	// Return invariant mass (GeV)
	return fP_EMSCALE.M();
    }
    inline Float_t EMScalePt() const {
	// Return transvere momentum (GeV)
	return fP_EMSCALE.Perp();
    }
    inline Float_t EMScalePx() const {
	// Return momentum x component (GeV)
	return fP_EMSCALE.Px();
    }
    inline Float_t EMScalePy() const {
	// Return momentum y component (GeV)
	return fP_EMSCALE.Py();
    }
    inline Float_t EMScalePz() const {
	// Return momentum z component (GeV)
	return fP_EMSCALE.Pz();
    }
    inline Float_t EMScaleEt() const {
	// Return transverse energy (GeV)
	return fP_EMSCALE.Et();
    }
    inline Float_t EMScaleEta() const {
	// Return pseudo-rapidity
	Float_t eta = 0.;
	if ( fP_EMSCALE.CosTheta()*fP_EMSCALE.CosTheta() < 1. ) {
	    eta = fP_EMSCALE.Eta();
	} else {
	    eta = ( fP_EMSCALE.Pz() > 0. ) ? 10e10 : -10e10;
	}
	return eta;
    }
    inline Float_t EMScaleTheta() const {
	// Return zenith (rad)
	return fP_EMSCALE.Theta();
    }    
    inline Float_t EMScalePhi() const {
	// Return azimuth (rad)
	return fP_EMSCALE.Phi();
    }

    Float_t EMScaleDeltaR(AtlElectron *el, const char* option = "");
    Float_t EMScaleDeltaR(AtlMuon *mu, const char* option = "");

    
    //
    // JESCorr kinematics
    //
    inline Float_t JES_Pt() const {
	// Return transvere momentum (GeV)
	return fP_JESCorrSCALE.Pt();
    }
    
    inline Float_t JES_Px() const {
	//Return momentum in x (GeV)
	return fP_JESCorrSCALE.Px();
    }
    
    inline Float_t JES_Py() const {
	//Return momentum in y (GeV)
	return fP_JESCorrSCALE.Py();
    }
    
    inline Float_t JES_Pz() const {
	//Return momentum in z (GeV)
	return fP_JESCorrSCALE.Pz();
    }

    inline Float_t JES_Eta() const {
	// Return pseudo-rapidity
	return fP_JESCorrSCALE.Eta();
    }
    
    inline Float_t JES_Phi() const {
	// Return azimuth (rad)
	return fP_JESCorrSCALE.Phi();
    }

    inline Float_t JES_E() const {
	// Return energy (GeV)
	return fP_JESCorrSCALE.E();
    }

    // EMJES Eta Correction
    inline Double_t EMJES_EtaCorr() const {
	return fEMJES_EtaCorr;
    }

    inline Double_t Get_BCH_CORR_JET() const {
      return fBCH_CORR_JET;
    }
    
    inline Double_t Get_BCH_CORR_CELL() const {
      return fBCH_CORR_CELL;
    }

    inline Float_t GetEta_offsetJES() {
	// corrected eta (sgtop d3pds)
	return fEta_offsetJES;
    }
    
    inline Float_t GetTruthDeltaRminBeauty() const {
	//
	// Get DeltaR to next true B hadron
	//
	return fTruthDeltaRminBeauty;
    }
    inline Float_t GetTruthDeltaRminCharm() const {
	//
	// Get DeltaR to next true charmed hadron
	//
	return fTruthDeltaRminCharm;
    }
    inline Float_t GetTruthDeltaRminTau() const {
	//
	// Get DeltaR to next true tau
	//
	return fTruthDeltaRminTau;
    }
    inline void SetTruthDeltaRminBeauty(Float_t  TruthDeltaRminBeauty) {
	//
	// Set DeltaR to next true B hadron
	//
	fTruthDeltaRminBeauty = TruthDeltaRminBeauty;
    }
    inline void SetTruthDeltaRminCharm(Float_t TruthDeltaRminCharm) {
	// 
	// Set DeltaR to next true charmed hadron
	//
	fTruthDeltaRminCharm = TruthDeltaRminCharm;
    }
    inline void SetTruthDeltaRminTau(Float_t TruthDeltaRminTau) {
	//
	// Set DeltaR to next true tau
    	fTruthDeltaRminTau = TruthDeltaRminTau;
    }
    inline void SetJetScaleFactors_MV1_60(Double_t jet_SF,
					  Double_t jet_SF_btag_up,
					  Double_t jet_SF_btag_down,
					  Double_t jet_SF_ctag_up,
					  Double_t jet_SF_ctag_down,
					  Double_t jet_SF_mistag_up,
					  Double_t jet_SF_mistag_down) {
	// Set Jet scale factors (nominal, up, down) SgTop D3PD variables
	fJet_SF_MV1_60             = jet_SF;
	fJet_SF_btag_up_MV1_60     = jet_SF_btag_up;
	fJet_SF_btag_down_MV1_60   = jet_SF_btag_down;
	fJet_SF_ctag_up_MV1_60     = jet_SF_ctag_up;
	fJet_SF_ctag_down_MV1_60   = jet_SF_ctag_down;
	fJet_SF_mistag_up_MV1_60   = jet_SF_mistag_up;
	fJet_SF_mistag_down_MV1_60 = jet_SF_mistag_down;
    }
    inline Double_t GetJetScaleFactor_MV1_60()           { return fJet_SF_MV1_60;}
    inline Double_t GetJetScaleFactor_btag_up_MV1_60()   { return fJet_SF_btag_up_MV1_60;}
    inline Double_t GetJetScaleFactor_btag_down_MV1_60() { return fJet_SF_btag_down_MV1_60;}
    inline Double_t GetJetScaleFactor_ctag_up_MV1_60()   { return fJet_SF_ctag_up_MV1_60;}
    inline Double_t GetJetScaleFactor_ctag_down_MV1_60() { return fJet_SF_ctag_down_MV1_60;}
    inline Double_t GetJetScaleFactor_mistag_up_MV1_60()   { return fJet_SF_mistag_up_MV1_60;}
    inline Double_t GetJetScaleFactor_mistag_down_MV1_60() { return fJet_SF_mistag_down_MV1_60;}

    inline void SetJetScaleFactors_MV1_70(Double_t jet_SF,
					  Double_t jet_SF_btag_up,
					  Double_t jet_SF_btag_down,
					  Double_t jet_SF_ctag_up,
					  Double_t jet_SF_ctag_down,
					  Double_t jet_SF_mistag_up,
					  Double_t jet_SF_mistag_down) {
	// Set Jet scale factors (nominal, up, down) SgTop D3PD variables
	fJet_SF_MV1_70             = jet_SF;
	fJet_SF_btag_up_MV1_70     = jet_SF_btag_up;
	fJet_SF_btag_down_MV1_70   = jet_SF_btag_down;
	fJet_SF_ctag_up_MV1_70     = jet_SF_ctag_up;
	fJet_SF_ctag_down_MV1_70   = jet_SF_ctag_down;
	fJet_SF_mistag_up_MV1_70   = jet_SF_mistag_up;
	fJet_SF_mistag_down_MV1_70 = jet_SF_mistag_down;
    }
    inline Double_t GetJetScaleFactor_MV1_70()           { return fJet_SF_MV1_70;}
    inline Double_t GetJetScaleFactor_btag_up_MV1_70()   { return fJet_SF_btag_up_MV1_70;}
    inline Double_t GetJetScaleFactor_btag_down_MV1_70() { return fJet_SF_btag_down_MV1_70;}
    inline Double_t GetJetScaleFactor_ctag_up_MV1_70()   { return fJet_SF_ctag_up_MV1_70;}
    inline Double_t GetJetScaleFactor_ctag_down_MV1_70() { return fJet_SF_ctag_down_MV1_70;}
    inline Double_t GetJetScaleFactor_mistag_up_MV1_70()   { return fJet_SF_mistag_up_MV1_70;}
    inline Double_t GetJetScaleFactor_mistag_down_MV1_70() { return fJet_SF_mistag_down_MV1_70;}

    inline void SetJetScaleFactors_MV1_80(Double_t jet_SF,
					  Double_t jet_SF_btag_up,
					  Double_t jet_SF_btag_down,
					  Double_t jet_SF_ctag_up,
					  Double_t jet_SF_ctag_down,
					  Double_t jet_SF_mistag_up,
					  Double_t jet_SF_mistag_down) {
	// Set Jet scale factors (nominal, up, down) SgTop D3PD variables
	fJet_SF_MV1_80             = jet_SF;
	fJet_SF_btag_up_MV1_80     = jet_SF_btag_up;
	fJet_SF_btag_down_MV1_80   = jet_SF_btag_down;
	fJet_SF_ctag_up_MV1_80     = jet_SF_ctag_up;
	fJet_SF_ctag_down_MV1_80   = jet_SF_ctag_down;
	fJet_SF_mistag_up_MV1_80   = jet_SF_mistag_up;
	fJet_SF_mistag_down_MV1_80 = jet_SF_mistag_down;
    }
    inline Double_t GetJetScaleFactor_MV1_80()           { return fJet_SF_MV1_80;}
    inline Double_t GetJetScaleFactor_btag_up_MV1_80()   { return fJet_SF_btag_up_MV1_80;}
    inline Double_t GetJetScaleFactor_btag_down_MV1_80() { return fJet_SF_btag_down_MV1_80;}
    inline Double_t GetJetScaleFactor_ctag_up_MV1_80()   { return fJet_SF_ctag_up_MV1_80;}
    inline Double_t GetJetScaleFactor_ctag_down_MV1_80() { return fJet_SF_ctag_down_MV1_80;}
    inline Double_t GetJetScaleFactor_mistag_up_MV1_80()   { return fJet_SF_mistag_up_MV1_80;}
    inline Double_t GetJetScaleFactor_mistag_down_MV1_80() { return fJet_SF_mistag_down_MV1_80;}

    inline void SetJetScaleFactors_MV1c_50(Double_t jet_SF,
					   Double_t jet_SF_btag_up,
					   Double_t jet_SF_btag_down,
					   Double_t jet_SF_ctag_up,
					   Double_t jet_SF_ctag_down,
					   Double_t jet_SF_mistag_up,
					   Double_t jet_SF_mistag_down) {
	// Set Jet scale factors (nominal, up, down) SgTop D3PD variables
	fJet_SF_MV1c_50             = jet_SF;
	fJet_SF_btag_up_MV1c_50     = jet_SF_btag_up;
	fJet_SF_btag_down_MV1c_50   = jet_SF_btag_down;
	fJet_SF_ctag_up_MV1c_50     = jet_SF_ctag_up;
	fJet_SF_ctag_down_MV1c_50   = jet_SF_ctag_down;
	fJet_SF_mistag_up_MV1c_50   = jet_SF_mistag_up;
	fJet_SF_mistag_down_MV1c_50 = jet_SF_mistag_down;
    }
    inline Double_t GetJetScaleFactor_MV1c_50()           { return fJet_SF_MV1c_50;}
    inline Double_t GetJetScaleFactor_btag_up_MV1c_50()   { return fJet_SF_btag_up_MV1c_50;}
    inline Double_t GetJetScaleFactor_btag_down_MV1c_50() { return fJet_SF_btag_down_MV1c_50;}
    inline Double_t GetJetScaleFactor_ctag_up_MV1c_50()   { return fJet_SF_ctag_up_MV1c_50;}
    inline Double_t GetJetScaleFactor_ctag_down_MV1c_50() { return fJet_SF_ctag_down_MV1c_50;}
    inline Double_t GetJetScaleFactor_mistag_up_MV1c_50()   { return fJet_SF_mistag_up_MV1c_50;}
    inline Double_t GetJetScaleFactor_mistag_down_MV1c_50() { return fJet_SF_mistag_down_MV1c_50;}

    ClassDef(AtlJet,45) // Atlas detector level jet
};
#endif

 AtlJet.h:1
 AtlJet.h:2
 AtlJet.h:3
 AtlJet.h:4
 AtlJet.h:5
 AtlJet.h:6
 AtlJet.h:7
 AtlJet.h:8
 AtlJet.h:9
 AtlJet.h:10
 AtlJet.h:11
 AtlJet.h:12
 AtlJet.h:13
 AtlJet.h:14
 AtlJet.h:15
 AtlJet.h:16
 AtlJet.h:17
 AtlJet.h:18
 AtlJet.h:19
 AtlJet.h:20
 AtlJet.h:21
 AtlJet.h:22
 AtlJet.h:23
 AtlJet.h:24
 AtlJet.h:25
 AtlJet.h:26
 AtlJet.h:27
 AtlJet.h:28
 AtlJet.h:29
 AtlJet.h:30
 AtlJet.h:31
 AtlJet.h:32
 AtlJet.h:33
 AtlJet.h:34
 AtlJet.h:35
 AtlJet.h:36
 AtlJet.h:37
 AtlJet.h:38
 AtlJet.h:39
 AtlJet.h:40
 AtlJet.h:41
 AtlJet.h:42
 AtlJet.h:43
 AtlJet.h:44
 AtlJet.h:45
 AtlJet.h:46
 AtlJet.h:47
 AtlJet.h:48
 AtlJet.h:49
 AtlJet.h:50
 AtlJet.h:51
 AtlJet.h:52
 AtlJet.h:53
 AtlJet.h:54
 AtlJet.h:55
 AtlJet.h:56
 AtlJet.h:57
 AtlJet.h:58
 AtlJet.h:59
 AtlJet.h:60
 AtlJet.h:61
 AtlJet.h:62
 AtlJet.h:63
 AtlJet.h:64
 AtlJet.h:65
 AtlJet.h:66
 AtlJet.h:67
 AtlJet.h:68
 AtlJet.h:69
 AtlJet.h:70
 AtlJet.h:71
 AtlJet.h:72
 AtlJet.h:73
 AtlJet.h:74
 AtlJet.h:75
 AtlJet.h:76
 AtlJet.h:77
 AtlJet.h:78
 AtlJet.h:79
 AtlJet.h:80
 AtlJet.h:81
 AtlJet.h:82
 AtlJet.h:83
 AtlJet.h:84
 AtlJet.h:85
 AtlJet.h:86
 AtlJet.h:87
 AtlJet.h:88
 AtlJet.h:89
 AtlJet.h:90
 AtlJet.h:91
 AtlJet.h:92
 AtlJet.h:93
 AtlJet.h:94
 AtlJet.h:95
 AtlJet.h:96
 AtlJet.h:97
 AtlJet.h:98
 AtlJet.h:99
 AtlJet.h:100
 AtlJet.h:101
 AtlJet.h:102
 AtlJet.h:103
 AtlJet.h:104
 AtlJet.h:105
 AtlJet.h:106
 AtlJet.h:107
 AtlJet.h:108
 AtlJet.h:109
 AtlJet.h:110
 AtlJet.h:111
 AtlJet.h:112
 AtlJet.h:113
 AtlJet.h:114
 AtlJet.h:115
 AtlJet.h:116
 AtlJet.h:117
 AtlJet.h:118
 AtlJet.h:119
 AtlJet.h:120
 AtlJet.h:121
 AtlJet.h:122
 AtlJet.h:123
 AtlJet.h:124
 AtlJet.h:125
 AtlJet.h:126
 AtlJet.h:127
 AtlJet.h:128
 AtlJet.h:129
 AtlJet.h:130
 AtlJet.h:131
 AtlJet.h:132
 AtlJet.h:133
 AtlJet.h:134
 AtlJet.h:135
 AtlJet.h:136
 AtlJet.h:137
 AtlJet.h:138
 AtlJet.h:139
 AtlJet.h:140
 AtlJet.h:141
 AtlJet.h:142
 AtlJet.h:143
 AtlJet.h:144
 AtlJet.h:145
 AtlJet.h:146
 AtlJet.h:147
 AtlJet.h:148
 AtlJet.h:149
 AtlJet.h:150
 AtlJet.h:151
 AtlJet.h:152
 AtlJet.h:153
 AtlJet.h:154
 AtlJet.h:155
 AtlJet.h:156
 AtlJet.h:157
 AtlJet.h:158
 AtlJet.h:159
 AtlJet.h:160
 AtlJet.h:161
 AtlJet.h:162
 AtlJet.h:163
 AtlJet.h:164
 AtlJet.h:165
 AtlJet.h:166
 AtlJet.h:167
 AtlJet.h:168
 AtlJet.h:169
 AtlJet.h:170
 AtlJet.h:171
 AtlJet.h:172
 AtlJet.h:173
 AtlJet.h:174
 AtlJet.h:175
 AtlJet.h:176
 AtlJet.h:177
 AtlJet.h:178
 AtlJet.h:179
 AtlJet.h:180
 AtlJet.h:181
 AtlJet.h:182
 AtlJet.h:183
 AtlJet.h:184
 AtlJet.h:185
 AtlJet.h:186
 AtlJet.h:187
 AtlJet.h:188
 AtlJet.h:189
 AtlJet.h:190
 AtlJet.h:191
 AtlJet.h:192
 AtlJet.h:193
 AtlJet.h:194
 AtlJet.h:195
 AtlJet.h:196
 AtlJet.h:197
 AtlJet.h:198
 AtlJet.h:199
 AtlJet.h:200
 AtlJet.h:201
 AtlJet.h:202
 AtlJet.h:203
 AtlJet.h:204
 AtlJet.h:205
 AtlJet.h:206
 AtlJet.h:207
 AtlJet.h:208
 AtlJet.h:209
 AtlJet.h:210
 AtlJet.h:211
 AtlJet.h:212
 AtlJet.h:213
 AtlJet.h:214
 AtlJet.h:215
 AtlJet.h:216
 AtlJet.h:217
 AtlJet.h:218
 AtlJet.h:219
 AtlJet.h:220
 AtlJet.h:221
 AtlJet.h:222
 AtlJet.h:223
 AtlJet.h:224
 AtlJet.h:225
 AtlJet.h:226
 AtlJet.h:227
 AtlJet.h:228
 AtlJet.h:229
 AtlJet.h:230
 AtlJet.h:231
 AtlJet.h:232
 AtlJet.h:233
 AtlJet.h:234
 AtlJet.h:235
 AtlJet.h:236
 AtlJet.h:237
 AtlJet.h:238
 AtlJet.h:239
 AtlJet.h:240
 AtlJet.h:241
 AtlJet.h:242
 AtlJet.h:243
 AtlJet.h:244
 AtlJet.h:245
 AtlJet.h:246
 AtlJet.h:247
 AtlJet.h:248
 AtlJet.h:249
 AtlJet.h:250
 AtlJet.h:251
 AtlJet.h:252
 AtlJet.h:253
 AtlJet.h:254
 AtlJet.h:255
 AtlJet.h:256
 AtlJet.h:257
 AtlJet.h:258
 AtlJet.h:259
 AtlJet.h:260
 AtlJet.h:261
 AtlJet.h:262
 AtlJet.h:263
 AtlJet.h:264
 AtlJet.h:265
 AtlJet.h:266
 AtlJet.h:267
 AtlJet.h:268
 AtlJet.h:269
 AtlJet.h:270
 AtlJet.h:271
 AtlJet.h:272
 AtlJet.h:273
 AtlJet.h:274
 AtlJet.h:275
 AtlJet.h:276
 AtlJet.h:277
 AtlJet.h:278
 AtlJet.h:279
 AtlJet.h:280
 AtlJet.h:281
 AtlJet.h:282
 AtlJet.h:283
 AtlJet.h:284
 AtlJet.h:285
 AtlJet.h:286
 AtlJet.h:287
 AtlJet.h:288
 AtlJet.h:289
 AtlJet.h:290
 AtlJet.h:291
 AtlJet.h:292
 AtlJet.h:293
 AtlJet.h:294
 AtlJet.h:295
 AtlJet.h:296
 AtlJet.h:297
 AtlJet.h:298
 AtlJet.h:299
 AtlJet.h:300
 AtlJet.h:301
 AtlJet.h:302
 AtlJet.h:303
 AtlJet.h:304
 AtlJet.h:305
 AtlJet.h:306
 AtlJet.h:307
 AtlJet.h:308
 AtlJet.h:309
 AtlJet.h:310
 AtlJet.h:311
 AtlJet.h:312
 AtlJet.h:313
 AtlJet.h:314
 AtlJet.h:315
 AtlJet.h:316
 AtlJet.h:317
 AtlJet.h:318
 AtlJet.h:319
 AtlJet.h:320
 AtlJet.h:321
 AtlJet.h:322
 AtlJet.h:323
 AtlJet.h:324
 AtlJet.h:325
 AtlJet.h:326
 AtlJet.h:327
 AtlJet.h:328
 AtlJet.h:329
 AtlJet.h:330
 AtlJet.h:331
 AtlJet.h:332
 AtlJet.h:333
 AtlJet.h:334
 AtlJet.h:335
 AtlJet.h:336
 AtlJet.h:337
 AtlJet.h:338
 AtlJet.h:339
 AtlJet.h:340
 AtlJet.h:341
 AtlJet.h:342
 AtlJet.h:343
 AtlJet.h:344
 AtlJet.h:345
 AtlJet.h:346
 AtlJet.h:347
 AtlJet.h:348
 AtlJet.h:349
 AtlJet.h:350
 AtlJet.h:351
 AtlJet.h:352
 AtlJet.h:353
 AtlJet.h:354
 AtlJet.h:355
 AtlJet.h:356
 AtlJet.h:357
 AtlJet.h:358
 AtlJet.h:359
 AtlJet.h:360
 AtlJet.h:361
 AtlJet.h:362
 AtlJet.h:363
 AtlJet.h:364
 AtlJet.h:365
 AtlJet.h:366
 AtlJet.h:367
 AtlJet.h:368
 AtlJet.h:369
 AtlJet.h:370
 AtlJet.h:371
 AtlJet.h:372
 AtlJet.h:373
 AtlJet.h:374
 AtlJet.h:375
 AtlJet.h:376
 AtlJet.h:377
 AtlJet.h:378
 AtlJet.h:379
 AtlJet.h:380
 AtlJet.h:381
 AtlJet.h:382
 AtlJet.h:383
 AtlJet.h:384
 AtlJet.h:385
 AtlJet.h:386
 AtlJet.h:387
 AtlJet.h:388
 AtlJet.h:389
 AtlJet.h:390
 AtlJet.h:391
 AtlJet.h:392
 AtlJet.h:393
 AtlJet.h:394
 AtlJet.h:395
 AtlJet.h:396
 AtlJet.h:397
 AtlJet.h:398
 AtlJet.h:399
 AtlJet.h:400
 AtlJet.h:401
 AtlJet.h:402
 AtlJet.h:403
 AtlJet.h:404
 AtlJet.h:405
 AtlJet.h:406
 AtlJet.h:407
 AtlJet.h:408
 AtlJet.h:409
 AtlJet.h:410
 AtlJet.h:411
 AtlJet.h:412
 AtlJet.h:413
 AtlJet.h:414
 AtlJet.h:415
 AtlJet.h:416
 AtlJet.h:417
 AtlJet.h:418
 AtlJet.h:419
 AtlJet.h:420
 AtlJet.h:421
 AtlJet.h:422
 AtlJet.h:423
 AtlJet.h:424
 AtlJet.h:425
 AtlJet.h:426
 AtlJet.h:427
 AtlJet.h:428
 AtlJet.h:429
 AtlJet.h:430
 AtlJet.h:431
 AtlJet.h:432
 AtlJet.h:433
 AtlJet.h:434
 AtlJet.h:435
 AtlJet.h:436
 AtlJet.h:437
 AtlJet.h:438
 AtlJet.h:439
 AtlJet.h:440
 AtlJet.h:441
 AtlJet.h:442
 AtlJet.h:443
 AtlJet.h:444
 AtlJet.h:445
 AtlJet.h:446
 AtlJet.h:447
 AtlJet.h:448
 AtlJet.h:449
 AtlJet.h:450
 AtlJet.h:451
 AtlJet.h:452
 AtlJet.h:453
 AtlJet.h:454
 AtlJet.h:455
 AtlJet.h:456
 AtlJet.h:457
 AtlJet.h:458
 AtlJet.h:459
 AtlJet.h:460
 AtlJet.h:461
 AtlJet.h:462
 AtlJet.h:463
 AtlJet.h:464
 AtlJet.h:465
 AtlJet.h:466
 AtlJet.h:467
 AtlJet.h:468
 AtlJet.h:469
 AtlJet.h:470
 AtlJet.h:471
 AtlJet.h:472
 AtlJet.h:473
 AtlJet.h:474
 AtlJet.h:475
 AtlJet.h:476
 AtlJet.h:477
 AtlJet.h:478
 AtlJet.h:479
 AtlJet.h:480
 AtlJet.h:481
 AtlJet.h:482
 AtlJet.h:483
 AtlJet.h:484
 AtlJet.h:485
 AtlJet.h:486
 AtlJet.h:487
 AtlJet.h:488
 AtlJet.h:489
 AtlJet.h:490
 AtlJet.h:491
 AtlJet.h:492
 AtlJet.h:493
 AtlJet.h:494
 AtlJet.h:495
 AtlJet.h:496
 AtlJet.h:497