ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)

#include <Riostream.h>
#include <TFile.h>
#include <TTree.h>
#include <TMath.h>

#include "AliRun.h"
#include "AliRunLoader.h"
#include "AliHeader.h"
#include "AliStack.h"
#include "TParticle.h"

#include "AliAODEvent.h"
#include "AliAODHeader.h"
#include "AliAODVertex.h"
#include "AliAODTrack.h"
#include "AliAODCluster.h"

#endif

// function declarations
void SetVertexType(TParticle *part, AliAODVertex *vertex);
void SetChargeAndPID(Int_t pdgCode, AliAODTrack *track);
Int_t LoopOverSecondaries(TParticle *mother);
void CreateAODfromKineTree(const char *inFileName = "galice.root",
			   const char *outFileName = "AliAOD.root");

// global variables
AliAODEvent *aod = NULL;
AliStack *stack = NULL;

Int_t jVertices = 0;
Int_t jTracks = 0; 
Int_t jKinks = 0;
Int_t jV0s = 0;
Int_t jCascades = 0;
Int_t jMultis = 0;
Int_t nPos = 0;
Int_t nNeg = 0;

Int_t nGamma = 0;
Int_t nElectron = 0;
Int_t nPositron = 0;
Int_t nMuon = 0;
Int_t nAntiMuon = 0;
Int_t nProton = 0;
Int_t nAntiProton = 0;
Int_t nNeutron = 0;
Int_t nAntiNeutron = 0;
Int_t nPi0 = 0;
Int_t nPiMinus = 0;
Int_t nPiPlus = 0;
Int_t nK0 = 0;
Int_t nKPlus = 0;
Int_t nKMinus = 0;

// global arrays and pointers
Float_t p[3];
Float_t x[3];
Float_t *cov = NULL; // set to NULL because not provided
Float_t *pid = NULL; // set to NULL because not provided
AliAODVertex *primary = NULL; 
AliAODVertex *secondary = NULL;
AliAODTrack *currTrack = NULL;

void CreateAODfromKineTree(const char *inFileName,
			   const char *outFileName) {
  printf("This macro works only correctly in comiled mode!\n");
  /* This probem is due to CINT which gets confused if arrays are reused */

  // create an AliAOD object 
  aod = new AliAODEvent();
  aod->CreateStdContent();

  // open the file
  TFile *outFile = TFile::Open(outFileName, "RECREATE");

  // create the tree
  TTree *aodTree = new TTree("aodTree", "AliAOD tree");
  aodTree->Branch(aod->GetList());

  AliRunLoader *runLoader;
  delete gAlice;
  gAlice = NULL;
  runLoader = AliRunLoader::Open(inFileName);
  if (!runLoader) return;

  runLoader->LoadHeader();
  runLoader->LoadKinematics();

  Int_t nEvents = runLoader->GetNumberOfEvents();

  // loop over events and fill them
  for (Int_t iEvent = 0; iEvent < nEvents; ++iEvent) {
 
    cout << "Event " << iEvent+1 << "/" << nEvents;
    runLoader->GetEvent(iEvent);

    AliHeader *aliHeader = runLoader->GetHeader();
    stack = runLoader->Stack();
    Int_t nTracks = stack->GetNtrack();
    Int_t nPrims = stack->GetNprimary();

    nPos = 0;
    nNeg = 0;
 
    nGamma = 0;
    nElectron = 0;
    nPositron = 0;
    nMuon = 0;
    nAntiMuon = 0;
    nProton = 0;
    nAntiProton = 0;
    nNeutron = 0;
    nAntiNeutron = 0;
    nPi0 = 0;
    nPiMinus = 0;
    nPiPlus = 0;
    nK0 = 0;
    nKPlus = 0;
    nKMinus = 0;

    // Access to the header
    AliAODHeader *header = aod->GetHeader();

    Double_t emEnergy[2] = {-999., -999.};

    // fill the header
    *header = AliAODHeader(aliHeader->GetRun(),
			   0, // bunchX number
			   0, // orbit number
			   0, // period number
			   nTracks,
			   nPos,
			   nNeg,
			   -999, // mag. field
			   -999., // muon mag. field
			   -999., // centrality
			   -999., // ZDCN1Energy
			   -999., // ZDCP1Energy
			   -999., // ZDCN2Energy
			   -999., // ZDCP2Energy
			   emEnergy, // emEnergy
			   0, // TriggerMask
			   0, // TriggerCluster
			   0, // EventType
			   ""); // title
  
    // Access to the AOD container of vertices
    TClonesArray &vertices = *(aod->GetVertices());
    jVertices=0;
    jKinks=0;
    jV0s=0;
    jCascades=0;
    jMultis=0;

    // Access to the AOD container of tracks
    TClonesArray &tracks = *(aod->GetTracks());
    jTracks=0; 
 
    aod->ResetStd(nTracks, 1);

    // track loop
    for (Int_t iTrack = 0; iTrack < nPrims; ++iTrack) {
								
      TParticle *part = stack->Particle(iTrack);

      //if (part->IsPrimary()) { // this will exclude 'funny' primaries, too
      if (kTRUE) { // this won't
	p[0] = part->Px(); p[1] = part->Py(); p[2] = part->Pz();
	x[0] = part->Vx(); x[1] = part->Vy(); x[2] = part->Vz();
	
	if (iTrack == 0) {
	  // add primary vertex
	  primary = new(vertices[jVertices++])
	    AliAODVertex(x, NULL, -999., NULL, AliAODVertex::kPrimary);
	}
	
	// add primary tracks
	primary->AddDaughter(new(tracks[jTracks++]) AliAODTrack(0, // ID,
								0, // Label
								p,
								kTRUE,
								x,
								kFALSE,
								cov, 
								(Short_t)-99,
								0, // no ITSClusterMap
								pid,
								primary,
					                        kFALSE,  // no fit performed
								kFALSE, // no fit preformed
								AliAODTrack::kPrimary));
	currTrack = (AliAODTrack*)tracks.Last();
	SetChargeAndPID(part->GetPdgCode(), currTrack);
	if (currTrack->Charge() != -99) {
	  if (currTrack->Charge() > 0) {
	    nPos++;
	  } else if (currTrack->Charge() < 0) {
	    nNeg++;
	  }	    
	}
	
	LoopOverSecondaries(part);
      } 
    } // end of track loop
    
    header->SetRefMultiplicityPos(nPos);
    header->SetRefMultiplicityNeg(nNeg);
    
    cout << ":: primaries: " << nPrims << " secondaries: " << tracks.GetEntriesFast()-nPrims << 
      " (pos: " << nPos << ", neg: " << nNeg << "), vertices: " << vertices.GetEntriesFast() << 
      " (kinks: " << jKinks << ", V0: " << jV0s << ", cascades: " << jCascades << 
      ", multi: " << jMultis << ")" << endl;
    /*
    cout << "  gamma: " << nGamma << " e-: " << nElectron << " e+: " << nPositron << " p: " << nProton << 
      " pBar: " << nAntiProton << " n: " << nNeutron << " nBar: " << nAntiNeutron << " pi0: " << nPi0 <<
      " pi+: " << nPiPlus << " pi-: " << nPiMinus << " K0: " << nK0 << " K+: " << nKPlus << 
      " K-: " << nKMinus << endl;
    */
    // fill the tree for this event
    aodTree->Fill();
  } // end of event loop

  aodTree->GetUserInfo()->Add(aod);
  
  // write the tree to the specified file
  outFile = aodTree->GetCurrentFile();
  outFile->cd();
  aodTree->Write();
  outFile->Close();

}


Int_t LoopOverSecondaries(TParticle *mother) {
  
  if (mother->GetNDaughters() > 0) {

    TClonesArray &vertices = *(aod->GetVertices());
    TClonesArray &tracks = *(aod->GetTracks());

    for (Int_t iDaughter = mother->GetFirstDaughter(); iDaughter <= mother->GetLastDaughter(); iDaughter++) {
      TParticle *part = stack->Particle(iDaughter);
      p[0] = part->Px(); 
      p[1] = part->Py(); 
      p[2] = part->Pz();
      x[0] = part->Vx(); 
      x[1] = part->Vy(); 
      x[2] = part->Vz();

      if (iDaughter == mother->GetFirstDaughter()) {
	// add secondary vertex
	secondary = new(vertices[jVertices++])
	  AliAODVertex(x, NULL, -999., tracks.Last(), AliAODVertex::kUndef);
	
	SetVertexType(part, secondary);
      }
	
      // add secondary tracks
      secondary->AddDaughter(new(tracks[jTracks++]) AliAODTrack(0, // ID
								0, // label
								p,
								kTRUE,
								x,
								kFALSE,
								cov, 
								(Short_t)-99,
								0, // no cluster map available
								pid,
								secondary,
								kFALSE, // no fit performed
					                        kFALSE, // no fit performed
								AliAODTrack::kFromDecayVtx));

      currTrack = (AliAODTrack*)tracks.Last();
      SetChargeAndPID(part->GetPdgCode(), currTrack);
      if (currTrack->Charge() != -99) {
	if (currTrack->Charge() > 0) {
	  nPos++;
	} else if (currTrack->Charge() < 0) {
	  nNeg++;
	}	    
      }

      LoopOverSecondaries(part);
    }
    return 1;
  } else {
    return 0;
  }
}


void SetChargeAndPID(Int_t pdgCode, AliAODTrack *track) {

  Float_t PID[10] = {0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};

  switch (pdgCode) {

  case 22: // gamma
    track->SetCharge(0);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    nGamma++;
    break;

  case 11: // e- 
    track->SetCharge(-1);
    PID[AliAODTrack::kElectron] = 1.;
    track->SetPID(PID);
    nElectron++;
    break;
    
  case -11: // e+
    track->SetCharge(+1);
    PID[AliAODTrack::kElectron] = 1.;
    track->SetPID(PID);
    nPositron++;
    break;
    
  case 13: // mu- 
    track->SetCharge(-1);
    PID[AliAODTrack::kMuon] = 1.;
    track->SetPID(PID);
    nMuon++;
    break;
    
  case -13: // mu+
    track->SetCharge(+1);
    PID[AliAODTrack::kMuon] = 1.;
    track->SetPID(PID);
    nAntiMuon++;
    break;
    
  case 111: // pi0
    track->SetCharge(0);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    nPi0++;
    break;
    
  case 211: // pi+
    track->SetCharge(+1);
    PID[AliAODTrack::kPion] = 1.;
    track->SetPID(PID);
    nPiPlus++;
    break;
    
  case -211: // pi-
    track->SetCharge(-1);
    PID[AliAODTrack::kPion] = 1.;
    track->SetPID(PID);
    nPiMinus++;
    break;
    
  case 130: // K0L
    track->SetCharge(0);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    nK0++;
    break;
    
  case 321: // K+
    track->SetCharge(+1);
    PID[AliAODTrack::kKaon] = 1.;
    track->SetPID(PID);
    nKPlus++;
    break;
    
  case -321: // K- 
    track->SetCharge(-1);
    PID[AliAODTrack::kKaon] = 1.;
    track->SetPID(PID);
    nKMinus++;
    break;
    
  case 2112: // n
    track->SetCharge(0);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    nNeutron++;
    break;
    
  case 2212: // p
    track->SetCharge(+1);
    PID[AliAODTrack::kProton] = 1.;
    track->SetPID(PID);
    nProton++;
    break;
    
  case -2212: // anti-p
    track->SetCharge(-1);
    PID[AliAODTrack::kProton] = 1.;
    track->SetPID(PID);
    nAntiProton++;
    break;

  case 310: // K0S
    track->SetCharge(0);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    nK0++;
    break;
    
  case 311: // K0
    track->SetCharge(0);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    nK0++;
    break;
    
  case -311: // anti-K0
    track->SetCharge(0);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    nK0++;
    break;
    
  case 221: // eta
    track->SetCharge(0);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  case 3122: // lambda
    track->SetCharge(0);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  case 3222: // Sigma+
    track->SetCharge(+1);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  case 3212: // Sigma0
    track->SetCharge(-1);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  case 3112: // Sigma-
    track->SetCharge(-1);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  case 3322: // Xi0
    track->SetCharge(0);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  case 3312: // Xi-
    track->SetCharge(-1);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  case 3334: // Omega-
    track->SetCharge(-1);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  case -2112: // n-bar
    track->SetCharge(0);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  case -3122: // anti-Lambda
    track->SetCharge(0);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  case -3222: // anti-Sigma-
    track->SetCharge(-1);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  case -3212: // anti-Sigma0
    track->SetCharge(0);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  case -3112: // anti-Sigma+
    track->SetCharge(+1);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  case -3322: // anti-Xi0
    track->SetCharge(0);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  case -3312: // anti-Xi+
    track->SetCharge(+1);
    break;

  case -3334: // anti-Omega+
    track->SetCharge(+1);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  case 411: // D+
    track->SetCharge(+1);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  case -411: // D- 
    track->SetCharge(-1);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  case 421: // D0
    track->SetCharge(0);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  case -421: // anti-D0
    track->SetCharge(0);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
    break;

  default : // unknown
    track->SetCharge(-99);
    PID[AliAODTrack::kUnknown] = 1.;
    track->SetPID(PID);
 }

  return;
}


void SetVertexType(TParticle *part, AliAODVertex *vertex) {
  // this whole thing doesn't make much sense. but anyhow...

  TParticle *mother = stack->Particle(part->GetFirstMother());
  Int_t pdgMother = mother->GetPdgCode();
  Int_t pdgPart = part->GetPdgCode();
  
  // kinks
  if (mother->GetNDaughters() == 2) {
    Int_t firstPdgCode = stack->Particle(mother->GetFirstDaughter())->GetPdgCode();
    Int_t lastPdgCode = stack->Particle(mother->GetLastDaughter())->GetPdgCode();

    if (!(pdgMother == 22 || pdgMother == 111 || pdgMother == 130 || 
	  TMath::Abs(pdgMother) == 2112 || pdgMother == 310 || pdgMother == 221 || 
	  TMath::Abs(pdgMother) == 3122 || TMath::Abs(pdgMother) == 3322 || 
	  pdgMother == -3212 || TMath::Abs(pdgMother) == 421 || 
	  TMath::Abs(pdgMother) == 311) // not neutral
	&& (((firstPdgCode == 22 || firstPdgCode == 111 || firstPdgCode == 130 || 
	      TMath::Abs(firstPdgCode) == 2112 || firstPdgCode == 310 || 
	      firstPdgCode == 221 || TMath::Abs(firstPdgCode) == 3122 || 
	      TMath::Abs(firstPdgCode) == 3322 || firstPdgCode == -3212 || 
	      TMath::Abs(firstPdgCode) == 421 || TMath::Abs(pdgMother) == 311) // neutral
	     && !(lastPdgCode == 22 || lastPdgCode == 111 || lastPdgCode == 130 || 
		  TMath::Abs(lastPdgCode) == 2112 || lastPdgCode == 310 || 
		  lastPdgCode == 221 || TMath::Abs(lastPdgCode) == 3122 || 
		  TMath::Abs(lastPdgCode) == 3322 || lastPdgCode == -3212 || 
		  TMath::Abs(lastPdgCode) == 421 || TMath::Abs(pdgMother) == 311)) // not neutral
	    || !((firstPdgCode == 22 || firstPdgCode == 111 || firstPdgCode == 130 || 
		  TMath::Abs(firstPdgCode) == 2112 || firstPdgCode == 310 || 
		  firstPdgCode == 221 || TMath::Abs(firstPdgCode) == 3122 || 
		  TMath::Abs(firstPdgCode) == 3322 || firstPdgCode == -3212 || 
		  TMath::Abs(firstPdgCode) == 421 || TMath::Abs(pdgMother) == 311) // not neutral
		 && (lastPdgCode == 22 || lastPdgCode == 111 || lastPdgCode == 130 || 
		     TMath::Abs(lastPdgCode) == 2112 || lastPdgCode == 310 || 
		     lastPdgCode == 221 || TMath::Abs(lastPdgCode) == 3122 || 
		     TMath::Abs(lastPdgCode) == 3322 || lastPdgCode == -3212 || 
		     TMath::Abs(lastPdgCode) == 421 || TMath::Abs(pdgMother) == 311)))) { // neutral
      
      vertex->SetType(AliAODVertex::kKink);
      jKinks++;
    }
  }

  // V0
  else if (mother->GetNDaughters() == 2) {
    Int_t firstPdgCode = stack->Particle(mother->GetFirstDaughter())->GetPdgCode();
    Int_t lastPdgCode = stack->Particle(mother->GetLastDaughter())->GetPdgCode();

    if ((pdgMother == 22 || pdgMother == 111 || pdgMother == 130 || 
	 TMath::Abs(pdgMother) == 2112 || pdgMother == 310 || 
	 pdgMother == 221 || TMath::Abs(pdgMother) == 3122 || 
	 TMath::Abs(pdgMother) == 3322 || pdgMother == -3212 || 
	 TMath::Abs(pdgMother) == 421 || TMath::Abs(pdgMother) == 311) // neutral
	&& !(lastPdgCode == 22 || lastPdgCode == 111 || lastPdgCode == 130 || 
	     TMath::Abs(lastPdgCode) == 2112 || lastPdgCode == 310 || 
	     lastPdgCode == 221 || TMath::Abs(lastPdgCode) == 3122 || 
	     TMath::Abs(lastPdgCode) == 3322 || lastPdgCode == -3212 || 
	     TMath::Abs(lastPdgCode) == 421 || TMath::Abs(pdgMother) == 311) // not neutral
	&& !(firstPdgCode == 22 || firstPdgCode == 111 || firstPdgCode == 130 || 
	     TMath::Abs(firstPdgCode) == 2112 || firstPdgCode == 310 || 
	     firstPdgCode == 221 || TMath::Abs(firstPdgCode) == 3122 || 
	     TMath::Abs(firstPdgCode) == 3322 || firstPdgCode == -3212 || 
	     TMath::Abs(firstPdgCode) == 421 || TMath::Abs(pdgMother) == 311)) { // not neutral
      
      vertex->SetType(AliAODVertex::kV0);
      jV0s++;
    }
  }

  // Cascade
  else if (mother->GetNDaughters() == 2) {
    Int_t firstPdgCode = stack->Particle(mother->GetFirstDaughter())->GetPdgCode();
    Int_t lastPdgCode = stack->Particle(mother->GetLastDaughter())->GetPdgCode();
    
    if ((TMath::Abs(pdgMother) == 3334 || TMath::Abs(pdgMother) == 3312 || TMath::Abs(pdgMother) == 3322) &&
	(TMath::Abs(pdgPart) == 3122 || TMath::Abs(pdgPart) == 211 || TMath::Abs(pdgPart) == 321)
	&& ((!(firstPdgCode == 22 || firstPdgCode == 111 || firstPdgCode == 130 || 
	       TMath::Abs(firstPdgCode) == 2112 || firstPdgCode == 310 || 
	       firstPdgCode == 221 || TMath::Abs(firstPdgCode) == 3122 || 
	       TMath::Abs(firstPdgCode) == 3322 || firstPdgCode == -3212 || 
	       TMath::Abs(firstPdgCode) == 421 || TMath::Abs(pdgMother) == 311) // not neutral   
	     && TMath::Abs(lastPdgCode) == 3122) // labmda or anti-lambda
	    || ((!(lastPdgCode == 22 || lastPdgCode == 111 || lastPdgCode == 130 || 
		   TMath::Abs(lastPdgCode) == 2112 || lastPdgCode == 310 || 
		   lastPdgCode == 221 || TMath::Abs(lastPdgCode) == 3122 || 
		   TMath::Abs(lastPdgCode) == 3322 || lastPdgCode == -3212 || 
		   TMath::Abs(lastPdgCode) == 421 || TMath::Abs(pdgMother) == 311) // not neutral
		 && TMath::Abs(firstPdgCode) == 3122)))) { // lambda or anti-lambda
      vertex->SetType(AliAODVertex::kCascade);
      jCascades++;
    }
  }

  // Multi
  else if (mother->GetNDaughters() > 2) {

    vertex->SetType(AliAODVertex::kMulti);
    jMultis++;
  }

  else {
    vertex->SetType(AliAODVertex::kUndef);
  }
}
//  LocalWords:  SetCharge
 CreateAODfromKineTree.C:1
 CreateAODfromKineTree.C:2
 CreateAODfromKineTree.C:3
 CreateAODfromKineTree.C:4
 CreateAODfromKineTree.C:5
 CreateAODfromKineTree.C:6
 CreateAODfromKineTree.C:7
 CreateAODfromKineTree.C:8
 CreateAODfromKineTree.C:9
 CreateAODfromKineTree.C:10
 CreateAODfromKineTree.C:11
 CreateAODfromKineTree.C:12
 CreateAODfromKineTree.C:13
 CreateAODfromKineTree.C:14
 CreateAODfromKineTree.C:15
 CreateAODfromKineTree.C:16
 CreateAODfromKineTree.C:17
 CreateAODfromKineTree.C:18
 CreateAODfromKineTree.C:19
 CreateAODfromKineTree.C:20
 CreateAODfromKineTree.C:21
 CreateAODfromKineTree.C:22
 CreateAODfromKineTree.C:23
 CreateAODfromKineTree.C:24
 CreateAODfromKineTree.C:25
 CreateAODfromKineTree.C:26
 CreateAODfromKineTree.C:27
 CreateAODfromKineTree.C:28
 CreateAODfromKineTree.C:29
 CreateAODfromKineTree.C:30
 CreateAODfromKineTree.C:31
 CreateAODfromKineTree.C:32
 CreateAODfromKineTree.C:33
 CreateAODfromKineTree.C:34
 CreateAODfromKineTree.C:35
 CreateAODfromKineTree.C:36
 CreateAODfromKineTree.C:37
 CreateAODfromKineTree.C:38
 CreateAODfromKineTree.C:39
 CreateAODfromKineTree.C:40
 CreateAODfromKineTree.C:41
 CreateAODfromKineTree.C:42
 CreateAODfromKineTree.C:43
 CreateAODfromKineTree.C:44
 CreateAODfromKineTree.C:45
 CreateAODfromKineTree.C:46
 CreateAODfromKineTree.C:47
 CreateAODfromKineTree.C:48
 CreateAODfromKineTree.C:49
 CreateAODfromKineTree.C:50
 CreateAODfromKineTree.C:51
 CreateAODfromKineTree.C:52
 CreateAODfromKineTree.C:53
 CreateAODfromKineTree.C:54
 CreateAODfromKineTree.C:55
 CreateAODfromKineTree.C:56
 CreateAODfromKineTree.C:57
 CreateAODfromKineTree.C:58
 CreateAODfromKineTree.C:59
 CreateAODfromKineTree.C:60
 CreateAODfromKineTree.C:61
 CreateAODfromKineTree.C:62
 CreateAODfromKineTree.C:63
 CreateAODfromKineTree.C:64
 CreateAODfromKineTree.C:65
 CreateAODfromKineTree.C:66
 CreateAODfromKineTree.C:67
 CreateAODfromKineTree.C:68
 CreateAODfromKineTree.C:69
 CreateAODfromKineTree.C:70
 CreateAODfromKineTree.C:71
 CreateAODfromKineTree.C:72
 CreateAODfromKineTree.C:73
 CreateAODfromKineTree.C:74
 CreateAODfromKineTree.C:75
 CreateAODfromKineTree.C:76
 CreateAODfromKineTree.C:77
 CreateAODfromKineTree.C:78
 CreateAODfromKineTree.C:79
 CreateAODfromKineTree.C:80
 CreateAODfromKineTree.C:81
 CreateAODfromKineTree.C:82
 CreateAODfromKineTree.C:83
 CreateAODfromKineTree.C:84
 CreateAODfromKineTree.C:85
 CreateAODfromKineTree.C:86
 CreateAODfromKineTree.C:87
 CreateAODfromKineTree.C:88
 CreateAODfromKineTree.C:89
 CreateAODfromKineTree.C:90
 CreateAODfromKineTree.C:91
 CreateAODfromKineTree.C:92
 CreateAODfromKineTree.C:93
 CreateAODfromKineTree.C:94
 CreateAODfromKineTree.C:95
 CreateAODfromKineTree.C:96
 CreateAODfromKineTree.C:97
 CreateAODfromKineTree.C:98
 CreateAODfromKineTree.C:99
 CreateAODfromKineTree.C:100
 CreateAODfromKineTree.C:101
 CreateAODfromKineTree.C:102
 CreateAODfromKineTree.C:103
 CreateAODfromKineTree.C:104
 CreateAODfromKineTree.C:105
 CreateAODfromKineTree.C:106
 CreateAODfromKineTree.C:107
 CreateAODfromKineTree.C:108
 CreateAODfromKineTree.C:109
 CreateAODfromKineTree.C:110
 CreateAODfromKineTree.C:111
 CreateAODfromKineTree.C:112
 CreateAODfromKineTree.C:113
 CreateAODfromKineTree.C:114
 CreateAODfromKineTree.C:115
 CreateAODfromKineTree.C:116
 CreateAODfromKineTree.C:117
 CreateAODfromKineTree.C:118
 CreateAODfromKineTree.C:119
 CreateAODfromKineTree.C:120
 CreateAODfromKineTree.C:121
 CreateAODfromKineTree.C:122
 CreateAODfromKineTree.C:123
 CreateAODfromKineTree.C:124
 CreateAODfromKineTree.C:125
 CreateAODfromKineTree.C:126
 CreateAODfromKineTree.C:127
 CreateAODfromKineTree.C:128
 CreateAODfromKineTree.C:129
 CreateAODfromKineTree.C:130
 CreateAODfromKineTree.C:131
 CreateAODfromKineTree.C:132
 CreateAODfromKineTree.C:133
 CreateAODfromKineTree.C:134
 CreateAODfromKineTree.C:135
 CreateAODfromKineTree.C:136
 CreateAODfromKineTree.C:137
 CreateAODfromKineTree.C:138
 CreateAODfromKineTree.C:139
 CreateAODfromKineTree.C:140
 CreateAODfromKineTree.C:141
 CreateAODfromKineTree.C:142
 CreateAODfromKineTree.C:143
 CreateAODfromKineTree.C:144
 CreateAODfromKineTree.C:145
 CreateAODfromKineTree.C:146
 CreateAODfromKineTree.C:147
 CreateAODfromKineTree.C:148
 CreateAODfromKineTree.C:149
 CreateAODfromKineTree.C:150
 CreateAODfromKineTree.C:151
 CreateAODfromKineTree.C:152
 CreateAODfromKineTree.C:153
 CreateAODfromKineTree.C:154
 CreateAODfromKineTree.C:155
 CreateAODfromKineTree.C:156
 CreateAODfromKineTree.C:157
 CreateAODfromKineTree.C:158
 CreateAODfromKineTree.C:159
 CreateAODfromKineTree.C:160
 CreateAODfromKineTree.C:161
 CreateAODfromKineTree.C:162
 CreateAODfromKineTree.C:163
 CreateAODfromKineTree.C:164
 CreateAODfromKineTree.C:165
 CreateAODfromKineTree.C:166
 CreateAODfromKineTree.C:167
 CreateAODfromKineTree.C:168
 CreateAODfromKineTree.C:169
 CreateAODfromKineTree.C:170
 CreateAODfromKineTree.C:171
 CreateAODfromKineTree.C:172
 CreateAODfromKineTree.C:173
 CreateAODfromKineTree.C:174
 CreateAODfromKineTree.C:175
 CreateAODfromKineTree.C:176
 CreateAODfromKineTree.C:177
 CreateAODfromKineTree.C:178
 CreateAODfromKineTree.C:179
 CreateAODfromKineTree.C:180
 CreateAODfromKineTree.C:181
 CreateAODfromKineTree.C:182
 CreateAODfromKineTree.C:183
 CreateAODfromKineTree.C:184
 CreateAODfromKineTree.C:185
 CreateAODfromKineTree.C:186
 CreateAODfromKineTree.C:187
 CreateAODfromKineTree.C:188
 CreateAODfromKineTree.C:189
 CreateAODfromKineTree.C:190
 CreateAODfromKineTree.C:191
 CreateAODfromKineTree.C:192
 CreateAODfromKineTree.C:193
 CreateAODfromKineTree.C:194
 CreateAODfromKineTree.C:195
 CreateAODfromKineTree.C:196
 CreateAODfromKineTree.C:197
 CreateAODfromKineTree.C:198
 CreateAODfromKineTree.C:199
 CreateAODfromKineTree.C:200
 CreateAODfromKineTree.C:201
 CreateAODfromKineTree.C:202
 CreateAODfromKineTree.C:203
 CreateAODfromKineTree.C:204
 CreateAODfromKineTree.C:205
 CreateAODfromKineTree.C:206
 CreateAODfromKineTree.C:207
 CreateAODfromKineTree.C:208
 CreateAODfromKineTree.C:209
 CreateAODfromKineTree.C:210
 CreateAODfromKineTree.C:211
 CreateAODfromKineTree.C:212
 CreateAODfromKineTree.C:213
 CreateAODfromKineTree.C:214
 CreateAODfromKineTree.C:215
 CreateAODfromKineTree.C:216
 CreateAODfromKineTree.C:217
 CreateAODfromKineTree.C:218
 CreateAODfromKineTree.C:219
 CreateAODfromKineTree.C:220
 CreateAODfromKineTree.C:221
 CreateAODfromKineTree.C:222
 CreateAODfromKineTree.C:223
 CreateAODfromKineTree.C:224
 CreateAODfromKineTree.C:225
 CreateAODfromKineTree.C:226
 CreateAODfromKineTree.C:227
 CreateAODfromKineTree.C:228
 CreateAODfromKineTree.C:229
 CreateAODfromKineTree.C:230
 CreateAODfromKineTree.C:231
 CreateAODfromKineTree.C:232
 CreateAODfromKineTree.C:233
 CreateAODfromKineTree.C:234
 CreateAODfromKineTree.C:235
 CreateAODfromKineTree.C:236
 CreateAODfromKineTree.C:237
 CreateAODfromKineTree.C:238
 CreateAODfromKineTree.C:239
 CreateAODfromKineTree.C:240
 CreateAODfromKineTree.C:241
 CreateAODfromKineTree.C:242
 CreateAODfromKineTree.C:243
 CreateAODfromKineTree.C:244
 CreateAODfromKineTree.C:245
 CreateAODfromKineTree.C:246
 CreateAODfromKineTree.C:247
 CreateAODfromKineTree.C:248
 CreateAODfromKineTree.C:249
 CreateAODfromKineTree.C:250
 CreateAODfromKineTree.C:251
 CreateAODfromKineTree.C:252
 CreateAODfromKineTree.C:253
 CreateAODfromKineTree.C:254
 CreateAODfromKineTree.C:255
 CreateAODfromKineTree.C:256
 CreateAODfromKineTree.C:257
 CreateAODfromKineTree.C:258
 CreateAODfromKineTree.C:259
 CreateAODfromKineTree.C:260
 CreateAODfromKineTree.C:261
 CreateAODfromKineTree.C:262
 CreateAODfromKineTree.C:263
 CreateAODfromKineTree.C:264
 CreateAODfromKineTree.C:265
 CreateAODfromKineTree.C:266
 CreateAODfromKineTree.C:267
 CreateAODfromKineTree.C:268
 CreateAODfromKineTree.C:269
 CreateAODfromKineTree.C:270
 CreateAODfromKineTree.C:271
 CreateAODfromKineTree.C:272
 CreateAODfromKineTree.C:273
 CreateAODfromKineTree.C:274
 CreateAODfromKineTree.C:275
 CreateAODfromKineTree.C:276
 CreateAODfromKineTree.C:277
 CreateAODfromKineTree.C:278
 CreateAODfromKineTree.C:279
 CreateAODfromKineTree.C:280
 CreateAODfromKineTree.C:281
 CreateAODfromKineTree.C:282
 CreateAODfromKineTree.C:283
 CreateAODfromKineTree.C:284
 CreateAODfromKineTree.C:285
 CreateAODfromKineTree.C:286
 CreateAODfromKineTree.C:287
 CreateAODfromKineTree.C:288
 CreateAODfromKineTree.C:289
 CreateAODfromKineTree.C:290
 CreateAODfromKineTree.C:291
 CreateAODfromKineTree.C:292
 CreateAODfromKineTree.C:293
 CreateAODfromKineTree.C:294
 CreateAODfromKineTree.C:295
 CreateAODfromKineTree.C:296
 CreateAODfromKineTree.C:297
 CreateAODfromKineTree.C:298
 CreateAODfromKineTree.C:299
 CreateAODfromKineTree.C:300
 CreateAODfromKineTree.C:301
 CreateAODfromKineTree.C:302
 CreateAODfromKineTree.C:303
 CreateAODfromKineTree.C:304
 CreateAODfromKineTree.C:305
 CreateAODfromKineTree.C:306
 CreateAODfromKineTree.C:307
 CreateAODfromKineTree.C:308
 CreateAODfromKineTree.C:309
 CreateAODfromKineTree.C:310
 CreateAODfromKineTree.C:311
 CreateAODfromKineTree.C:312
 CreateAODfromKineTree.C:313
 CreateAODfromKineTree.C:314
 CreateAODfromKineTree.C:315
 CreateAODfromKineTree.C:316
 CreateAODfromKineTree.C:317
 CreateAODfromKineTree.C:318
 CreateAODfromKineTree.C:319
 CreateAODfromKineTree.C:320
 CreateAODfromKineTree.C:321
 CreateAODfromKineTree.C:322
 CreateAODfromKineTree.C:323
 CreateAODfromKineTree.C:324
 CreateAODfromKineTree.C:325
 CreateAODfromKineTree.C:326
 CreateAODfromKineTree.C:327
 CreateAODfromKineTree.C:328
 CreateAODfromKineTree.C:329
 CreateAODfromKineTree.C:330
 CreateAODfromKineTree.C:331
 CreateAODfromKineTree.C:332
 CreateAODfromKineTree.C:333
 CreateAODfromKineTree.C:334
 CreateAODfromKineTree.C:335
 CreateAODfromKineTree.C:336
 CreateAODfromKineTree.C:337
 CreateAODfromKineTree.C:338
 CreateAODfromKineTree.C:339
 CreateAODfromKineTree.C:340
 CreateAODfromKineTree.C:341
 CreateAODfromKineTree.C:342
 CreateAODfromKineTree.C:343
 CreateAODfromKineTree.C:344
 CreateAODfromKineTree.C:345
 CreateAODfromKineTree.C:346
 CreateAODfromKineTree.C:347
 CreateAODfromKineTree.C:348
 CreateAODfromKineTree.C:349
 CreateAODfromKineTree.C:350
 CreateAODfromKineTree.C:351
 CreateAODfromKineTree.C:352
 CreateAODfromKineTree.C:353
 CreateAODfromKineTree.C:354
 CreateAODfromKineTree.C:355
 CreateAODfromKineTree.C:356
 CreateAODfromKineTree.C:357
 CreateAODfromKineTree.C:358
 CreateAODfromKineTree.C:359
 CreateAODfromKineTree.C:360
 CreateAODfromKineTree.C:361
 CreateAODfromKineTree.C:362
 CreateAODfromKineTree.C:363
 CreateAODfromKineTree.C:364
 CreateAODfromKineTree.C:365
 CreateAODfromKineTree.C:366
 CreateAODfromKineTree.C:367
 CreateAODfromKineTree.C:368
 CreateAODfromKineTree.C:369
 CreateAODfromKineTree.C:370
 CreateAODfromKineTree.C:371
 CreateAODfromKineTree.C:372
 CreateAODfromKineTree.C:373
 CreateAODfromKineTree.C:374
 CreateAODfromKineTree.C:375
 CreateAODfromKineTree.C:376
 CreateAODfromKineTree.C:377
 CreateAODfromKineTree.C:378
 CreateAODfromKineTree.C:379
 CreateAODfromKineTree.C:380
 CreateAODfromKineTree.C:381
 CreateAODfromKineTree.C:382
 CreateAODfromKineTree.C:383
 CreateAODfromKineTree.C:384
 CreateAODfromKineTree.C:385
 CreateAODfromKineTree.C:386
 CreateAODfromKineTree.C:387
 CreateAODfromKineTree.C:388
 CreateAODfromKineTree.C:389
 CreateAODfromKineTree.C:390
 CreateAODfromKineTree.C:391
 CreateAODfromKineTree.C:392
 CreateAODfromKineTree.C:393
 CreateAODfromKineTree.C:394
 CreateAODfromKineTree.C:395
 CreateAODfromKineTree.C:396
 CreateAODfromKineTree.C:397
 CreateAODfromKineTree.C:398
 CreateAODfromKineTree.C:399
 CreateAODfromKineTree.C:400
 CreateAODfromKineTree.C:401
 CreateAODfromKineTree.C:402
 CreateAODfromKineTree.C:403
 CreateAODfromKineTree.C:404
 CreateAODfromKineTree.C:405
 CreateAODfromKineTree.C:406
 CreateAODfromKineTree.C:407
 CreateAODfromKineTree.C:408
 CreateAODfromKineTree.C:409
 CreateAODfromKineTree.C:410
 CreateAODfromKineTree.C:411
 CreateAODfromKineTree.C:412
 CreateAODfromKineTree.C:413
 CreateAODfromKineTree.C:414
 CreateAODfromKineTree.C:415
 CreateAODfromKineTree.C:416
 CreateAODfromKineTree.C:417
 CreateAODfromKineTree.C:418
 CreateAODfromKineTree.C:419
 CreateAODfromKineTree.C:420
 CreateAODfromKineTree.C:421
 CreateAODfromKineTree.C:422
 CreateAODfromKineTree.C:423
 CreateAODfromKineTree.C:424
 CreateAODfromKineTree.C:425
 CreateAODfromKineTree.C:426
 CreateAODfromKineTree.C:427
 CreateAODfromKineTree.C:428
 CreateAODfromKineTree.C:429
 CreateAODfromKineTree.C:430
 CreateAODfromKineTree.C:431
 CreateAODfromKineTree.C:432
 CreateAODfromKineTree.C:433
 CreateAODfromKineTree.C:434
 CreateAODfromKineTree.C:435
 CreateAODfromKineTree.C:436
 CreateAODfromKineTree.C:437
 CreateAODfromKineTree.C:438
 CreateAODfromKineTree.C:439
 CreateAODfromKineTree.C:440
 CreateAODfromKineTree.C:441
 CreateAODfromKineTree.C:442
 CreateAODfromKineTree.C:443
 CreateAODfromKineTree.C:444
 CreateAODfromKineTree.C:445
 CreateAODfromKineTree.C:446
 CreateAODfromKineTree.C:447
 CreateAODfromKineTree.C:448
 CreateAODfromKineTree.C:449
 CreateAODfromKineTree.C:450
 CreateAODfromKineTree.C:451
 CreateAODfromKineTree.C:452
 CreateAODfromKineTree.C:453
 CreateAODfromKineTree.C:454
 CreateAODfromKineTree.C:455
 CreateAODfromKineTree.C:456
 CreateAODfromKineTree.C:457
 CreateAODfromKineTree.C:458
 CreateAODfromKineTree.C:459
 CreateAODfromKineTree.C:460
 CreateAODfromKineTree.C:461
 CreateAODfromKineTree.C:462
 CreateAODfromKineTree.C:463
 CreateAODfromKineTree.C:464
 CreateAODfromKineTree.C:465
 CreateAODfromKineTree.C:466
 CreateAODfromKineTree.C:467
 CreateAODfromKineTree.C:468
 CreateAODfromKineTree.C:469
 CreateAODfromKineTree.C:470
 CreateAODfromKineTree.C:471
 CreateAODfromKineTree.C:472
 CreateAODfromKineTree.C:473
 CreateAODfromKineTree.C:474
 CreateAODfromKineTree.C:475
 CreateAODfromKineTree.C:476
 CreateAODfromKineTree.C:477
 CreateAODfromKineTree.C:478
 CreateAODfromKineTree.C:479
 CreateAODfromKineTree.C:480
 CreateAODfromKineTree.C:481
 CreateAODfromKineTree.C:482
 CreateAODfromKineTree.C:483
 CreateAODfromKineTree.C:484
 CreateAODfromKineTree.C:485
 CreateAODfromKineTree.C:486
 CreateAODfromKineTree.C:487
 CreateAODfromKineTree.C:488
 CreateAODfromKineTree.C:489
 CreateAODfromKineTree.C:490
 CreateAODfromKineTree.C:491
 CreateAODfromKineTree.C:492
 CreateAODfromKineTree.C:493
 CreateAODfromKineTree.C:494
 CreateAODfromKineTree.C:495
 CreateAODfromKineTree.C:496
 CreateAODfromKineTree.C:497
 CreateAODfromKineTree.C:498
 CreateAODfromKineTree.C:499
 CreateAODfromKineTree.C:500
 CreateAODfromKineTree.C:501
 CreateAODfromKineTree.C:502
 CreateAODfromKineTree.C:503
 CreateAODfromKineTree.C:504
 CreateAODfromKineTree.C:505
 CreateAODfromKineTree.C:506
 CreateAODfromKineTree.C:507
 CreateAODfromKineTree.C:508
 CreateAODfromKineTree.C:509
 CreateAODfromKineTree.C:510
 CreateAODfromKineTree.C:511
 CreateAODfromKineTree.C:512
 CreateAODfromKineTree.C:513
 CreateAODfromKineTree.C:514
 CreateAODfromKineTree.C:515
 CreateAODfromKineTree.C:516
 CreateAODfromKineTree.C:517
 CreateAODfromKineTree.C:518
 CreateAODfromKineTree.C:519
 CreateAODfromKineTree.C:520
 CreateAODfromKineTree.C:521
 CreateAODfromKineTree.C:522
 CreateAODfromKineTree.C:523
 CreateAODfromKineTree.C:524
 CreateAODfromKineTree.C:525
 CreateAODfromKineTree.C:526
 CreateAODfromKineTree.C:527
 CreateAODfromKineTree.C:528
 CreateAODfromKineTree.C:529
 CreateAODfromKineTree.C:530
 CreateAODfromKineTree.C:531
 CreateAODfromKineTree.C:532
 CreateAODfromKineTree.C:533
 CreateAODfromKineTree.C:534
 CreateAODfromKineTree.C:535
 CreateAODfromKineTree.C:536
 CreateAODfromKineTree.C:537
 CreateAODfromKineTree.C:538
 CreateAODfromKineTree.C:539
 CreateAODfromKineTree.C:540
 CreateAODfromKineTree.C:541
 CreateAODfromKineTree.C:542
 CreateAODfromKineTree.C:543
 CreateAODfromKineTree.C:544
 CreateAODfromKineTree.C:545
 CreateAODfromKineTree.C:546
 CreateAODfromKineTree.C:547
 CreateAODfromKineTree.C:548
 CreateAODfromKineTree.C:549
 CreateAODfromKineTree.C:550
 CreateAODfromKineTree.C:551
 CreateAODfromKineTree.C:552
 CreateAODfromKineTree.C:553
 CreateAODfromKineTree.C:554
 CreateAODfromKineTree.C:555
 CreateAODfromKineTree.C:556
 CreateAODfromKineTree.C:557
 CreateAODfromKineTree.C:558
 CreateAODfromKineTree.C:559
 CreateAODfromKineTree.C:560
 CreateAODfromKineTree.C:561
 CreateAODfromKineTree.C:562
 CreateAODfromKineTree.C:563
 CreateAODfromKineTree.C:564
 CreateAODfromKineTree.C:565
 CreateAODfromKineTree.C:566
 CreateAODfromKineTree.C:567
 CreateAODfromKineTree.C:568
 CreateAODfromKineTree.C:569
 CreateAODfromKineTree.C:570
 CreateAODfromKineTree.C:571
 CreateAODfromKineTree.C:572
 CreateAODfromKineTree.C:573
 CreateAODfromKineTree.C:574
 CreateAODfromKineTree.C:575
 CreateAODfromKineTree.C:576
 CreateAODfromKineTree.C:577
 CreateAODfromKineTree.C:578
 CreateAODfromKineTree.C:579
 CreateAODfromKineTree.C:580
 CreateAODfromKineTree.C:581
 CreateAODfromKineTree.C:582
 CreateAODfromKineTree.C:583
 CreateAODfromKineTree.C:584
 CreateAODfromKineTree.C:585
 CreateAODfromKineTree.C:586
 CreateAODfromKineTree.C:587
 CreateAODfromKineTree.C:588
 CreateAODfromKineTree.C:589
 CreateAODfromKineTree.C:590
 CreateAODfromKineTree.C:591
 CreateAODfromKineTree.C:592
 CreateAODfromKineTree.C:593
 CreateAODfromKineTree.C:594
 CreateAODfromKineTree.C:595
 CreateAODfromKineTree.C:596
 CreateAODfromKineTree.C:597
 CreateAODfromKineTree.C:598
 CreateAODfromKineTree.C:599
 CreateAODfromKineTree.C:600
 CreateAODfromKineTree.C:601
 CreateAODfromKineTree.C:602
 CreateAODfromKineTree.C:603
 CreateAODfromKineTree.C:604
 CreateAODfromKineTree.C:605
 CreateAODfromKineTree.C:606
 CreateAODfromKineTree.C:607
 CreateAODfromKineTree.C:608
 CreateAODfromKineTree.C:609
 CreateAODfromKineTree.C:610
 CreateAODfromKineTree.C:611
 CreateAODfromKineTree.C:612
 CreateAODfromKineTree.C:613
 CreateAODfromKineTree.C:614
 CreateAODfromKineTree.C:615
 CreateAODfromKineTree.C:616
 CreateAODfromKineTree.C:617
 CreateAODfromKineTree.C:618
 CreateAODfromKineTree.C:619
 CreateAODfromKineTree.C:620
 CreateAODfromKineTree.C:621
 CreateAODfromKineTree.C:622
 CreateAODfromKineTree.C:623
 CreateAODfromKineTree.C:624
 CreateAODfromKineTree.C:625
 CreateAODfromKineTree.C:626
 CreateAODfromKineTree.C:627
 CreateAODfromKineTree.C:628
 CreateAODfromKineTree.C:629
 CreateAODfromKineTree.C:630
 CreateAODfromKineTree.C:631
 CreateAODfromKineTree.C:632
 CreateAODfromKineTree.C:633
 CreateAODfromKineTree.C:634
 CreateAODfromKineTree.C:635
 CreateAODfromKineTree.C:636
 CreateAODfromKineTree.C:637
 CreateAODfromKineTree.C:638
 CreateAODfromKineTree.C:639
 CreateAODfromKineTree.C:640
 CreateAODfromKineTree.C:641
 CreateAODfromKineTree.C:642
 CreateAODfromKineTree.C:643
 CreateAODfromKineTree.C:644
 CreateAODfromKineTree.C:645
 CreateAODfromKineTree.C:646
 CreateAODfromKineTree.C:647
 CreateAODfromKineTree.C:648
 CreateAODfromKineTree.C:649
 CreateAODfromKineTree.C:650
 CreateAODfromKineTree.C:651
 CreateAODfromKineTree.C:652
 CreateAODfromKineTree.C:653
 CreateAODfromKineTree.C:654