ROOT logo
//*************************************************************************
//
//  HGeantKine
//
//  GEANT KINE event data (GEANT data on primary and secondary tracks)
//
//  last modified on 23/03/2005 by R.Holzmann  (GSI)
//*************************************************************************
#ifndef HGEANTKINE_H
#define HGEANTKINE_H

#include "TMath.h"
#include "TObject.h"
#include "hades.h"
#include "hrecevent.h"
#include "hgeomvector.h"
#include "hphysicsconstants.h"
#include "hgeantrich.h"
#include "hgeantmdc.h"
#include "hgeanttof.h"
#include "hgeantrpc.h"
#include "hgeantemc.h"
#include "hgeantwall.h"
#include "hgeantstart.h"

#include <vector>

using namespace std;

class HLinkedDataObject;
class HCategory;
class HLinearCategory;

class HGeantKine : public TObject
{
private:
  Int_t richIndex;          //! internal index variables
  Int_t mdcIndex;           //! used to set up linked chains
  Int_t tofIndex;           //! of hit objects
  Int_t rpcIndex;           //!
  Int_t showIndex;          //! 
  Int_t wallIndex;          //! 
  Int_t emcIndex;           //!
  Int_t startIndex;         //!
  HCategory* pRich;         //! internal pointers to category
  HCategory* pMdc;          //! used to set up linked chains
  HCategory* pTof;          //! of hit objects
  HCategory* pRpc;          //!
  HCategory* pShow;         //!
  HCategory* pWall;         //!
  HCategory* pEmc;          //!
  HCategory* pStart;        //!

protected:
  Int_t trackNumber;        // GEANT track number
  Int_t parentTrack;        // GEANT track number of parent particle
  Int_t particleID;         // GEANT particle ID number
  Int_t mediumNumber;       // GEANT medium of creation number
  Int_t creationMechanism;  // GEANT creation mechanism number
  Float_t xVertex;          // x of track vertex  (in mm)
  Float_t yVertex;          // y
  Float_t zVertex;          // z
  Float_t xMom;             // x component of particle momentum (in MeV/c)
  Float_t yMom;             // y
  Float_t zMom;             // z
  Float_t generatorInfo;    // event generator info            PLUTO: SourceID : thermal (parentid + 500) or  decay code (example : pp->pppi0 ==> 141407)
  Float_t generatorInfo1;   // additional event generator info PLUTO: parentID
  Float_t generatorInfo2;   // additional event generator info PLUTO: parentIndex
  Float_t generatorWeight;  // associated weight
  Short_t firstRichHit;     // index of first hit in RICH category
  Short_t firstMdcHit;      // index of first hit in MDC category
  Short_t firstTofHit;      // index of first hit in TOF category
  Short_t firstRpcHit;      // index of first hit in RPC category
  Short_t firstShowerHit;   // index of first hit in SHOWER category
  Short_t firstWallHit;     // index of first hit in WALL category
  Short_t firstEmcHit;      // index of first hit in EMC category
  Short_t firstStartHit;    // index of first hit in START category
  Bool_t active;            // active flag (set if track participates in a hit)
  Bool_t suppressed;        // flag used to filter out particle hits before digitization 
  Float_t userVal;          // stores user specific values (for expample evtSeqnumber of PLUTO particles for embedding)
  UInt_t  acceptance ;      // bit wise : 1-25 MDCLAYER 26-27 sys0/sys1 28-31 layer crop  highest bit : filled/not filled
public:
  HGeantKine(void);
  HGeantKine(HGeantKine &aKine);
  ~HGeantKine(void);
  void setTrack(Int_t aTrack) { trackNumber = aTrack;}
  void setParticle(Int_t aTrack, Int_t aID);
  void setCreator(Int_t aPar, Int_t aMed, Int_t aMech);
  void setVertex(Float_t ax, Float_t ay, Float_t az);
  void setMomentum(Float_t apx, Float_t apy, Float_t apz);
  void setGenerator(Float_t aInfo, Float_t aWeight);
  void setGenerator(Float_t aInfo, Float_t aInfo1, Float_t aInfo2);
  void setWeight(Float_t aWeight) {generatorWeight = aWeight;}
  void getParticle(Int_t &aTrack, Int_t &aID);
  void getCreator(Int_t &aPar, Int_t &aMed, Int_t &aMech);
  void setID(Int_t aID) { particleID = aID; }
  void setMedium(Int_t aMed) { mediumNumber = aMed; }
  void setMechanism(Int_t aMech) { creationMechanism = aMech; }

  void getVertex(Float_t &ax, Float_t &ay, Float_t &az);
  void getVertex(HGeomVector& ver);
  Float_t  getDistFromVertex();
  void getMomentum(Float_t &apx, Float_t &apy, Float_t &apz);
  inline Int_t getTrack(void) const { return trackNumber; }
  inline Int_t getMedium()    const { return mediumNumber;      }
  inline Int_t getMechanism() const { return creationMechanism; }
  inline Int_t getID(void) const { return particleID; }
  inline Int_t getParentTrack(void) const { return parentTrack; }
  inline void setParentTrack(Int_t track) { parentTrack = track; }
  void setNewTrackNumber(Int_t track);
  Float_t getTotalMomentum2(void) const { return xMom*xMom + yMom*yMom + zMom*zMom; }
  Float_t getTotalMomentum(void) const { return TMath::Sqrt(getTotalMomentum2()); }
  Float_t getTransverseMomentum(void) const { return TMath::Sqrt(xMom*xMom + yMom*yMom); }
  Int_t   getSector();
  Float_t getPhiDeg  (Bool_t labSys = kTRUE);
  Float_t getThetaDeg();
  Int_t   getPhiThetaDeg(Float_t& theta,Float_t& phi, Bool_t labSys = kTRUE);

  Float_t getM(void) const {return HPhysicsConstants::mass(particleID);}
  Float_t getE(void) const {return TMath::Sqrt(getM()*getM() + getTotalMomentum2());}
  Float_t getEkin(void) const {return getE()-getM();}
  Float_t getRapidity(void) const{return 0.5*TMath::Log((getE()+zMom)/(getE()-zMom));}

  void getMomentum(HGeomVector &v) { v.setXYZ(xMom, yMom, zMom); }
  void getGenerator(Float_t &aInfo, Float_t &aWeight);
  void getGenerator(Float_t &aInfo, Float_t &aInfo1, Float_t &aInfo2);
  Int_t   getGeneratorInfo()   const  {return generatorInfo;}
  Int_t   getGeneratorInfo1()  const  {return generatorInfo1;}
  Int_t   getGeneratorInfo2()  const  {return generatorInfo2;}
  Float_t getGeneratorWeight() const  {return generatorWeight;}
  static Int_t   getGeneration(HGeantKine*);
  static Int_t   getMothers(HGeantKine*, vector<HGeantKine*>& mothers);
  static Int_t   getAllDaughters(HGeantKine* mother,vector<HGeantKine*>& daughters);
  static Int_t   getDaughters(HGeantKine* mother,vector<HGeantKine*>& daughters);
  static HGeantKine*  getChargedDecayDaughter(HGeantKine* mother);

  inline void setActive(Bool_t flag=kTRUE) {active=flag;}
  inline void setSuppressed(Bool_t flag=kTRUE) {suppressed=flag;}
  inline void setUserVal(Float_t val) {userVal=val;}
  inline Bool_t  isActive(void) const {return active;}
  inline Bool_t  isPrimary(void) const {return (parentTrack==0);}
  inline Bool_t  isSuppressed(void) const {return suppressed;}
  inline Float_t getUserVal(void)   const {return userVal;}
  Bool_t         hasAncestor(Int_t track, HLinearCategory* cat=NULL);
  void           printHistory();
  void           print();


  //--------------------------------------------------------
  // PLUTO helper functions
  Bool_t        isBugInfo();
  Bool_t        isExternalSource() ;
  Bool_t        isThermalSource()  ;
  static Bool_t isSameExternalSource(HGeantKine* kine1,HGeantKine* kine2);
  Bool_t        isSameExternalSource(HGeantKine* kine1);



  static Bool_t setChainActive(Int_t track, Bool_t flag=kTRUE, HLinearCategory* cat=NULL);
  static Bool_t setAllDescendentsActive(Int_t track, Bool_t flag=kTRUE, HLinearCategory* cat=NULL);
  static Bool_t setAllDescendentsSuppressed(Int_t track, Bool_t flag=kTRUE, HLinearCategory* cat=NULL);
  static HGeantKine* getParent(Int_t track, HLinearCategory* cat=NULL);
  static HGeantKine* getGrandParent(Int_t track, HLinearCategory* cat=NULL);
  static HGeantKine* getPrimary(Int_t track, HLinearCategory* cat=NULL);
  static HGeantKine* getCommonAncestor(Int_t track1, Int_t track2, HLinearCategory* cat=NULL);
  static Bool_t suppressTracks(Int_t id, Float_t acceptedFraction, HLinearCategory* cat=NULL);

  inline Int_t setRichHitIndex(Int_t index);
  inline Int_t setMdcHitIndex(Int_t index);
  inline Int_t setTofHitIndex(Int_t index);
  inline Int_t setRpcHitIndex(Int_t index);
  inline Int_t setShowerHitIndex(Int_t index);
  inline Int_t setWallHitIndex(Int_t index);
  inline Int_t setEmcHitIndex(Int_t index);
  inline Int_t setStartHitIndex(Int_t index);

  Int_t getNRichHits(void);  // return number of hits in list
  Int_t getFirstRichHit() {return firstRichHit;}
  Int_t getNMdcHits(void);
  Int_t getFirstMdcHit() {return firstMdcHit;}
  Int_t getNMdcHits(Int_t module);
  Int_t getNTofHits(void);
  Int_t getFirstTofHit() {return firstTofHit;}
  Int_t getNRpcHits(void);
  Int_t getFirstRpcHit() {return firstRpcHit;}
  Int_t getNShowerHits(void);
  Int_t getFirstShowerHit() {return firstShowerHit;}
  Int_t getNWallHits(void);
  Int_t getFirstWallHit() {return firstWallHit;}
  Int_t getNEmcHits(void);
  Int_t getFirstEmcHit() {return firstEmcHit;}
  Int_t getNStartHits(void);
  Int_t getFirstStartHit() {return firstStartHit;}

  Int_t getRichHits (vector<HGeantRichPhoton*>& v);
  Int_t getMdcHits  (vector<HGeantMdc*>& v);
  Int_t getTofHits  (vector<HGeantTof*>& v);
  Int_t getRpcHits  (vector<HGeantRpc*>& v);
  Int_t getWallHits (vector<HGeantWall*>& v);
  Int_t getEmcHits  (vector<HGeantEmc*>& v);
  Int_t getStartHits(vector<HGeantStart*>& v);

  void setFirstRichHit  (Int_t index) { firstRichHit  = index;}
  void setFirstMdcHit   (Int_t index) { firstMdcHit   = index;}
  void setFirstTofHit   (Int_t index) { firstTofHit   = index;}
  void setFirstRpcHit   (Int_t index) { firstRpcHit   = index;}
  void setFirstShowerHit(Int_t index) { firstShowerHit= index;}
  void setFirstWallHit  (Int_t index) { firstWallHit  = index;}
  void setFirstEmcHit   (Int_t index) { firstEmcHit   = index;}
  void setFirstStartHit (Int_t index) { firstStartHit = index;}


  void sortRichHits(void);  // sort hits in list
  void sortMdcHits(void);
  void sortTofHits(void);
  void sortRpcHits(void);
  void sortShowerHits(void);
  void sortWallHits(void);

  Bool_t isInAcceptance     (Int_t m0=4,Int_t m1=4,Int_t m2=4,Int_t m3=4,Int_t sys0=1,Int_t sys1=1);
  Bool_t isInAcceptanceDecay(Int_t m0,Int_t m1,Int_t m2,Int_t m3,Int_t sys0,Int_t sys1);
  Bool_t isInAcceptanceBit     (Int_t m0=4,Int_t m1=4,Int_t m2=4,Int_t m3=4,Int_t sys0=1,Int_t sys1=1);
  Bool_t isInAcceptanceDecayBit(Int_t m0,Int_t m1,Int_t m2,Int_t m3,Int_t sys0,Int_t sys1);
  void   getNHits        (Int_t& m0,Int_t& m1,Int_t& m2,Int_t& m3,Int_t& sys0,Int_t& sys1);
  void   getNHitsDecay   (Int_t& m0,Int_t& m1,Int_t& m2,Int_t& m3,Int_t& sys0,Int_t& sys1);
  void   getNHitsBit     (Int_t& m0,Int_t& m1,Int_t& m2,Int_t& m3,Int_t& sys0,Int_t& sys1);
  void   getNHitsDecayBit(Int_t& m0,Int_t& m1,Int_t& m2,Int_t& m3,Int_t& sys0,Int_t& sys1);
  Int_t  getSystem(void);
  Int_t  getSectorFromBitArray(void);
  UInt_t getMdcSectorBitArray(void);
  UInt_t getMdcSectorDecimalArray(void); 
  UInt_t getShowerSectorBitArray(void); 
  UInt_t getShowerSectorDecimalArray(void); 
  UInt_t getTofSectorBitArray(void); 
  UInt_t getTofSectorDecimalArray(void); 
  UInt_t getRpcSectorBitArray(void); 
  UInt_t getRpcSectorDecimalArray(void); 
  UInt_t getRichSectorBitArray(void); 
  UInt_t getRichSectorDecimalArray(void);
  UInt_t getSectorBitArray(void);
  UInt_t getSectorDecimalArray(void);

  inline HLinkedDataObject* nextRichHit();
  inline HLinkedDataObject* nextMdcHit();
  inline HLinkedDataObject* nextTofHit();
  inline HLinkedDataObject* nextRpcHit();
  inline HLinkedDataObject* nextShowerHit();
  inline HLinkedDataObject* nextWallHit();
  inline HLinkedDataObject* nextEmcHit();
  inline HLinkedDataObject* nextStartHit();

  // The following 4 are needed if the categories are created outside the HYDRA event
  // and are hence not accessible via HRecEvent::getCategory(cat), e.g. in a macro.
  inline void setRichCategory(HCategory* p) {pRich = p;} 
  inline void setMdcCategory(HCategory* p) {pMdc = p;}   
  inline void setTofCategory(HCategory* p) {pTof = p;}
  inline void setRpcCategory(HCategory* p) {pRpc = p;}
  inline void setShowerCategory(HCategory* p) {pShow = p;}
  inline void setWallCategory(HCategory* p) {pWall = p;}
  inline void setEmcCategory(HCategory* p) {pEmc = p;}
  inline void setStartCategory(HCategory* p) {pStart = p;}

  inline void resetRichIter(void);
  inline void resetMdcIter(void);
  inline void resetTofIter(void);
  inline void resetRpcIter(void);
  inline void resetShowerIter(void);
  inline void resetWallIter(void);
  inline void resetEmcIter(void);
  inline void resetStartIter(void);


  //-----------------------------------------------------------------------
  // acceptance bits
  void    setLayers(UInt_t io,UInt_t layers) { acceptance|=(layers&(0xFFF<<(io*12)));}
  void    setLayer (UInt_t io,UInt_t lay)    { acceptance |=  ( 0x01 << (io*12+lay) );          }
  void    unsetAllLayers()                   { acceptance &= ~0xFFFFFF; }
  static void setLayer(UInt_t io,UInt_t lay,UInt_t& layers) { layers |=  ( 0x01 << (io*12+lay) ); }
  Bool_t  getLayer    (UInt_t io,UInt_t lay)                { return ( acceptance &  ( 0x01 << (io*12+lay) )); }
  Bool_t  hasLayers   (UInt_t io,UInt_t layerstest)         { return (((acceptance>>(io*12))&0xFFF)==((layerstest>>(io*12))&0xFFF));}
  Int_t   getNLayer   (UInt_t io);
  Int_t   getNLayerMod(UInt_t mod);
  void    printLayers();
  void    setSys  (UInt_t sys)   { acceptance |=  ( 0x01 << (24+sys) ); }
  void    unsetSys(UInt_t sys)   { acceptance &= ~( 0x01 << (24+sys) ); }
  Bool_t  getSys  (UInt_t sys)   { return ( acceptance &  ( 0x01 << (24+sys) )); }

  void   setAtMdcEdge  (UInt_t i)   {  if(i<4) { acceptance|=((0x1)<<(i+26));  }  }
  void   unsetAtMdcEdge(UInt_t i)   {  if(i<4) { acceptance&=~((0x1)<<(i+26)); }  }
  Bool_t isAtMdcEdge   (UInt_t i)   {  if(i<4) { return ( acceptance &  ( 0x01 << (26+i) ));} else return kFALSE; }
  Bool_t isAtAnyMdcEdge(UInt_t io=2){
	    if(io<3){
		if(io==0||io==2){
		    if( acceptance &  ( 0x01 << (26+0) )) return kTRUE;
		    if( acceptance &  ( 0x01 << (26+1) )) return kTRUE;
		}
		if(io>=1){
		    if( acceptance &  ( 0x01 << (26+2) )) return kTRUE;
		    if( acceptance &  ( 0x01 << (26+3) )) return kTRUE;
		}
                return kFALSE;
	    } else return kFALSE;
  }

  void   setCropedFilled()       { acceptance |=((0x1)<<(30));  }
  void   unsetCropedFilled()     { acceptance &=~((0x1)<<(30)); }
  Bool_t isCropedFilled()        { return ( acceptance &  ( 0x01 << (30) )); }
  void   setAcceptanceFilled()   { acceptance |=((0x1)<<(31));  }
  void   unsetAcceptanceFilled() { acceptance &=~((0x1)<<(31)); }
  Bool_t isAcceptanceFilled()    { return ( acceptance &  ( 0x01 << (31) )); }
  void   fillAcceptanceBit();
//-----------------------------------------------------------------------




private:
  Int_t setHitIndex(HCategory* p, Short_t& first, Int_t index);
  HLinkedDataObject* nextHit(HCategory* p, Int_t& next);
   
  ClassDef(HGeantKine,11) // GEANT KINE data class
};

//------------------inlines----------------------------------
//----------------------hit index----------------------------
  inline Int_t HGeantKine::setRichHitIndex(Int_t index) {
  // set next RICH photon hit index in linked list
    resetRichIter();
    return setHitIndex(pRich,firstRichHit,index);
  }

  inline Int_t HGeantKine::setMdcHitIndex(Int_t index) {
  // set next MDC hit index in linked list
    resetMdcIter();
    return setHitIndex(pMdc,firstMdcHit,index);
  }

  inline Int_t HGeantKine::setTofHitIndex(Int_t index) {
  // set next TOF hit index in linked list
    resetTofIter();
    return setHitIndex(pTof,firstTofHit,index);
  }

  inline Int_t HGeantKine::setRpcHitIndex(Int_t index) {
  // set next RPC hit index in linked list
    resetRpcIter();
    return setHitIndex(pRpc,firstRpcHit,index);
  }

  inline Int_t HGeantKine::setShowerHitIndex(Int_t index) {
  // set next SHOWER hit index in linked list
    resetShowerIter();
    return setHitIndex(pShow, firstShowerHit,index);
  }

  inline Int_t HGeantKine::setWallHitIndex(Int_t index) {
  // set next WALL hit index in linked list
    resetWallIter();
    return setHitIndex(pWall, firstWallHit,index);
  }

  inline Int_t HGeantKine::setEmcHitIndex(Int_t index) {
  // set next EMC hit index in linked list
    resetEmcIter();
    return setHitIndex(pEmc,firstEmcHit,index);
  }

  inline Int_t HGeantKine::setStartHitIndex(Int_t index) {
  // set next START hit index in linked list
    resetStartIter();
    return setHitIndex(pStart,firstStartHit,index);
  }

//------------------------linked data objects--------------------
  inline HLinkedDataObject* HGeantKine::nextRichHit() {
  // return next RICH photon hit made by present track
     return nextHit(pRich,richIndex);
  }

  inline HLinkedDataObject* HGeantKine::nextMdcHit() {
  // return next MDC hit made by present track
     return nextHit(pMdc,mdcIndex);
  }

  inline HLinkedDataObject* HGeantKine::nextTofHit() {
  // return next TOF hit made by present track
     return nextHit(pTof,tofIndex);
  }

  inline HLinkedDataObject* HGeantKine::nextRpcHit() {
  // return next RPC hit made by present track
     return nextHit(pRpc,rpcIndex);
  }

  inline HLinkedDataObject* HGeantKine::nextShowerHit() {
  // return next SHOWER hit made by present track
     return nextHit(pShow,showIndex);
  }

  inline HLinkedDataObject* HGeantKine::nextWallHit() {
  // return next WALL hit made by present track
     return nextHit(pWall,wallIndex);
  }

  inline HLinkedDataObject* HGeantKine::nextEmcHit() {
  // return next EMC hit made by present track
     return nextHit(pEmc,emcIndex);
  }

  inline HLinkedDataObject* HGeantKine::nextStartHit() {
  // return next START hit made by present track
     return nextHit(pStart,startIndex);
  }

//----------------------iterators--------------------------------
  inline void HGeantKine::resetRichIter(void) {  // reset list iterator
     richIndex = (Int_t)firstRichHit;
     if(!pRich) pRich = ((HRecEvent*)gHades->getCurrentEvent())
                      ->getCategory(catRichGeantRaw);
  }
  inline void HGeantKine::resetMdcIter(void) {
     mdcIndex = (Int_t)firstMdcHit;
     if(!pMdc) pMdc = ((HRecEvent*)gHades->getCurrentEvent())
                    ->getCategory(catMdcGeantRaw);
  }
  inline void HGeantKine::resetTofIter(void) {
     tofIndex = (Int_t)firstTofHit;
     if(!pTof) pTof = ((HRecEvent*)gHades->getCurrentEvent())
                    ->getCategory(catTofGeantRaw);
  }
 
  inline void HGeantKine::resetRpcIter(void) {
     rpcIndex = (Int_t)firstRpcHit;
     if(!pRpc) pRpc = ((HRecEvent*)gHades->getCurrentEvent())
                    ->getCategory(catRpcGeantRaw);
  }

  inline void HGeantKine::resetShowerIter(void) {
     showIndex = (Int_t)firstShowerHit;
     if(!pShow) pShow = ((HRecEvent*)gHades->getCurrentEvent())
                      ->getCategory(catShowerGeantRaw);
  }

  inline void HGeantKine::resetWallIter(void) {
     wallIndex = (Int_t)firstWallHit;
     if(!pWall) pWall = ((HRecEvent*)gHades->getCurrentEvent())
                      ->getCategory(catWallGeantRaw);
  }

  inline void HGeantKine::resetEmcIter(void) {
     emcIndex = (Int_t)firstEmcHit;
     if(!pEmc) pEmc = ((HRecEvent*)gHades->getCurrentEvent())
                    ->getCategory(catEmcGeantRaw);
  }

  inline void HGeantKine::resetStartIter(void) {
     startIndex = (Int_t)firstStartHit;
     if(!pStart) pStart = ((HRecEvent*)gHades->getCurrentEvent())
                        ->getCategory(catStartGeantRaw);
  }

#endif  /*! HGEANTKINE_H */










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