ROOT logo
#ifndef __HPARTICLESTRUCTS_H__
#define __HPARTICLESTRUCTS_H__


#include "hmetamatch2.h"
#include "htofcluster.h"
#include "htofclustersim.h"
#include "htofhit.h"
#include "htofhitsim.h"
#include "hrpccluster.h"
#include "hrpcclustersim.h"
#include "hshowerhit.h"
#include "hshowerhitsim.h"
#include "hemccluster.h"
#include "hemcclustersim.h"
#include "hrichhit.h"
#include "hrichhitsim.h"
#include "hmdctrkcand.h"
#include "hmdcseg.h"
#include "hmdcsegsim.h"
#include "hsplinetrack.h"
#include "hrktrackB.h"
#include "hkaltrack.h"
#include "hparticlecand.h"
#include "hparticlecandsim.h"
#include "hgeantkine.h"

#include "hcategory.h"

#include "hparticledef.h"
#include "hparticletool.h"
#include "hcategorymanager.h"
#include "hstltool.h"
#include "tofdef.h"

#include "TObject.h"

#include <iostream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <cstdio>

using namespace std;
using namespace Particle;

//---------------------------------------------------------------------------------
// some helper objects
//
//  HParticleCandFiller

class pointers : public TObject {
public:
    pointers(){;}
    ~pointers(){;}

    //---------------------------
    // Object pointers simulation
    HMdcTrkCand*      pMdcTrk;    //
    HMdcSegSim*       pSeg1;      //
    HMdcSegSim*       pSeg2;      //
    HRichHitSim*      pRichHit;   //
    HTofClusterSim*   pTofClst;   //
    HTofHitSim*       pTofHit1;   //
    HTofHitSim*       pTofHit2;   //
    HRpcClusterSim*   pRpcClst;   //
    HShowerHitSim*    pShowerHit; //
    HEmcClusterSim*   pEmcClst; //
    HRKTrackB*        pRk;        //
    HSplineTrack*     pSpline;    //
    HKalTrack*        pKalman;    //
    //---------------------------

    void reset(void){
	pMdcTrk      = NULL;
	pSeg1        = NULL;
	pSeg2        = NULL;
	pRichHit     = NULL;
	pTofClst     = NULL;
	pTofHit1     = NULL;
	pTofHit2     = NULL;
	pRpcClst     = NULL;
	pShowerHit   = NULL;
	pEmcClst     = NULL;
	pRk          = NULL;
	pSpline      = NULL;
	pKalman      = NULL;
    }

  ClassDef(pointers,0)
};


class closetrack : public TObject {
public:
    closetrack(){;}
    ~closetrack(){;}
    Int_t ind;        // index of candidate
    Float_t oAngle;   // opening angle to candidate
    void print(Int_t ind=-1){
	printf("index %5i angle %8.5f\n",ind,oAngle);
    }
    ClassDef(closetrack,1)
};

class closeVec : public TObject {
public:
    vector < closetrack > tracks;  // vector of closetrack objects (index,oAngle)

    closeVec(){ ; }
    ~closeVec(){ ; }

    Int_t findTrack(Int_t ind){
	// return -1 if track does not exist, otherwise index
	for(UInt_t i = 0; i < tracks.size(); i++){
	    if((tracks[i].ind) == ind) return i;
	}
	return -1;
    }
    void addTrack(Int_t index,Float_t oAngle){
	// add track if does not exist
	Int_t ind = findTrack(index);
	if( ind < 0){
	    closetrack track;
	    track.ind    = index;
	    track.oAngle = oAngle;
	    tracks.push_back(track);
	}
    }
    void reset(){
	tracks.clear();
    }
    Bool_t static cmpAngle(const closetrack& a,const closetrack& b) { // sort tracks by opening angle
	return a.oAngle < b.oAngle;
    }
    void sortAngle(void) {
	std::sort(tracks.begin(),tracks.end(),closeVec::cmpAngle);
    }
    ClassDef(closeVec,1)
};

class trackinfo : public TObject {
public:
    trackinfo(){;}
    ~trackinfo(){;}
    Int_t tr;         // GEANT tr number
    Int_t n;          // n-times contributing to hit
    Int_t flag;       // flag in which detectors the track has been seen
    Float_t weight;   // weight of tr in hit
    Float_t scale;    // scale the weight by this factor
    Int_t ndet;       // number of detectors for this track
    Int_t isGhostTrack()             { return ((flag&Particle::kIsGhost) > 0)? 1 : 0;}
    Int_t isInDetector(eDetBits det) { return ((flag&det) > 0)? 1 : 0;}
    void print(Int_t ind=-1){
	Int_t prec = cout.precision();
	ios_base::fmtflags flg = cout.flags();
	cout<<"i "     <<setw(3)<<ind
            <<" tr "   <<setw(5)<<tr
            <<" n "    <<setw(3)<<n
            <<" ndet " <<setw(3)<<ndet
            <<" w "    <<fixed<<setw(9)<<weight
            <<" s "    <<fixed<<setw(3)<<setprecision(1)<<scale
            <<" fl "   <<setw(5)<<flag
            <<" R "    <<isInDetector(Particle::kIsInRICH)
	    <<" iM "   <<isInDetector(Particle::kIsInInnerMDC)
	    <<" oM "   <<isInDetector(Particle::kIsInOuterMDC)
	    <<" RPC "  <<isInDetector(Particle::kIsInRPC)
	    <<" S "    <<isInDetector(Particle::kIsInSHOWER)
	    <<" E "    <<isInDetector(Particle::kIsInEMC)
	    <<" T "    <<isInDetector(Particle::kIsInTOF)
	    <<" iGhost "<<isInDetector(Particle::kIsInnerGhost)
	    <<" oGhost "<<isInDetector(Particle::kIsOuterGhost)
	    <<" Ghost "<<isGhostTrack()<<endl;
	cout.precision(prec);  // set to old precision
        cout.flags(flg);       // set to old format
    }
    ClassDef(trackinfo,1)
};



class tracksVec : public TObject {
public:
    vector < trackinfo* > tracks;  // vector of trackinfo pointer (tr number, n times, flag)
    Float_t sum;                   // sum of n

    tracksVec(){
	sum = 0;
    }
    tracksVec(const tracksVec& v):TObject(v){ // special copy constructor needed because of aliasing
	for(UInt_t i = 0; i < v.tracks.size(); i++){
	    tracks.push_back(new trackinfo(*(v.tracks[i]) ));
	}
	sum = v.sum;
    }
    ~tracksVec(){
	reset();
    }
    void reset(){
	for(UInt_t i = 0; i < tracks.size(); i++){
	    delete tracks[i];
	}
	tracks.clear();
	sum = 0;
    }
    Int_t findTrack(Int_t tr){
	// return -1 if track does not exist, otherwise index
	for(UInt_t i = 0; i < tracks.size(); i++){
	    if((tracks[i]->tr) == tr) return i;
	}
	return -1;
    }
    void addTrack(Int_t tr,Int_t n, Int_t flag = 0,Float_t scale = 1.){
	// add track if does not exist
	Int_t ind = findTrack(tr);
	if( ind < 0){
	    trackinfo* info = new trackinfo;
	    info->tr     = tr;
	    info->n      = n;
	    info->flag   = flag;
	    info->weight = 0;
	    info->ndet   = 0;
	    info->scale  = scale;
	    sum += n;
	    tracks.push_back(info);
	} else {
	    trackinfo* info = tracks[ind];
	    info->n  += n;
	    sum      += n;
	}
    }
    void calcWeights(void){
	// loop existing tracks and calc n/sum = weight
	if(sum > 0){
	    for(UInt_t i = 0; i < tracks.size(); i ++){
		trackinfo* info = tracks[i];
		info-> weight = (info->n * info->scale) / sum;
	    }
	}
    }
    void addTrackWeight(trackinfo* inf){
	// add track if does not exist
	Int_t ind = findTrack(inf->tr);
	if( ind < 0){
	    trackinfo* info = new trackinfo;
	    info->tr     = inf->tr;
	    info->n      = inf->n;
	    info->flag   = inf->flag;
	    info->weight = inf->weight;
	    info->ndet   = 1;
	    info->scale  = 0;
	    sum += inf->n;
	    tracks.push_back(info);
	} else {
	    trackinfo* info = tracks[ind];
	    info->n      += inf->n;
	    info->flag    = info->flag | inf->flag; // add flag bits
	    info->weight += inf->weight;
	    info->ndet   += 1;
	    sum          += inf->n;
	}
    }
    void addTrackWeight(tracksVec& v){
	// add all tracks if they do not exist
	for(UInt_t i = 0; i < v.tracks.size(); i ++){
	    trackinfo* inf = v.tracks[i];
	    addTrackWeight(inf);
	}
    }
    //-------------------------------------------------------------------
    //  sorting of registered tracks

    //---------------------------------------------------------------
    // tripple sort
    Bool_t static cmpNdetWeightFlag(trackinfo* a, trackinfo* b) { // sort tracks by ndet ,then weight then by flag
	if( a->ndet == b->ndet ) {
	    if( a->weight == b->weight )  return a->flag   > b->flag;
	    else                          return a->weight > b->weight;
	}
	else                              return a->ndet   > b->ndet;
    }
    // double sort
    Bool_t static cmpWeightNdet(trackinfo* a, trackinfo* b) { // sort tracks by weight ,then ndet
	if( a->weight == b->weight ) { return a->ndet > b->ndet; }
	else                           return a->weight > b->weight;
    }
    void sortNdetWeightFlag(void) {
	std::sort(tracks.begin(),tracks.end(),tracksVec::cmpNdetWeightFlag);
    }
    void sortWeightNdet(void) {
	std::sort(tracks.begin(),tracks.end(),tracksVec::cmpWeightNdet);
    }

    void print(){
	cout<<"---------------------------------"<<endl;
	for(UInt_t i = 0; i < tracks.size(); i ++){
	    trackinfo* inf = tracks[i];
	    inf->print(i);
	}

    }
    ClassDef(tracksVec,1)
};


class mdc_trk : public TObject {
public:
    mdc_trk(){;}
    ~mdc_trk(){;}

    Int_t   ind;       // index of HMdcTrkCand
    Float_t dedx;      // Mdc dE/dx for inner + outer segment
    Float_t dedx0;     // Mdc dE/dx for inner segment
    Float_t dedx1;     // Mdc dE/dx for outer segment
    Bool_t  seg1fake;
    Bool_t  seg2fake;
    Bool_t  allfake;
    void reset(void){
	ind  = -1;
	dedx = -1;
	dedx0 = -1;
	dedx1 = -1;
        seg1fake = kFALSE;
        seg2fake = kFALSE;
	allfake = kFALSE;
    }

    void fillMeta(HMetaMatch2* meta){
	if(meta){
	    ind = meta->getTrkCandInd();
	}
    }
    void fill(HMdcTrkCand* trk){
	if(trk){
	    dedx = trk->getdedxCombinedSeg();
	    dedx0 = trk->getdedxInnerSeg();
	    dedx1 = trk->getdedxOuterSeg();
            seg1fake = trk->isSeg1Fake();
            seg2fake = trk->isSeg2Fake();
            allfake  = trk->isFake();
	}
    }

    ClassDef(mdc_trk,1)
};

class mdc_seg : public TObject {
public:
    mdc_seg(){;}
    ~mdc_seg(){;}

    Int_t   ind;       // index of seg
    UInt_t  layers;    // layer bits
    UShort_t wires;    // wires per segment
    Float_t chi2;      // chi2 of segment fitter
    Float_t phi;       // track's phi in cave coordinates (0..360 deg)
    Float_t theta;     // track's theta in cave coordinates (0..90 deg)
    Float_t r;         // distance of closest point to beamline [mm]
    Float_t z;         // z coordinate of closest point to beamline [mm]
    Bool_t  offvertexclust;

    void reset(void){
	ind   = -1;
	layers= 0;
        wires = 0;
	chi2  = -1;
	phi   = -1;
	theta = -1;
	r     = -1000;
	z     = -1000;
	offvertexclust = kFALSE;
    }

    void fill(HMdcSeg* seg){
	if(seg){
	    chi2  = seg->getChi2();
	    phi   = HParticleTool::phiSecToLabDeg(seg->getSec(),seg->getPhi());
	    theta = HParticleTool::thetaToLabDeg (seg->getTheta());
	    r     = seg->getR();
	    z     = seg->getZ();
            wires = seg->getSumWires();
	    layers = 0;
	    for(UInt_t l=0;l<12;l++){
                if(seg->getNCells(l)==0) continue;
		HParticleCand::setLayer(seg->getIOSeg(),l,layers);
	    }

	    if(seg->isOffVertexClus()) offvertexclust = kTRUE;

	}
    }
    ClassDef(mdc_seg,1)
};

class rpc_clst : public TObject {
public:
    rpc_clst(){;}
    ~rpc_clst(){;}

    Int_t   ind;       // Index of HRpcCluster object
    Float_t quality;   // Matching quality
    Float_t dx;        // Deviation in X-coordinate
    Float_t dy;        // Deviation in Y-coordinate
    Float_t tof;       // particle time of flight
    Int_t nhits;       // number of cells hit (1 or 2)
    UInt_t  metaAddress; // mod+cell of first and second hit

    void reset(void){
	ind     = -1;
	quality = -1;
	dx      = -1;
	dy      = -1;
	tof     = -1;
	nhits   = -1;
	metaAddress = 0;
    }

    void setMetaModule(UInt_t hit,UInt_t mod){
	if(hit<2 && mod < 8){
	    mod++;
	    metaAddress&= ~(0xF<<(hit*11+7));
	    metaAddress|=(mod&0xF)<<(hit*11+7);
	}
    }

    void setMetaCell(UInt_t hit,UInt_t cell) {
	if(hit<2 && cell < 33){
	    cell++;
	    metaAddress&= ~(0x7F<<(hit*11));
	    metaAddress|=(cell&0x7F)<<(hit*11);
	}
    }

    void  unsetMetaModule(UInt_t hit) { if(hit<2) metaAddress&= ~(0xF<<(hit*11+7)); }
    void  unsetMetaCell(UInt_t hit)   { if(hit<2) metaAddress&= ~(0x7F<<(hit*11)); }
    Int_t getMetaModule(UInt_t hit)   {  if(hit<2){ return (metaAddress>>(hit*11+7)&(0xF))-1; } else return -1; }
    Int_t getMetaCell  (UInt_t hit)   {  if(hit<2){ return (metaAddress>>(hit*11)&(0x7F))-1;  } else return -1; }

    void fillMeta(HMetaMatch2* meta,Int_t n = 0){
	if(meta){
	    ind     = meta->getRpcClstInd(n);
	    quality = meta->getRpcClstQuality(n);
	    dx      = meta->getRpcClstDX(n);
	    dy      = meta->getRpcClstDY(n);
	}
    }

    void fill(HRpcCluster* clst){
	if(clst){
	    tof   = clst->getTof();
	    nhits = clst->getClusterType();
	    setMetaModule(0,clst->getColumn1());
	    setMetaCell  (0,clst->getCell1()  );
	    setMetaModule(1,clst->getColumn2());
	    setMetaCell  (1,clst->getCell2()  );
	}
    }
    ClassDef(rpc_clst,1)
};


class tof_hit : public TObject {
public:
    tof_hit(){;}
    ~tof_hit(){;}

    Int_t   ind;       // Index of HTofHit object
    Float_t quality;   // Matching quality
    Float_t dx;        // Deviation in X-coordinate
    Float_t dy;        // Deviation in Y-coordinate
    Float_t dedx;      // Tof dE/dx
    Float_t tof;       // particle time of flight
    UInt_t  metaAddress; // mod+cell of first and second hit
    void reset(void){
	ind     = -1;
	quality = -1;
	dx      = -1;
	dy      = -1;
	dedx    = -1;
	tof     = -1;
        metaAddress = 0;
    }

    void setMetaModule(UInt_t hit,UInt_t mod){
	if(hit<2 && mod < 8){
	    mod++;
	    metaAddress&= ~(0xF<<(hit*11+7));
	    metaAddress|=(mod&0xF)<<(hit*11+7);
	}
    }

    void setMetaCell(UInt_t hit,UInt_t cell) {
	if(hit<2 && cell < 33){
	    cell++;
	    metaAddress&= ~(0x7F<<(hit*11));
	    metaAddress|=(cell&0x7F)<<(hit*11);
	}
    }
    void  unsetMetaModule(UInt_t hit) {  if(hit<2) metaAddress&= ~(0xF<<(hit*11+7)); }
    void  unsetMetaCell(UInt_t hit)   {  if(hit<2) metaAddress&= ~(0x7F<<(hit*11)); }
    Int_t getMetaModule(UInt_t hit)   {  if(hit<2){ return (metaAddress>>(hit*11+7)&(0xF))-1; } else return -1; }
    Int_t getMetaCell  (UInt_t hit)   {  if(hit<2){ return (metaAddress>>(hit*11)&(0x7F))-1;  } else return -1; }

    void fillMeta(HMetaMatch2* meta,Int_t n = 0,Int_t hit = 0){
	if(meta){
	    if(hit == kTofClst) {
		if(meta->getTofClstInd(n)>=0){
		    ind     = meta->getTofClstInd(n);
		    quality = meta->getTofClstQuality(n);
		    dx      = meta->getTofClstDX(n);
		    dy      = meta->getTofClstDY(n);
		}
	    }
	    else if(hit == kTofHit1) {
		if(meta->getTofHit1Ind(n)>=0){
		    ind     = meta->getTofHit1Ind(n);
		    quality = meta->getTofHit1Quality(n);
		    dx      = meta->getTofHit1DX(n);
		    dy      = meta->getTofHit1DY(n);
		}
	    }
	    else if(hit == kTofHit2){
		if(meta->getTofHit2Ind(n)>=0){
		    ind     = meta->getTofHit2Ind(n);
		    quality = meta->getTofHit2Quality(n);
		    dx      = meta->getTofHit2DX(n);
		    dy      = meta->getTofHit2DY(n);
		}
	    } else {
		std::cout<<"tof_hit:fillMeta(): Illegal hit number!"<<endl;
	    }
	}
    }

    void fill(HTofHit* hit,Int_t type=1){ // default kTofHit1
	if(hit){
	    dedx = hit->getEdep();
	    tof  = hit->getTof();
	    setMetaModule(0,hit->getModule());
	    setMetaCell  (0,hit->getCell()  );

	    if(type==kTofClst){

		if(((HTofCluster*)hit)->getClusterSize()>1){
		    Int_t index = ((HTofCluster*)hit)->getIndexHit2();
		    if(index!=-1){
			HTofHit* hit2=0;
			hit2 = HCategoryManager::getObject(hit2,catTofHit,index);
			if(hit2){
			    setMetaModule(1,hit2->getModule());
			    setMetaCell  (1,hit2->getCell()  );
			} else { std::cout<<"fill() : NULL pointer recieved for tof cluster hit2"<<endl;}
		    } 
		}
	    }
	}
    }
    ClassDef(tof_hit,1)
};

class shower_hit : public TObject {
public:
    shower_hit(){;}
    ~shower_hit(){;}

    Int_t   ind;         // Index of HShowerHit object
    Float_t quality;     // Matching quality
    Float_t matchradius; // Matching quality
    Float_t dx;          // Deviation in X-coordinate
    Float_t dy;          // Deviation in Y-coordinate
    Float_t showerSum0;  // charge sum of PreShower cluster (0)
    Float_t showerSum1;  // charge sum of PreShower cluster (1)
    Float_t showerSum2;  // charge sum of PreShower cluster (2)

    void reset(void){
	ind        = -1;
	quality    = -1;
	matchradius= -1;
	dx         = -1;
	dy         = -1;
	showerSum0 = -1;
	showerSum1 = -1;
	showerSum2 = -1;
    }

    void fillMeta(HMetaMatch2* meta,Int_t n = 0,HRKTrackB* rk=0){
	if(meta){
	    ind     = meta->getShowerHitInd(n);
	    if(rk==0){
		quality = meta->getShowerHitQuality(n);
		dx      = meta->getShowerHitDX(n);
		dy      = meta->getShowerHitDY(n);
	    }
	    else {
		quality = rk->getQualityShower();
		dx      = rk->getMETAdx();
		dy      = rk->getMETAdy();
                matchradius = rk->getMetaRadius();
	    }
	}
    }

    void fillMetaKal(HMetaMatch2* meta,Int_t n = 0,HKalTrack*  rk=0){
	if(meta){
	    ind     = meta->getShowerHitInd(n);
	    if(rk==0){
		quality = meta->getShowerHitQuality(n);
		dx      = meta->getShowerHitDX(n);
		dy      = meta->getShowerHitDY(n);
	    }
	    else {
		quality = rk->getQualityShower();
		dx      = rk->getMETAdx();
		dy      = rk->getMETAdy();
		matchradius = rk->getMetaRadius();
	    }
	}
    }

    void fill(HShowerHit* hit){
	if(hit){
	    showerSum0 = hit->getSum(0);
	    showerSum1 = hit->getSum(1);
	    showerSum2 = hit->getSum(2);
	}
    }
    ClassDef(shower_hit,1)
};

class emc_clst : public TObject {
public:
    emc_clst(){;}
    ~emc_clst(){;}

    Int_t   ind;         // Index of HEmcClst object
    Int_t   indRpc;      // Index of HEmcClst object matched with RPC
    Float_t quality;     // Matching quality
    Float_t matchradius; // Matching quality
    Float_t dx;          // Deviation in X-coordinate
    Float_t dy;          // Deviation in Y-coordinate
    Float_t energy;      // energy deposited in the cluster
    Float_t time;        // mean time weighted by energy
    Float_t cellPath;    // path length of track inside cell
    Int_t   ncells;      // number of cells in the cluster
    Bool_t  isMatchedRpc;// is the cluster matched to RPC (pos+time)

    void reset(void){
	ind         = -1;
	indRpc      = -1;
	quality     = -1;
	matchradius = -1;
	dx          = -1;
	dy          = -1;
	energy      = -1;
	time        = -1;
        cellPath    = -1;
	ncells      = -1;
        isMatchedRpc =kFALSE;
    }

    void fillMeta(HMetaMatch2* meta,Int_t n = 0,HRKTrackB* rk=0){
	if(meta){
	    ind     = meta->getEmcClusterInd(n);
            cellPath= meta->getEmcCellPath(n);
	    if(rk==0){
		quality = meta->getEmcClusterQuality(n);
		dx      = meta->getEmcClusterDX(n);
		dy      = meta->getEmcClusterDY(n);
	    }
	    else {
		quality = rk->getQualityEmc();
		dx      = rk->getMETAdx();
		dy      = rk->getMETAdy();
                matchradius = rk->getMetaRadius();
	    }
	}
    }

    void fillMetaKal(HMetaMatch2* meta,Int_t n = 0,HKalTrack*  rk=0){
	if(meta){
	    ind     = meta->getEmcClusterInd(n);
            cellPath= meta->getEmcCellPath(n);
	    if(rk==0){
		quality = meta->getEmcClusterQuality(n);
		dx      = meta->getEmcClusterDX(n);
		dy      = meta->getEmcClusterDY(n);
	    }
	    else {
		quality = rk->getQualityEmc();
		dx      = rk->getMETAdx();
		dy      = rk->getMETAdy();
		matchradius = rk->getMetaRadius();
	    }
	}
    }

    void fill(HEmcCluster* hit){
	if(hit){
	    energy       = hit->getEnergy();
	    time         = hit->getTime();
	    ncells       = hit->getNCells();
	    indRpc       = hit->getRpcIndex();
	    isMatchedRpc = hit->getNMatchedCells() > 0 ? kTRUE: kFALSE;
	}
    }
    ClassDef(emc_clst,1)
};

class rich_hit : public TObject {
public:
    rich_hit(){;}
    ~rich_hit(){;}

    Int_t    ind;           // Index of HRichHit object
    Short_t  numPads;       // number of fired pads typ. (-1 - 100)
    Short_t  amplitude;     // typ. (-1 - 4000)
    Short_t  houTra;        // typ. (-1 - 5000)
    Short_t  patternMatrix; // pattern matrix of ring
    Float_t  centroid;      // ring centroid
    Float_t  phi;           // rich phi   0-360 deg
    Float_t  theta;         // rich theta 0-90 deg

    // NEW RICH700
    Float_t centerx;       // center position in X [mm]
    Float_t centery;       // center position in Y [mm]
    Float_t radius ;       // radius of ring
    Float_t chi2   ;       // chi2 of ring fit
    Int_t   ncals  ;       // number of cal objects used

    Bool_t isNewRich() { return ncals == -1 ? kFALSE:  kTRUE;}

    void reset(void){
	ind           = -1;
	numPads       = -1;
	amplitude     = -1;
	houTra        = -1;
	patternMatrix = -1;
	centroid      = -1;
	phi           = -1;
	theta         = -1;
	centerx       = -1;
	centery       = -1;
	radius        = -1;
	chi2          = -1;
	ncals         = -1;
    }

    void fillMeta(HMetaMatch2* meta,Int_t n = 0){
	if(meta && n > -1){
	    ind = meta->getARichInd(n); // 0 = best match
	}
    }
    void fill(HRichHit* hit){
	if(hit){
	    if(hit->isNewRich()){
		centerx       = hit->getRich700CircleCenterX();
		centery       = hit->getRich700CircleCenterY();
		radius        = hit->getRich700CircleRadius();
		chi2          = hit->getRich700CircleChi2();
		ncals         = hit->getRich700NofRichCals();
	    } else {
		numPads       = hit->getRingPadNr();
		amplitude     = hit->getRingAmplitude();
		houTra        = hit->getRingHouTra();
		patternMatrix = hit->getRingPatMat();
		centroid      = hit->getCentroid();
	    }
	    phi           = hit->getPhi();
	    theta         = hit->getTheta();
	}
    }
    ClassDef(rich_hit,1)
};

class spline_track : public TObject {
public:
    spline_track(){;}
    ~spline_track(){;}

    Int_t   ind;        // Index of HSplineTrack object
    Float_t p;          // particle's momentum [MeV]

    void reset(void){
	ind = -1;
	p   = -1;
    }
    void fillMeta(HMetaMatch2* meta){
	if(meta){
	    ind = meta->getSplineInd();
	}
    }
    void fill(HSplineTrack* trk){
	if(trk){
	    p = trk->getP();
	}
    }
    ClassDef(spline_track,1)
};



class rk_track : public TObject {
public:
    rk_track(){;}
    ~rk_track(){;}

    //-------------------------------
    // to be set by hand
    Int_t usedMeta;     // see enum selMeta
    Int_t selectTof;    // see enum selMeta
    //-------------------------------
    Int_t   ind;        // Index of HRKBaseTrack object
    Float_t beta;       // particle's beta
    Float_t p;          // particle's momentum [MeV]
    Float_t mass;       // particle's mass [MeV]
    Float_t path;       // length of particle trajetory [mm]
    Float_t chi2;       // chi2 of fit
    Float_t phi;        // track's phi in cave coordinates (0..360 deg)
    Float_t theta;      // track's theta in cave coordinates (0..90 deg)
    Float_t r;          // distance of closest point to beamline [mm]
    Float_t z;          // z coordinate of closest point to beamline [mm]
    Float_t phi2;        // track's phi in cave coordinates (0..360 deg)
    Float_t theta2;      // track's theta in cave coordinates (0..90 deg)
    Float_t r2;          // distance of closest point to beamline [mm]
    Float_t z2;          // z coordinate of closest point to beamline [mm]
    Int_t   pol;        // polarity
    Float_t quality;    // quality rk -Meta matching
    Float_t matchradius;// rk -Meta matching sqrt(dx2+dy2) [mm]
    Float_t metadx;     // rk -Meta matching in x [mm]
    Float_t metady;     // rk -Meta matching in y [mm]

    void reset(void){
	usedMeta  = -1;
	selectTof = -1;
	ind       = -1;
	beta      = -1;
	p         = -1;
	mass      = -1;
	path      = -1;
        chi2      = -1;
	phi       = -1;
	theta     = -1;
	r         = -1;
	z         = -1;
	phi2      = -1;
	theta2    = -1;
	r2        = -1;
	z2        = -1;
	pol       =  0;
	quality   = -1;
	matchradius = -1.;
	metadx = -1000;
        metady = -1000;

    }
    void fillInd(Int_t n = 0){
	ind = n;
    }
    void fill(HRKTrackB* rk){
	if(rk){
	    beta  = rk->getBeta();
	    p     = rk->getP();
	    mass  = rk->getMass2();
	    path  = rk->getTofDist();
	    chi2  = rk->getChiq();
	    phi   = HParticleTool::phiSecToLabDeg(rk->getSector(),rk->getPhiSeg1RK());
	    theta = HParticleTool::thetaToLabDeg (rk->getThetaSeg1RK());
	    r     = rk->getRSeg1RK();
	    z     = rk->getZSeg1RK();
	    phi2   = HParticleTool::phiSecToLabDeg(rk->getSector(),rk->getPhiSeg2RK());
	    theta2 = HParticleTool::thetaToLabDeg (rk->getThetaSeg2RK());
	    r2     = rk->getRSeg2RK();
	    z2     = rk->getZSeg2RK();
	    pol   = rk->getPolarity();
            metadx = -1000; metady = -1000;
	    if     (usedMeta >= 0 && usedMeta < 3) { quality = rk->getQualityTof();    matchradius = rk->getMetaRadius();  if(rk->getMETAdx()!=-10000)metadx=rk->getMETAdx();  if(rk->getMETAdy()!=-10000)metady=rk->getMETAdy();}
	    else if(usedMeta == kRpcClst )         { quality = rk->getQualityRpc();    matchradius = rk->getMetaRadius();  if(rk->getMETAdx()!=-10000)metadx=rk->getMETAdx();  if(rk->getMETAdy()!=-10000)metady=rk->getMETAdy();}
	    else if(usedMeta == kShowerHit )       { quality = rk->getQualityShower(); matchradius = rk->getMetaRadius();  if(rk->getMETAdx()!=-10000)metadx=rk->getMETAdx();  if(rk->getMETAdy()!=-10000)metady=rk->getMETAdy();}
	    else if(usedMeta == kEmcClst )         { quality = rk->getQualityEmc();    matchradius = rk->getMetaRadius();  if(rk->getMETAdx()!=-10000)metadx=rk->getMETAdx();  if(rk->getMETAdy()!=-10000)metady=rk->getMETAdy();}
	    else                                   { quality = -1; matchradius = -1; metadx = -1000; metady = -1000; }
	}
    }
    ClassDef(rk_track,1)
};

class kal_track : public TObject {
public:
    kal_track(){;}
    ~kal_track(){;}

    //-------------------------------
    // to be set by hand
    Int_t usedMeta;     // see enum selMeta
    Int_t selectTof;    // see enum selMeta
    //-------------------------------
    Int_t   ind;        // Index of HRKBaseTrack object
    Float_t beta;       // particle's beta
    Float_t p;          // particle's momentum [MeV]
    Float_t mass;       // particle's mass [MeV]
    Float_t path;       // length of particle trajetory [mm]
    Float_t chi2;       // chi2 of fit
    Float_t phi;        // track's phi in cave coordinates (0..360 deg)
    Float_t theta;      // track's theta in cave coordinates (0..90 deg)
    Float_t r;          // distance of closest point to beamline [mm]
    Float_t z;          // z coordinate of closest point to beamline [mm]
    Float_t phi2;        // track's phi in cave coordinates (0..360 deg)
    Float_t theta2;      // track's theta in cave coordinates (0..90 deg)
    Float_t r2;          // distance of closest point to beamline [mm]
    Float_t z2;          // z coordinate of closest point to beamline [mm]
    Int_t   pol;        // polarity
    Float_t quality;    // quality rk -Meta matching
    Float_t matchradius;// rk -Meta matching sqrt(dx2+dy2) [mm]
    Float_t metadx;     // rk -Meta matching in x [mm]
    Float_t metady;     // rk -Meta matching in y [mm]

    void reset(void){
	usedMeta  = -1;
	selectTof = -1;
	ind       = -1;
	beta      = -1;
	p         = -1;
	mass      = -1;
	path      = -1;
        chi2      = -1;
	phi       = -1;
	theta     = -1;
	r         = -1;
	z         = -1;
	phi2      = -1;
	theta2    = -1;
	r2        = -1;
	z2        = -1;
	pol       =  0;
	quality   = -1;
	matchradius = -1;
	metadx = -1000;
        metady = -1000;
    }
    void fillInd(Int_t n = 0){
	ind = n;
    }
    void fill(HKalTrack* trk){
	if(trk){
	    beta  = trk->getBeta();
	    p     = trk->getP();
	    mass  = trk->getMass2();
	    path  = trk->getTofDist();
	    chi2  = trk->getChi2();
	    phi   = HParticleTool::phiSecToLabDeg(trk->getSector(),trk->getPhi());
	    theta = HParticleTool::thetaToLabDeg (trk->getTheta());
	    r     = trk->getR();
	    z     = trk->getZ();
	    /*  // TODO : kalman seg 2
	    phi2   = HParticleTool::phiSecToLabDeg(trk->getSector(),trk->getPhi());
	    theta2 = HParticleTool::thetaToLabDeg (trk->getTheta());
	    r2     = trk->getR();
	    z2     = trk->getZ();
            */
	    pol   = trk->getPolarity();
            metadx = -1000; metady = -1000;
	    if     (usedMeta >= 0 && usedMeta < 3) { quality = trk->getQualityTof();    matchradius = trk->getMetaRadius(); if(trk->getMETAdx()!=-10000.)metadx=trk->getMETAdx();  if(trk->getMETAdy()!=-10000.)metady=trk->getMETAdy(); }
	    else if(usedMeta == kRpcClst )         { quality = trk->getQualityRpc();    matchradius = trk->getMetaRadius(); if(trk->getMETAdx()!=-10000.)metadx=trk->getMETAdx();  if(trk->getMETAdy()!=-10000.)metady=trk->getMETAdy(); }
	    else if(usedMeta == kShowerHit )       { quality = trk->getQualityShower(); matchradius = trk->getMetaRadius(); if(trk->getMETAdx()!=-10000.)metadx=trk->getMETAdx();  if(trk->getMETAdy()!=-10000.)metady=trk->getMETAdy(); }
	    else if(usedMeta == kEmcClst )         { quality = trk->getQualityEmc();    matchradius = trk->getMetaRadius(); if(trk->getMETAdx()!=-10000.)metadx=trk->getMETAdx();  if(trk->getMETAdy()!=-10000.)metady=trk->getMETAdy(); }
	    else                                   { quality = -1;  matchradius = -1; metadx = -1000; metady = -1000;}
	}
    }
    ClassDef(kal_track,1)
};


class candidate : public TObject {
public:
    candidate(){ reset(); }
    ~candidate(){ ;}

    pointers objects;          //!  keep pointers for this candidate
    //---------------------------
    // to be set by hand
    Bool_t  isEMC;              // switch SHOWER/EMC
    Int_t   used;               // should this candidate be used ?
    Int_t   system;             // detector system
    Bool_t  rkSuccess;          // fitted ?
    Int_t   usedMeta;           // noUse = -1, 0 =TOFclst, 1 = TOHHIT1, 2 = TOFHIT2, 3 =RPC 4=SHR
    Int_t   selectTof;          // noUse = -1, 0 =TOFclst, 1 = TOHHIT1, 2 = TOFHIT2
    Int_t   nCand;              // number of candidate in metamatch objects
    Int_t   hasRingCorrelation; // pass MDC-RICH correlation cut ?
    Float_t corrThetaRich;      // z pos theta correction for Rich (to be added to theta)
    Float_t alignThetaRich;     // align theta correction for Rich (to be added to theta)
    Float_t alignPhiRich;       // align phi   correction for Rich (to be added to theta)
    Float_t richMdcQuality;     // match RICH inner Segment quality sqrt( dThetaSeg1 * dThetaSeg1 + dPhiSeg1 * dPhiSeg1)
    Float_t richRkQuality;      // match RICH RK quality
    //---------------------------

    //---------------------------
    // simulation
    tracksVec commonTracks; //  collected GEANT track number for all detector hits
    tracksVec richTracks;   //  collected GEANT track number for RICH detector hit
    tracksVec mdc1Tracks;   //  collected GEANT track number for inner MDC segment
    tracksVec mdc2Tracks;   //  collected GEANT track number for outer MDC segment
    tracksVec tofTracks;    //  collected GEANT track number for TOF detector hit
    tracksVec rpcTracks;    //  collected GEANT track number for RPC detector hit
    tracksVec showerTracks; //  collected GEANT track number for SHOWER detector hit
    tracksVec emcTracks;    //  collected GEANT track number for EMC detector cluster
    //---------------------------

    //---------------------------
    // close tracks
    closeVec closeTracks;    // keep index and opening angle to close tracks
    Float_t  oAFitted   ;    // neg angle = hadron, pos angle lepton , -99 nothing
    Float_t  oANoFitted ;    // neg angle = hadron, pos angle lepton , -99 nothing
    //---------------------------


    //---------------------------
    Int_t        ind;        // metamatch index
    Int_t        sector;     // sector number

    mdc_trk      mdctrk;
    mdc_seg      seg1;
    mdc_seg      seg2;
    tof_hit      tof[3];
    rpc_clst     rpcclst;
    shower_hit   showerhit;
    emc_clst     emcclst;
    rich_hit     richhit;
    spline_track spline;
    rk_track     rk;
    kal_track    kal;

    void reset(void){

        objects     .reset();
	commonTracks.reset();
	richTracks  .reset();
	mdc1Tracks  .reset();
	mdc2Tracks  .reset();
	tofTracks   .reset();
	rpcTracks   .reset();
	showerTracks.reset();
	emcTracks   .reset();

	closeTracks .reset();
	oAFitted           = -99;
        oANoFitted         = -99;
	isEMC              =   kFALSE;
	used               =   1;
	system             =  -1;
	rkSuccess          =   kFALSE;
	usedMeta           =  -1;
	selectTof          =  -1;
	nCand              =  -1;
	hasRingCorrelation =   0;
	corrThetaRich      =   0;
	alignThetaRich     =   0;
	alignPhiRich       =   0;
	richMdcQuality     =  -1;
	richRkQuality      =  -1;

	ind        = -1;
	sector     = -1;
	mdctrk    .reset();
	seg1      .reset();
	seg2      .reset();
	for(Int_t i=0;i<3;i++) tof[i].reset();
	rpcclst   .reset();
	showerhit .reset();
	emcclst   .reset();
	richhit   .reset();
	spline    .reset();
	rk        .reset();
	kal       .reset();
    }
    void fillMeta(HMetaMatch2* meta){
	if(meta){
	    ind    = meta->getOwnIndex();
	    sector = meta->getSector();
	}
    }
    void fillParticleCand(HParticleCand* part,Int_t index,Int_t momSwitch=Particle::kMomRK){
	if(part){

	    Int_t selMeta = -1;
            Int_t selTof  = -1;

	    part->setIndex(index);
	    part->setSector(sector);
	    part->setSystem(system) ;
	    part->setRingCorr(hasRingCorrelation); //
	    part->setTofRec(0);                    // later filled by starttime reconstructor
	    part->setMdcdEdx(mdctrk.dedx);

	    //########################################################
            // MOM SELECTION
	    //------------------------------------------
	    if(momSwitch == Particle::kMomRK)
	    {
		if(rk.chi2 >= 0){
		    rkSuccess= kTRUE;
		    selMeta  = rk.usedMeta;
		    selTof   = rk.selectTof;
		} else {
		    selMeta = usedMeta;
		    selTof  = selectTof;
		}

		part->setCharge  (rk.pol);
		part->setBeta    (rk.beta);
		part->setBetaOrg (rk.beta);
		part->setMomentum(rk.p);
		part->setMomentumOrg(rk.p);
		part->setMass2   (rk.mass);

		//------------------------------------------
		if(rk.chi2 >= 0){
		    part->setPhi  (rk.phi);
		    part->setTheta(rk.theta);
		    part->setR    (rk.r);
		    part->setZ    (rk.z);
		    part->setPhi2  (rk.phi2);
		    part->setTheta2(rk.theta2);
		    part->setR2    (rk.r2);
		    part->setZ2    (rk.z2);
		} else {  // if no RK take segment info
		    part->setPhi  (seg1.phi);
		    part->setTheta(seg1.theta);
		    part->setR    (seg1.r);
		    part->setZ    (seg1.z);
		    part->setPhi2  (seg2.phi);
		    part->setTheta2(seg2.theta);
		    part->setR2    (seg2.r);
		    part->setZ2    (seg2.z);
		}
		//------------------------------------------

		part->setChi2             (rk.chi2);
		part->setDistanceToMetaHit(rk.path);
		part->setDistanceToMetaHitOrg(rk.path);

		//------------------------------------------
		if(rk.chi2 >= 0){
		    part->setMetaMatchQuality (rk.quality);
	            part->setMetaMatchRadius  (rk.matchradius);
	        } else { // if no RK take MetaMatch info instead
		    if     (selMeta >= 0 && selMeta < 3)  part-> setMetaMatchQuality(tof[selMeta].quality);
		    else if(selMeta == kRpcClst )         part-> setMetaMatchQuality(rpcclst.quality);
		    else if(selMeta == kShowerHit)        part-> setMetaMatchQuality(showerhit.quality);
		    else if(selMeta == kEmcClst)          part-> setMetaMatchQuality(emcclst.quality);
		    else                                  part-> setMetaMatchQuality(-1);
		}
		//------------------------------------------

	    } else if (momSwitch == Particle::kMomKalman){

		if(kal.chi2 >= 0){
		    rkSuccess= kTRUE;
		    selMeta = kal.usedMeta;
		    selTof  = kal.selectTof;
		} else {
		    selMeta = usedMeta;
		    selTof  = selectTof;
		}

		part->setCharge  (kal.pol);
		part->setBeta    (kal.beta);
		part->setBetaOrg (kal.beta);
		part->setMomentum(kal.p);
		part->setMomentumOrg(kal.p);
		part->setMass2   (kal.mass);

		//------------------------------------------
		if(kal.chi2 >= 0){
		    part->setPhi  (kal.phi);
		    part->setTheta(kal.theta);
		    part->setR    (kal.r);
		    part->setZ    (kal.z);
# warning  inner + outer seg r,z,phi,theta still taken from segments!
		    // TODO : kalman seg2
		    part->setPhi2  (seg2.phi);
		    part->setTheta2(seg2.theta);
		    part->setR2    (seg2.r);
		    part->setZ2    (seg2.z);
		} else {  // if no RK take segment info
		    part->setPhi  (seg1.phi);
		    part->setTheta(seg1.theta);
		    part->setR    (seg1.r);
		    part->setZ    (seg1.z);
		    part->setPhi2  (seg2.phi);
		    part->setTheta2(seg2.theta);
		    part->setR2    (seg2.r);
		    part->setZ2    (seg2.z);
		}
		//------------------------------------------

		part->setChi2             (kal.chi2);
		part->setDistanceToMetaHit(kal.path);
		part->setDistanceToMetaHitOrg(kal.path);

		//------------------------------------------
		if(kal.chi2 >= 0){
		    part->setMetaMatchQuality (kal.quality);
		    part->setMetaMatchRadius  (kal.matchradius);
	        } else { // if no Kalman take MetaMatch info instead
		    if     (selMeta >= 0 && selMeta < 3)  { part-> setMetaMatchQuality(tof[selMeta].quality); }
		    else if(selMeta == kRpcClst )         { part-> setMetaMatchQuality(rpcclst.quality);      }
		    else if(selMeta == kShowerHit)        { part-> setMetaMatchQuality(showerhit.quality);    }
		    else if(selMeta == kEmcClst)          { part-> setMetaMatchQuality(emcclst.quality);      }
		    else                                  { part-> setMetaMatchQuality(-1);                   }
		}
		//------------------------------------------

	    } else {

               Error("fillParticleCand","momentum reco option %i not know!",momSwitch);

	    }
	    //------------------------------------------

            //------------------------------------------
	    // filling dx,dy Meta : Val is RK or Kalman if fit succeed
             if (momSwitch == Particle::kMomKalman){
		 if(kal.chi2 >= 0)  {
		     part->setRkMetaDx(kal.metadx);
		     part->setRkMetaDy(kal.metady);
		 }
	     } else if(momSwitch == Particle::kMomRK){
		 if(rk.chi2 >= 0) {
		     part->setRkMetaDx(rk.metadx);
		     part->setRkMetaDy(rk.metady);
		 }
	     } else {
               Error("fillParticleCand","momentum reco option %i not know!",momSwitch);
	    }
            // filling dx,dy Meta : Val is taken from seg if fit failed
	    if( (momSwitch == Particle::kMomKalman && kal.chi2 <0) || (momSwitch == Particle::kMomRK && rk.chi2 <0)){
		if     (selMeta >= 0 && selMeta < 3)  { part-> setRkMetaDx(tof[selMeta].dx); part-> setRkMetaDy(tof[selMeta].dy);  }
		else if(selMeta == kRpcClst )         { part-> setRkMetaDx(rpcclst.dx)     ; part-> setRkMetaDy(rpcclst.dy);       }
		else if(selMeta == kShowerHit)        { part-> setRkMetaDx(showerhit.dx);  ; part-> setRkMetaDy(showerhit.dy);     }
		else if(selMeta == kEmcClst)          { part-> setRkMetaDx(emcclst.dx);    ; part-> setRkMetaDy(emcclst.dy);       }
		else                                  { part-> setRkMetaDx(-1000)          ; part-> setRkMetaDy(-1000);            }
	    }
            //------------------------------------------




	    //########################################################
 

	    //------------------------------------------
	    if(selTof >= 0 && selTof < 3) part-> setTofdEdx(tof[selTof].dedx);
	    //------------------------------------------



	    part->setInnerSegmentChi2 (seg1.chi2);
	    part->setOuterSegmentChi2 (seg2.chi2);
            part->setLayers(0,seg1.layers);
	    part->setLayers(1,seg2.layers);
            part->setNWSeg(0,seg1.wires);
	    part->setNWSeg(1,seg2.wires);

            if(seg1.offvertexclust) part->setOffVertexClust();

	    if(mdctrk.seg1fake) part->setFakeRejected(0);
            if(mdctrk.seg2fake) part->setFakeRejected(1);
            if(mdctrk.allfake ) part->setFakeRejected(-1);


	    part->setAngleToNearbyFittedInner  (oAFitted)  ;
	    part->setAngleToNearbyUnfittedInner(oANoFitted);

	    if(richhit.isNewRich()){
		part->setRingRadius  (richhit.radius);
		part->setRingChi2    (richhit.chi2);
		part->setRingNumCals (richhit.ncals);
	    } else {
		part->setRingNumPads      (richhit.numPads);
		part->setRingAmplitude    (richhit.amplitude);
		part->setRingHouTra       (richhit.houTra);
		part->setRingPatternMatrix(richhit.patternMatrix);
		part->setRingCentroid     (richhit.centroid);
	    }
	    part->setRichPhi          (richhit.phi) ;
	    part->setRichTheta        (richhit.theta);

	    part->setShowerSum0       (showerhit.showerSum0);
	    part->setShowerSum1       (showerhit.showerSum1);
	    part->setShowerSum2       (showerhit.showerSum2);

	    if(isEMC){
		part->setMetaMatchQualityEmc(emcclst.quality);
		part->setMetaMatchRadiusEmc (emcclst.matchradius);
                part->setRkMetaDxEmc        (emcclst.dx);
                part->setRkMetaDyEmc        (emcclst.dy);

		part->setEmcEnergy(emcclst.energy);
		part->setEmcTime(emcclst.time);
		part->setEmcCellPath(emcclst.cellPath);
		part->setIsEmc();
		if(emcclst.isMatchedRpc) part->setIsEmcMatchedToRpc();
		if(emcclst.indRpc==emcclst.ind && emcclst.ind>=0) part->setIsEmcMatchedToSameRpc();
		part->setEmcNCells(emcclst.ncells);
       

	    } else {
		part->setMetaMatchQualityShower(showerhit.quality);
		part->setMetaMatchRadiusShower (showerhit.matchradius);
                part->setRkMetaDxShower        (showerhit.dx);
                part->setRkMetaDyShower        (showerhit.dy);
	    }
	    //------------------------------------------
	    // set only indices of used META hits
	    part->setMetaInd    (ind);
	    part->setRichInd    (richhit.ind);
            part->setInnerSegInd(seg1.ind);
            part->setOuterSegInd(seg2.ind);
            if(isEMC){
		part->setEmcInd (emcclst.ind);
	    } else {
		part->setShowerInd (showerhit.ind);
	    }

	    if     (selMeta == kRpcClst ){
		part->setRpcInd    (rpcclst.ind);

		part->setMetaModule(0,rpcclst.getMetaModule(0));
                part->setMetaCell  (0,rpcclst.getMetaCell  (0));
                part->setMetaModule(1,rpcclst.getMetaModule(1));
                part->setMetaCell  (1,rpcclst.getMetaCell  (1));
	    }

	    if     (selMeta == kTofClst )  {
		part->setTofClstInd(tof[kTofClst].ind);

	        part->setMetaModule(0,tof[selMeta].getMetaModule(0));
                part->setMetaCell  (0,tof[selMeta].getMetaCell  (0));
                part->setMetaModule(1,tof[selMeta].getMetaModule(1));
                part->setMetaCell  (1,tof[selMeta].getMetaCell  (1));
	    } else if(selMeta == kTofHit1 || selMeta == kTofHit2  ) {
		part->setTofHitInd (tof[selMeta].ind);

		part->setMetaModule(0,tof[selMeta].getMetaModule(0));
                part->setMetaCell  (0,tof[selMeta].getMetaCell  (0));
	    }


	    if(system == 2 && selMeta == kRpcClst){
                // set in addition tofhit/tofclstind
		part->setTofClstInd(tof[kTofClst].ind);

		part->setMetaModule(0,tof[kTofClst].getMetaModule(0));
                part->setMetaCell  (0,tof[kTofClst].getMetaCell  (0));
                part->setMetaModule(1,tof[kTofClst].getMetaModule(1));
                part->setMetaCell  (1,tof[kTofClst].getMetaCell  (1));

                // for the tofhits we have to check if the exist
		if     (tof[kTofHit1].ind != -1 && tof[kTofHit2].ind == -1) part->setTofHitInd ( tof[kTofHit1].ind );
		else if(tof[kTofHit1].ind == -1 && tof[kTofHit2].ind != -1) part->setTofHitInd ( tof[kTofHit2].ind );
		else if(tof[kTofHit1].ind != -1 && tof[kTofHit2].ind != -1) {
                    // if both exist take the better matched
		    if(tof[kTofHit1].quality < tof[kTofHit2].quality )  part->setTofHitInd ( tof[kTofHit1].ind );
                    else                                                part->setTofHitInd ( tof[kTofHit2].ind );
		}
	    }

	    //------------------------------------------

            part->setSelectedMeta( selMeta );


	}
    }

    void fillParticleCandSim(HParticleCandSim* part,HCategory* kineCat = 0){
	if(part && kineCat){

	    if(commonTracks.tracks.size() > 0){
		HGeantKine* kine = 0;
		Int_t tr = commonTracks.tracks[0]->tr;
		if(tr > 0) { // GEANT track
		    kine     = HCategoryManager::getObject(kine,kineCat,tr-1);
		    if(kine){
			Float_t px,py,pz;
			Float_t vx,vy,vz;
			Float_t geninfo,geninfo1,geninfo2,genweight;
			Int_t   parentTr,medium,mechanism,pid,parentPid=-1,grandparentTr=0,grandparentPid=-1;
			pid = kine->getID();
			kine->getMomentum (px,py,pz);
			kine->getVertex   (vx,vy,vz);
			kine->getCreator  (parentTr,medium,mechanism);
			kine->getGenerator(geninfo,genweight);
			kine->getGenerator(geninfo,geninfo1,geninfo2);
			if(parentTr > 0){
			    kine          = HCategoryManager::getObject(kine,kineCat,parentTr-1);
			    parentPid     = kine->getID();
			    grandparentTr = kine->getParentTrack();
			    if(grandparentTr > 0){
				kine           = HCategoryManager::getObject(kine,kineCat,grandparentTr-1);
				grandparentPid = kine->getID();
			    }
			}

			part->setGeantPID(pid);
			part->setGeantTrack(tr);
			part->setGeantCorrTrackIds(commonTracks.tracks[0]->flag);
			part->setGeantxMom(px);
			part->setGeantyMom(py);
			part->setGeantzMom(pz);
			part->setGeantxVertex(vx);
			part->setGeantyVertex(vy);
			part->setGeantzVertex(vz);
			part->setGeantParentTrackNum(parentTr);
			part->setGeantParentPID(parentPid);
			part->setGeantGrandParentTrackNum(grandparentTr);
			part->setGeantGrandParentPID(grandparentPid);
			part->setGeantCreationMechanism(mechanism);
			part->setGeantMediumNumber(medium);
			part->setGeantGeninfo  (geninfo);
			part->setGeantGeninfo1 (geninfo1);
			part->setGeantGeninfo2 (geninfo2);
			part->setGeantGenweight(genweight);

		    } else {
                       Error("fillParticleCandSim()","NULL pointer received for kine object of trackNum = %i",tr);
		    }

		} else if (tr == gHades->getEmbeddingRealTrackId()){ // REAL data track
                    part->setGeantTrack(tr);
		}

		Int_t ntr = 0;
		Int_t selMeta = part->getSelectedMeta();

		if        (selMeta == kTofClst || selMeta == kTofHit1 || selMeta == kTofHit2 ) {
		    ntr = tofTracks.tracks.size();
		    if(ntr > 4) ntr = 4;
		    for(Int_t i = 0; i < ntr; i++){
			part->setGeantTrackMeta(tofTracks.tracks[i]->tr,i);
		    }

		} else if (selMeta == kRpcClst){

		    ntr = rpcTracks.tracks.size();
		    if(ntr > 4) ntr = 4;
		    for(Int_t i = 0; i < ntr; i++){
			part->setGeantTrackMeta(rpcTracks.tracks[i]->tr,i);
		    }


		} else if (selMeta == kShowerHit){

		    ntr = showerTracks.tracks.size();
		    if(ntr > 4) ntr = 4;
		    for(Int_t i = 0; i < ntr; i++){
			part->setGeantTrackMeta(showerTracks.tracks[i]->tr,i);
		    }
		} else if (selMeta == kEmcClst){

		    ntr = emcTracks.tracks.size();
		    if(ntr > 4) ntr = 4;
		    for(Int_t i = 0; i < ntr; i++){
			part->setGeantTrackMeta(emcTracks.tracks[i]->tr,i);
		    }
		}
		if(isEMC)
		{
		    ntr = emcTracks.tracks.size();
		    if(ntr > 4) ntr = 4;
		    for(Int_t i = 0; i < ntr; i++){
			part->setGeantTrackEmc(emcTracks.tracks[i]->tr,i);
		    }
		} else {
		    ntr = showerTracks.tracks.size();
		    if(ntr > 4) ntr = 4;
		    for(Int_t i = 0; i < ntr; i++){
			part->setGeantTrackShower(showerTracks.tracks[i]->tr,i);
		    }
		}

		ntr = richTracks.tracks.size();
		if(ntr > 3) ntr = 3;
		for(Int_t i = 0; i < ntr; i++){
		    part->setGeantTrackRich(richTracks.tracks[i]->tr,i);
		}

		ntr = mdc1Tracks.tracks.size();
                if(ntr > 2) ntr = 2;
                for(Int_t i = 0; i < ntr; i++){
		    part->setGeantTrackInnerMdc(mdc1Tracks.tracks[i]->tr,i,mdc1Tracks.tracks[i]->n);
		}

		ntr = mdc2Tracks.tracks.size();
                if(ntr > 2) ntr = 2;
                for(Int_t i = 0; i < ntr; i++){
		    part->setGeantTrackOuterMdc(mdc2Tracks.tracks[i]->tr,i,mdc2Tracks.tracks[i]->n);
		}

	    }
	}
    }
    Float_t deltaThetaSeg1(){ return   richhit.theta - seg1.theta; } // delta theta Rich-MDC
    Float_t deltaPhiSeg1()  {
	Float_t dPhi_uncorr = (richhit.phi - seg1.phi);
	if     (dPhi_uncorr >  180.) dPhi_uncorr -= 360.;
	else if(dPhi_uncorr < -180.) dPhi_uncorr += 360.;
	return dPhi_uncorr * TMath::Sin(TMath::DegToRad() * seg1.theta);
    }
    Float_t deltaThetaRk()  { return   richhit.theta - rk.theta; }   // delta theta Rich-MDC
    Float_t deltaPhiRk()  {
	Float_t dPhi_uncorr = (richhit.phi - rk.phi);
	if     (dPhi_uncorr >  180.) dPhi_uncorr -= 360.;
	else if(dPhi_uncorr < -180.) dPhi_uncorr += 360.;
	return dPhi_uncorr * TMath::Sin(TMath::DegToRad() * rk.theta);
    }
    Float_t deltaThetaKal() { return   richhit.theta - kal.theta; }   // delta theta Rich-MDC
    Float_t deltaPhiKal()  {
	Float_t dPhi_uncorr = (richhit.phi - rk.phi);
	if     (dPhi_uncorr >  180.) dPhi_uncorr -= 360.;
	else if(dPhi_uncorr < -180.) dPhi_uncorr += 360.;
	return dPhi_uncorr * TMath::Sin(TMath::DegToRad() * rk.theta);
    }

    ClassDef(candidate,1);
};


//---------------------------------------------------------------------------------


#endif // __HPARTICLESTRUCTS_H__
 hparticlestructs.h:1
 hparticlestructs.h:2
 hparticlestructs.h:3
 hparticlestructs.h:4
 hparticlestructs.h:5
 hparticlestructs.h:6
 hparticlestructs.h:7
 hparticlestructs.h:8
 hparticlestructs.h:9
 hparticlestructs.h:10
 hparticlestructs.h:11
 hparticlestructs.h:12
 hparticlestructs.h:13
 hparticlestructs.h:14
 hparticlestructs.h:15
 hparticlestructs.h:16
 hparticlestructs.h:17
 hparticlestructs.h:18
 hparticlestructs.h:19
 hparticlestructs.h:20
 hparticlestructs.h:21
 hparticlestructs.h:22
 hparticlestructs.h:23
 hparticlestructs.h:24
 hparticlestructs.h:25
 hparticlestructs.h:26
 hparticlestructs.h:27
 hparticlestructs.h:28
 hparticlestructs.h:29
 hparticlestructs.h:30
 hparticlestructs.h:31
 hparticlestructs.h:32
 hparticlestructs.h:33
 hparticlestructs.h:34
 hparticlestructs.h:35
 hparticlestructs.h:36
 hparticlestructs.h:37
 hparticlestructs.h:38
 hparticlestructs.h:39
 hparticlestructs.h:40
 hparticlestructs.h:41
 hparticlestructs.h:42
 hparticlestructs.h:43
 hparticlestructs.h:44
 hparticlestructs.h:45
 hparticlestructs.h:46
 hparticlestructs.h:47
 hparticlestructs.h:48
 hparticlestructs.h:49
 hparticlestructs.h:50
 hparticlestructs.h:51
 hparticlestructs.h:52
 hparticlestructs.h:53
 hparticlestructs.h:54
 hparticlestructs.h:55
 hparticlestructs.h:56
 hparticlestructs.h:57
 hparticlestructs.h:58
 hparticlestructs.h:59
 hparticlestructs.h:60
 hparticlestructs.h:61
 hparticlestructs.h:62
 hparticlestructs.h:63
 hparticlestructs.h:64
 hparticlestructs.h:65
 hparticlestructs.h:66
 hparticlestructs.h:67
 hparticlestructs.h:68
 hparticlestructs.h:69
 hparticlestructs.h:70
 hparticlestructs.h:71
 hparticlestructs.h:72
 hparticlestructs.h:73
 hparticlestructs.h:74
 hparticlestructs.h:75
 hparticlestructs.h:76
 hparticlestructs.h:77
 hparticlestructs.h:78
 hparticlestructs.h:79
 hparticlestructs.h:80
 hparticlestructs.h:81
 hparticlestructs.h:82
 hparticlestructs.h:83
 hparticlestructs.h:84
 hparticlestructs.h:85
 hparticlestructs.h:86
 hparticlestructs.h:87
 hparticlestructs.h:88
 hparticlestructs.h:89
 hparticlestructs.h:90
 hparticlestructs.h:91
 hparticlestructs.h:92
 hparticlestructs.h:93
 hparticlestructs.h:94
 hparticlestructs.h:95
 hparticlestructs.h:96
 hparticlestructs.h:97
 hparticlestructs.h:98
 hparticlestructs.h:99
 hparticlestructs.h:100
 hparticlestructs.h:101
 hparticlestructs.h:102
 hparticlestructs.h:103
 hparticlestructs.h:104
 hparticlestructs.h:105
 hparticlestructs.h:106
 hparticlestructs.h:107
 hparticlestructs.h:108
 hparticlestructs.h:109
 hparticlestructs.h:110
 hparticlestructs.h:111
 hparticlestructs.h:112
 hparticlestructs.h:113
 hparticlestructs.h:114
 hparticlestructs.h:115
 hparticlestructs.h:116
 hparticlestructs.h:117
 hparticlestructs.h:118
 hparticlestructs.h:119
 hparticlestructs.h:120
 hparticlestructs.h:121
 hparticlestructs.h:122
 hparticlestructs.h:123
 hparticlestructs.h:124
 hparticlestructs.h:125
 hparticlestructs.h:126
 hparticlestructs.h:127
 hparticlestructs.h:128
 hparticlestructs.h:129
 hparticlestructs.h:130
 hparticlestructs.h:131
 hparticlestructs.h:132
 hparticlestructs.h:133
 hparticlestructs.h:134
 hparticlestructs.h:135
 hparticlestructs.h:136
 hparticlestructs.h:137
 hparticlestructs.h:138
 hparticlestructs.h:139
 hparticlestructs.h:140
 hparticlestructs.h:141
 hparticlestructs.h:142
 hparticlestructs.h:143
 hparticlestructs.h:144
 hparticlestructs.h:145
 hparticlestructs.h:146
 hparticlestructs.h:147
 hparticlestructs.h:148
 hparticlestructs.h:149
 hparticlestructs.h:150
 hparticlestructs.h:151
 hparticlestructs.h:152
 hparticlestructs.h:153
 hparticlestructs.h:154
 hparticlestructs.h:155
 hparticlestructs.h:156
 hparticlestructs.h:157
 hparticlestructs.h:158
 hparticlestructs.h:159
 hparticlestructs.h:160
 hparticlestructs.h:161
 hparticlestructs.h:162
 hparticlestructs.h:163
 hparticlestructs.h:164
 hparticlestructs.h:165
 hparticlestructs.h:166
 hparticlestructs.h:167
 hparticlestructs.h:168
 hparticlestructs.h:169
 hparticlestructs.h:170
 hparticlestructs.h:171
 hparticlestructs.h:172
 hparticlestructs.h:173
 hparticlestructs.h:174
 hparticlestructs.h:175
 hparticlestructs.h:176
 hparticlestructs.h:177
 hparticlestructs.h:178
 hparticlestructs.h:179
 hparticlestructs.h:180
 hparticlestructs.h:181
 hparticlestructs.h:182
 hparticlestructs.h:183
 hparticlestructs.h:184
 hparticlestructs.h:185
 hparticlestructs.h:186
 hparticlestructs.h:187
 hparticlestructs.h:188
 hparticlestructs.h:189
 hparticlestructs.h:190
 hparticlestructs.h:191
 hparticlestructs.h:192
 hparticlestructs.h:193
 hparticlestructs.h:194
 hparticlestructs.h:195
 hparticlestructs.h:196
 hparticlestructs.h:197
 hparticlestructs.h:198
 hparticlestructs.h:199
 hparticlestructs.h:200
 hparticlestructs.h:201
 hparticlestructs.h:202
 hparticlestructs.h:203
 hparticlestructs.h:204
 hparticlestructs.h:205
 hparticlestructs.h:206
 hparticlestructs.h:207
 hparticlestructs.h:208
 hparticlestructs.h:209
 hparticlestructs.h:210
 hparticlestructs.h:211
 hparticlestructs.h:212
 hparticlestructs.h:213
 hparticlestructs.h:214
 hparticlestructs.h:215
 hparticlestructs.h:216
 hparticlestructs.h:217
 hparticlestructs.h:218
 hparticlestructs.h:219
 hparticlestructs.h:220
 hparticlestructs.h:221
 hparticlestructs.h:222
 hparticlestructs.h:223
 hparticlestructs.h:224
 hparticlestructs.h:225
 hparticlestructs.h:226
 hparticlestructs.h:227
 hparticlestructs.h:228
 hparticlestructs.h:229
 hparticlestructs.h:230
 hparticlestructs.h:231
 hparticlestructs.h:232
 hparticlestructs.h:233
 hparticlestructs.h:234
 hparticlestructs.h:235
 hparticlestructs.h:236
 hparticlestructs.h:237
 hparticlestructs.h:238
 hparticlestructs.h:239
 hparticlestructs.h:240
 hparticlestructs.h:241
 hparticlestructs.h:242
 hparticlestructs.h:243
 hparticlestructs.h:244
 hparticlestructs.h:245
 hparticlestructs.h:246
 hparticlestructs.h:247
 hparticlestructs.h:248
 hparticlestructs.h:249
 hparticlestructs.h:250
 hparticlestructs.h:251
 hparticlestructs.h:252
 hparticlestructs.h:253
 hparticlestructs.h:254
 hparticlestructs.h:255
 hparticlestructs.h:256
 hparticlestructs.h:257
 hparticlestructs.h:258
 hparticlestructs.h:259
 hparticlestructs.h:260
 hparticlestructs.h:261
 hparticlestructs.h:262
 hparticlestructs.h:263
 hparticlestructs.h:264
 hparticlestructs.h:265
 hparticlestructs.h:266
 hparticlestructs.h:267
 hparticlestructs.h:268
 hparticlestructs.h:269
 hparticlestructs.h:270
 hparticlestructs.h:271
 hparticlestructs.h:272
 hparticlestructs.h:273
 hparticlestructs.h:274
 hparticlestructs.h:275
 hparticlestructs.h:276
 hparticlestructs.h:277
 hparticlestructs.h:278
 hparticlestructs.h:279
 hparticlestructs.h:280
 hparticlestructs.h:281
 hparticlestructs.h:282
 hparticlestructs.h:283
 hparticlestructs.h:284
 hparticlestructs.h:285
 hparticlestructs.h:286
 hparticlestructs.h:287
 hparticlestructs.h:288
 hparticlestructs.h:289
 hparticlestructs.h:290
 hparticlestructs.h:291
 hparticlestructs.h:292
 hparticlestructs.h:293
 hparticlestructs.h:294
 hparticlestructs.h:295
 hparticlestructs.h:296
 hparticlestructs.h:297
 hparticlestructs.h:298
 hparticlestructs.h:299
 hparticlestructs.h:300
 hparticlestructs.h:301
 hparticlestructs.h:302
 hparticlestructs.h:303
 hparticlestructs.h:304
 hparticlestructs.h:305
 hparticlestructs.h:306
 hparticlestructs.h:307
 hparticlestructs.h:308
 hparticlestructs.h:309
 hparticlestructs.h:310
 hparticlestructs.h:311
 hparticlestructs.h:312
 hparticlestructs.h:313
 hparticlestructs.h:314
 hparticlestructs.h:315
 hparticlestructs.h:316
 hparticlestructs.h:317
 hparticlestructs.h:318
 hparticlestructs.h:319
 hparticlestructs.h:320
 hparticlestructs.h:321
 hparticlestructs.h:322
 hparticlestructs.h:323
 hparticlestructs.h:324
 hparticlestructs.h:325
 hparticlestructs.h:326
 hparticlestructs.h:327
 hparticlestructs.h:328
 hparticlestructs.h:329
 hparticlestructs.h:330
 hparticlestructs.h:331
 hparticlestructs.h:332
 hparticlestructs.h:333
 hparticlestructs.h:334
 hparticlestructs.h:335
 hparticlestructs.h:336
 hparticlestructs.h:337
 hparticlestructs.h:338
 hparticlestructs.h:339
 hparticlestructs.h:340
 hparticlestructs.h:341
 hparticlestructs.h:342
 hparticlestructs.h:343
 hparticlestructs.h:344
 hparticlestructs.h:345
 hparticlestructs.h:346
 hparticlestructs.h:347
 hparticlestructs.h:348
 hparticlestructs.h:349
 hparticlestructs.h:350
 hparticlestructs.h:351
 hparticlestructs.h:352
 hparticlestructs.h:353
 hparticlestructs.h:354
 hparticlestructs.h:355
 hparticlestructs.h:356
 hparticlestructs.h:357
 hparticlestructs.h:358
 hparticlestructs.h:359
 hparticlestructs.h:360
 hparticlestructs.h:361
 hparticlestructs.h:362
 hparticlestructs.h:363
 hparticlestructs.h:364
 hparticlestructs.h:365
 hparticlestructs.h:366
 hparticlestructs.h:367
 hparticlestructs.h:368
 hparticlestructs.h:369
 hparticlestructs.h:370
 hparticlestructs.h:371
 hparticlestructs.h:372
 hparticlestructs.h:373
 hparticlestructs.h:374
 hparticlestructs.h:375
 hparticlestructs.h:376
 hparticlestructs.h:377
 hparticlestructs.h:378
 hparticlestructs.h:379
 hparticlestructs.h:380
 hparticlestructs.h:381
 hparticlestructs.h:382
 hparticlestructs.h:383
 hparticlestructs.h:384
 hparticlestructs.h:385
 hparticlestructs.h:386
 hparticlestructs.h:387
 hparticlestructs.h:388
 hparticlestructs.h:389
 hparticlestructs.h:390
 hparticlestructs.h:391
 hparticlestructs.h:392
 hparticlestructs.h:393
 hparticlestructs.h:394
 hparticlestructs.h:395
 hparticlestructs.h:396
 hparticlestructs.h:397
 hparticlestructs.h:398
 hparticlestructs.h:399
 hparticlestructs.h:400
 hparticlestructs.h:401
 hparticlestructs.h:402
 hparticlestructs.h:403
 hparticlestructs.h:404
 hparticlestructs.h:405
 hparticlestructs.h:406
 hparticlestructs.h:407
 hparticlestructs.h:408
 hparticlestructs.h:409
 hparticlestructs.h:410
 hparticlestructs.h:411
 hparticlestructs.h:412
 hparticlestructs.h:413
 hparticlestructs.h:414
 hparticlestructs.h:415
 hparticlestructs.h:416
 hparticlestructs.h:417
 hparticlestructs.h:418
 hparticlestructs.h:419
 hparticlestructs.h:420
 hparticlestructs.h:421
 hparticlestructs.h:422
 hparticlestructs.h:423
 hparticlestructs.h:424
 hparticlestructs.h:425
 hparticlestructs.h:426
 hparticlestructs.h:427
 hparticlestructs.h:428
 hparticlestructs.h:429
 hparticlestructs.h:430
 hparticlestructs.h:431
 hparticlestructs.h:432
 hparticlestructs.h:433
 hparticlestructs.h:434
 hparticlestructs.h:435
 hparticlestructs.h:436
 hparticlestructs.h:437
 hparticlestructs.h:438
 hparticlestructs.h:439
 hparticlestructs.h:440
 hparticlestructs.h:441
 hparticlestructs.h:442
 hparticlestructs.h:443
 hparticlestructs.h:444
 hparticlestructs.h:445
 hparticlestructs.h:446
 hparticlestructs.h:447
 hparticlestructs.h:448
 hparticlestructs.h:449
 hparticlestructs.h:450
 hparticlestructs.h:451
 hparticlestructs.h:452
 hparticlestructs.h:453
 hparticlestructs.h:454
 hparticlestructs.h:455
 hparticlestructs.h:456
 hparticlestructs.h:457
 hparticlestructs.h:458
 hparticlestructs.h:459
 hparticlestructs.h:460
 hparticlestructs.h:461
 hparticlestructs.h:462
 hparticlestructs.h:463
 hparticlestructs.h:464
 hparticlestructs.h:465
 hparticlestructs.h:466
 hparticlestructs.h:467
 hparticlestructs.h:468
 hparticlestructs.h:469
 hparticlestructs.h:470
 hparticlestructs.h:471
 hparticlestructs.h:472
 hparticlestructs.h:473
 hparticlestructs.h:474
 hparticlestructs.h:475
 hparticlestructs.h:476
 hparticlestructs.h:477
 hparticlestructs.h:478
 hparticlestructs.h:479
 hparticlestructs.h:480
 hparticlestructs.h:481
 hparticlestructs.h:482
 hparticlestructs.h:483
 hparticlestructs.h:484
 hparticlestructs.h:485
 hparticlestructs.h:486
 hparticlestructs.h:487
 hparticlestructs.h:488
 hparticlestructs.h:489
 hparticlestructs.h:490
 hparticlestructs.h:491
 hparticlestructs.h:492
 hparticlestructs.h:493
 hparticlestructs.h:494
 hparticlestructs.h:495
 hparticlestructs.h:496
 hparticlestructs.h:497
 hparticlestructs.h:498
 hparticlestructs.h:499
 hparticlestructs.h:500
 hparticlestructs.h:501
 hparticlestructs.h:502
 hparticlestructs.h:503
 hparticlestructs.h:504
 hparticlestructs.h:505
 hparticlestructs.h:506
 hparticlestructs.h:507
 hparticlestructs.h:508
 hparticlestructs.h:509
 hparticlestructs.h:510
 hparticlestructs.h:511
 hparticlestructs.h:512
 hparticlestructs.h:513
 hparticlestructs.h:514
 hparticlestructs.h:515
 hparticlestructs.h:516
 hparticlestructs.h:517
 hparticlestructs.h:518
 hparticlestructs.h:519
 hparticlestructs.h:520
 hparticlestructs.h:521
 hparticlestructs.h:522
 hparticlestructs.h:523
 hparticlestructs.h:524
 hparticlestructs.h:525
 hparticlestructs.h:526
 hparticlestructs.h:527
 hparticlestructs.h:528
 hparticlestructs.h:529
 hparticlestructs.h:530
 hparticlestructs.h:531
 hparticlestructs.h:532
 hparticlestructs.h:533
 hparticlestructs.h:534
 hparticlestructs.h:535
 hparticlestructs.h:536
 hparticlestructs.h:537
 hparticlestructs.h:538
 hparticlestructs.h:539
 hparticlestructs.h:540
 hparticlestructs.h:541
 hparticlestructs.h:542
 hparticlestructs.h:543
 hparticlestructs.h:544
 hparticlestructs.h:545
 hparticlestructs.h:546
 hparticlestructs.h:547
 hparticlestructs.h:548
 hparticlestructs.h:549
 hparticlestructs.h:550
 hparticlestructs.h:551
 hparticlestructs.h:552
 hparticlestructs.h:553
 hparticlestructs.h:554
 hparticlestructs.h:555
 hparticlestructs.h:556
 hparticlestructs.h:557
 hparticlestructs.h:558
 hparticlestructs.h:559
 hparticlestructs.h:560
 hparticlestructs.h:561
 hparticlestructs.h:562
 hparticlestructs.h:563
 hparticlestructs.h:564
 hparticlestructs.h:565
 hparticlestructs.h:566
 hparticlestructs.h:567
 hparticlestructs.h:568
 hparticlestructs.h:569
 hparticlestructs.h:570
 hparticlestructs.h:571
 hparticlestructs.h:572
 hparticlestructs.h:573
 hparticlestructs.h:574
 hparticlestructs.h:575
 hparticlestructs.h:576
 hparticlestructs.h:577
 hparticlestructs.h:578
 hparticlestructs.h:579
 hparticlestructs.h:580
 hparticlestructs.h:581
 hparticlestructs.h:582
 hparticlestructs.h:583
 hparticlestructs.h:584
 hparticlestructs.h:585
 hparticlestructs.h:586
 hparticlestructs.h:587
 hparticlestructs.h:588
 hparticlestructs.h:589
 hparticlestructs.h:590
 hparticlestructs.h:591
 hparticlestructs.h:592
 hparticlestructs.h:593
 hparticlestructs.h:594
 hparticlestructs.h:595
 hparticlestructs.h:596
 hparticlestructs.h:597
 hparticlestructs.h:598
 hparticlestructs.h:599
 hparticlestructs.h:600
 hparticlestructs.h:601
 hparticlestructs.h:602
 hparticlestructs.h:603
 hparticlestructs.h:604
 hparticlestructs.h:605
 hparticlestructs.h:606
 hparticlestructs.h:607
 hparticlestructs.h:608
 hparticlestructs.h:609
 hparticlestructs.h:610
 hparticlestructs.h:611
 hparticlestructs.h:612
 hparticlestructs.h:613
 hparticlestructs.h:614
 hparticlestructs.h:615
 hparticlestructs.h:616
 hparticlestructs.h:617
 hparticlestructs.h:618
 hparticlestructs.h:619
 hparticlestructs.h:620
 hparticlestructs.h:621
 hparticlestructs.h:622
 hparticlestructs.h:623
 hparticlestructs.h:624
 hparticlestructs.h:625
 hparticlestructs.h:626
 hparticlestructs.h:627
 hparticlestructs.h:628
 hparticlestructs.h:629
 hparticlestructs.h:630
 hparticlestructs.h:631
 hparticlestructs.h:632
 hparticlestructs.h:633
 hparticlestructs.h:634
 hparticlestructs.h:635
 hparticlestructs.h:636
 hparticlestructs.h:637
 hparticlestructs.h:638
 hparticlestructs.h:639
 hparticlestructs.h:640
 hparticlestructs.h:641
 hparticlestructs.h:642
 hparticlestructs.h:643
 hparticlestructs.h:644
 hparticlestructs.h:645
 hparticlestructs.h:646
 hparticlestructs.h:647
 hparticlestructs.h:648
 hparticlestructs.h:649
 hparticlestructs.h:650
 hparticlestructs.h:651
 hparticlestructs.h:652
 hparticlestructs.h:653
 hparticlestructs.h:654
 hparticlestructs.h:655
 hparticlestructs.h:656
 hparticlestructs.h:657
 hparticlestructs.h:658
 hparticlestructs.h:659
 hparticlestructs.h:660
 hparticlestructs.h:661
 hparticlestructs.h:662
 hparticlestructs.h:663
 hparticlestructs.h:664
 hparticlestructs.h:665
 hparticlestructs.h:666
 hparticlestructs.h:667
 hparticlestructs.h:668
 hparticlestructs.h:669
 hparticlestructs.h:670
 hparticlestructs.h:671
 hparticlestructs.h:672
 hparticlestructs.h:673
 hparticlestructs.h:674
 hparticlestructs.h:675
 hparticlestructs.h:676
 hparticlestructs.h:677
 hparticlestructs.h:678
 hparticlestructs.h:679
 hparticlestructs.h:680
 hparticlestructs.h:681
 hparticlestructs.h:682
 hparticlestructs.h:683
 hparticlestructs.h:684
 hparticlestructs.h:685
 hparticlestructs.h:686
 hparticlestructs.h:687
 hparticlestructs.h:688
 hparticlestructs.h:689
 hparticlestructs.h:690
 hparticlestructs.h:691
 hparticlestructs.h:692
 hparticlestructs.h:693
 hparticlestructs.h:694
 hparticlestructs.h:695
 hparticlestructs.h:696
 hparticlestructs.h:697
 hparticlestructs.h:698
 hparticlestructs.h:699
 hparticlestructs.h:700
 hparticlestructs.h:701
 hparticlestructs.h:702
 hparticlestructs.h:703
 hparticlestructs.h:704
 hparticlestructs.h:705
 hparticlestructs.h:706
 hparticlestructs.h:707
 hparticlestructs.h:708
 hparticlestructs.h:709
 hparticlestructs.h:710
 hparticlestructs.h:711
 hparticlestructs.h:712
 hparticlestructs.h:713
 hparticlestructs.h:714
 hparticlestructs.h:715
 hparticlestructs.h:716
 hparticlestructs.h:717
 hparticlestructs.h:718
 hparticlestructs.h:719
 hparticlestructs.h:720
 hparticlestructs.h:721
 hparticlestructs.h:722
 hparticlestructs.h:723
 hparticlestructs.h:724
 hparticlestructs.h:725
 hparticlestructs.h:726
 hparticlestructs.h:727
 hparticlestructs.h:728
 hparticlestructs.h:729
 hparticlestructs.h:730
 hparticlestructs.h:731
 hparticlestructs.h:732
 hparticlestructs.h:733
 hparticlestructs.h:734
 hparticlestructs.h:735
 hparticlestructs.h:736
 hparticlestructs.h:737
 hparticlestructs.h:738
 hparticlestructs.h:739
 hparticlestructs.h:740
 hparticlestructs.h:741
 hparticlestructs.h:742
 hparticlestructs.h:743
 hparticlestructs.h:744
 hparticlestructs.h:745
 hparticlestructs.h:746
 hparticlestructs.h:747
 hparticlestructs.h:748
 hparticlestructs.h:749
 hparticlestructs.h:750
 hparticlestructs.h:751
 hparticlestructs.h:752
 hparticlestructs.h:753
 hparticlestructs.h:754
 hparticlestructs.h:755
 hparticlestructs.h:756
 hparticlestructs.h:757
 hparticlestructs.h:758
 hparticlestructs.h:759
 hparticlestructs.h:760
 hparticlestructs.h:761
 hparticlestructs.h:762
 hparticlestructs.h:763
 hparticlestructs.h:764
 hparticlestructs.h:765
 hparticlestructs.h:766
 hparticlestructs.h:767
 hparticlestructs.h:768
 hparticlestructs.h:769
 hparticlestructs.h:770
 hparticlestructs.h:771
 hparticlestructs.h:772
 hparticlestructs.h:773
 hparticlestructs.h:774
 hparticlestructs.h:775
 hparticlestructs.h:776
 hparticlestructs.h:777
 hparticlestructs.h:778
 hparticlestructs.h:779
 hparticlestructs.h:780
 hparticlestructs.h:781
 hparticlestructs.h:782
 hparticlestructs.h:783
 hparticlestructs.h:784
 hparticlestructs.h:785
 hparticlestructs.h:786
 hparticlestructs.h:787
 hparticlestructs.h:788
 hparticlestructs.h:789
 hparticlestructs.h:790
 hparticlestructs.h:791
 hparticlestructs.h:792
 hparticlestructs.h:793
 hparticlestructs.h:794
 hparticlestructs.h:795
 hparticlestructs.h:796
 hparticlestructs.h:797
 hparticlestructs.h:798
 hparticlestructs.h:799
 hparticlestructs.h:800
 hparticlestructs.h:801
 hparticlestructs.h:802
 hparticlestructs.h:803
 hparticlestructs.h:804
 hparticlestructs.h:805
 hparticlestructs.h:806
 hparticlestructs.h:807
 hparticlestructs.h:808
 hparticlestructs.h:809
 hparticlestructs.h:810
 hparticlestructs.h:811
 hparticlestructs.h:812
 hparticlestructs.h:813
 hparticlestructs.h:814
 hparticlestructs.h:815
 hparticlestructs.h:816
 hparticlestructs.h:817
 hparticlestructs.h:818
 hparticlestructs.h:819
 hparticlestructs.h:820
 hparticlestructs.h:821
 hparticlestructs.h:822
 hparticlestructs.h:823
 hparticlestructs.h:824
 hparticlestructs.h:825
 hparticlestructs.h:826
 hparticlestructs.h:827
 hparticlestructs.h:828
 hparticlestructs.h:829
 hparticlestructs.h:830
 hparticlestructs.h:831
 hparticlestructs.h:832
 hparticlestructs.h:833
 hparticlestructs.h:834
 hparticlestructs.h:835
 hparticlestructs.h:836
 hparticlestructs.h:837
 hparticlestructs.h:838
 hparticlestructs.h:839
 hparticlestructs.h:840
 hparticlestructs.h:841
 hparticlestructs.h:842
 hparticlestructs.h:843
 hparticlestructs.h:844
 hparticlestructs.h:845
 hparticlestructs.h:846
 hparticlestructs.h:847
 hparticlestructs.h:848
 hparticlestructs.h:849
 hparticlestructs.h:850
 hparticlestructs.h:851
 hparticlestructs.h:852
 hparticlestructs.h:853
 hparticlestructs.h:854
 hparticlestructs.h:855
 hparticlestructs.h:856
 hparticlestructs.h:857
 hparticlestructs.h:858
 hparticlestructs.h:859
 hparticlestructs.h:860
 hparticlestructs.h:861
 hparticlestructs.h:862
 hparticlestructs.h:863
 hparticlestructs.h:864
 hparticlestructs.h:865
 hparticlestructs.h:866
 hparticlestructs.h:867
 hparticlestructs.h:868
 hparticlestructs.h:869
 hparticlestructs.h:870
 hparticlestructs.h:871
 hparticlestructs.h:872
 hparticlestructs.h:873
 hparticlestructs.h:874
 hparticlestructs.h:875
 hparticlestructs.h:876
 hparticlestructs.h:877
 hparticlestructs.h:878
 hparticlestructs.h:879
 hparticlestructs.h:880
 hparticlestructs.h:881
 hparticlestructs.h:882
 hparticlestructs.h:883
 hparticlestructs.h:884
 hparticlestructs.h:885
 hparticlestructs.h:886
 hparticlestructs.h:887
 hparticlestructs.h:888
 hparticlestructs.h:889
 hparticlestructs.h:890
 hparticlestructs.h:891
 hparticlestructs.h:892
 hparticlestructs.h:893
 hparticlestructs.h:894
 hparticlestructs.h:895
 hparticlestructs.h:896
 hparticlestructs.h:897
 hparticlestructs.h:898
 hparticlestructs.h:899
 hparticlestructs.h:900
 hparticlestructs.h:901
 hparticlestructs.h:902
 hparticlestructs.h:903
 hparticlestructs.h:904
 hparticlestructs.h:905
 hparticlestructs.h:906
 hparticlestructs.h:907
 hparticlestructs.h:908
 hparticlestructs.h:909
 hparticlestructs.h:910
 hparticlestructs.h:911
 hparticlestructs.h:912
 hparticlestructs.h:913
 hparticlestructs.h:914
 hparticlestructs.h:915
 hparticlestructs.h:916
 hparticlestructs.h:917
 hparticlestructs.h:918
 hparticlestructs.h:919
 hparticlestructs.h:920
 hparticlestructs.h:921
 hparticlestructs.h:922
 hparticlestructs.h:923
 hparticlestructs.h:924
 hparticlestructs.h:925
 hparticlestructs.h:926
 hparticlestructs.h:927
 hparticlestructs.h:928
 hparticlestructs.h:929
 hparticlestructs.h:930
 hparticlestructs.h:931
 hparticlestructs.h:932
 hparticlestructs.h:933
 hparticlestructs.h:934
 hparticlestructs.h:935
 hparticlestructs.h:936
 hparticlestructs.h:937
 hparticlestructs.h:938
 hparticlestructs.h:939
 hparticlestructs.h:940
 hparticlestructs.h:941
 hparticlestructs.h:942
 hparticlestructs.h:943
 hparticlestructs.h:944
 hparticlestructs.h:945
 hparticlestructs.h:946
 hparticlestructs.h:947
 hparticlestructs.h:948
 hparticlestructs.h:949
 hparticlestructs.h:950
 hparticlestructs.h:951
 hparticlestructs.h:952
 hparticlestructs.h:953
 hparticlestructs.h:954
 hparticlestructs.h:955
 hparticlestructs.h:956
 hparticlestructs.h:957
 hparticlestructs.h:958
 hparticlestructs.h:959
 hparticlestructs.h:960
 hparticlestructs.h:961
 hparticlestructs.h:962
 hparticlestructs.h:963
 hparticlestructs.h:964
 hparticlestructs.h:965
 hparticlestructs.h:966
 hparticlestructs.h:967
 hparticlestructs.h:968
 hparticlestructs.h:969
 hparticlestructs.h:970
 hparticlestructs.h:971
 hparticlestructs.h:972
 hparticlestructs.h:973
 hparticlestructs.h:974
 hparticlestructs.h:975
 hparticlestructs.h:976
 hparticlestructs.h:977
 hparticlestructs.h:978
 hparticlestructs.h:979
 hparticlestructs.h:980
 hparticlestructs.h:981
 hparticlestructs.h:982
 hparticlestructs.h:983
 hparticlestructs.h:984
 hparticlestructs.h:985
 hparticlestructs.h:986
 hparticlestructs.h:987
 hparticlestructs.h:988
 hparticlestructs.h:989
 hparticlestructs.h:990
 hparticlestructs.h:991
 hparticlestructs.h:992
 hparticlestructs.h:993
 hparticlestructs.h:994
 hparticlestructs.h:995
 hparticlestructs.h:996
 hparticlestructs.h:997
 hparticlestructs.h:998
 hparticlestructs.h:999
 hparticlestructs.h:1000
 hparticlestructs.h:1001
 hparticlestructs.h:1002
 hparticlestructs.h:1003
 hparticlestructs.h:1004
 hparticlestructs.h:1005
 hparticlestructs.h:1006
 hparticlestructs.h:1007
 hparticlestructs.h:1008
 hparticlestructs.h:1009
 hparticlestructs.h:1010
 hparticlestructs.h:1011
 hparticlestructs.h:1012
 hparticlestructs.h:1013
 hparticlestructs.h:1014
 hparticlestructs.h:1015
 hparticlestructs.h:1016
 hparticlestructs.h:1017
 hparticlestructs.h:1018
 hparticlestructs.h:1019
 hparticlestructs.h:1020
 hparticlestructs.h:1021
 hparticlestructs.h:1022
 hparticlestructs.h:1023
 hparticlestructs.h:1024
 hparticlestructs.h:1025
 hparticlestructs.h:1026
 hparticlestructs.h:1027
 hparticlestructs.h:1028
 hparticlestructs.h:1029
 hparticlestructs.h:1030
 hparticlestructs.h:1031
 hparticlestructs.h:1032
 hparticlestructs.h:1033
 hparticlestructs.h:1034
 hparticlestructs.h:1035
 hparticlestructs.h:1036
 hparticlestructs.h:1037
 hparticlestructs.h:1038
 hparticlestructs.h:1039
 hparticlestructs.h:1040
 hparticlestructs.h:1041
 hparticlestructs.h:1042
 hparticlestructs.h:1043
 hparticlestructs.h:1044
 hparticlestructs.h:1045
 hparticlestructs.h:1046
 hparticlestructs.h:1047
 hparticlestructs.h:1048
 hparticlestructs.h:1049
 hparticlestructs.h:1050
 hparticlestructs.h:1051
 hparticlestructs.h:1052
 hparticlestructs.h:1053
 hparticlestructs.h:1054
 hparticlestructs.h:1055
 hparticlestructs.h:1056
 hparticlestructs.h:1057
 hparticlestructs.h:1058
 hparticlestructs.h:1059
 hparticlestructs.h:1060
 hparticlestructs.h:1061
 hparticlestructs.h:1062
 hparticlestructs.h:1063
 hparticlestructs.h:1064
 hparticlestructs.h:1065
 hparticlestructs.h:1066
 hparticlestructs.h:1067
 hparticlestructs.h:1068
 hparticlestructs.h:1069
 hparticlestructs.h:1070
 hparticlestructs.h:1071
 hparticlestructs.h:1072
 hparticlestructs.h:1073
 hparticlestructs.h:1074
 hparticlestructs.h:1075
 hparticlestructs.h:1076
 hparticlestructs.h:1077
 hparticlestructs.h:1078
 hparticlestructs.h:1079
 hparticlestructs.h:1080
 hparticlestructs.h:1081
 hparticlestructs.h:1082
 hparticlestructs.h:1083
 hparticlestructs.h:1084
 hparticlestructs.h:1085
 hparticlestructs.h:1086
 hparticlestructs.h:1087
 hparticlestructs.h:1088
 hparticlestructs.h:1089
 hparticlestructs.h:1090
 hparticlestructs.h:1091
 hparticlestructs.h:1092
 hparticlestructs.h:1093
 hparticlestructs.h:1094
 hparticlestructs.h:1095
 hparticlestructs.h:1096
 hparticlestructs.h:1097
 hparticlestructs.h:1098
 hparticlestructs.h:1099
 hparticlestructs.h:1100
 hparticlestructs.h:1101
 hparticlestructs.h:1102
 hparticlestructs.h:1103
 hparticlestructs.h:1104
 hparticlestructs.h:1105
 hparticlestructs.h:1106
 hparticlestructs.h:1107
 hparticlestructs.h:1108
 hparticlestructs.h:1109
 hparticlestructs.h:1110
 hparticlestructs.h:1111
 hparticlestructs.h:1112
 hparticlestructs.h:1113
 hparticlestructs.h:1114
 hparticlestructs.h:1115
 hparticlestructs.h:1116
 hparticlestructs.h:1117
 hparticlestructs.h:1118
 hparticlestructs.h:1119
 hparticlestructs.h:1120
 hparticlestructs.h:1121
 hparticlestructs.h:1122
 hparticlestructs.h:1123
 hparticlestructs.h:1124
 hparticlestructs.h:1125
 hparticlestructs.h:1126
 hparticlestructs.h:1127
 hparticlestructs.h:1128
 hparticlestructs.h:1129
 hparticlestructs.h:1130
 hparticlestructs.h:1131
 hparticlestructs.h:1132
 hparticlestructs.h:1133
 hparticlestructs.h:1134
 hparticlestructs.h:1135
 hparticlestructs.h:1136
 hparticlestructs.h:1137
 hparticlestructs.h:1138
 hparticlestructs.h:1139
 hparticlestructs.h:1140
 hparticlestructs.h:1141
 hparticlestructs.h:1142
 hparticlestructs.h:1143
 hparticlestructs.h:1144
 hparticlestructs.h:1145
 hparticlestructs.h:1146
 hparticlestructs.h:1147
 hparticlestructs.h:1148
 hparticlestructs.h:1149
 hparticlestructs.h:1150
 hparticlestructs.h:1151
 hparticlestructs.h:1152
 hparticlestructs.h:1153
 hparticlestructs.h:1154
 hparticlestructs.h:1155
 hparticlestructs.h:1156
 hparticlestructs.h:1157
 hparticlestructs.h:1158
 hparticlestructs.h:1159
 hparticlestructs.h:1160
 hparticlestructs.h:1161
 hparticlestructs.h:1162
 hparticlestructs.h:1163
 hparticlestructs.h:1164
 hparticlestructs.h:1165
 hparticlestructs.h:1166
 hparticlestructs.h:1167
 hparticlestructs.h:1168
 hparticlestructs.h:1169
 hparticlestructs.h:1170
 hparticlestructs.h:1171
 hparticlestructs.h:1172
 hparticlestructs.h:1173
 hparticlestructs.h:1174
 hparticlestructs.h:1175
 hparticlestructs.h:1176
 hparticlestructs.h:1177
 hparticlestructs.h:1178
 hparticlestructs.h:1179
 hparticlestructs.h:1180
 hparticlestructs.h:1181
 hparticlestructs.h:1182
 hparticlestructs.h:1183
 hparticlestructs.h:1184
 hparticlestructs.h:1185
 hparticlestructs.h:1186
 hparticlestructs.h:1187
 hparticlestructs.h:1188
 hparticlestructs.h:1189
 hparticlestructs.h:1190
 hparticlestructs.h:1191
 hparticlestructs.h:1192
 hparticlestructs.h:1193
 hparticlestructs.h:1194
 hparticlestructs.h:1195
 hparticlestructs.h:1196
 hparticlestructs.h:1197
 hparticlestructs.h:1198
 hparticlestructs.h:1199
 hparticlestructs.h:1200
 hparticlestructs.h:1201
 hparticlestructs.h:1202
 hparticlestructs.h:1203
 hparticlestructs.h:1204
 hparticlestructs.h:1205
 hparticlestructs.h:1206
 hparticlestructs.h:1207
 hparticlestructs.h:1208
 hparticlestructs.h:1209
 hparticlestructs.h:1210
 hparticlestructs.h:1211
 hparticlestructs.h:1212
 hparticlestructs.h:1213
 hparticlestructs.h:1214
 hparticlestructs.h:1215
 hparticlestructs.h:1216
 hparticlestructs.h:1217
 hparticlestructs.h:1218
 hparticlestructs.h:1219
 hparticlestructs.h:1220
 hparticlestructs.h:1221
 hparticlestructs.h:1222
 hparticlestructs.h:1223
 hparticlestructs.h:1224
 hparticlestructs.h:1225
 hparticlestructs.h:1226
 hparticlestructs.h:1227
 hparticlestructs.h:1228
 hparticlestructs.h:1229
 hparticlestructs.h:1230
 hparticlestructs.h:1231
 hparticlestructs.h:1232
 hparticlestructs.h:1233
 hparticlestructs.h:1234
 hparticlestructs.h:1235
 hparticlestructs.h:1236
 hparticlestructs.h:1237
 hparticlestructs.h:1238
 hparticlestructs.h:1239
 hparticlestructs.h:1240
 hparticlestructs.h:1241
 hparticlestructs.h:1242
 hparticlestructs.h:1243
 hparticlestructs.h:1244
 hparticlestructs.h:1245
 hparticlestructs.h:1246
 hparticlestructs.h:1247
 hparticlestructs.h:1248
 hparticlestructs.h:1249
 hparticlestructs.h:1250
 hparticlestructs.h:1251
 hparticlestructs.h:1252
 hparticlestructs.h:1253
 hparticlestructs.h:1254
 hparticlestructs.h:1255
 hparticlestructs.h:1256
 hparticlestructs.h:1257
 hparticlestructs.h:1258
 hparticlestructs.h:1259
 hparticlestructs.h:1260
 hparticlestructs.h:1261
 hparticlestructs.h:1262
 hparticlestructs.h:1263
 hparticlestructs.h:1264
 hparticlestructs.h:1265
 hparticlestructs.h:1266
 hparticlestructs.h:1267
 hparticlestructs.h:1268
 hparticlestructs.h:1269
 hparticlestructs.h:1270
 hparticlestructs.h:1271
 hparticlestructs.h:1272
 hparticlestructs.h:1273
 hparticlestructs.h:1274
 hparticlestructs.h:1275
 hparticlestructs.h:1276
 hparticlestructs.h:1277
 hparticlestructs.h:1278
 hparticlestructs.h:1279
 hparticlestructs.h:1280
 hparticlestructs.h:1281
 hparticlestructs.h:1282
 hparticlestructs.h:1283
 hparticlestructs.h:1284
 hparticlestructs.h:1285
 hparticlestructs.h:1286
 hparticlestructs.h:1287
 hparticlestructs.h:1288
 hparticlestructs.h:1289
 hparticlestructs.h:1290
 hparticlestructs.h:1291
 hparticlestructs.h:1292
 hparticlestructs.h:1293
 hparticlestructs.h:1294
 hparticlestructs.h:1295
 hparticlestructs.h:1296
 hparticlestructs.h:1297
 hparticlestructs.h:1298
 hparticlestructs.h:1299
 hparticlestructs.h:1300
 hparticlestructs.h:1301
 hparticlestructs.h:1302
 hparticlestructs.h:1303
 hparticlestructs.h:1304
 hparticlestructs.h:1305
 hparticlestructs.h:1306
 hparticlestructs.h:1307
 hparticlestructs.h:1308
 hparticlestructs.h:1309
 hparticlestructs.h:1310
 hparticlestructs.h:1311
 hparticlestructs.h:1312
 hparticlestructs.h:1313
 hparticlestructs.h:1314
 hparticlestructs.h:1315
 hparticlestructs.h:1316
 hparticlestructs.h:1317
 hparticlestructs.h:1318
 hparticlestructs.h:1319
 hparticlestructs.h:1320
 hparticlestructs.h:1321
 hparticlestructs.h:1322
 hparticlestructs.h:1323
 hparticlestructs.h:1324
 hparticlestructs.h:1325
 hparticlestructs.h:1326
 hparticlestructs.h:1327
 hparticlestructs.h:1328
 hparticlestructs.h:1329
 hparticlestructs.h:1330
 hparticlestructs.h:1331
 hparticlestructs.h:1332
 hparticlestructs.h:1333
 hparticlestructs.h:1334
 hparticlestructs.h:1335
 hparticlestructs.h:1336
 hparticlestructs.h:1337
 hparticlestructs.h:1338
 hparticlestructs.h:1339
 hparticlestructs.h:1340
 hparticlestructs.h:1341
 hparticlestructs.h:1342
 hparticlestructs.h:1343
 hparticlestructs.h:1344
 hparticlestructs.h:1345
 hparticlestructs.h:1346
 hparticlestructs.h:1347
 hparticlestructs.h:1348
 hparticlestructs.h:1349
 hparticlestructs.h:1350
 hparticlestructs.h:1351
 hparticlestructs.h:1352
 hparticlestructs.h:1353
 hparticlestructs.h:1354
 hparticlestructs.h:1355
 hparticlestructs.h:1356
 hparticlestructs.h:1357
 hparticlestructs.h:1358
 hparticlestructs.h:1359
 hparticlestructs.h:1360
 hparticlestructs.h:1361
 hparticlestructs.h:1362
 hparticlestructs.h:1363
 hparticlestructs.h:1364
 hparticlestructs.h:1365
 hparticlestructs.h:1366
 hparticlestructs.h:1367
 hparticlestructs.h:1368
 hparticlestructs.h:1369
 hparticlestructs.h:1370
 hparticlestructs.h:1371
 hparticlestructs.h:1372
 hparticlestructs.h:1373
 hparticlestructs.h:1374
 hparticlestructs.h:1375
 hparticlestructs.h:1376
 hparticlestructs.h:1377
 hparticlestructs.h:1378
 hparticlestructs.h:1379
 hparticlestructs.h:1380
 hparticlestructs.h:1381
 hparticlestructs.h:1382
 hparticlestructs.h:1383
 hparticlestructs.h:1384
 hparticlestructs.h:1385
 hparticlestructs.h:1386
 hparticlestructs.h:1387
 hparticlestructs.h:1388
 hparticlestructs.h:1389
 hparticlestructs.h:1390
 hparticlestructs.h:1391
 hparticlestructs.h:1392
 hparticlestructs.h:1393
 hparticlestructs.h:1394
 hparticlestructs.h:1395
 hparticlestructs.h:1396
 hparticlestructs.h:1397
 hparticlestructs.h:1398
 hparticlestructs.h:1399
 hparticlestructs.h:1400
 hparticlestructs.h:1401
 hparticlestructs.h:1402
 hparticlestructs.h:1403
 hparticlestructs.h:1404
 hparticlestructs.h:1405
 hparticlestructs.h:1406
 hparticlestructs.h:1407
 hparticlestructs.h:1408
 hparticlestructs.h:1409
 hparticlestructs.h:1410
 hparticlestructs.h:1411
 hparticlestructs.h:1412
 hparticlestructs.h:1413
 hparticlestructs.h:1414
 hparticlestructs.h:1415
 hparticlestructs.h:1416
 hparticlestructs.h:1417
 hparticlestructs.h:1418
 hparticlestructs.h:1419
 hparticlestructs.h:1420
 hparticlestructs.h:1421
 hparticlestructs.h:1422
 hparticlestructs.h:1423
 hparticlestructs.h:1424
 hparticlestructs.h:1425
 hparticlestructs.h:1426
 hparticlestructs.h:1427
 hparticlestructs.h:1428
 hparticlestructs.h:1429
 hparticlestructs.h:1430
 hparticlestructs.h:1431
 hparticlestructs.h:1432
 hparticlestructs.h:1433
 hparticlestructs.h:1434
 hparticlestructs.h:1435
 hparticlestructs.h:1436
 hparticlestructs.h:1437
 hparticlestructs.h:1438
 hparticlestructs.h:1439
 hparticlestructs.h:1440
 hparticlestructs.h:1441
 hparticlestructs.h:1442
 hparticlestructs.h:1443
 hparticlestructs.h:1444
 hparticlestructs.h:1445
 hparticlestructs.h:1446
 hparticlestructs.h:1447
 hparticlestructs.h:1448
 hparticlestructs.h:1449
 hparticlestructs.h:1450
 hparticlestructs.h:1451
 hparticlestructs.h:1452
 hparticlestructs.h:1453
 hparticlestructs.h:1454
 hparticlestructs.h:1455
 hparticlestructs.h:1456
 hparticlestructs.h:1457
 hparticlestructs.h:1458
 hparticlestructs.h:1459
 hparticlestructs.h:1460
 hparticlestructs.h:1461
 hparticlestructs.h:1462
 hparticlestructs.h:1463
 hparticlestructs.h:1464
 hparticlestructs.h:1465
 hparticlestructs.h:1466
 hparticlestructs.h:1467
 hparticlestructs.h:1468
 hparticlestructs.h:1469
 hparticlestructs.h:1470
 hparticlestructs.h:1471
 hparticlestructs.h:1472
 hparticlestructs.h:1473
 hparticlestructs.h:1474
 hparticlestructs.h:1475
 hparticlestructs.h:1476
 hparticlestructs.h:1477
 hparticlestructs.h:1478
 hparticlestructs.h:1479
 hparticlestructs.h:1480
 hparticlestructs.h:1481
 hparticlestructs.h:1482
 hparticlestructs.h:1483
 hparticlestructs.h:1484
 hparticlestructs.h:1485
 hparticlestructs.h:1486
 hparticlestructs.h:1487
 hparticlestructs.h:1488
 hparticlestructs.h:1489
 hparticlestructs.h:1490
 hparticlestructs.h:1491
 hparticlestructs.h:1492
 hparticlestructs.h:1493
 hparticlestructs.h:1494
 hparticlestructs.h:1495
 hparticlestructs.h:1496
 hparticlestructs.h:1497
 hparticlestructs.h:1498
 hparticlestructs.h:1499
 hparticlestructs.h:1500
 hparticlestructs.h:1501
 hparticlestructs.h:1502
 hparticlestructs.h:1503
 hparticlestructs.h:1504
 hparticlestructs.h:1505
 hparticlestructs.h:1506
 hparticlestructs.h:1507
 hparticlestructs.h:1508
 hparticlestructs.h:1509
 hparticlestructs.h:1510
 hparticlestructs.h:1511
 hparticlestructs.h:1512
 hparticlestructs.h:1513
 hparticlestructs.h:1514
 hparticlestructs.h:1515
 hparticlestructs.h:1516
 hparticlestructs.h:1517
 hparticlestructs.h:1518
 hparticlestructs.h:1519
 hparticlestructs.h:1520
 hparticlestructs.h:1521
 hparticlestructs.h:1522
 hparticlestructs.h:1523
 hparticlestructs.h:1524
 hparticlestructs.h:1525
 hparticlestructs.h:1526
 hparticlestructs.h:1527
 hparticlestructs.h:1528
 hparticlestructs.h:1529
 hparticlestructs.h:1530
 hparticlestructs.h:1531