ROOT logo
#include "hedhitobjects.h"
#include "hades.h"
#include "hruntimedb.h"
#include "hcategory.h"
#include "hphysicsconstants.h"
#include "hcategorymanager.h"


#include "hgeantdef.h"
#include "hmdcdef.h"
#include "hmdctrackddef.h"
#include "richdef.h"
#include "tofdef.h"
#include "walldef.h"
#include "showerdef.h"
#include "emcdef.h"
#include "rpcdef.h"
#include "hparticledef.h"

#include "hmdcseg.h"
#include "hmdcsegsim.h"
#include "hmdccal1.h"
#include "hmdccal1sim.h"
#include "hwallhit.h"
#include "hwallhitsim.h"
#include "htofhit.h"
#include "htofhitsim.h"
#include "htofcluster.h"
#include "htofclustersim.h"
#include "hshowerhit.h"
#include "hshowerhitsim.h"
#include "hemccluster.h"
#include "hemcclustersim.h"
#include "hrichhit.h"
#include "hrichhitsim.h"
#include "hrichcal.h"
#include "hrpccluster.h"
#include "hrpcclustersim.h"
#include "hmetamatch2.h"
#include "hparticlecand.h"
#include "hparticlecandsim.h"
#include "hparticlestructs.h"

#include "hgeantkine.h"
#include "hgeantrich.h"

#include "hgeomtransform.h"
#include "hgeomvector.h"
#include "hrichgeometrypar.h"
#include "hrich700digipar.h"
#include "hrich700data.h"
#include "hmdcsizescells.h"
#include "hwallgeompar.h"


#include "hedhelpers.h"


#include "TMath.h"
#include "TEveRGBAPalette.h"
#include "TEveManager.h"

#include <iostream>
using namespace std;


ClassImp(HEDVertex)
ClassImp(HEDSegment)
ClassImp(HEDMdcWire)
ClassImp(HEDRichHit)
ClassImp(HEDWallHit)
ClassImp(HEDWallPlane)
ClassImp(HEDTofHit)
ClassImp(HEDTofCluster)
ClassImp(HEDRpcCluster)
ClassImp(HEDShowerHit)
ClassImp(HEDEmcCluster)
ClassImp(HEDParticleCand)
ClassImp(HEDRichPadPlane)
ClassImp(HEDRichRing)
ClassImp(HEDRichHitPadPlane)
ClassImp(HEDRichCompound)
ClassImp(HEDRichGeantPadPlane)
ClassImp(HEDRichGeantMirror)
ClassImp(HEDGroup)
ClassImp(HEDGroup2D)

//-----------------------------------------------------------------
HEDVertex::HEDVertex():TEvePointSet(2)
{
    // create vertex point. No input needed. Takes
    // vertex from HEventHeader.

    HGeomVector pVertex;
    HEDTransform::calcVertexPoint(pVertex);
    SetElementName("EDVertex");
    SetTitle(Form("EDVertex: x=%5.3f,y=%5.3f,z=%5.3f",pVertex.X(),pVertex.Y(),pVertex.Z()));
    SetPoint(0, pVertex.X(),pVertex.Y(),pVertex.Z());
    SetPoint(1, pVertex.X(),pVertex.Y(),pVertex.Z()+0.01);  // just dummy to make it draw!
    SetMarkerColor(kMagenta);
    SetMarkerSize(1.5);
    SetPickable(kTRUE);
}
HEDVertex::~HEDVertex(){;}

void HEDVertex::Print(){
   cout<<GetTitle()<<endl;
}
//-----------------------------------------------------------------

//-----------------------------------------------------------------
HEDSegment::HEDSegment(HMdcSegSim* seg):TEveLine(2)
{
    // create segment line (between middle planes of two MDCs)
    // Works for real and sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.

    HGeomVector p1,p2;
    HEDTransform::calcSegPointsLab(seg,p1,p2);
    HCategory* segCat= gHades->getCurrentEvent()->getCategory(catMdcSeg);
    Int_t index = -1;
    if(segCat) index = segCat->getIndex(seg);
    TString title = "EDSegment: \n";
    title += Form(" ind   = %i\n"     ,index);
    title += Form(" sec   = %i\n"     ,seg->getSec());
    title += Form(" IO    = %i\n"     ,seg->getIOSeg());
    title += Form(" Chi2  = %5.3f\n"  ,seg->getChi2());
    title += Form(" r     = %5.3f\n"  ,seg->getRprime());
    title += Form(" z     = %5.3f\n"  ,seg->getZprime());
    title += Form(" phi   = %5.3f\n"  ,seg->getPhi()  *TMath::RadToDeg());
    title += Form(" theta = %5.3f\n"  ,seg->getTheta()*TMath::RadToDeg());
    title += Form(" nLay  = %i 1th , %i 2nd\n",seg->getNLayers(0) ,seg->getNLayers(1) );
    title += Form(" nCell = %i 1th , %i 2nd\n",seg->getSumWires(0),seg->getSumWires(1));

    TString cname = seg->ClassName();
    if(cname.CompareTo("HMdcSegSim") == 0){

	Int_t n = seg->getNTracks();
 	title += Form(" nTr = %i \n",n);

	HCategory* kineCat= gHades->getCurrentEvent()->getCategory(catGeantKine);

	for(Int_t i = 0; i < n; i ++){
            Int_t tr = seg->getTrack(i);
	    Int_t parentTr = -1;
            Float_t mom    = -1;
	    if(kineCat && tr > 0 ){
		HGeantKine* kine =0;
		kine = HCategoryManager::getObject(kine,kineCat,tr-1);
		mom      = kine->getTotalMomentum();
                parentTr = kine->getParentTrack();


		if(HPhysicsConstants::pid(kine->getID())) { cname = HPhysicsConstants::pid(kine->getID());}
		else                                      { cname = "unknown"; }
	    } else {
		cname = "unknown";
	    }
	    title += Form("\t tr = %i x %i(%i) (%s,%6.2f MeV/c, parent %i)\n",tr,seg->getNTimes(i),seg->getNDigiTimes(i)
			  ,cname.Data(),mom, parentTr);
	}
    }

    title += Form(" p1(%5.3f,%5.3f,%5.3f)\n",p1.X(),p1.Y(),p1.Z());
    title += Form(" p2(%5.3f,%5.3f,%5.3f)\n",p2.X(),p2.Y(),p2.Z());

    SetElementName("EDSegment");
    SetTitle(title.Data());
    SetPoint(0, p1.X(),p1.Y(),p1.Z());
    SetPoint(1, p2.X(),p2.Y(),p2.Z());  // just dummy to make it draw!
    SetMarkerColor(kRed);
    SetLineColor(kRed);
    SetRnrLine(kTRUE);
    SetPickable(kTRUE);
}
HEDSegment::~HEDSegment(){;}

void HEDSegment::Print(){
   cout<<GetTitle()<<endl;
}
//-----------------------------------------------------------------

//-----------------------------------------------------------------
HEDMdcWire::HEDMdcWire(HMdcCal1Sim* cal)
{
    // create wire line
    // Works for real and sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.
    nTimes = 0;
    Int_t s,m,l,c;
    if(cal){
        cal->getAddress(s,m,l,c);
        makeWire(s,m,l,c,cal);
    }
}
HEDMdcWire::HEDMdcWire(Int_t s,Int_t m,Int_t l,Int_t c)
{
    // create wire line
    // Works for real and sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.

    nTimes = 0;
    makeWire(s,m,l,c);
}


Bool_t HEDMdcWire::makeWire(Int_t s,Int_t m,Int_t l,Int_t c, HMdcCal1Sim* cal)
{
    HGeomVector p1,p2;
    Bool_t ok = HEDTransform::calcWirePointsLab (s,m,l,c,p1,p2);

    TString title = "EDMdcWire: \n";
    title += Form(" sec   = %i\n"     ,s);
    title += Form(" mod   = %i\n"     ,m);
    title += Form(" lay   = %i\n"     ,l);
    title += Form(" cell  = %i\n"     ,c);
    if(cal){
	title += Form(" t1     = %5.3f\n"   ,cal->getTime1());
        title += Form(" t2-t1  = %5.3f\n"   ,cal->getTime2() - cal->getTime1());

	TString cname = cal->ClassName();
	if(cname.CompareTo("HMdcCal1Sim") == 0){
 	    title += Form(" status  = %i\n" ,cal->getStatus());

	    HCategory* kineCat= gHades->getCurrentEvent()->getCategory(catGeantKine);

            //--------------------------------------------------------
	    // selected track
	    Int_t tr = cal->getNTrack1();
	    Int_t parentTr = -1;
            Float_t mom    = -1;

	    if(kineCat && tr > 0 ){
		HGeantKine* kine = 0;
		kine = HCategoryManager::getObject(kine,kineCat,tr-1);
		mom      = kine->getTotalMomentum();
                parentTr = kine->getParentTrack();

		if(HPhysicsConstants::pid(kine->getID())){ cname = HPhysicsConstants::pid(kine->getID());}
		else                                     { cname = "unknown"; }
	    } else {
		cname = "unknown";
	    }
	    title += Form(" tr = %i (%s,%6.2f MeV/c, parent %i)\n",tr,cname.Data(),mom, parentTr);
            //--------------------------------------------------------

            //--------------------------------------------------------
	    // list of tracks
	    Int_t n = cal->getNTracks();
	    title += Form(" ntr = %i\n",n);
	    for(Int_t i = 0; i < n; i++){

                tr = cal->getTrackFromList(i);
		if(kineCat && tr > 0) {
		    HGeantKine* kine = 0;
		    kine = HCategoryManager::getObject(kine,kineCat,tr-1);
		    mom      = kine->getTotalMomentum();
		    parentTr = kine->getParentTrack();

		    if(HPhysicsConstants::pid(kine->getID())){ cname = HPhysicsConstants::pid(kine->getID());}
		    else                                     { cname = "unknown"; }
		} else {
		    cname = "unknown";
		}
		title += Form("\t tr = %5i status = %i (%s,%6.2f MeV/c, parent %i)\n",
			      tr,cal->getStatusFromList(i),cname.Data(),mom, parentTr);
	    }
	    //--------------------------------------------------------

	} // sim case

    }
    title += Form(" p1(%5.3f,%5.3f,%5.3f)\n",p1.X(),p1.Y(),p1.Z());
    title += Form(" p2(%5.3f,%5.3f,%5.3f)\n",p2.X(),p2.Y(),p2.Z());

    SetElementName("EDMdcWire");
    SetTitle(title.Data());
    SetNextPoint(p1.X(),p1.Y(),p1.Z());
    SetNextPoint(p2.X(),p2.Y(),p2.Z());
    SetMarkerColor(kBlue);
    SetLineColor(kBlue);
    SetRnrLine(kTRUE);
    SetPickable(kTRUE);
    return ok;
}
HEDMdcWire::~HEDMdcWire(){;}

void HEDMdcWire::Print(){
   cout<<GetTitle()<<endl;
}
//-----------------------------------------------------------------

//-----------------------------------------------------------------
HEDRichHit::HEDRichHit(HRichHitSim* hit,HParticleCandSim* cand):TEveLine(2)
{
    // create a line representing a RICH hit from
    // the Event vertex to MDCI taking theta and phi
    // from the RICH hit.
    // Works for real and sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.
    HGeomVector p1,p2,pmirror;
    HEDTransform::calcRichLinePointLab(hit,p1,p2,cand);
    HEDTransform::calcRichMirrorHit(p1,p2,pmirror);

    HCategory* richHitCat = gHades->getCurrentEvent()->getCategory(catRichHit);
    Int_t index = -1;
    if(richHitCat) index = richHitCat->getIndex(hit);
    Float_t phi = -1,theta =-1;
    Int_t  sec  = hit->getSector();
    if(!cand) {
	phi   = hit->getPhi();
	theta = hit->getTheta();
    } else {
	phi   = cand->getPhi();
	theta = cand->getTheta();
    }
    if(sec < 5) {
	phi -= (sec*60.);
    } else {
	phi +=60.;
    }

    TString title = "EDRichHit: \n";
    title += Form(" ind   = %i\n"   ,index);
    title += Form(" sec   = %i\n"   ,sec);
    title += Form(" phi   = %5.3f\n",phi);
    title += Form(" theta = %5.3f\n",theta);
    if(!hit->isNewRich()){
	title += Form(" hough = %i \n"  ,hit->getRingHouTra());
	title += Form(" ampl  = %i\n"   ,hit->getRingAmplitude());
	title += Form(" patMat= %i\n"   ,hit->getRingPatMat());
	title += Form(" padNr = %i\n"   ,hit->getRingPadNr());
	title += Form(" centr = %5.3f\n",hit->getCentroid());
    } else {
 	title += Form(" radius= %5.3f\n",hit->getRich700CircleRadius());
	title += Form(" chi2  = %6.3f\n",hit->getRich700CircleChi2());
	title += Form(" nCals = %i\n"   ,hit->getRich700NofRichCals() );
    }

    TString cname = hit->ClassName();
    if(cname.CompareTo("HRichHitSim") == 0){

	HCategory* kineCat = gHades->getCurrentEvent()->getCategory(catGeantKine);
	Int_t tracks[3] = {hit->track1    ,hit->track2    ,hit->track3};
        Int_t weight[3] = {hit->weigTrack1,hit->weigTrack2,hit->weigTrack3};

	for(Int_t i = 0; i < 3; i ++){
            Int_t tr = tracks[i];
	    Int_t parentTr = -1;
            Float_t mom    = -1;
	    if(kineCat && tr > 0 ){
		HGeantKine* kine = 0;
		kine = HCategoryManager::getObject(kine,kineCat,tr-1);
		mom      = kine->getTotalMomentum();
                parentTr = kine->getParentTrack();
		if(HPhysicsConstants::pid(kine->getID())){ cname = HPhysicsConstants::pid(kine->getID());}
		else                                     { cname = "unknown"; }
	    } else {
		cname = "unknown";
	    }
	    title += Form("\t tr = %i x %i weight (%s,%6.2f MeV/c, parent %i)\n",tr,weight[i]
			  ,cname.Data(),mom,parentTr);
	}
    }

    title += Form(" p1(%5.3f,%5.3f,%5.3f)\n",p1.X(),p1.Y(),p1.Z());
    title += Form(" p2(%5.3f,%5.3f,%5.3f)\n",p2.X(),p2.Y(),p2.Z());

    SetElementName("EDRichHit");
    SetTitle(title.Data());
    SetPoint(0, p1.X(),p1.Y(),p1.Z());
    SetPoint(1, pmirror.X(),pmirror.Y(),pmirror.Z());
    SetMarkerColor(kYellow);
    SetLineColor(kYellow);
    SetRnrLine(kTRUE);
    SetPickable(kTRUE);
}
HEDRichHit::~HEDRichHit(){;}

void HEDRichHit::Print(){
   cout<<GetTitle()<<endl;
}
//-----------------------------------------------------------------

//-----------------------------------------------------------------
HEDWallHit::HEDWallHit(HWallHitSim* hit):TEvePointSet(1)
{
    // creates a point at the position of the WALL hit.
    // Works for real and sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.
    HGeomVector p;
    HEDTransform::calcWallHitPointLab(hit,p);

    HCategory* wallHitCat = gHades->getCurrentEvent()->getCategory(catWallHit);
    Int_t index = -1;
    if(wallHitCat) index = wallHitCat->getIndex(hit);

    TString title = "EDWallHit: \n";
    title += Form(" ind   = %i\n"   ,index);
    title += Form(" addr  = cell=%i\n",hit->getCell());
    title += Form(" Time  = %5.3f\n",hit->getTime());
    title += Form(" Chrg  = %5.3f\n",hit->getCharge());
    title += Form(" Phi   = %5.3f\n",hit->getPhi());
    title += Form(" Theta = %5.3f\n",hit->getTheta());
    title += Form(" Dist  = %5.3f\n",hit->getDistance());

    TString cname = hit->ClassName();
    if(cname.CompareTo("HWallHitSim") == 0){

	HCategory* kineCat = gHades->getCurrentEvent()->getCategory(catGeantKine);
	Int_t   tracks[2] = {hit->getNTrack1() ,hit->getNTrack2()};

	for(Int_t i = 0; i < 2; i ++){
            Int_t tr = tracks[i];
	    Int_t parentTr = -1;
            Float_t mom    = -1;
	    if(kineCat && tr > 0 ){
		HGeantKine* kine = 0;
		kine = HCategoryManager::getObject(kine,kineCat,tr-1);
		mom      = kine->getTotalMomentum();
                parentTr = kine->getParentTrack();
		if(HPhysicsConstants::pid(kine->getID())){ cname = HPhysicsConstants::pid(kine->getID());}
		else                                     { cname = "unknown"; }
	    } else {
		cname = "unknown";
	    }
	    title += Form("\t tr = %i (%s,%6.2f MeV/c, parent %i)\n",tr,cname.Data(),mom,parentTr);
	}
    }

    title += Form(" p(%5.3f,%5.3f,%5.3f)\n",p.X(),p.Y(),p.Z());

    SetElementName("EDWallHit");
    SetTitle(title.Data());
    SetPoint(0, p.X(),p.Y(),p.Z());
    SetMarkerColor(kMagenta);
    SetPickable(kTRUE);
}
HEDWallHit::~HEDWallHit(){;}

void HEDWallHit::Print(){
   cout<<GetTitle()<<endl;
}
//-----------------------------------------------------------------

//-----------------------------------------------------------------
HEDWallPlane::HEDWallPlane()
: TEveQuadSet("Wallplane")
{
    // creates a TEveQuadSet object for a WallPlane
    // The object contains the HWallHits hits of the
    // event. The digits are filled by the charge.
    // Works for real and sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.

    HWallGeomPar* fWallPar = (HWallGeomPar*) gHades->getRuntimeDb()->getContainer("WallGeomPar");
    if(fWallPar)
    {
	//--------------------------------------------------------------------
        // calc the frame box (has to be deleted in destructor!)
	box = HEDTransform::calcWallFrame();
	//--------------------------------------------------------------------

	//--------------------------------------------------------------------
	TEveRGBAPalette *pal = new TEveRGBAPalette(0,50);
	SetOwnIds(kTRUE);  // quad deletes the id objects
        SetPalette(pal);
	SetFrame(box);     //
        Reset(TEveQuadSet::kQT_FreeQuad, kFALSE, 32);

	//--------------------------------------------------------------------
        // loop for the cal objects and fill the quad
	HCategory* wallHitCat = HCategoryManager::getCategory(catWallHit,2);
	if(wallHitCat){
	    Float_t coord[4*3]; // xyz 4 corner of pad
            HWallHit* hit;
	    for(Int_t i = 0; i < wallHitCat->getEntries(); i ++)
	    {
                hit = HCategoryManager::getObject(hit,wallHitCat,i);


		HEDTransform::calcWallCell(hit,coord);
		AddQuad(coord);
		QuadValue((Int_t)hit->getCharge());
		QuadId(new TNamed(Form("WallHitPlane_%i",i), "TNamed assigned to a quad as an indentifier."));
	    }
	}
	//--------------------------------------------------------------------
	RefitPlex();
    }
}
HEDWallPlane::~HEDWallPlane(){
    //if(box) delete box;
}

void HEDWallPlane::Print(){
    cout<<GetTitle()<<endl;
}

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


//-----------------------------------------------------------------
HEDTofHit::HEDTofHit(HTofHitSim* hit):TEvePointSet(1)
{
    // creates a point at the position of the TOF hit.
    // Works for real and sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.
    HGeomVector p;
    HEDTransform::calcTofHitPointLab(hit,p);

    HCategory* tofHitCat = gHades->getCurrentEvent()->getCategory(catTofHit);
    Int_t index = -1;
    if(tofHitCat) index = tofHitCat->getIndex(hit);

    TString title = "EDTofHit: \n";
    title += Form(" ind   = %i\n"   ,index);
    title += Form(" addr  = sec=%i,mod=%i,cell=%i\n",hit->getSector(),hit->getModule(),hit->getCell());
    title += Form(" Tof   = %5.3f\n",hit->getTof());
    title += Form(" Edep  = %5.3f\n",hit->getEdep());

    TString cname = hit->ClassName();
    if(cname.CompareTo("HTofHitSim") == 0){

	HCategory* kineCat = gHades->getCurrentEvent()->getCategory(catGeantKine);
	Int_t   tracks[2] = {hit->getLeftNTrack() ,hit->getRightNTrack()};

	for(Int_t i = 0; i < 2; i ++){
            Int_t tr = tracks[i];
	    Int_t parentTr = -1;
            Float_t mom    = -1;
	    if(kineCat && tr > 0 ){
		HGeantKine* kine = 0;
		kine = HCategoryManager::getObject(kine,kineCat,tr-1);
		mom      = kine->getTotalMomentum();
                parentTr = kine->getParentTrack();
		if(HPhysicsConstants::pid(kine->getID())){ cname = HPhysicsConstants::pid(kine->getID());}
		else                                     { cname = "unknown"; }
	    } else {
		cname = "unknown";
	    }
	    title += Form("\t tr = %i (%s,%6.2f MeV/c, parent %i)\n",tr,cname.Data(),mom,parentTr);
	}
    }

    title += Form(" p(%5.3f,%5.3f,%5.3f)\n",p.X(),p.Y(),p.Z());

    SetElementName("EDTofHit");
    SetTitle(title.Data());
    SetPoint(0, p.X(),p.Y(),p.Z());
    SetMarkerColor(kYellow);
    SetPickable(kTRUE);
}
HEDTofHit::~HEDTofHit(){;}

void HEDTofHit::Print(){
   cout<<GetTitle()<<endl;
}
//-----------------------------------------------------------------

//-----------------------------------------------------------------
HEDTofCluster::HEDTofCluster(HTofClusterSim* hit):TEvePointSet(1)
{
    // creates a point at the position of the TOF cluster.
    // Works for real and sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.
    HGeomVector p;
    HEDTransform::calcTofHitPointLab(hit,p);

    HCategory* tofClusterCat = gHades->getCurrentEvent()->getCategory(catTofCluster);
    Int_t index = -1;
    if(tofClusterCat) index = tofClusterCat->getIndex(hit);

    TString title = "EDTofCluster: \n";
    title += Form(" ind   = %i\n"   ,index);
    title += Form(" addr  = sec=%i,mod=%i,cell=%i\n",hit->getSector(),hit->getModule(),hit->getCell());
    title += Form(" Tof   = %5.3f\n",hit->getTof());
    title += Form(" Edep  = %5.3f\n",hit->getEdep());
    title += Form(" clSize= %i\n"   ,hit->getClusterSize());

    TString cname = hit->ClassName();
    if(cname.CompareTo("HTofClusterSim") == 0){

	HCategory* kineCat = gHades->getCurrentEvent()->getCategory(catGeantKine);

	for(Int_t i = 0; i < hit->getNParticipants(); i ++){

	    Int_t   tracks[2] = {hit->getNTrack1(i),hit->getNTrack2(i)};
	    title += Form(" participant %i :\n",i);
	    for(Int_t j = 0; j < 2; j ++){

		Int_t tr = tracks[j];
		Int_t parentTr = -1;
		Float_t mom    = -1;
		if(kineCat && tr > 0 ){
		    HGeantKine* kine = 0;
		    kine = HCategoryManager::getObject(kine,kineCat,tr-1);
		    if(kine){
			mom      = kine->getTotalMomentum();
			parentTr = kine->getParentTrack();
			if(HPhysicsConstants::pid(kine->getID())){ cname = HPhysicsConstants::pid(kine->getID());}
			else                                     { cname = "unknown"; }
		    } else {
			Error("HEDTofCluster()","Zero pointer retrieved for kine object. track=%i,sec=%i,mod=%i,cell=%i",
			      tr,hit->getSector(),hit->getModule(),hit->getCell());
			cout<<"cl size "<<hit->getClusterSize()<<" participants "<<hit-> getNParticipants()<<endl;
			hit->Dump();
		    }
		} else {
		    cname = "unknown";
		}
		title += Form("\t tr = %i (%s,%6.2f MeV/c, parent %i)\n",tr,cname.Data(),mom,parentTr);
	    } // hits
	}// participants
    }
    title += Form(" p(%5.3f,%5.3f,%5.3f)\n",p.X(),p.Y(),p.Z());

    SetElementName("EDTofCluster");
    SetTitle(title.Data());
    SetPoint(0, p.X(),p.Y(),p.Z());
    SetMarkerColor(kYellow);
    SetPickable(kTRUE);
}
HEDTofCluster::~HEDTofCluster(){;}

void HEDTofCluster::Print(){
   cout<<GetTitle()<<endl;
}
//-----------------------------------------------------------------



//-----------------------------------------------------------------
HEDRpcCluster::HEDRpcCluster(HRpcClusterSim* hit):TEvePointSet(1)
{
    // creates a point at the position of the RPC cluster.
    // Works for real and sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.
    HGeomVector p;
    HEDTransform::calcRpcClustPointLab(hit,p);

    HCategory* rpcClusterCat = gHades->getCurrentEvent()->getCategory(catRpcCluster);
    Int_t index = -1;
    if(rpcClusterCat) index = rpcClusterCat->getIndex(hit);

    TString title = "EDRpcCluster: \n";
    title += Form(" ind   = %i\n"   ,index);
    title += Form(" addr  = sec=%i,col=(%i,%i),cell=(%i,%i)\n",hit->getSector(),hit->getColumn1(),hit->getColumn2(),hit->getCell1(),hit->getCell2());
    title += Form(" Tof   = %5.3f\n",hit->getTof());
    title += Form(" charge= %5.3f\n",hit->getCharge());
    title += Form(" clSize= %i\n"   ,hit->getClusterType());

    TString cname = hit->ClassName();
    if(cname.CompareTo("HRpcClusterSim") == 0){
	HCategory* kineCat = gHades->getCurrentEvent()->getCategory(catGeantKine);
	Int_t  tracks[4];
        Bool_t  atBox[4];
	hit->getTrackList  (&tracks[0]);
        hit->getIsAtBoxList(&atBox[0]);
	for(Int_t i = 0; i < 4; i ++){
	    Int_t tr = tracks[i];
	    Int_t parentTr = -1;
	    Float_t mom    = -1;
	    if(kineCat && tr > 0 ){
		HGeantKine* kine = 0;
		kine = HCategoryManager::getObject(kine,kineCat,tr-1);
		mom      = kine->getTotalMomentum();
		parentTr = kine->getParentTrack();
		if(HPhysicsConstants::pid(kine->getID())){ cname = HPhysicsConstants::pid(kine->getID());}
		else                                     { cname = "unknown"; }
	    } else {
		cname = "unknown";
	    }
	    title += Form("\t tr = %i, atBox %i, (%s,%6.2f MeV/c, parent %i)\n",tr,(Int_t)atBox[i],cname.Data(),mom,parentTr);
	} // hits
    }

    title += Form(" p(%5.3f,%5.3f,%5.3f)\n",p.X(),p.Y(),p.Z());

    SetElementName("EDRpcCluster");
    SetTitle(title.Data());
    SetPoint(0, p.X(),p.Y(),p.Z());
    SetMarkerColor(kGreen);
    SetPickable(kTRUE);
}
HEDRpcCluster::~HEDRpcCluster(){;}

void HEDRpcCluster::Print(){
    cout<<GetTitle()<<endl;
}
//-----------------------------------------------------------------

//-----------------------------------------------------------------
HEDShowerHit::HEDShowerHit(HShowerHitSim* hit):TEvePointSet(1)
{
    // creates a point at the position of the SHOWER hit.
    // Works for real and sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.
    HGeomVector p;
    HEDTransform::calcShowerHitPointLab(hit,p);


    TString cname = hit->ClassName();
    Bool_t isSim  = kFALSE ;
    if(cname.CompareTo("HShowerHitSim") == 0) isSim = kTRUE;

    HCategory* showerHitCat = gHades->getCurrentEvent()->getCategory(catShowerHit);

    Int_t index = -1;
    if(showerHitCat) index = showerHitCat->getIndex(hit);

    TString title = "EDShowerHit: \n";
    title += Form(" ind   = %i\n"   ,index);
    title += Form(" addr  = sec=%i,mod=%i,col=%i,row=%i\n",hit->getSector(),hit->getModule(),hit->getCol(),hit->getRow());
    title += Form(" sum   = %5.3f,%5.3f,%5.3f\n",hit->getSum(0),hit->getSum(1),hit->getSum(2));
    title += Form(" charge= %5.3f\n",hit->getCharge());

    if(isSim){

	HCategory* kineCat = gHades->getCurrentEvent()->getCategory(catGeantKine);
	for(Int_t i = 0; i < hit->getNTracks(); i ++){
            Int_t tr = hit->getTrack(i);
	    Int_t parentTr = -1;
            Float_t mom    = -1;
	    if(kineCat && tr > 0 ){
		HGeantKine* kine = 0;
		kine = HCategoryManager::getObject(kine,kineCat,tr-1);
		mom      = kine->getTotalMomentum();
                parentTr = kine->getParentTrack();
		if(HPhysicsConstants::pid(kine->getID())){ cname = HPhysicsConstants::pid(kine->getID());}
		else                                     { cname = "unknown"; }
	    } else {
		cname = "unknown";
	    }
	    title += Form("\t tr = %i (%s,%6.2f MeV/c, parent %i)\n",tr,cname.Data(),mom,parentTr);
	}
    }

    title += Form(" p(%5.3f,%5.3f,%5.3f)\n",p.X(),p.Y(),p.Z());

    SetElementName("EDShowerHit");
    SetTitle(title.Data());
    SetPoint(0, p.X(),p.Y(),p.Z());
    SetMarkerColor(kCyan);
    SetPickable(kTRUE);
}
HEDShowerHit::~HEDShowerHit(){;}

void HEDShowerHit::Print(){
   cout<<GetTitle()<<endl;
}
//-----------------------------------------------------------------

//-----------------------------------------------------------------
HEDEmcCluster::HEDEmcCluster(HEmcClusterSim* hit):TEvePointSet(1)
{
    // creates a point at the position of the SHOWER hit.
    // Works for real and sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.
    HGeomVector p;
    HEDTransform::calcEmcClusterPointLab(hit,p);

    TString cname = hit->ClassName();
    Bool_t isSim  = kFALSE ;
    if(cname.CompareTo("HEmcClusterSim") == 0) isSim = kTRUE;

    HCategory* emcClusterCat = gHades->getCurrentEvent()->getCategory(catEmcCluster);

    Int_t index = -1;
    if(emcClusterCat) index = emcClusterCat->getIndex(hit);

    TString title = "EDEmcCluster: \n";
    title += Form(" ind   = %i\n"   ,index);
    title += Form(" addr  = sec=%i,cell=%i\n",hit->getSector(),hit->getCell());
    title += Form(" time  = %5.3f\n",hit->getTime());
    title += Form(" energy= %5.3f\n",hit->getEnergy());
    title += Form(" ncells= %i\n"   ,hit->getNCells());
    title += Form(" active= %i\n"   ,hit->ifActive());
    title += Form(" used  = %i\n"   ,hit->isUsedInParticleCand());
    title += Form(" match = %i\n"   ,hit->getNMatchedCells()>0? 1: 0);
    title += Form(" theta = %5.3f\n",hit->getTheta());
    title += Form(" phi   = %5.3f\n",hit->getPhi());

    if(isSim){

	HCategory* kineCat = gHades->getCurrentEvent()->getCategory(catGeantKine);
	for(Int_t i = 0; i < hit->getNTracks(); i ++){
	    Int_t tr = hit->getTrack(i);
	    Int_t parentTr = -1;
	    Float_t mom    = -1;
	    if(kineCat && tr > 0 ){
		HGeantKine* kine = 0;
		kine = HCategoryManager::getObject(kine,kineCat,tr-1);
		mom      = kine->getTotalMomentum();
		parentTr = kine->getParentTrack();
		if(HPhysicsConstants::pid(kine->getID())){ cname = HPhysicsConstants::pid(kine->getID());}
		else                                     { cname = "unknown"; }
	    } else {
		cname = "unknown";
	    }
	    title += Form("\t tr = %i (%s,%6.2f MeV/c, parent %i)\n",tr,cname.Data(),mom,parentTr);
	}
    }

    title += Form(" p(%5.3f,%5.3f,%5.3f)\n",p.X(),p.Y(),p.Z());

    SetElementName("EDEmcCluster");
    SetTitle(title.Data());
    SetPoint(0, p.X(),p.Y(),p.Z());
    SetMarkerColor(kCyan);
    SetPickable(kTRUE);
}
HEDEmcCluster::~HEDEmcCluster(){;}

void HEDEmcCluster::Print(){
    cout<<GetTitle()<<endl;
}
//-----------------------------------------------------------------

//-----------------------------------------------------------------
HEDParticleCand::HEDParticleCand(HParticleCandSim* cand)
{
    // creates a compound object for a HParticleCand.
    // The object contains the detector hits of the
    // candidate and a line connecting all points.
    // For the bending inside the magnetc field a
    // additional hitpoint at the kickplane is used.
    // Works for real and sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.

    TString cname = cand->ClassName();
    Bool_t isSim  = kFALSE ;
    if(cname.CompareTo("HParticleCandSim") == 0) isSim = kTRUE;
    HCategory* mdcSegCat      = HCategoryManager::getCategory(catMdcSeg,2);
    HCategory* richHitCat     = HCategoryManager::getCategory(catRichHit,2);
    HCategory* tofHitCat      = HCategoryManager::getCategory(catTofHit,2);
    HCategory* tofClusterCat  = HCategoryManager::getCategory(catTofCluster,2);
    HCategory* rpcClusterCat  = HCategoryManager::getCategory(catRpcCluster,2);

    HCategory* showerHitCat = HCategoryManager::getCategory(catShowerHit,2);
    HCategory* emcClusterCat= HCategoryManager::getCategory(catEmcCluster,2);

    Float_t x,y,z;
    TEveLine* track = new TEveLine();

    //-----------------------------------------------------------------
    if(richHitCat && cand->getRichInd() >= 0) {
	HRichHitSim* hit     = 0;
        HEDRichHit* edrichhit = 0;
	hit = HCategoryManager::getObject(hit,richHitCat,cand->getRichInd());
	edrichhit = new HEDRichHit(hit,cand);
	edrichhit->SetLineColor(kYellow);

        //--------------------------------------------------------------
        // draw line from mirror hit to pad plane
	TEveLine* lineToPadPlane = new TEveLine(2);
	lineToPadPlane->SetElementName("EDLineRichPadPlaneToShell");
	lineToPadPlane->SetTitle("EDLineRichPadPlaneToShell");
        edrichhit->GetPoint(1,x,y,z);       // mirror hit
	lineToPadPlane->SetPoint(1,x,y,z);

	Float_t x,y,z;
	HGeomVector p;
	if(hit->isNewRich()){
	    hit->getLabXYZ(&x,&y,&z);
	    p.setXYZ(x,y,z);
            p *= TO_CM;
	} else {
	    hit->getXY(&x,&y);
	    x*=-1;
	    p.setXYZ(x,y,0);

	    HRichGeometryPar* fRichGeometryPar = (HRichGeometryPar*) gHades->getRuntimeDb()->getContainer("RichGeometryParameters");
	    if(fRichGeometryPar)
	    {
		//--------------------------------------------------------------------
		// get transformation RICH padplane -> sector sys
		HGeomTransform& trans = *HEDTransform::getRichSecTrans();
		HEDTransform::calcRichPadPlaneToLab(cand->getSector(),p,trans);
		//--------------------------------------------------------------------
	    }
	}

	lineToPadPlane->SetPoint(0,p.X(),p.Y(),p.Z());  // pad plane hit

	lineToPadPlane->SetMarkerColor(kYellow);
	lineToPadPlane->SetLineColor(kYellow);
	lineToPadPlane->SetLineStyle(7);
	lineToPadPlane->SetRnrLine(kTRUE);
	lineToPadPlane->SetPickable(kTRUE);
        //--------------------------------------------------------------

	AddElement(edrichhit);
	AddElement(lineToPadPlane);
    }
    //-----------------------------------------------------------------

    //-----------------------------------------------------------------
    if(mdcSegCat) {
	HMdcSegSim* seg  = 0;
	HEDSegment* edseg = 0;

	seg = HCategoryManager::getObject(seg,mdcSegCat,cand->getInnerSegInd());
	edseg = new HEDSegment(seg);
        edseg->SetLineColor(kRed);

	TEveLine* lineToRichShell = new TEveLine(2);
	lineToRichShell->SetElementName("EDLineSegToRichShell");
	lineToRichShell->SetTitle("EDLineSegToRichShell");

	edseg->GetPoint(0,x,y,z);
	HGeomVector p1(x,y,z);
        edseg->GetPoint(1,x,y,z);
	HGeomVector p2(x,y,z);
	HGeomVector pout;

	HEDTransform::calcRichMirrorHit(p1,p2,pout);

	lineToRichShell->SetPoint(1,p1.X(),p1.Y(),p1.Z());
	lineToRichShell->SetPoint(0,pout.X(),pout.Y(),pout.Z());
	lineToRichShell->SetMarkerColor(kYellow);
	lineToRichShell->SetLineColor(kYellow);
	lineToRichShell->SetLineStyle(7);
	lineToRichShell->SetRnrLine(kTRUE);
	lineToRichShell->SetPickable(kTRUE);

	AddElement(lineToRichShell);

	AddElement(edseg);

        edseg->GetPoint(0,x,y,z);
	track->SetNextPoint(x,y,z);

	edseg->GetPoint(1,x,y,z);
	track->SetNextPoint(x,y,z);

	HGeomVector p;
	HEDTransform::calcSegKickPlanePointLab(seg,p);

	track->SetNextPoint(p.X(),p.Y(),p.Z());

	if(cand->getOuterSegInd()>= 0){
	    seg = HCategoryManager::getObject(seg,mdcSegCat,cand->getOuterSegInd());
	    edseg = new HEDSegment(seg);
	    edseg->SetLineColor(kBlue);
	    AddElement(edseg);

	    edseg->GetPoint(0,x,y,z);
	    track->SetNextPoint(x,y,z);

	    edseg->GetPoint(1,x,y,z);
	    track->SetNextPoint(x,y,z);
	}
    }
    //-----------------------------------------------------------------

    //-----------------------------------------------------------------
    if(rpcClusterCat && cand->getRpcInd() >= 0) {
	HRpcClusterSim* hit        = 0;
        HEDRpcCluster* edrpccluster = 0;
	hit = HCategoryManager::getObject(hit,rpcClusterCat,cand->getRpcInd());
	edrpccluster = new HEDRpcCluster(hit);
	edrpccluster->SetMarkerColor(kGreen);
	AddElement(edrpccluster);

	edrpccluster->GetPoint(0,x,y,z);
	track->SetNextPoint(x,y,z);

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

    //-----------------------------------------------------------------
    if(showerHitCat && cand->getShowerInd() >= 0) {
	HShowerHitSim* hit     = 0;
        HEDShowerHit* edshowerhit = 0;
	hit = HCategoryManager::getObject(hit,showerHitCat,cand->getShowerInd());
	edshowerhit = new HEDShowerHit(hit);
	edshowerhit->SetMarkerColor(kCyan);
	AddElement(edshowerhit);
	edshowerhit->GetPoint(0,x,y,z);
	track->SetNextPoint(x,y,z);
    }
    //-----------------------------------------------------------------

    //-----------------------------------------------------------------
    if(emcClusterCat && cand->getEmcInd() >= 0) {
	HEmcClusterSim* hit     = 0;
        HEDEmcCluster* edemccluster = 0;
	hit = HCategoryManager::getObject(hit,emcClusterCat,cand->getEmcInd());
	edemccluster = new HEDEmcCluster(hit);
	edemccluster->SetMarkerColor(kCyan);
	AddElement(edemccluster);
	edemccluster->GetPoint(0,x,y,z);
	track->SetNextPoint(x,y,z);
    }
    //-----------------------------------------------------------------


    //-----------------------------------------------------------------
    if(tofHitCat && cand->getTofHitInd() >= 0) {
	HTofHitSim* hit    = 0;
        HEDTofHit* edtofhit = 0;
	hit = HCategoryManager::getObject(hit,tofHitCat,cand->getTofHitInd());
	edtofhit = new HEDTofHit(hit);
	edtofhit->SetMarkerColor(kYellow);
	AddElement(edtofhit);
	edtofhit->GetPoint(0,x,y,z);
	track->SetNextPoint(x,y,z);
      }
    //-----------------------------------------------------------------

    //-----------------------------------------------------------------
    if(tofClusterCat && cand->getTofClstInd() >= 0) {
	HTofClusterSim* hit        = 0;
        HEDTofCluster* edtofcluster = 0;
	hit = HCategoryManager::getObject(hit,tofClusterCat,cand->getTofClstInd());
	edtofcluster = new HEDTofCluster(hit);
	edtofcluster->SetMarkerColor(kYellow);
	AddElement(edtofcluster);
	edtofcluster->GetPoint(0,x,y,z);
	track->SetNextPoint(x,y,z);
    }
    //-----------------------------------------------------------------



    TString title = "EDParticleCand: \n";
    title += Form(" isUsed = %i, isLepton = %i\n",(Int_t) cand->isFlagBit(Particle::kIsUsed),(Int_t) cand->isFlagBit(Particle::kIsLepton));
    title += Form(" ind        = %i\n"   ,cand->getIndex());
    title += Form(" sec        = %i\n"   ,cand->getSector());
    title += Form(" sys        = %i\n"   ,cand->getSystem());
    title += Form(" ringCorr   = %i (seg), %i (RK)\n",(Int_t)cand->isRichMatch(kIsRICHMDC),(Int_t)cand->isRichMatch(kIsRICHRK));
    title += Form(" pid        = %i\n"   ,cand->getPID());
    title += Form(" mdcDedx    = %5.3f\n",cand->getMdcdEdx());
    title += Form(" tofDedx    = %5.3f\n",cand->getTofdEdx());
    title += Form(" charge     = %i\n"   ,cand->getCharge());
    title += Form(" beta       = %5.3f\n",cand->getBeta());
    title += Form(" mom        = %5.3f\n",cand->getMomentum());
    title += Form(" mass       = %5.3f\n",(cand->getMass2() >= 0)? sqrt(cand->getMass2()): -1);
    title += Form(" phi        = %5.3f\n",cand->getPhi());
    title += Form(" theta      = %5.3f\n",cand->getTheta());
    title += Form(" r          = %5.3f\n",cand->getR());
    title += Form(" z          = %5.3f\n",cand->getZ());
    title += Form(" chi2       = %5.3f\n",cand->getChi2());
    title += Form(" richPhi    = %5.3f\n",cand->getRichPhi());
    title += Form(" richTheta  = %5.3f\n",cand->getRichTheta());
    title += Form(" distMeta   = %5.3f\n",cand->getDistanceToMetaHit());
    title += Form(" seg1Chi2   = %5.3f\n",cand->getInnerSegmentChi2());
    title += Form(" seg2Chi2   = %5.3f\n",cand->getOuterSegmentChi2());
    title += Form(" angToFit   = %5.3f\n",cand->getAngleToNearbyFittedInner());
    title += Form(" angToNoFit = %5.3f\n",cand->getAngleToNearbyUnfittedInner());
    title += Form(" metaQA     = %5.3f\n",cand->getMetaMatchQuality());
    if(!HEDTransform::isEmc()){
	title += Form(" metaQAShr  = %5.3f\n",cand->getMetaMatchQualityShower());
    } else {
	title += Form(" metaQAEmc  = %5.3f\n",cand->getMetaMatchQualityEmc());
	title += Form(" emcTime    = %5.3f\n",cand->getEmcTime());
	title += Form(" emcEnergy  = %5.3f\n",cand->getEmcEnergy());
    }
    title += Form(" sel meta   = %i\n"   ,cand->getSelectedMeta());
    title += Form(" ringQA     = %5.3f\n",cand->getRichInd() >= 0 ? cand->getRichMatchingQuality(): -1);
    if(!HEDTransform::isEmc())
    {
	title += Form(" hit Ind    = rich %i, seg1 %i, seg2 %i, tofhit %i, tofClst %i, rpc %i, shower %i,\n"
		      ,cand->getRichInd()
		      ,cand->getInnerSegInd()
		      ,cand->getOuterSegInd()
		      ,cand->getTofHitInd()
		      ,cand->getTofClstInd()
		      ,cand->getRpcInd()
		      ,cand->getShowerInd()
		     );
    } else {
	title += Form(" hit Ind    = rich %i, seg1 %i, seg2 %i, tofhit %i, tofClst %i, rpc %i, ecal %i,\n"
		      ,cand->getRichInd()
		      ,cand->getInnerSegInd()
		      ,cand->getOuterSegInd()
		      ,cand->getTofHitInd()
		      ,cand->getTofClstInd()
		      ,cand->getRpcInd()
		      ,cand->getEmcInd()
		     );
    }


    if(isSim) {
	title +="-------------------------------\n";
	if(HPhysicsConstants::pid(cand->getGeantPID()) && cand->getGeantPID()>= 0){ cname = HPhysicsConstants::pid(cand->getGeantPID());}
	else                                                                      { cname = "unknown"; }
	Float_t mom = sqrt(cand->getGeantxMom()*cand->getGeantxMom() +
			   cand->getGeantyMom()*cand->getGeantyMom() +
			   cand->getGeantzMom()*cand->getGeantzMom() ) ;


	title += Form(" tr = %i (%s , %5.3f MeV/c, parent %i grandparent %i)\n"
		      ,cand->getGeantTrack()
		      ,cname.Data()
		      ,mom
		      ,cand->getGeantParentTrackNum()
		      ,cand->getGeantGrandParentTrackNum() );

    if(!HEDTransform::isEmc())
    {
	title += Form(" isInDet  = rich %i, seg1 %i, seg2 %i, tof %i rpc %i, shower %i\n"
		      , (Int_t)cand->isInDetector(kIsInRICH)
                      , (Int_t)cand->isInDetector(kIsInInnerMDC)
                      , (Int_t)cand->isInDetector(kIsInOuterMDC)
                      , (Int_t)cand->isInDetector(kIsInTOF)
                      , (Int_t)cand->isInDetector(kIsInRPC)
                      , (Int_t)cand->isInDetector(kIsInSHOWER)
		     );
    } else {
	title += Form(" isInDet  = rich %i, seg1 %i, seg2 %i, tof %i rpc %i, ecal %i\n"
		      , (Int_t)cand->isInDetector(kIsInRICH)
                      , (Int_t)cand->isInDetector(kIsInInnerMDC)
                      , (Int_t)cand->isInDetector(kIsInOuterMDC)
                      , (Int_t)cand->isInDetector(kIsInTOF)
                      , (Int_t)cand->isInDetector(kIsInRPC)
                      , (Int_t)cand->isInDetector(kIsInEMC)
		     );
    }
	title += Form(" isGhost  = total %i seg1 %i seg2 %i\n"
		      ,(Int_t)cand->isGhostTrack()
		      ,(Int_t)cand->isInDetector(kIsInnerGhost)
                      ,(Int_t)cand->isInDetector(kIsOuterGhost)
		     );
    }

    track->SetElementName("EDParticleCand");
    track->SetTitle(title.Data());
    track->SetLineColor(kRed);
    track->SetMarkerColor(kRed);
    track->SetRnrLine(kTRUE);
    track->SetPickable(kTRUE);

    AddElement(track);

    SetElementName("EDParticleCand");
    SetTitle(title.Data());
    SetMainColor(kRed);
    SetPickable(kTRUE);
}
HEDParticleCand::~HEDParticleCand(){
}

void HEDParticleCand::Print(){
   cout<<GetTitle()<<endl;
}

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

//-----------------------------------------------------------------
HEDRichPadPlane::HEDRichPadPlane(Int_t sec,Int_t cleaned)
: TEveQuadSet(Form("Rich_sector_%i_%i",sec,cleaned))
{
    // creates a TEveQuadSet object for a RichPadPlane (sector)
    // The object contains the HRichCalHits hits of the
    // event. The digits are filled by the charge.
    // cleaned == 0 (default) : fill all pads
    // cleaned == 1  : fill all cleaned pads  (single 10, high 20 sector 30)
    // cleaned == 2  : fill all pads but not cleaned
    //
    // Works for real and sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.

    HRichGeometryPar* fRichGeometryPar = (HRichGeometryPar*) gHades->getRuntimeDb()->getContainer("RichGeometryParameters");
    if(fRichGeometryPar)
    {
	//--------------------------------------------------------------------
        // get transformation RICH padplane -> sector sys
	HGeomTransform& trans = *HEDTransform::getRichSecTrans();
	//--------------------------------------------------------------------



	//--------------------------------------------------------------------
        // cal the frame box (has to be deleted in destructor!)
	box = HEDTransform::calcRichSectorFrame(sec,trans);
	//--------------------------------------------------------------------
	TEveRGBAPalette *pal = new TEveRGBAPalette(0,50);
	SetOwnIds(kTRUE);  // quad deletes the id objects
        SetPalette(pal);
	SetFrame(box);     //
        Reset(TEveQuadSet::kQT_FreeQuad, kFALSE, 32);

	//--------------------------------------------------------------------
        // loop for the cal objects and fill the quad
	HCategory* richCalCat = HCategoryManager::getCategory(catRichCal,2);
	if(richCalCat){
	    Float_t coord[4*3]; // xyz 4 corner of pad
            HRichCal* cal;
	    for(Int_t i = 0; i < richCalCat->getEntries(); i ++)
	    {
                cal = HCategoryManager::getObject(cal,richCalCat,i);
		HEDTransform::calcRichPadSector(cal,trans,coord);

		if(cleaned==0) {
		    AddQuad(coord);
		    QuadValue((Int_t)cal->getCharge());
		    QuadId(new TNamed(Form("all_sector_%i_%i",sec,i), "TNamed assigned to a quad as an indentifier."));

		}
		if(cleaned==1){

		    if(cal->getIsCleanedSingle() ||
		       cal->getIsCleanedHigh()   ||
		       cal->getIsCleanedSector())
		    {
			AddQuad(coord);
			if     (cal->getIsCleanedSingle()) { QuadValue(10); }
			else if(cal->getIsCleanedHigh  ()) { QuadValue(20); }
			else if(cal->getIsCleanedSector()) { QuadValue(30); }
			QuadId(new TNamed(Form("cut_sector_%i_%i",sec,i), "TNamed assigned to a quad as an indentifier."));

		    }
		}
		if(cleaned==2) {
		    if(!cal->getIsCleanedSingle() &&
		       !cal->getIsCleanedHigh() &&
		       !cal->getIsCleanedSector())
		    {
			AddQuad(coord);
			QuadValue((Int_t)cal->getCharge());
			QuadId(new TNamed(Form("not_cut_sector_%i_%i",sec,i), "TNamed assigned to a quad as an indentifier."));

		    }
		}
	    }
	}
	//--------------------------------------------------------------------
	RefitPlex();
    }
}
HEDRichPadPlane::~HEDRichPadPlane(){
    //if(box) delete box;
}

void HEDRichPadPlane::Print(){
    cout<<GetTitle()<<endl;
}

//-----------------------------------------------------------------
HEDRich700PadPlane::HEDRich700PadPlane()
: TEveQuadSet(Form("Rich700_padplane"))
{
    // creates a TEveQuadSet object for a Rich700PadPlane
    // The object contains the HRichCalHits hits of the
    // event.
    // Works for real and sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.

    HRich700DigiPar* fRich700DigiPar = (HRich700DigiPar*) gHades->getRuntimeDb()->getContainer("Rich700DigiPar");
    if(fRich700DigiPar)
    {
	TEveRGBAPalette *pal = new TEveRGBAPalette(0,50);
	SetOwnIds(kTRUE);  // quad deletes the id objects
        SetPalette(pal);
        Reset(TEveQuadSet::kQT_FreeQuad, kFALSE, 32);

	//--------------------------------------------------------------------
        // loop for the cal objects and fill the quad
	HCategory* richCalCat = HCategoryManager::getCategory(catRichCal,2);
	if(richCalCat){
	    Float_t coord[4*3]; // xyz 4 corner of pad
            HRichCal* cal;
	    for(Int_t i = 0; i < richCalCat->getEntries(); i ++)
	    {
                cal = HCategoryManager::getObject(cal,richCalCat,i);
                Int_t col    = cal->getCol();
                Int_t row    = cal->getRow();
                Int_t pmtid  = fRich700DigiPar->getPMTId(col,row);
                Float_t w    = fRich700DigiPar->getPmtSize();
                Int_t  npix  = fRich700DigiPar->getNPixelInRow();
		Float_t pixw = w/npix;
                w/=2;



		HRich700PmtData* data = fRich700DigiPar ->getPMTData(pmtid);
		if(data){
		    //    +y   row 0 at max y
		    //     |
		    // +x--|   col 0 at max x
		    //
		    // (fx+w,fy+w) 1     2
                    //                x(fx,fy)
		    //             4     3
                    //
		    Int_t indx = npix-1 - (col%npix);  // local pixel index running along x in ascending order
                    Int_t indy = npix-1 - (row%npix);  // local pixel index running along y in ascending order

                    // 1
		    coord [0] = (data->fX+w- ((indx  )*pixw))*TO_CM;
                    coord [1] = (data->fY+w- ((indy  )*pixw))*TO_CM;
                    coord [2] = (data->fZ)*TO_CM;
                    // 2
		    coord [3] = (data->fX+w- ((indx+1)*pixw))*TO_CM;
                    coord [4] = (data->fY+w- ((indy  )*pixw))*TO_CM;
                    coord [5] = (data->fZ)*TO_CM;
                    // 3
		    coord [6] = (data->fX+w- ((indx+1)*pixw))*TO_CM;
                    coord [7] = (data->fY+w- ((indy+1)*pixw))*TO_CM;
                    coord [8] = (data->fZ)*TO_CM;
                    // 4
		    coord [9]  = (data->fX+w- ((indx  )*pixw))*TO_CM;
                    coord [10] = (data->fY+w- ((indy+1)*pixw))*TO_CM;
                    coord [11] = (data->fZ)*TO_CM;


		    AddQuad(coord);
		    QuadValue(10);
		    QuadId(new TNamed(Form("all_sector"), "TNamed assigned to a quad as an indentifier."));

		}
	    }
	}
	//--------------------------------------------------------------------
	RefitPlex();
    }
}
HEDRich700PadPlane::~HEDRich700PadPlane(){
}

void HEDRich700PadPlane::Print(){
    cout<<GetTitle()<<endl;
}

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

//-----------------------------------------------------------------
HEDRichRing::HEDRichRing(HRichHitSim* hit):TEveLine()
{
    // create a line representing a RICH ring on
    // the pad plane.
    // Works for real and sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.

    HCategory* richHitCat = gHades->getCurrentEvent()->getCategory(catRichHit);
    Int_t index = -1;
    if(richHitCat) index = richHitCat->getIndex(hit);

    Int_t  sec  = hit->getSector();
    Float_t phi   = hit->getPhi();
    if(sec < 5) {
	phi -= (sec*60.);
    } else {
	phi +=60.;
    }

    TString title = "EDRichRing: \n";
    title += Form(" ind   = %i\n"   ,index);
    title += Form(" sec   = %i\n"   ,sec);
    title += Form(" phi   = %5.3f\n",phi);
    title += Form(" theta = %5.3f\n",hit->getTheta());
    if(!hit->isNewRich())
    {
	title += Form(" hough = %i \n"  ,hit->getRingHouTra());
	title += Form(" ampl  = %i\n"   ,hit->getRingAmplitude());
	title += Form(" patMat= %i\n"   ,hit->getRingPatMat());
	title += Form(" padNr = %i\n"   ,hit->getRingPadNr());
	title += Form(" centr = %5.3f\n",hit->getCentroid());
	title += Form(" radius= %5.3f\n",hit->getRadius());
    } else {
 	title += Form(" radius= %5.3f\n",hit->getRich700CircleRadius());
	title += Form(" chi2  = %6.3f\n",hit->getRich700CircleChi2());
	title += Form(" nCals = %i\n"   ,hit->getRich700NofRichCals() );
    }

    Float_t R = 1., dW = 0, dH = 5;
    Int_t n = 10;

    Float_t x,y,z;
    HGeomVector p;

    if(hit->isNewRich())
    {
	hit->getLabXYZ(&x,&y,&z);

	if(hit->getRich700CircleRadius() > 1.) R = hit->getRich700CircleRadius(); // minimum radius

	for(Int_t i=0;i<=n;i++)
	{
	    p.setXYZ(x + (R+dW) * TMath::Cos(TMath::TwoPi()*i/n),
		     y + (R+dW) * TMath::Sin(TMath::TwoPi()*i/n),
		     z+dH);
            p *= TO_CM;
	    SetNextPoint(p.X(),p.Y(),p.Z());
	}

    } else {
	HRichGeometryPar* fRichGeometryPar = (HRichGeometryPar*) gHades->getRuntimeDb()->getContainer("RichGeometryParameters");
	if(fRichGeometryPar)
	{
	    //--------------------------------------------------------------------
	    // get transformation RICH padplane -> sector sys
	    HGeomTransform& trans = *HEDTransform::getRichSecTrans();
	    //--------------------------------------------------------------------

	    hit->getXY(&x,&y);
	    x*=-1;

	    if(hit->getRadius() > 1.) R = hit->getRadius(); // minimum radius



	    for(Int_t i=0;i<=n;i++)
	    {
		p.setXYZ(x + (R+dW) * TMath::Cos(TMath::TwoPi()*i/n),
			 y + (R+dW) * TMath::Sin(TMath::TwoPi()*i/n),
			 dH);
		HEDTransform::calcRichPadPlaneToLab(sec,p,trans);
		SetNextPoint(p.X(),p.Y(),p.Z());
	    }
	}
    }



    SetElementName("EDRichRing");
    SetTitle(title.Data());
    SetMarkerColor(kRed);
    SetLineColor(kRed);
    SetRnrLine(kTRUE);
    SetSmooth(kTRUE);
    SetPickable(kTRUE);
}
HEDRichRing::~HEDRichRing(){;}

void HEDRichRing::Print(){
   cout<<GetTitle()<<endl;
}
//-----------------------------------------------------------------

//-----------------------------------------------------------------
HEDRichHitPadPlane::HEDRichHitPadPlane(HRichHitSim* hit) : TEvePointSet(1)
{
    // Works for real and sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.

    HCategory* richHitCat = gHades->getCurrentEvent()->getCategory(catRichHit);
    Int_t index = -1;
    if(richHitCat) index = richHitCat->getIndex(hit);

    Int_t  sec  = hit->getSector();
    Float_t phi   = hit->getPhi();
    if(sec < 5) {
	phi -= (sec*60.);
    } else {
	phi +=60.;
    }

    Float_t x,y,z;

    HGeomVector p;
    if(hit->isNewRich()){
	hit->getLabXYZ(&x,&y,&z);
	p.setXYZ(x,y,z);
        p *= TO_CM;
    } else {

	hit->getXY(&x,&y);
	x*=-1;

	p.setXYZ(x,y,0);

	HRichGeometryPar* fRichGeometryPar = (HRichGeometryPar*) gHades->getRuntimeDb()->getContainer("RichGeometryParameters");
	if(fRichGeometryPar)
	{
	    //--------------------------------------------------------------------
	    // get transformation RICH padplane -> sector sys
	    HGeomTransform& trans = *HEDTransform::getRichSecTrans();
	    HEDTransform::calcRichPadPlaneToLab(sec,p,trans);
	    //--------------------------------------------------------------------
	}
    }

    TString title = "EDRichHit: \n";
    title += Form(" ind   = %i\n"   ,index);
    title += Form(" sec   = %i\n"   ,sec);
    title += Form(" phi   = %5.3f\n",phi);
    title += Form(" theta = %5.3f\n",hit->getTheta());
    if(!hit->isNewRich())
    {
	title += Form(" hough = %i \n"  ,hit->getRingHouTra());
	title += Form(" ampl  = %i\n"   ,hit->getRingAmplitude());
	title += Form(" patMat= %i\n"   ,hit->getRingPatMat());
	title += Form(" padNr = %i\n"   ,hit->getRingPadNr());
	title += Form(" centr = %5.3f\n",hit->getCentroid());
    } else {
	title += Form(" radius= 5.3%f\n",hit->getRich700CircleRadius());
	title += Form(" chi2  = %6.3f\n",hit->getRich700CircleChi2());
	title += Form(" nCals = %i\n"   ,hit->getRich700NofRichCals() );
    }


    TString cname = hit->ClassName();
    if(cname.CompareTo("HRichHitSim") == 0){

	HCategory* kineCat = gHades->getCurrentEvent()->getCategory(catGeantKine);
	Int_t   tracks[3] = {hit->track1    ,hit->track2    ,hit->track3};
        Int_t weight[3] = {hit->weigTrack1,hit->weigTrack2,hit->weigTrack3};

	for(Int_t i = 0; i < 3; i ++){
            Int_t tr = tracks[i];
	    Int_t parentTr = -1;
            Float_t mom    = -1;
	    if(kineCat && tr > 0 ){
		HGeantKine* kine = 0;
		kine = HCategoryManager::getObject(kine,kineCat,tr-1);
		mom      = kine->getTotalMomentum();
                parentTr = kine->getParentTrack();
		if(HPhysicsConstants::pid(kine->getID())){ cname = HPhysicsConstants::pid(kine->getID());}
		else                                     { cname = "unknown"; }
		if(i == 0) { // choose some markers for differnt cases
		    if(parentTr > 0 )                             { SetMarkerStyle(kPlus);} // secondary
		    if(kine->getID() > 3 ){ // no lep or gamma
			SetMarkerStyle(kPlus);
		        SetMarkerSize(2);
		    }// no lepton
		}
	    } else {
		cname = "unknown";
	    }
	    title += Form("\t tr = %i x %i weight (%s,%6.2f MeV/c, parent %i)\n",tr,weight[i]
			  ,cname.Data(),mom,parentTr);

	}
    }

    title += Form(" p(%5.3f,%5.3f,%5.3f)\n",p.X(),p.Y(),p.Z());

    SetElementName("EDRichHitPadPlane");
    SetTitle(title.Data());
    SetPoint(0, p.X(),p.Y(),p.Z());
    SetMarkerColor(kYellow);
    SetPickable(kTRUE);

}
HEDRichHitPadPlane::~HEDRichHitPadPlane(){;}

void HEDRichHitPadPlane::Print()
{
    cout<<GetTitle()<<endl;
}
//-----------------------------------------------------------------

//-----------------------------------------------------------------
HEDRichGeantPadPlane::HEDRichGeantPadPlane(HGeantKine* kine,Int_t select,HGeantRichDirect* geadir) : TEvePointSet()
{
    // Works for sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.


    //----------------------------------------------------------------
    Int_t hitInd = -1;

    if(select == 0 && kine)
    {
	hitInd = kine->getFirstRichHit();
	if(hitInd >= 0)
	{
	    HCategory* catRichPho = (HCategory*)gHades->getCurrentEvent()->getCategory(catRichGeantRaw);
	    if(catRichPho)
	    {
		HGeomVector p;
		HGeantRichPhoton* rich = 0;
		while ( (rich = HCategoryManager::getObject(rich,catRichPho,hitInd)) ){

		    if(!HEDTransform::isNewRich()){
			Int_t s  = rich->getSector();

			p.setX( -rich->getX());
			p.setY( rich->getY());
			p.setZ(0);

			if(HEDTransform::calcRichGeantPadplanePointLab(s,p))
			{
			    SetNextPoint(p.getX(),p.getY(),p.getZ());
			}
		    } else {

			HRich700DigiPar* fRich700DigiPar = (HRich700DigiPar*) gHades->getRuntimeDb()->getContainer("Rich700DigiPar");
			if(fRich700DigiPar){
                           HRich700PmtData* data =  fRich700DigiPar->getPMTData(rich->getPmtId());
			   if(data){
			       p.setXYZ(rich->getY()+data->fX,rich->getX()+data->fY,data->fZ);
                               p *= TO_CM;
			       SetNextPoint(p.getX(),p.getY(),p.getZ());
			   }
			}
		    }
		    hitInd   = rich->getNextHitIndex();
		} // end loop over rich photon
	    }
	}
    }

    if(select == 1 && geadir)
    {
        HCategory* catKine    = (HCategory*)gHades->getCurrentEvent()->getCategory(catGeantKine);

	if( catKine) kine = HCategoryManager::getObject(kine,catKine,geadir->getTrack()-1);

	HGeomVector p;

	if(!HEDTransform::isNewRich()){
	    Int_t s  = geadir->getSector();
	    p.setX( -geadir->getX());
	    p.setY(  geadir->getY());
	    p.setZ(0);

	    if(HEDTransform::calcRichGeantPadplanePointLab(s,p))
	    {
		SetNextPoint(p.getX(),p.getY(),p.getZ());
	    }
	} else {
	    HRich700DigiPar* fRich700DigiPar = (HRich700DigiPar*) gHades->getRuntimeDb()->getContainer("Rich700DigiPar");
	    if(fRich700DigiPar){
		HRich700PmtData* data =  fRich700DigiPar->getPMTData(geadir->getPmtId());
		if(data){
		    p.setXYZ(geadir->getY()+data->fX,geadir->getX()+data->fY,data->fZ);
		    p *= TO_CM;
		    SetNextPoint(p.getX(),p.getY(),p.getZ());
		}
	    }

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

    TString title = "EDRichGeantPadPlane: \n";

    Int_t  id = 1000;
    Float_t mom = -1;
    Int_t parentTrack = 0;
    Int_t grandparentTrack = 0;
    Int_t track = 0;
    if(kine){
	id    = kine->getID();
        track = kine->getTrack();
	mom   = kine->getTotalMomentum();
	parentTrack = kine->getParentTrack();

	if(kine->getParentTrack() > 0){
	    HCategory* catKine = (HCategory*)gHades->getCurrentEvent()->getCategory(catGeantKine);
	    if(catKine){
		HGeantKine* parent = 0;
		parent = HCategoryManager::getObject(parent,catKine,kine->getParentTrack()-1);
		if(parent){
		    grandparentTrack = parent->getParentTrack();
		}
	    }
	}
    }
    TString cname;
    if(HPhysicsConstants::pid(id) && id >= 0){ cname = HPhysicsConstants::pid(id);}
    else                                     { cname = "unknown"; }





    title += Form(" tr = %i (%s , %5.3f MeV/c, parent %i grandparent %i)\n"
		      ,track
		      ,cname.Data()
		      ,mom
		      ,parentTrack
		      ,grandparentTrack );

    SetElementName("EDRichGeantPadPlane");
    SetTitle(title.Data());
    SetMarkerColor(kYellow);
    SetPickable(kTRUE);

}
HEDRichGeantPadPlane::~HEDRichGeantPadPlane(){;}

void HEDRichGeantPadPlane::Print()
{
    cout<<GetTitle()<<endl;
}
//-----------------------------------------------------------------

//-----------------------------------------------------------------
HEDRichGeantMirror::HEDRichGeantMirror(HGeantRichMirror* mirror) : TEvePointSet()
{
    // Works for sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.


    //----------------------------------------------------------------
    TString title;
    if(mirror)
    {
        HGeomVector p;
	Float_t x,y,z;
	//Int_t s  = mirror->getSector();
        Int_t trNum,id;
	mirror->getHit(x,y,z);
        mirror->getTrack(trNum, id);

	p.setXYZ(x,y,z);
        p *= 0.1; // mm -> cm
	SetNextPoint(p.getX(),p.getY(),p.getZ());


    title = "EDRichGeantMirror: \n";

    HGeantKine* kine = 0;

    Float_t ptot = 0;


    Int_t parentTrack = 0;
    Int_t grandparentTrack = 0;
    kine = HCategoryManager::getObject(kine,catGeantKine,trNum-1);
    if(kine){
	ptot          = kine->getTotalMomentum();
	parentTrack   = kine->getParentTrack();

	if(kine->getParentTrack() > 0){
	    HCategory* catKine = (HCategory*)gHades->getCurrentEvent()->getCategory(catGeantKine);
	    if(catKine){
		HGeantKine* parent = 0;
		parent = HCategoryManager::getObject(parent,catKine,kine->getParentTrack()-1);
		if(parent){
		    grandparentTrack = parent->getParentTrack();
		}
	    }
	}
    }

    TString cname;
    if(HPhysicsConstants::pid(id) && id >= 0){ cname = HPhysicsConstants::pid(id);}
    else                                     { cname = "unknown"; }




    title += Form(" tr = %i (%s , %5.3f MeV/c, parent %i grandparent %i)\n"
		      ,trNum
		      ,cname.Data()
		      ,ptot
		      ,parentTrack
		      ,grandparentTrack);

    }
    SetElementName("EDRichGeantMirror");
    SetTitle(title.Data());
    SetMarkerColor(kYellow);
    SetPickable(kTRUE);

}
HEDRichGeantMirror::~HEDRichGeantMirror(){;}

void HEDRichGeantMirror::Print()
{
    cout<<GetTitle()<<endl;
}
//-----------------------------------------------------------------

//-----------------------------------------------------------------
HEDRichCompound::HEDRichCompound(HRichHitSim* hit)
{
    // create a compound object consisting a RICH hit and
    // ring on the pad plane.
    // Works for real and sim objects. The object info
    // will be displayed in TEve my mouse over events in
    // the GL Viewer and the EveBrowser of the Event scene.

    HEDRichHitPadPlane* edrichhitplane = new HEDRichHitPadPlane(hit);
    AddElement(edrichhitplane);
    TString title = edrichhitplane->GetTitle();

    HGeomVector p1,p2,pmirror;

    HEDTransform::calcRichLinePointLab(hit,p1,p2);
    HEDTransform::calcRichMirrorHit(p1,p2,pmirror);

    Float_t x,y,z;
    edrichhitplane->GetPoint(0,x,y,z);

    TEveLine* hitmirr = new TEveLine(2);
    hitmirr->SetElementName("EDRichHitMirror");
    hitmirr->SetTitle(edrichhitplane->GetTitle());

    hitmirr->SetPoint(0,x,y,z);
    hitmirr->SetPoint(1,pmirror.X(),pmirror.Y(),pmirror.Z());
    hitmirr->SetMarkerColor(kYellow);
    hitmirr->SetLineColor(kYellow);
    hitmirr->SetLineStyle(7);
    hitmirr->SetRnrLine(kTRUE);
    hitmirr->SetPickable(kTRUE);

    AddElement(hitmirr);

    HEDRichRing* edrichring = new HEDRichRing(hit);
    AddElement(edrichring);


    SetElementName("EDRichCompound");
    SetTitle(title.Data());
    SetPickable(kTRUE);
}
HEDRichCompound::~HEDRichCompound(){;}

void HEDRichCompound::Print(){
   cout<<GetTitle()<<endl;
}
//-----------------------------------------------------------------

//----------------------------------------------------------------
HEDGroup::HEDGroup(const Char_t* name,const Char_t* title, Int_t n, const Char_t* subname)
: TEveElementList(name,title)
{
    // List of n TEveElementLists with name/title subname_i
    // Useful for creating hirachical structures
    size = n;
    list = new TEveElementList* [size];
    for(Int_t i = 0; i < size; i ++){
	list[i] = new TEveElementList(Form("%s_%i",subname,i),Form("%s_%i",subname,i));
	TEveElement::AddElement((TEveElement*)list[i]);
    }
}
HEDGroup::~HEDGroup(){
    for(Int_t n = 0; n < size; n ++){
	list[n]->DestroyElements();
        delete list[n];
    }
}
//----------------------------------------------------------------

//----------------------------------------------------------------
HEDGroup2D::HEDGroup2D(const Char_t* name,const Char_t* title, Int_t n1,Int_t n2, const Char_t* subname1, const Char_t* subname2)
: TEveElementList(name,title)
{
    // 2 dim List of n1xn2 TEveElementLists with name/title
    // subname1_i subname2_i. Useful for creating hirachical
    // structures

    size1 = n1;
    size2 = n2;

    list1 = new TEveElementList* [size1];

    list2 = new TEveElementList** [size1];
    for(Int_t i = 0; i < size1; i ++){
	list2[i] = new TEveElementList* [size2];
    }

    for(Int_t i = 0; i < size1; i ++){
	list1[i] = new TEveElementList(Form("%s_%i",subname1,i),Form("%s_%i",subname1,i));
	TEveElement::AddElement((TEveElement*)list1[i]);
	for(Int_t j = 0; j < size2; j ++){
	    list2[i][j] = new TEveElementList(Form("%s_%i",subname2,j),Form("%s_%i",subname2,j));
	    list1[i]->AddElement((TEveElement*)list2[i][j]);
	}
    }
}
HEDGroup2D::~HEDGroup2D(){
    for(Int_t i = 0; i < size1; i ++){
	for(Int_t j = 0; j < size2; j ++){
	    list2[i][j]->DestroyElements();
	    delete list2[i][j];
	}
	delete list1[i];
    }
}
//----------------------------------------------------------------
 hedhitobjects.cc:1
 hedhitobjects.cc:2
 hedhitobjects.cc:3
 hedhitobjects.cc:4
 hedhitobjects.cc:5
 hedhitobjects.cc:6
 hedhitobjects.cc:7
 hedhitobjects.cc:8
 hedhitobjects.cc:9
 hedhitobjects.cc:10
 hedhitobjects.cc:11
 hedhitobjects.cc:12
 hedhitobjects.cc:13
 hedhitobjects.cc:14
 hedhitobjects.cc:15
 hedhitobjects.cc:16
 hedhitobjects.cc:17
 hedhitobjects.cc:18
 hedhitobjects.cc:19
 hedhitobjects.cc:20
 hedhitobjects.cc:21
 hedhitobjects.cc:22
 hedhitobjects.cc:23
 hedhitobjects.cc:24
 hedhitobjects.cc:25
 hedhitobjects.cc:26
 hedhitobjects.cc:27
 hedhitobjects.cc:28
 hedhitobjects.cc:29
 hedhitobjects.cc:30
 hedhitobjects.cc:31
 hedhitobjects.cc:32
 hedhitobjects.cc:33
 hedhitobjects.cc:34
 hedhitobjects.cc:35
 hedhitobjects.cc:36
 hedhitobjects.cc:37
 hedhitobjects.cc:38
 hedhitobjects.cc:39
 hedhitobjects.cc:40
 hedhitobjects.cc:41
 hedhitobjects.cc:42
 hedhitobjects.cc:43
 hedhitobjects.cc:44
 hedhitobjects.cc:45
 hedhitobjects.cc:46
 hedhitobjects.cc:47
 hedhitobjects.cc:48
 hedhitobjects.cc:49
 hedhitobjects.cc:50
 hedhitobjects.cc:51
 hedhitobjects.cc:52
 hedhitobjects.cc:53
 hedhitobjects.cc:54
 hedhitobjects.cc:55
 hedhitobjects.cc:56
 hedhitobjects.cc:57
 hedhitobjects.cc:58
 hedhitobjects.cc:59
 hedhitobjects.cc:60
 hedhitobjects.cc:61
 hedhitobjects.cc:62
 hedhitobjects.cc:63
 hedhitobjects.cc:64
 hedhitobjects.cc:65
 hedhitobjects.cc:66
 hedhitobjects.cc:67
 hedhitobjects.cc:68
 hedhitobjects.cc:69
 hedhitobjects.cc:70
 hedhitobjects.cc:71
 hedhitobjects.cc:72
 hedhitobjects.cc:73
 hedhitobjects.cc:74
 hedhitobjects.cc:75
 hedhitobjects.cc:76
 hedhitobjects.cc:77
 hedhitobjects.cc:78
 hedhitobjects.cc:79
 hedhitobjects.cc:80
 hedhitobjects.cc:81
 hedhitobjects.cc:82
 hedhitobjects.cc:83
 hedhitobjects.cc:84
 hedhitobjects.cc:85
 hedhitobjects.cc:86
 hedhitobjects.cc:87
 hedhitobjects.cc:88
 hedhitobjects.cc:89
 hedhitobjects.cc:90
 hedhitobjects.cc:91
 hedhitobjects.cc:92
 hedhitobjects.cc:93
 hedhitobjects.cc:94
 hedhitobjects.cc:95
 hedhitobjects.cc:96
 hedhitobjects.cc:97
 hedhitobjects.cc:98
 hedhitobjects.cc:99
 hedhitobjects.cc:100
 hedhitobjects.cc:101
 hedhitobjects.cc:102
 hedhitobjects.cc:103
 hedhitobjects.cc:104
 hedhitobjects.cc:105
 hedhitobjects.cc:106
 hedhitobjects.cc:107
 hedhitobjects.cc:108
 hedhitobjects.cc:109
 hedhitobjects.cc:110
 hedhitobjects.cc:111
 hedhitobjects.cc:112
 hedhitobjects.cc:113
 hedhitobjects.cc:114
 hedhitobjects.cc:115
 hedhitobjects.cc:116
 hedhitobjects.cc:117
 hedhitobjects.cc:118
 hedhitobjects.cc:119
 hedhitobjects.cc:120
 hedhitobjects.cc:121
 hedhitobjects.cc:122
 hedhitobjects.cc:123
 hedhitobjects.cc:124
 hedhitobjects.cc:125
 hedhitobjects.cc:126
 hedhitobjects.cc:127
 hedhitobjects.cc:128
 hedhitobjects.cc:129
 hedhitobjects.cc:130
 hedhitobjects.cc:131
 hedhitobjects.cc:132
 hedhitobjects.cc:133
 hedhitobjects.cc:134
 hedhitobjects.cc:135
 hedhitobjects.cc:136
 hedhitobjects.cc:137
 hedhitobjects.cc:138
 hedhitobjects.cc:139
 hedhitobjects.cc:140
 hedhitobjects.cc:141
 hedhitobjects.cc:142
 hedhitobjects.cc:143
 hedhitobjects.cc:144
 hedhitobjects.cc:145
 hedhitobjects.cc:146
 hedhitobjects.cc:147
 hedhitobjects.cc:148
 hedhitobjects.cc:149
 hedhitobjects.cc:150
 hedhitobjects.cc:151
 hedhitobjects.cc:152
 hedhitobjects.cc:153
 hedhitobjects.cc:154
 hedhitobjects.cc:155
 hedhitobjects.cc:156
 hedhitobjects.cc:157
 hedhitobjects.cc:158
 hedhitobjects.cc:159
 hedhitobjects.cc:160
 hedhitobjects.cc:161
 hedhitobjects.cc:162
 hedhitobjects.cc:163
 hedhitobjects.cc:164
 hedhitobjects.cc:165
 hedhitobjects.cc:166
 hedhitobjects.cc:167
 hedhitobjects.cc:168
 hedhitobjects.cc:169
 hedhitobjects.cc:170
 hedhitobjects.cc:171
 hedhitobjects.cc:172
 hedhitobjects.cc:173
 hedhitobjects.cc:174
 hedhitobjects.cc:175
 hedhitobjects.cc:176
 hedhitobjects.cc:177
 hedhitobjects.cc:178
 hedhitobjects.cc:179
 hedhitobjects.cc:180
 hedhitobjects.cc:181
 hedhitobjects.cc:182
 hedhitobjects.cc:183
 hedhitobjects.cc:184
 hedhitobjects.cc:185
 hedhitobjects.cc:186
 hedhitobjects.cc:187
 hedhitobjects.cc:188
 hedhitobjects.cc:189
 hedhitobjects.cc:190
 hedhitobjects.cc:191
 hedhitobjects.cc:192
 hedhitobjects.cc:193
 hedhitobjects.cc:194
 hedhitobjects.cc:195
 hedhitobjects.cc:196
 hedhitobjects.cc:197
 hedhitobjects.cc:198
 hedhitobjects.cc:199
 hedhitobjects.cc:200
 hedhitobjects.cc:201
 hedhitobjects.cc:202
 hedhitobjects.cc:203
 hedhitobjects.cc:204
 hedhitobjects.cc:205
 hedhitobjects.cc:206
 hedhitobjects.cc:207
 hedhitobjects.cc:208
 hedhitobjects.cc:209
 hedhitobjects.cc:210
 hedhitobjects.cc:211
 hedhitobjects.cc:212
 hedhitobjects.cc:213
 hedhitobjects.cc:214
 hedhitobjects.cc:215
 hedhitobjects.cc:216
 hedhitobjects.cc:217
 hedhitobjects.cc:218
 hedhitobjects.cc:219
 hedhitobjects.cc:220
 hedhitobjects.cc:221
 hedhitobjects.cc:222
 hedhitobjects.cc:223
 hedhitobjects.cc:224
 hedhitobjects.cc:225
 hedhitobjects.cc:226
 hedhitobjects.cc:227
 hedhitobjects.cc:228
 hedhitobjects.cc:229
 hedhitobjects.cc:230
 hedhitobjects.cc:231
 hedhitobjects.cc:232
 hedhitobjects.cc:233
 hedhitobjects.cc:234
 hedhitobjects.cc:235
 hedhitobjects.cc:236
 hedhitobjects.cc:237
 hedhitobjects.cc:238
 hedhitobjects.cc:239
 hedhitobjects.cc:240
 hedhitobjects.cc:241
 hedhitobjects.cc:242
 hedhitobjects.cc:243
 hedhitobjects.cc:244
 hedhitobjects.cc:245
 hedhitobjects.cc:246
 hedhitobjects.cc:247
 hedhitobjects.cc:248
 hedhitobjects.cc:249
 hedhitobjects.cc:250
 hedhitobjects.cc:251
 hedhitobjects.cc:252
 hedhitobjects.cc:253
 hedhitobjects.cc:254
 hedhitobjects.cc:255
 hedhitobjects.cc:256
 hedhitobjects.cc:257
 hedhitobjects.cc:258
 hedhitobjects.cc:259
 hedhitobjects.cc:260
 hedhitobjects.cc:261
 hedhitobjects.cc:262
 hedhitobjects.cc:263
 hedhitobjects.cc:264
 hedhitobjects.cc:265
 hedhitobjects.cc:266
 hedhitobjects.cc:267
 hedhitobjects.cc:268
 hedhitobjects.cc:269
 hedhitobjects.cc:270
 hedhitobjects.cc:271
 hedhitobjects.cc:272
 hedhitobjects.cc:273
 hedhitobjects.cc:274
 hedhitobjects.cc:275
 hedhitobjects.cc:276
 hedhitobjects.cc:277
 hedhitobjects.cc:278
 hedhitobjects.cc:279
 hedhitobjects.cc:280
 hedhitobjects.cc:281
 hedhitobjects.cc:282
 hedhitobjects.cc:283
 hedhitobjects.cc:284
 hedhitobjects.cc:285
 hedhitobjects.cc:286
 hedhitobjects.cc:287
 hedhitobjects.cc:288
 hedhitobjects.cc:289
 hedhitobjects.cc:290
 hedhitobjects.cc:291
 hedhitobjects.cc:292
 hedhitobjects.cc:293
 hedhitobjects.cc:294
 hedhitobjects.cc:295
 hedhitobjects.cc:296
 hedhitobjects.cc:297
 hedhitobjects.cc:298
 hedhitobjects.cc:299
 hedhitobjects.cc:300
 hedhitobjects.cc:301
 hedhitobjects.cc:302
 hedhitobjects.cc:303
 hedhitobjects.cc:304
 hedhitobjects.cc:305
 hedhitobjects.cc:306
 hedhitobjects.cc:307
 hedhitobjects.cc:308
 hedhitobjects.cc:309
 hedhitobjects.cc:310
 hedhitobjects.cc:311
 hedhitobjects.cc:312
 hedhitobjects.cc:313
 hedhitobjects.cc:314
 hedhitobjects.cc:315
 hedhitobjects.cc:316
 hedhitobjects.cc:317
 hedhitobjects.cc:318
 hedhitobjects.cc:319
 hedhitobjects.cc:320
 hedhitobjects.cc:321
 hedhitobjects.cc:322
 hedhitobjects.cc:323
 hedhitobjects.cc:324
 hedhitobjects.cc:325
 hedhitobjects.cc:326
 hedhitobjects.cc:327
 hedhitobjects.cc:328
 hedhitobjects.cc:329
 hedhitobjects.cc:330
 hedhitobjects.cc:331
 hedhitobjects.cc:332
 hedhitobjects.cc:333
 hedhitobjects.cc:334
 hedhitobjects.cc:335
 hedhitobjects.cc:336
 hedhitobjects.cc:337
 hedhitobjects.cc:338
 hedhitobjects.cc:339
 hedhitobjects.cc:340
 hedhitobjects.cc:341
 hedhitobjects.cc:342
 hedhitobjects.cc:343
 hedhitobjects.cc:344
 hedhitobjects.cc:345
 hedhitobjects.cc:346
 hedhitobjects.cc:347
 hedhitobjects.cc:348
 hedhitobjects.cc:349
 hedhitobjects.cc:350
 hedhitobjects.cc:351
 hedhitobjects.cc:352
 hedhitobjects.cc:353
 hedhitobjects.cc:354
 hedhitobjects.cc:355
 hedhitobjects.cc:356
 hedhitobjects.cc:357
 hedhitobjects.cc:358
 hedhitobjects.cc:359
 hedhitobjects.cc:360
 hedhitobjects.cc:361
 hedhitobjects.cc:362
 hedhitobjects.cc:363
 hedhitobjects.cc:364
 hedhitobjects.cc:365
 hedhitobjects.cc:366
 hedhitobjects.cc:367
 hedhitobjects.cc:368
 hedhitobjects.cc:369
 hedhitobjects.cc:370
 hedhitobjects.cc:371
 hedhitobjects.cc:372
 hedhitobjects.cc:373
 hedhitobjects.cc:374
 hedhitobjects.cc:375
 hedhitobjects.cc:376
 hedhitobjects.cc:377
 hedhitobjects.cc:378
 hedhitobjects.cc:379
 hedhitobjects.cc:380
 hedhitobjects.cc:381
 hedhitobjects.cc:382
 hedhitobjects.cc:383
 hedhitobjects.cc:384
 hedhitobjects.cc:385
 hedhitobjects.cc:386
 hedhitobjects.cc:387
 hedhitobjects.cc:388
 hedhitobjects.cc:389
 hedhitobjects.cc:390
 hedhitobjects.cc:391
 hedhitobjects.cc:392
 hedhitobjects.cc:393
 hedhitobjects.cc:394
 hedhitobjects.cc:395
 hedhitobjects.cc:396
 hedhitobjects.cc:397
 hedhitobjects.cc:398
 hedhitobjects.cc:399
 hedhitobjects.cc:400
 hedhitobjects.cc:401
 hedhitobjects.cc:402
 hedhitobjects.cc:403
 hedhitobjects.cc:404
 hedhitobjects.cc:405
 hedhitobjects.cc:406
 hedhitobjects.cc:407
 hedhitobjects.cc:408
 hedhitobjects.cc:409
 hedhitobjects.cc:410
 hedhitobjects.cc:411
 hedhitobjects.cc:412
 hedhitobjects.cc:413
 hedhitobjects.cc:414
 hedhitobjects.cc:415
 hedhitobjects.cc:416
 hedhitobjects.cc:417
 hedhitobjects.cc:418
 hedhitobjects.cc:419
 hedhitobjects.cc:420
 hedhitobjects.cc:421
 hedhitobjects.cc:422
 hedhitobjects.cc:423
 hedhitobjects.cc:424
 hedhitobjects.cc:425
 hedhitobjects.cc:426
 hedhitobjects.cc:427
 hedhitobjects.cc:428
 hedhitobjects.cc:429
 hedhitobjects.cc:430
 hedhitobjects.cc:431
 hedhitobjects.cc:432
 hedhitobjects.cc:433
 hedhitobjects.cc:434
 hedhitobjects.cc:435
 hedhitobjects.cc:436
 hedhitobjects.cc:437
 hedhitobjects.cc:438
 hedhitobjects.cc:439
 hedhitobjects.cc:440
 hedhitobjects.cc:441
 hedhitobjects.cc:442
 hedhitobjects.cc:443
 hedhitobjects.cc:444
 hedhitobjects.cc:445
 hedhitobjects.cc:446
 hedhitobjects.cc:447
 hedhitobjects.cc:448
 hedhitobjects.cc:449
 hedhitobjects.cc:450
 hedhitobjects.cc:451
 hedhitobjects.cc:452
 hedhitobjects.cc:453
 hedhitobjects.cc:454
 hedhitobjects.cc:455
 hedhitobjects.cc:456
 hedhitobjects.cc:457
 hedhitobjects.cc:458
 hedhitobjects.cc:459
 hedhitobjects.cc:460
 hedhitobjects.cc:461
 hedhitobjects.cc:462
 hedhitobjects.cc:463
 hedhitobjects.cc:464
 hedhitobjects.cc:465
 hedhitobjects.cc:466
 hedhitobjects.cc:467
 hedhitobjects.cc:468
 hedhitobjects.cc:469
 hedhitobjects.cc:470
 hedhitobjects.cc:471
 hedhitobjects.cc:472
 hedhitobjects.cc:473
 hedhitobjects.cc:474
 hedhitobjects.cc:475
 hedhitobjects.cc:476
 hedhitobjects.cc:477
 hedhitobjects.cc:478
 hedhitobjects.cc:479
 hedhitobjects.cc:480
 hedhitobjects.cc:481
 hedhitobjects.cc:482
 hedhitobjects.cc:483
 hedhitobjects.cc:484
 hedhitobjects.cc:485
 hedhitobjects.cc:486
 hedhitobjects.cc:487
 hedhitobjects.cc:488
 hedhitobjects.cc:489
 hedhitobjects.cc:490
 hedhitobjects.cc:491
 hedhitobjects.cc:492
 hedhitobjects.cc:493
 hedhitobjects.cc:494
 hedhitobjects.cc:495
 hedhitobjects.cc:496
 hedhitobjects.cc:497
 hedhitobjects.cc:498
 hedhitobjects.cc:499
 hedhitobjects.cc:500
 hedhitobjects.cc:501
 hedhitobjects.cc:502
 hedhitobjects.cc:503
 hedhitobjects.cc:504
 hedhitobjects.cc:505
 hedhitobjects.cc:506
 hedhitobjects.cc:507
 hedhitobjects.cc:508
 hedhitobjects.cc:509
 hedhitobjects.cc:510
 hedhitobjects.cc:511
 hedhitobjects.cc:512
 hedhitobjects.cc:513
 hedhitobjects.cc:514
 hedhitobjects.cc:515
 hedhitobjects.cc:516
 hedhitobjects.cc:517
 hedhitobjects.cc:518
 hedhitobjects.cc:519
 hedhitobjects.cc:520
 hedhitobjects.cc:521
 hedhitobjects.cc:522
 hedhitobjects.cc:523
 hedhitobjects.cc:524
 hedhitobjects.cc:525
 hedhitobjects.cc:526
 hedhitobjects.cc:527
 hedhitobjects.cc:528
 hedhitobjects.cc:529
 hedhitobjects.cc:530
 hedhitobjects.cc:531
 hedhitobjects.cc:532
 hedhitobjects.cc:533
 hedhitobjects.cc:534
 hedhitobjects.cc:535
 hedhitobjects.cc:536
 hedhitobjects.cc:537
 hedhitobjects.cc:538
 hedhitobjects.cc:539
 hedhitobjects.cc:540
 hedhitobjects.cc:541
 hedhitobjects.cc:542
 hedhitobjects.cc:543
 hedhitobjects.cc:544
 hedhitobjects.cc:545
 hedhitobjects.cc:546
 hedhitobjects.cc:547
 hedhitobjects.cc:548
 hedhitobjects.cc:549
 hedhitobjects.cc:550
 hedhitobjects.cc:551
 hedhitobjects.cc:552
 hedhitobjects.cc:553
 hedhitobjects.cc:554
 hedhitobjects.cc:555
 hedhitobjects.cc:556
 hedhitobjects.cc:557
 hedhitobjects.cc:558
 hedhitobjects.cc:559
 hedhitobjects.cc:560
 hedhitobjects.cc:561
 hedhitobjects.cc:562
 hedhitobjects.cc:563
 hedhitobjects.cc:564
 hedhitobjects.cc:565
 hedhitobjects.cc:566
 hedhitobjects.cc:567
 hedhitobjects.cc:568
 hedhitobjects.cc:569
 hedhitobjects.cc:570
 hedhitobjects.cc:571
 hedhitobjects.cc:572
 hedhitobjects.cc:573
 hedhitobjects.cc:574
 hedhitobjects.cc:575
 hedhitobjects.cc:576
 hedhitobjects.cc:577
 hedhitobjects.cc:578
 hedhitobjects.cc:579
 hedhitobjects.cc:580
 hedhitobjects.cc:581
 hedhitobjects.cc:582
 hedhitobjects.cc:583
 hedhitobjects.cc:584
 hedhitobjects.cc:585
 hedhitobjects.cc:586
 hedhitobjects.cc:587
 hedhitobjects.cc:588
 hedhitobjects.cc:589
 hedhitobjects.cc:590
 hedhitobjects.cc:591
 hedhitobjects.cc:592
 hedhitobjects.cc:593
 hedhitobjects.cc:594
 hedhitobjects.cc:595
 hedhitobjects.cc:596
 hedhitobjects.cc:597
 hedhitobjects.cc:598
 hedhitobjects.cc:599
 hedhitobjects.cc:600
 hedhitobjects.cc:601
 hedhitobjects.cc:602
 hedhitobjects.cc:603
 hedhitobjects.cc:604
 hedhitobjects.cc:605
 hedhitobjects.cc:606
 hedhitobjects.cc:607
 hedhitobjects.cc:608
 hedhitobjects.cc:609
 hedhitobjects.cc:610
 hedhitobjects.cc:611
 hedhitobjects.cc:612
 hedhitobjects.cc:613
 hedhitobjects.cc:614
 hedhitobjects.cc:615
 hedhitobjects.cc:616
 hedhitobjects.cc:617
 hedhitobjects.cc:618
 hedhitobjects.cc:619
 hedhitobjects.cc:620
 hedhitobjects.cc:621
 hedhitobjects.cc:622
 hedhitobjects.cc:623
 hedhitobjects.cc:624
 hedhitobjects.cc:625
 hedhitobjects.cc:626
 hedhitobjects.cc:627
 hedhitobjects.cc:628
 hedhitobjects.cc:629
 hedhitobjects.cc:630
 hedhitobjects.cc:631
 hedhitobjects.cc:632
 hedhitobjects.cc:633
 hedhitobjects.cc:634
 hedhitobjects.cc:635
 hedhitobjects.cc:636
 hedhitobjects.cc:637
 hedhitobjects.cc:638
 hedhitobjects.cc:639
 hedhitobjects.cc:640
 hedhitobjects.cc:641
 hedhitobjects.cc:642
 hedhitobjects.cc:643
 hedhitobjects.cc:644
 hedhitobjects.cc:645
 hedhitobjects.cc:646
 hedhitobjects.cc:647
 hedhitobjects.cc:648
 hedhitobjects.cc:649
 hedhitobjects.cc:650
 hedhitobjects.cc:651
 hedhitobjects.cc:652
 hedhitobjects.cc:653
 hedhitobjects.cc:654
 hedhitobjects.cc:655
 hedhitobjects.cc:656
 hedhitobjects.cc:657
 hedhitobjects.cc:658
 hedhitobjects.cc:659
 hedhitobjects.cc:660
 hedhitobjects.cc:661
 hedhitobjects.cc:662
 hedhitobjects.cc:663
 hedhitobjects.cc:664
 hedhitobjects.cc:665
 hedhitobjects.cc:666
 hedhitobjects.cc:667
 hedhitobjects.cc:668
 hedhitobjects.cc:669
 hedhitobjects.cc:670
 hedhitobjects.cc:671
 hedhitobjects.cc:672
 hedhitobjects.cc:673
 hedhitobjects.cc:674
 hedhitobjects.cc:675
 hedhitobjects.cc:676
 hedhitobjects.cc:677
 hedhitobjects.cc:678
 hedhitobjects.cc:679
 hedhitobjects.cc:680
 hedhitobjects.cc:681
 hedhitobjects.cc:682
 hedhitobjects.cc:683
 hedhitobjects.cc:684
 hedhitobjects.cc:685
 hedhitobjects.cc:686
 hedhitobjects.cc:687
 hedhitobjects.cc:688
 hedhitobjects.cc:689
 hedhitobjects.cc:690
 hedhitobjects.cc:691
 hedhitobjects.cc:692
 hedhitobjects.cc:693
 hedhitobjects.cc:694
 hedhitobjects.cc:695
 hedhitobjects.cc:696
 hedhitobjects.cc:697
 hedhitobjects.cc:698
 hedhitobjects.cc:699
 hedhitobjects.cc:700
 hedhitobjects.cc:701
 hedhitobjects.cc:702
 hedhitobjects.cc:703
 hedhitobjects.cc:704
 hedhitobjects.cc:705
 hedhitobjects.cc:706
 hedhitobjects.cc:707
 hedhitobjects.cc:708
 hedhitobjects.cc:709
 hedhitobjects.cc:710
 hedhitobjects.cc:711
 hedhitobjects.cc:712
 hedhitobjects.cc:713
 hedhitobjects.cc:714
 hedhitobjects.cc:715
 hedhitobjects.cc:716
 hedhitobjects.cc:717
 hedhitobjects.cc:718
 hedhitobjects.cc:719
 hedhitobjects.cc:720
 hedhitobjects.cc:721
 hedhitobjects.cc:722
 hedhitobjects.cc:723
 hedhitobjects.cc:724
 hedhitobjects.cc:725
 hedhitobjects.cc:726
 hedhitobjects.cc:727
 hedhitobjects.cc:728
 hedhitobjects.cc:729
 hedhitobjects.cc:730
 hedhitobjects.cc:731
 hedhitobjects.cc:732
 hedhitobjects.cc:733
 hedhitobjects.cc:734
 hedhitobjects.cc:735
 hedhitobjects.cc:736
 hedhitobjects.cc:737
 hedhitobjects.cc:738
 hedhitobjects.cc:739
 hedhitobjects.cc:740
 hedhitobjects.cc:741
 hedhitobjects.cc:742
 hedhitobjects.cc:743
 hedhitobjects.cc:744
 hedhitobjects.cc:745
 hedhitobjects.cc:746
 hedhitobjects.cc:747
 hedhitobjects.cc:748
 hedhitobjects.cc:749
 hedhitobjects.cc:750
 hedhitobjects.cc:751
 hedhitobjects.cc:752
 hedhitobjects.cc:753
 hedhitobjects.cc:754
 hedhitobjects.cc:755
 hedhitobjects.cc:756
 hedhitobjects.cc:757
 hedhitobjects.cc:758
 hedhitobjects.cc:759
 hedhitobjects.cc:760
 hedhitobjects.cc:761
 hedhitobjects.cc:762
 hedhitobjects.cc:763
 hedhitobjects.cc:764
 hedhitobjects.cc:765
 hedhitobjects.cc:766
 hedhitobjects.cc:767
 hedhitobjects.cc:768
 hedhitobjects.cc:769
 hedhitobjects.cc:770
 hedhitobjects.cc:771
 hedhitobjects.cc:772
 hedhitobjects.cc:773
 hedhitobjects.cc:774
 hedhitobjects.cc:775
 hedhitobjects.cc:776
 hedhitobjects.cc:777
 hedhitobjects.cc:778
 hedhitobjects.cc:779
 hedhitobjects.cc:780
 hedhitobjects.cc:781
 hedhitobjects.cc:782
 hedhitobjects.cc:783
 hedhitobjects.cc:784
 hedhitobjects.cc:785
 hedhitobjects.cc:786
 hedhitobjects.cc:787
 hedhitobjects.cc:788
 hedhitobjects.cc:789
 hedhitobjects.cc:790
 hedhitobjects.cc:791
 hedhitobjects.cc:792
 hedhitobjects.cc:793
 hedhitobjects.cc:794
 hedhitobjects.cc:795
 hedhitobjects.cc:796
 hedhitobjects.cc:797
 hedhitobjects.cc:798
 hedhitobjects.cc:799
 hedhitobjects.cc:800
 hedhitobjects.cc:801
 hedhitobjects.cc:802
 hedhitobjects.cc:803
 hedhitobjects.cc:804
 hedhitobjects.cc:805
 hedhitobjects.cc:806
 hedhitobjects.cc:807
 hedhitobjects.cc:808
 hedhitobjects.cc:809
 hedhitobjects.cc:810
 hedhitobjects.cc:811
 hedhitobjects.cc:812
 hedhitobjects.cc:813
 hedhitobjects.cc:814
 hedhitobjects.cc:815
 hedhitobjects.cc:816
 hedhitobjects.cc:817
 hedhitobjects.cc:818
 hedhitobjects.cc:819
 hedhitobjects.cc:820
 hedhitobjects.cc:821
 hedhitobjects.cc:822
 hedhitobjects.cc:823
 hedhitobjects.cc:824
 hedhitobjects.cc:825
 hedhitobjects.cc:826
 hedhitobjects.cc:827
 hedhitobjects.cc:828
 hedhitobjects.cc:829
 hedhitobjects.cc:830
 hedhitobjects.cc:831
 hedhitobjects.cc:832
 hedhitobjects.cc:833
 hedhitobjects.cc:834
 hedhitobjects.cc:835
 hedhitobjects.cc:836
 hedhitobjects.cc:837
 hedhitobjects.cc:838
 hedhitobjects.cc:839
 hedhitobjects.cc:840
 hedhitobjects.cc:841
 hedhitobjects.cc:842
 hedhitobjects.cc:843
 hedhitobjects.cc:844
 hedhitobjects.cc:845
 hedhitobjects.cc:846
 hedhitobjects.cc:847
 hedhitobjects.cc:848
 hedhitobjects.cc:849
 hedhitobjects.cc:850
 hedhitobjects.cc:851
 hedhitobjects.cc:852
 hedhitobjects.cc:853
 hedhitobjects.cc:854
 hedhitobjects.cc:855
 hedhitobjects.cc:856
 hedhitobjects.cc:857
 hedhitobjects.cc:858
 hedhitobjects.cc:859
 hedhitobjects.cc:860
 hedhitobjects.cc:861
 hedhitobjects.cc:862
 hedhitobjects.cc:863
 hedhitobjects.cc:864
 hedhitobjects.cc:865
 hedhitobjects.cc:866
 hedhitobjects.cc:867
 hedhitobjects.cc:868
 hedhitobjects.cc:869
 hedhitobjects.cc:870
 hedhitobjects.cc:871
 hedhitobjects.cc:872
 hedhitobjects.cc:873
 hedhitobjects.cc:874
 hedhitobjects.cc:875
 hedhitobjects.cc:876
 hedhitobjects.cc:877
 hedhitobjects.cc:878
 hedhitobjects.cc:879
 hedhitobjects.cc:880
 hedhitobjects.cc:881
 hedhitobjects.cc:882
 hedhitobjects.cc:883
 hedhitobjects.cc:884
 hedhitobjects.cc:885
 hedhitobjects.cc:886
 hedhitobjects.cc:887
 hedhitobjects.cc:888
 hedhitobjects.cc:889
 hedhitobjects.cc:890
 hedhitobjects.cc:891
 hedhitobjects.cc:892
 hedhitobjects.cc:893
 hedhitobjects.cc:894
 hedhitobjects.cc:895
 hedhitobjects.cc:896
 hedhitobjects.cc:897
 hedhitobjects.cc:898
 hedhitobjects.cc:899
 hedhitobjects.cc:900
 hedhitobjects.cc:901
 hedhitobjects.cc:902
 hedhitobjects.cc:903
 hedhitobjects.cc:904
 hedhitobjects.cc:905
 hedhitobjects.cc:906
 hedhitobjects.cc:907
 hedhitobjects.cc:908
 hedhitobjects.cc:909
 hedhitobjects.cc:910
 hedhitobjects.cc:911
 hedhitobjects.cc:912
 hedhitobjects.cc:913
 hedhitobjects.cc:914
 hedhitobjects.cc:915
 hedhitobjects.cc:916
 hedhitobjects.cc:917
 hedhitobjects.cc:918
 hedhitobjects.cc:919
 hedhitobjects.cc:920
 hedhitobjects.cc:921
 hedhitobjects.cc:922
 hedhitobjects.cc:923
 hedhitobjects.cc:924
 hedhitobjects.cc:925
 hedhitobjects.cc:926
 hedhitobjects.cc:927
 hedhitobjects.cc:928
 hedhitobjects.cc:929
 hedhitobjects.cc:930
 hedhitobjects.cc:931
 hedhitobjects.cc:932
 hedhitobjects.cc:933
 hedhitobjects.cc:934
 hedhitobjects.cc:935
 hedhitobjects.cc:936
 hedhitobjects.cc:937
 hedhitobjects.cc:938
 hedhitobjects.cc:939
 hedhitobjects.cc:940
 hedhitobjects.cc:941
 hedhitobjects.cc:942
 hedhitobjects.cc:943
 hedhitobjects.cc:944
 hedhitobjects.cc:945
 hedhitobjects.cc:946
 hedhitobjects.cc:947
 hedhitobjects.cc:948
 hedhitobjects.cc:949
 hedhitobjects.cc:950
 hedhitobjects.cc:951
 hedhitobjects.cc:952
 hedhitobjects.cc:953
 hedhitobjects.cc:954
 hedhitobjects.cc:955
 hedhitobjects.cc:956
 hedhitobjects.cc:957
 hedhitobjects.cc:958
 hedhitobjects.cc:959
 hedhitobjects.cc:960
 hedhitobjects.cc:961
 hedhitobjects.cc:962
 hedhitobjects.cc:963
 hedhitobjects.cc:964
 hedhitobjects.cc:965
 hedhitobjects.cc:966
 hedhitobjects.cc:967
 hedhitobjects.cc:968
 hedhitobjects.cc:969
 hedhitobjects.cc:970
 hedhitobjects.cc:971
 hedhitobjects.cc:972
 hedhitobjects.cc:973
 hedhitobjects.cc:974
 hedhitobjects.cc:975
 hedhitobjects.cc:976
 hedhitobjects.cc:977
 hedhitobjects.cc:978
 hedhitobjects.cc:979
 hedhitobjects.cc:980
 hedhitobjects.cc:981
 hedhitobjects.cc:982
 hedhitobjects.cc:983
 hedhitobjects.cc:984
 hedhitobjects.cc:985
 hedhitobjects.cc:986
 hedhitobjects.cc:987
 hedhitobjects.cc:988
 hedhitobjects.cc:989
 hedhitobjects.cc:990
 hedhitobjects.cc:991
 hedhitobjects.cc:992
 hedhitobjects.cc:993
 hedhitobjects.cc:994
 hedhitobjects.cc:995
 hedhitobjects.cc:996
 hedhitobjects.cc:997
 hedhitobjects.cc:998
 hedhitobjects.cc:999
 hedhitobjects.cc:1000
 hedhitobjects.cc:1001
 hedhitobjects.cc:1002
 hedhitobjects.cc:1003
 hedhitobjects.cc:1004
 hedhitobjects.cc:1005
 hedhitobjects.cc:1006
 hedhitobjects.cc:1007
 hedhitobjects.cc:1008
 hedhitobjects.cc:1009
 hedhitobjects.cc:1010
 hedhitobjects.cc:1011
 hedhitobjects.cc:1012
 hedhitobjects.cc:1013
 hedhitobjects.cc:1014
 hedhitobjects.cc:1015
 hedhitobjects.cc:1016
 hedhitobjects.cc:1017
 hedhitobjects.cc:1018
 hedhitobjects.cc:1019
 hedhitobjects.cc:1020
 hedhitobjects.cc:1021
 hedhitobjects.cc:1022
 hedhitobjects.cc:1023
 hedhitobjects.cc:1024
 hedhitobjects.cc:1025
 hedhitobjects.cc:1026
 hedhitobjects.cc:1027
 hedhitobjects.cc:1028
 hedhitobjects.cc:1029
 hedhitobjects.cc:1030
 hedhitobjects.cc:1031
 hedhitobjects.cc:1032
 hedhitobjects.cc:1033
 hedhitobjects.cc:1034
 hedhitobjects.cc:1035
 hedhitobjects.cc:1036
 hedhitobjects.cc:1037
 hedhitobjects.cc:1038
 hedhitobjects.cc:1039
 hedhitobjects.cc:1040
 hedhitobjects.cc:1041
 hedhitobjects.cc:1042
 hedhitobjects.cc:1043
 hedhitobjects.cc:1044
 hedhitobjects.cc:1045
 hedhitobjects.cc:1046
 hedhitobjects.cc:1047
 hedhitobjects.cc:1048
 hedhitobjects.cc:1049
 hedhitobjects.cc:1050
 hedhitobjects.cc:1051
 hedhitobjects.cc:1052
 hedhitobjects.cc:1053
 hedhitobjects.cc:1054
 hedhitobjects.cc:1055
 hedhitobjects.cc:1056
 hedhitobjects.cc:1057
 hedhitobjects.cc:1058
 hedhitobjects.cc:1059
 hedhitobjects.cc:1060
 hedhitobjects.cc:1061
 hedhitobjects.cc:1062
 hedhitobjects.cc:1063
 hedhitobjects.cc:1064
 hedhitobjects.cc:1065
 hedhitobjects.cc:1066
 hedhitobjects.cc:1067
 hedhitobjects.cc:1068
 hedhitobjects.cc:1069
 hedhitobjects.cc:1070
 hedhitobjects.cc:1071
 hedhitobjects.cc:1072
 hedhitobjects.cc:1073
 hedhitobjects.cc:1074
 hedhitobjects.cc:1075
 hedhitobjects.cc:1076
 hedhitobjects.cc:1077
 hedhitobjects.cc:1078
 hedhitobjects.cc:1079
 hedhitobjects.cc:1080
 hedhitobjects.cc:1081
 hedhitobjects.cc:1082
 hedhitobjects.cc:1083
 hedhitobjects.cc:1084
 hedhitobjects.cc:1085
 hedhitobjects.cc:1086
 hedhitobjects.cc:1087
 hedhitobjects.cc:1088
 hedhitobjects.cc:1089
 hedhitobjects.cc:1090
 hedhitobjects.cc:1091
 hedhitobjects.cc:1092
 hedhitobjects.cc:1093
 hedhitobjects.cc:1094
 hedhitobjects.cc:1095
 hedhitobjects.cc:1096
 hedhitobjects.cc:1097
 hedhitobjects.cc:1098
 hedhitobjects.cc:1099
 hedhitobjects.cc:1100
 hedhitobjects.cc:1101
 hedhitobjects.cc:1102
 hedhitobjects.cc:1103
 hedhitobjects.cc:1104
 hedhitobjects.cc:1105
 hedhitobjects.cc:1106
 hedhitobjects.cc:1107
 hedhitobjects.cc:1108
 hedhitobjects.cc:1109
 hedhitobjects.cc:1110
 hedhitobjects.cc:1111
 hedhitobjects.cc:1112
 hedhitobjects.cc:1113
 hedhitobjects.cc:1114
 hedhitobjects.cc:1115
 hedhitobjects.cc:1116
 hedhitobjects.cc:1117
 hedhitobjects.cc:1118
 hedhitobjects.cc:1119
 hedhitobjects.cc:1120
 hedhitobjects.cc:1121
 hedhitobjects.cc:1122
 hedhitobjects.cc:1123
 hedhitobjects.cc:1124
 hedhitobjects.cc:1125
 hedhitobjects.cc:1126
 hedhitobjects.cc:1127
 hedhitobjects.cc:1128
 hedhitobjects.cc:1129
 hedhitobjects.cc:1130
 hedhitobjects.cc:1131
 hedhitobjects.cc:1132
 hedhitobjects.cc:1133
 hedhitobjects.cc:1134
 hedhitobjects.cc:1135
 hedhitobjects.cc:1136
 hedhitobjects.cc:1137
 hedhitobjects.cc:1138
 hedhitobjects.cc:1139
 hedhitobjects.cc:1140
 hedhitobjects.cc:1141
 hedhitobjects.cc:1142
 hedhitobjects.cc:1143
 hedhitobjects.cc:1144
 hedhitobjects.cc:1145
 hedhitobjects.cc:1146
 hedhitobjects.cc:1147
 hedhitobjects.cc:1148
 hedhitobjects.cc:1149
 hedhitobjects.cc:1150
 hedhitobjects.cc:1151
 hedhitobjects.cc:1152
 hedhitobjects.cc:1153
 hedhitobjects.cc:1154
 hedhitobjects.cc:1155
 hedhitobjects.cc:1156
 hedhitobjects.cc:1157
 hedhitobjects.cc:1158
 hedhitobjects.cc:1159
 hedhitobjects.cc:1160
 hedhitobjects.cc:1161
 hedhitobjects.cc:1162
 hedhitobjects.cc:1163
 hedhitobjects.cc:1164
 hedhitobjects.cc:1165
 hedhitobjects.cc:1166
 hedhitobjects.cc:1167
 hedhitobjects.cc:1168
 hedhitobjects.cc:1169
 hedhitobjects.cc:1170
 hedhitobjects.cc:1171
 hedhitobjects.cc:1172
 hedhitobjects.cc:1173
 hedhitobjects.cc:1174
 hedhitobjects.cc:1175
 hedhitobjects.cc:1176
 hedhitobjects.cc:1177
 hedhitobjects.cc:1178
 hedhitobjects.cc:1179
 hedhitobjects.cc:1180
 hedhitobjects.cc:1181
 hedhitobjects.cc:1182
 hedhitobjects.cc:1183
 hedhitobjects.cc:1184
 hedhitobjects.cc:1185
 hedhitobjects.cc:1186
 hedhitobjects.cc:1187
 hedhitobjects.cc:1188
 hedhitobjects.cc:1189
 hedhitobjects.cc:1190
 hedhitobjects.cc:1191
 hedhitobjects.cc:1192
 hedhitobjects.cc:1193
 hedhitobjects.cc:1194
 hedhitobjects.cc:1195
 hedhitobjects.cc:1196
 hedhitobjects.cc:1197
 hedhitobjects.cc:1198
 hedhitobjects.cc:1199
 hedhitobjects.cc:1200
 hedhitobjects.cc:1201
 hedhitobjects.cc:1202
 hedhitobjects.cc:1203
 hedhitobjects.cc:1204
 hedhitobjects.cc:1205
 hedhitobjects.cc:1206
 hedhitobjects.cc:1207
 hedhitobjects.cc:1208
 hedhitobjects.cc:1209
 hedhitobjects.cc:1210
 hedhitobjects.cc:1211
 hedhitobjects.cc:1212
 hedhitobjects.cc:1213
 hedhitobjects.cc:1214
 hedhitobjects.cc:1215
 hedhitobjects.cc:1216
 hedhitobjects.cc:1217
 hedhitobjects.cc:1218
 hedhitobjects.cc:1219
 hedhitobjects.cc:1220
 hedhitobjects.cc:1221
 hedhitobjects.cc:1222
 hedhitobjects.cc:1223
 hedhitobjects.cc:1224
 hedhitobjects.cc:1225
 hedhitobjects.cc:1226
 hedhitobjects.cc:1227
 hedhitobjects.cc:1228
 hedhitobjects.cc:1229
 hedhitobjects.cc:1230
 hedhitobjects.cc:1231
 hedhitobjects.cc:1232
 hedhitobjects.cc:1233
 hedhitobjects.cc:1234
 hedhitobjects.cc:1235
 hedhitobjects.cc:1236
 hedhitobjects.cc:1237
 hedhitobjects.cc:1238
 hedhitobjects.cc:1239
 hedhitobjects.cc:1240
 hedhitobjects.cc:1241
 hedhitobjects.cc:1242
 hedhitobjects.cc:1243
 hedhitobjects.cc:1244
 hedhitobjects.cc:1245
 hedhitobjects.cc:1246
 hedhitobjects.cc:1247
 hedhitobjects.cc:1248
 hedhitobjects.cc:1249
 hedhitobjects.cc:1250
 hedhitobjects.cc:1251
 hedhitobjects.cc:1252
 hedhitobjects.cc:1253
 hedhitobjects.cc:1254
 hedhitobjects.cc:1255
 hedhitobjects.cc:1256
 hedhitobjects.cc:1257
 hedhitobjects.cc:1258
 hedhitobjects.cc:1259
 hedhitobjects.cc:1260
 hedhitobjects.cc:1261
 hedhitobjects.cc:1262
 hedhitobjects.cc:1263
 hedhitobjects.cc:1264
 hedhitobjects.cc:1265
 hedhitobjects.cc:1266
 hedhitobjects.cc:1267
 hedhitobjects.cc:1268
 hedhitobjects.cc:1269
 hedhitobjects.cc:1270
 hedhitobjects.cc:1271
 hedhitobjects.cc:1272
 hedhitobjects.cc:1273
 hedhitobjects.cc:1274
 hedhitobjects.cc:1275
 hedhitobjects.cc:1276
 hedhitobjects.cc:1277
 hedhitobjects.cc:1278
 hedhitobjects.cc:1279
 hedhitobjects.cc:1280
 hedhitobjects.cc:1281
 hedhitobjects.cc:1282
 hedhitobjects.cc:1283
 hedhitobjects.cc:1284
 hedhitobjects.cc:1285
 hedhitobjects.cc:1286
 hedhitobjects.cc:1287
 hedhitobjects.cc:1288
 hedhitobjects.cc:1289
 hedhitobjects.cc:1290
 hedhitobjects.cc:1291
 hedhitobjects.cc:1292
 hedhitobjects.cc:1293
 hedhitobjects.cc:1294
 hedhitobjects.cc:1295
 hedhitobjects.cc:1296
 hedhitobjects.cc:1297
 hedhitobjects.cc:1298
 hedhitobjects.cc:1299
 hedhitobjects.cc:1300
 hedhitobjects.cc:1301
 hedhitobjects.cc:1302
 hedhitobjects.cc:1303
 hedhitobjects.cc:1304
 hedhitobjects.cc:1305
 hedhitobjects.cc:1306
 hedhitobjects.cc:1307
 hedhitobjects.cc:1308
 hedhitobjects.cc:1309
 hedhitobjects.cc:1310
 hedhitobjects.cc:1311
 hedhitobjects.cc:1312
 hedhitobjects.cc:1313
 hedhitobjects.cc:1314
 hedhitobjects.cc:1315
 hedhitobjects.cc:1316
 hedhitobjects.cc:1317
 hedhitobjects.cc:1318
 hedhitobjects.cc:1319
 hedhitobjects.cc:1320
 hedhitobjects.cc:1321
 hedhitobjects.cc:1322
 hedhitobjects.cc:1323
 hedhitobjects.cc:1324
 hedhitobjects.cc:1325
 hedhitobjects.cc:1326
 hedhitobjects.cc:1327
 hedhitobjects.cc:1328
 hedhitobjects.cc:1329
 hedhitobjects.cc:1330
 hedhitobjects.cc:1331
 hedhitobjects.cc:1332
 hedhitobjects.cc:1333
 hedhitobjects.cc:1334
 hedhitobjects.cc:1335
 hedhitobjects.cc:1336
 hedhitobjects.cc:1337
 hedhitobjects.cc:1338
 hedhitobjects.cc:1339
 hedhitobjects.cc:1340
 hedhitobjects.cc:1341
 hedhitobjects.cc:1342
 hedhitobjects.cc:1343
 hedhitobjects.cc:1344
 hedhitobjects.cc:1345
 hedhitobjects.cc:1346
 hedhitobjects.cc:1347
 hedhitobjects.cc:1348
 hedhitobjects.cc:1349
 hedhitobjects.cc:1350
 hedhitobjects.cc:1351
 hedhitobjects.cc:1352
 hedhitobjects.cc:1353
 hedhitobjects.cc:1354
 hedhitobjects.cc:1355
 hedhitobjects.cc:1356
 hedhitobjects.cc:1357
 hedhitobjects.cc:1358
 hedhitobjects.cc:1359
 hedhitobjects.cc:1360
 hedhitobjects.cc:1361
 hedhitobjects.cc:1362
 hedhitobjects.cc:1363
 hedhitobjects.cc:1364
 hedhitobjects.cc:1365
 hedhitobjects.cc:1366
 hedhitobjects.cc:1367
 hedhitobjects.cc:1368
 hedhitobjects.cc:1369
 hedhitobjects.cc:1370
 hedhitobjects.cc:1371
 hedhitobjects.cc:1372
 hedhitobjects.cc:1373
 hedhitobjects.cc:1374
 hedhitobjects.cc:1375
 hedhitobjects.cc:1376
 hedhitobjects.cc:1377
 hedhitobjects.cc:1378
 hedhitobjects.cc:1379
 hedhitobjects.cc:1380
 hedhitobjects.cc:1381
 hedhitobjects.cc:1382
 hedhitobjects.cc:1383
 hedhitobjects.cc:1384
 hedhitobjects.cc:1385
 hedhitobjects.cc:1386
 hedhitobjects.cc:1387
 hedhitobjects.cc:1388
 hedhitobjects.cc:1389
 hedhitobjects.cc:1390
 hedhitobjects.cc:1391
 hedhitobjects.cc:1392
 hedhitobjects.cc:1393
 hedhitobjects.cc:1394
 hedhitobjects.cc:1395
 hedhitobjects.cc:1396
 hedhitobjects.cc:1397
 hedhitobjects.cc:1398
 hedhitobjects.cc:1399
 hedhitobjects.cc:1400
 hedhitobjects.cc:1401
 hedhitobjects.cc:1402
 hedhitobjects.cc:1403
 hedhitobjects.cc:1404
 hedhitobjects.cc:1405
 hedhitobjects.cc:1406
 hedhitobjects.cc:1407
 hedhitobjects.cc:1408
 hedhitobjects.cc:1409
 hedhitobjects.cc:1410
 hedhitobjects.cc:1411
 hedhitobjects.cc:1412
 hedhitobjects.cc:1413
 hedhitobjects.cc:1414
 hedhitobjects.cc:1415
 hedhitobjects.cc:1416
 hedhitobjects.cc:1417
 hedhitobjects.cc:1418
 hedhitobjects.cc:1419
 hedhitobjects.cc:1420
 hedhitobjects.cc:1421
 hedhitobjects.cc:1422
 hedhitobjects.cc:1423
 hedhitobjects.cc:1424
 hedhitobjects.cc:1425
 hedhitobjects.cc:1426
 hedhitobjects.cc:1427
 hedhitobjects.cc:1428
 hedhitobjects.cc:1429
 hedhitobjects.cc:1430
 hedhitobjects.cc:1431
 hedhitobjects.cc:1432
 hedhitobjects.cc:1433
 hedhitobjects.cc:1434
 hedhitobjects.cc:1435
 hedhitobjects.cc:1436
 hedhitobjects.cc:1437
 hedhitobjects.cc:1438
 hedhitobjects.cc:1439
 hedhitobjects.cc:1440
 hedhitobjects.cc:1441
 hedhitobjects.cc:1442
 hedhitobjects.cc:1443
 hedhitobjects.cc:1444
 hedhitobjects.cc:1445
 hedhitobjects.cc:1446
 hedhitobjects.cc:1447
 hedhitobjects.cc:1448
 hedhitobjects.cc:1449
 hedhitobjects.cc:1450
 hedhitobjects.cc:1451
 hedhitobjects.cc:1452
 hedhitobjects.cc:1453
 hedhitobjects.cc:1454
 hedhitobjects.cc:1455
 hedhitobjects.cc:1456
 hedhitobjects.cc:1457
 hedhitobjects.cc:1458
 hedhitobjects.cc:1459
 hedhitobjects.cc:1460
 hedhitobjects.cc:1461
 hedhitobjects.cc:1462
 hedhitobjects.cc:1463
 hedhitobjects.cc:1464
 hedhitobjects.cc:1465
 hedhitobjects.cc:1466
 hedhitobjects.cc:1467
 hedhitobjects.cc:1468
 hedhitobjects.cc:1469
 hedhitobjects.cc:1470
 hedhitobjects.cc:1471
 hedhitobjects.cc:1472
 hedhitobjects.cc:1473
 hedhitobjects.cc:1474
 hedhitobjects.cc:1475
 hedhitobjects.cc:1476
 hedhitobjects.cc:1477
 hedhitobjects.cc:1478
 hedhitobjects.cc:1479
 hedhitobjects.cc:1480
 hedhitobjects.cc:1481
 hedhitobjects.cc:1482
 hedhitobjects.cc:1483
 hedhitobjects.cc:1484
 hedhitobjects.cc:1485
 hedhitobjects.cc:1486
 hedhitobjects.cc:1487
 hedhitobjects.cc:1488
 hedhitobjects.cc:1489
 hedhitobjects.cc:1490
 hedhitobjects.cc:1491
 hedhitobjects.cc:1492
 hedhitobjects.cc:1493
 hedhitobjects.cc:1494
 hedhitobjects.cc:1495
 hedhitobjects.cc:1496
 hedhitobjects.cc:1497
 hedhitobjects.cc:1498
 hedhitobjects.cc:1499
 hedhitobjects.cc:1500
 hedhitobjects.cc:1501
 hedhitobjects.cc:1502
 hedhitobjects.cc:1503
 hedhitobjects.cc:1504
 hedhitobjects.cc:1505
 hedhitobjects.cc:1506
 hedhitobjects.cc:1507
 hedhitobjects.cc:1508
 hedhitobjects.cc:1509
 hedhitobjects.cc:1510
 hedhitobjects.cc:1511
 hedhitobjects.cc:1512
 hedhitobjects.cc:1513
 hedhitobjects.cc:1514
 hedhitobjects.cc:1515
 hedhitobjects.cc:1516
 hedhitobjects.cc:1517
 hedhitobjects.cc:1518
 hedhitobjects.cc:1519
 hedhitobjects.cc:1520
 hedhitobjects.cc:1521
 hedhitobjects.cc:1522
 hedhitobjects.cc:1523
 hedhitobjects.cc:1524
 hedhitobjects.cc:1525
 hedhitobjects.cc:1526
 hedhitobjects.cc:1527
 hedhitobjects.cc:1528
 hedhitobjects.cc:1529
 hedhitobjects.cc:1530
 hedhitobjects.cc:1531
 hedhitobjects.cc:1532
 hedhitobjects.cc:1533
 hedhitobjects.cc:1534
 hedhitobjects.cc:1535
 hedhitobjects.cc:1536
 hedhitobjects.cc:1537
 hedhitobjects.cc:1538
 hedhitobjects.cc:1539
 hedhitobjects.cc:1540
 hedhitobjects.cc:1541
 hedhitobjects.cc:1542
 hedhitobjects.cc:1543
 hedhitobjects.cc:1544
 hedhitobjects.cc:1545
 hedhitobjects.cc:1546
 hedhitobjects.cc:1547
 hedhitobjects.cc:1548
 hedhitobjects.cc:1549
 hedhitobjects.cc:1550
 hedhitobjects.cc:1551
 hedhitobjects.cc:1552
 hedhitobjects.cc:1553
 hedhitobjects.cc:1554
 hedhitobjects.cc:1555
 hedhitobjects.cc:1556
 hedhitobjects.cc:1557
 hedhitobjects.cc:1558
 hedhitobjects.cc:1559
 hedhitobjects.cc:1560
 hedhitobjects.cc:1561
 hedhitobjects.cc:1562
 hedhitobjects.cc:1563
 hedhitobjects.cc:1564
 hedhitobjects.cc:1565
 hedhitobjects.cc:1566
 hedhitobjects.cc:1567
 hedhitobjects.cc:1568
 hedhitobjects.cc:1569
 hedhitobjects.cc:1570
 hedhitobjects.cc:1571
 hedhitobjects.cc:1572
 hedhitobjects.cc:1573
 hedhitobjects.cc:1574
 hedhitobjects.cc:1575
 hedhitobjects.cc:1576
 hedhitobjects.cc:1577
 hedhitobjects.cc:1578
 hedhitobjects.cc:1579
 hedhitobjects.cc:1580
 hedhitobjects.cc:1581
 hedhitobjects.cc:1582
 hedhitobjects.cc:1583
 hedhitobjects.cc:1584
 hedhitobjects.cc:1585
 hedhitobjects.cc:1586
 hedhitobjects.cc:1587
 hedhitobjects.cc:1588
 hedhitobjects.cc:1589
 hedhitobjects.cc:1590
 hedhitobjects.cc:1591
 hedhitobjects.cc:1592
 hedhitobjects.cc:1593
 hedhitobjects.cc:1594
 hedhitobjects.cc:1595
 hedhitobjects.cc:1596
 hedhitobjects.cc:1597
 hedhitobjects.cc:1598
 hedhitobjects.cc:1599
 hedhitobjects.cc:1600
 hedhitobjects.cc:1601
 hedhitobjects.cc:1602
 hedhitobjects.cc:1603
 hedhitobjects.cc:1604
 hedhitobjects.cc:1605
 hedhitobjects.cc:1606
 hedhitobjects.cc:1607
 hedhitobjects.cc:1608
 hedhitobjects.cc:1609
 hedhitobjects.cc:1610
 hedhitobjects.cc:1611
 hedhitobjects.cc:1612
 hedhitobjects.cc:1613
 hedhitobjects.cc:1614
 hedhitobjects.cc:1615
 hedhitobjects.cc:1616
 hedhitobjects.cc:1617
 hedhitobjects.cc:1618
 hedhitobjects.cc:1619
 hedhitobjects.cc:1620
 hedhitobjects.cc:1621
 hedhitobjects.cc:1622
 hedhitobjects.cc:1623
 hedhitobjects.cc:1624
 hedhitobjects.cc:1625
 hedhitobjects.cc:1626
 hedhitobjects.cc:1627
 hedhitobjects.cc:1628
 hedhitobjects.cc:1629
 hedhitobjects.cc:1630
 hedhitobjects.cc:1631
 hedhitobjects.cc:1632
 hedhitobjects.cc:1633
 hedhitobjects.cc:1634
 hedhitobjects.cc:1635
 hedhitobjects.cc:1636
 hedhitobjects.cc:1637
 hedhitobjects.cc:1638
 hedhitobjects.cc:1639
 hedhitobjects.cc:1640
 hedhitobjects.cc:1641
 hedhitobjects.cc:1642
 hedhitobjects.cc:1643
 hedhitobjects.cc:1644
 hedhitobjects.cc:1645
 hedhitobjects.cc:1646
 hedhitobjects.cc:1647
 hedhitobjects.cc:1648
 hedhitobjects.cc:1649
 hedhitobjects.cc:1650
 hedhitobjects.cc:1651
 hedhitobjects.cc:1652
 hedhitobjects.cc:1653
 hedhitobjects.cc:1654
 hedhitobjects.cc:1655
 hedhitobjects.cc:1656
 hedhitobjects.cc:1657
 hedhitobjects.cc:1658
 hedhitobjects.cc:1659
 hedhitobjects.cc:1660
 hedhitobjects.cc:1661
 hedhitobjects.cc:1662
 hedhitobjects.cc:1663
 hedhitobjects.cc:1664
 hedhitobjects.cc:1665
 hedhitobjects.cc:1666
 hedhitobjects.cc:1667
 hedhitobjects.cc:1668
 hedhitobjects.cc:1669
 hedhitobjects.cc:1670
 hedhitobjects.cc:1671
 hedhitobjects.cc:1672
 hedhitobjects.cc:1673
 hedhitobjects.cc:1674
 hedhitobjects.cc:1675
 hedhitobjects.cc:1676
 hedhitobjects.cc:1677
 hedhitobjects.cc:1678
 hedhitobjects.cc:1679
 hedhitobjects.cc:1680
 hedhitobjects.cc:1681
 hedhitobjects.cc:1682
 hedhitobjects.cc:1683
 hedhitobjects.cc:1684
 hedhitobjects.cc:1685
 hedhitobjects.cc:1686
 hedhitobjects.cc:1687
 hedhitobjects.cc:1688
 hedhitobjects.cc:1689
 hedhitobjects.cc:1690
 hedhitobjects.cc:1691
 hedhitobjects.cc:1692
 hedhitobjects.cc:1693
 hedhitobjects.cc:1694
 hedhitobjects.cc:1695
 hedhitobjects.cc:1696
 hedhitobjects.cc:1697
 hedhitobjects.cc:1698
 hedhitobjects.cc:1699
 hedhitobjects.cc:1700
 hedhitobjects.cc:1701
 hedhitobjects.cc:1702
 hedhitobjects.cc:1703
 hedhitobjects.cc:1704
 hedhitobjects.cc:1705
 hedhitobjects.cc:1706
 hedhitobjects.cc:1707
 hedhitobjects.cc:1708
 hedhitobjects.cc:1709
 hedhitobjects.cc:1710
 hedhitobjects.cc:1711
 hedhitobjects.cc:1712
 hedhitobjects.cc:1713
 hedhitobjects.cc:1714
 hedhitobjects.cc:1715
 hedhitobjects.cc:1716
 hedhitobjects.cc:1717
 hedhitobjects.cc:1718
 hedhitobjects.cc:1719
 hedhitobjects.cc:1720
 hedhitobjects.cc:1721
 hedhitobjects.cc:1722
 hedhitobjects.cc:1723
 hedhitobjects.cc:1724
 hedhitobjects.cc:1725
 hedhitobjects.cc:1726
 hedhitobjects.cc:1727
 hedhitobjects.cc:1728
 hedhitobjects.cc:1729
 hedhitobjects.cc:1730
 hedhitobjects.cc:1731
 hedhitobjects.cc:1732
 hedhitobjects.cc:1733
 hedhitobjects.cc:1734
 hedhitobjects.cc:1735
 hedhitobjects.cc:1736
 hedhitobjects.cc:1737
 hedhitobjects.cc:1738
 hedhitobjects.cc:1739
 hedhitobjects.cc:1740
 hedhitobjects.cc:1741
 hedhitobjects.cc:1742
 hedhitobjects.cc:1743
 hedhitobjects.cc:1744
 hedhitobjects.cc:1745
 hedhitobjects.cc:1746
 hedhitobjects.cc:1747
 hedhitobjects.cc:1748
 hedhitobjects.cc:1749
 hedhitobjects.cc:1750
 hedhitobjects.cc:1751
 hedhitobjects.cc:1752
 hedhitobjects.cc:1753
 hedhitobjects.cc:1754
 hedhitobjects.cc:1755
 hedhitobjects.cc:1756
 hedhitobjects.cc:1757
 hedhitobjects.cc:1758
 hedhitobjects.cc:1759
 hedhitobjects.cc:1760
 hedhitobjects.cc:1761
 hedhitobjects.cc:1762
 hedhitobjects.cc:1763
 hedhitobjects.cc:1764
 hedhitobjects.cc:1765
 hedhitobjects.cc:1766
 hedhitobjects.cc:1767
 hedhitobjects.cc:1768
 hedhitobjects.cc:1769
 hedhitobjects.cc:1770
 hedhitobjects.cc:1771
 hedhitobjects.cc:1772
 hedhitobjects.cc:1773
 hedhitobjects.cc:1774
 hedhitobjects.cc:1775
 hedhitobjects.cc:1776
 hedhitobjects.cc:1777
 hedhitobjects.cc:1778
 hedhitobjects.cc:1779
 hedhitobjects.cc:1780
 hedhitobjects.cc:1781
 hedhitobjects.cc:1782
 hedhitobjects.cc:1783
 hedhitobjects.cc:1784
 hedhitobjects.cc:1785
 hedhitobjects.cc:1786
 hedhitobjects.cc:1787
 hedhitobjects.cc:1788
 hedhitobjects.cc:1789
 hedhitobjects.cc:1790
 hedhitobjects.cc:1791
 hedhitobjects.cc:1792
 hedhitobjects.cc:1793
 hedhitobjects.cc:1794
 hedhitobjects.cc:1795
 hedhitobjects.cc:1796
 hedhitobjects.cc:1797
 hedhitobjects.cc:1798
 hedhitobjects.cc:1799
 hedhitobjects.cc:1800
 hedhitobjects.cc:1801
 hedhitobjects.cc:1802
 hedhitobjects.cc:1803
 hedhitobjects.cc:1804
 hedhitobjects.cc:1805
 hedhitobjects.cc:1806
 hedhitobjects.cc:1807
 hedhitobjects.cc:1808
 hedhitobjects.cc:1809
 hedhitobjects.cc:1810
 hedhitobjects.cc:1811
 hedhitobjects.cc:1812
 hedhitobjects.cc:1813
 hedhitobjects.cc:1814
 hedhitobjects.cc:1815
 hedhitobjects.cc:1816
 hedhitobjects.cc:1817
 hedhitobjects.cc:1818
 hedhitobjects.cc:1819
 hedhitobjects.cc:1820
 hedhitobjects.cc:1821
 hedhitobjects.cc:1822
 hedhitobjects.cc:1823
 hedhitobjects.cc:1824
 hedhitobjects.cc:1825
 hedhitobjects.cc:1826
 hedhitobjects.cc:1827
 hedhitobjects.cc:1828
 hedhitobjects.cc:1829
 hedhitobjects.cc:1830
 hedhitobjects.cc:1831
 hedhitobjects.cc:1832
 hedhitobjects.cc:1833
 hedhitobjects.cc:1834
 hedhitobjects.cc:1835
 hedhitobjects.cc:1836
 hedhitobjects.cc:1837
 hedhitobjects.cc:1838
 hedhitobjects.cc:1839
 hedhitobjects.cc:1840
 hedhitobjects.cc:1841
 hedhitobjects.cc:1842
 hedhitobjects.cc:1843
 hedhitobjects.cc:1844
 hedhitobjects.cc:1845
 hedhitobjects.cc:1846
 hedhitobjects.cc:1847
 hedhitobjects.cc:1848
 hedhitobjects.cc:1849
 hedhitobjects.cc:1850
 hedhitobjects.cc:1851
 hedhitobjects.cc:1852
 hedhitobjects.cc:1853
 hedhitobjects.cc:1854
 hedhitobjects.cc:1855
 hedhitobjects.cc:1856
 hedhitobjects.cc:1857
 hedhitobjects.cc:1858
 hedhitobjects.cc:1859
 hedhitobjects.cc:1860
 hedhitobjects.cc:1861
 hedhitobjects.cc:1862
 hedhitobjects.cc:1863
 hedhitobjects.cc:1864
 hedhitobjects.cc:1865
 hedhitobjects.cc:1866
 hedhitobjects.cc:1867
 hedhitobjects.cc:1868
 hedhitobjects.cc:1869
 hedhitobjects.cc:1870
 hedhitobjects.cc:1871
 hedhitobjects.cc:1872
 hedhitobjects.cc:1873
 hedhitobjects.cc:1874
 hedhitobjects.cc:1875
 hedhitobjects.cc:1876
 hedhitobjects.cc:1877
 hedhitobjects.cc:1878
 hedhitobjects.cc:1879
 hedhitobjects.cc:1880
 hedhitobjects.cc:1881
 hedhitobjects.cc:1882
 hedhitobjects.cc:1883
 hedhitobjects.cc:1884
 hedhitobjects.cc:1885
 hedhitobjects.cc:1886
 hedhitobjects.cc:1887