ROOT logo
#include "hparticlemetamatcher.h"
#include "hades.h"
#include "hspectrometer.h"
#include "hruntimedb.h"
#include "hcategory.h"
#include "hcategorymanager.h"
#include "hgeomvolume.h"
#include "hgeomcompositevolume.h"
#include "hgeomtransform.h"

#include "hemcdetector.h"

#include "hrpcgeompar.h"
#include "hrpcgeomcellpar.h"
#include "hemcgeompar.h"
#include "htofgeompar.h"
#include "hspecgeompar.h"

#include "hparticlecand.h"

#include "rpcdef.h"
#include "emcdef.h"
#include "tofdef.h"

#include "TMath.h"


//_HADES_CLASS_DESCRIPTION
/////////////////////////////////////////////////////////////
//
//  HParticleMetamatcher
//
//
// usage :
// Int_t loopDST_task(
//		   TString infileList="/lustre/hebe/hades/dst/mar19/gen2/ag158ag/3200A/083/root/be1908311041501.hld_dst_mar19.root",
//		   TString outfile="test.root",Int_t nEvents=50)
//{
//    HLoop loop(kTRUE);
//
//    //-------------------------------------------------
//    if(1){
//	TString beamtime="mar19";
//
//	Int_t mdcMods[6][4]=
//	{ {1,1,1,1},
//	{1,1,1,1},
//	{1,1,1,1},
//	{1,1,1,1},
//	{1,1,1,1},
//	{1,1,1,1} };
//	TString asciiParFile     = "";
//	TString rootParFile      = "/cvmfs/hades.gsi.de/param/real/mar19/allParam_Mar19_gen2_18102019.root";
//	TString paramSource      = "root"; // root, ascii, oracle
//	TString paramrelease     = "MAR19_dst_gen3";  // now, APR12_gen2_dst APR12_gen5_dst
//	HDst::setupSpectrometer(beamtime,mdcMods,"rich,mdc,tof,rpc,emc,wall,start,tbox");
//	HDst::setupParameterSources(paramSource,asciiParFile,rootParFile,paramrelease);  // now, APR12_gen2_dst
//    }
//    //-------------------------------------------------
//
//    Bool_t ret =kFALSE;
//    if(infileList.Contains(",")){
//	ret = loop.addMultFiles(infileList);      // file1,file2,file3
//    } else{
//	ret = loop.addFiles(infileList); // myroot*.root
//    }
//
//    if(ret == 0) {
//	cout<<"READBACK: ERROR : cannot find inputfiles : "<<infileList.Data()<<endl;
//	return 1;
//    }
//
//    if(!loop.setInput("")) {   // all input categories
//	cout<<"READBACK: ERROR : cannot read input !"<<endl;
//	exit(1);
//    } // read all categories
//    loop.printCategories();
//    loop.printChain();
//
//    HCategory* candCat    = (HCategory*)HCategoryManager::getCategory(catParticleCand);
//    HCategory* evtInfoCat = (HCategory*)HCategoryManager::getCategory(catParticleEvtInfo);
//
//
//    //-------------------------------------------------
//    // added for the task
//    HTaskSet *masterTaskSet = gHades->getTaskSet("all");
//    HParticleMetaMatcher* matcher = new HParticleMetaMatcher();
//    matcher->setDebug();  // print infos to screen
//    masterTaskSet->add(matcher);
//    //-------------------------------------------------
//
//    Int_t entries = loop.getEntries();
//    if(nEvents < entries && nEvents >= 0 ) entries = nEvents;
//
//    for (Int_t i = 0; i < entries; i++) {
//	Int_t nbytes =  loop.nextEvent(i);             // get next event. categories will be cleared before
//	if(nbytes <= 0) { cout<<nbytes<<endl; break; } // last event reached
//	if(i%1000 == 0) cout<<"event "<<i<<endl;
//
//	HParticleEvtInfo* evtInfo=0;
//	evtInfo = HCategoryManager::getObject(evtInfo,evtInfoCat,0 );
//
//	if(evtInfo&&!evtInfo->isGoodEvent(Particle::kGoodTRIGGER|          // standard event selection apr12
//					  Particle::kGoodVertexClust|
//					  Particle::kGoodVertexCand|
//					  Particle::kGoodSTART|
//					  Particle::kNoPileUpSTART|
//					  Particle::kNoVETO|
//					  Particle::kGoodSTARTVETO|
//					  Particle::kGoodSTARTMETA
//					 )) continue;
//
//	if(candCat){
//
//	    Int_t size = candCat->getEntries();
//	    HParticleCand* cand=0;
//
//	    for(Int_t j = 0; j < size; j++) {
//		cand = HCategoryManager::getObject(cand,candCat,j);
//		if(cand) {
//		    if(!cand->isFlagBit(kIsUsed)) { continue; }           // skip particles rejected by HParticleTrackSorter
//
//		    if(cand->isRpcClstUsed()){
//		        const HRpcCluster* rpc = matcher->recalcRpc(cand); // reconstruct the rpchit from tracking +rk dx dy
//
//			Int_t s,col0,col1,cell0,cell1;
//                      HGeomVector hit0,hit1;
//			matcher->predictRpcCell(cand,hit0,hit1,s,col0,cell0,col1,cell1); // which rpc cell should this track fire?
//		    }
//		    if(0&&(cand->isTofClstUsed() || cand->isTofHitUsed()) ){
//			const HTofCluster* tof = matcher->recalcTof(cand);
//			Int_t s,mod0,mod1,cell0,cell1;
//                      HGeomVector hit0,hit1;
//			matcher->predictTofCell(cand,hit0,hit1,s,mod0,cell0,mod1,cell1); // which Tof cell should this track fire?
//		    }
//		    if(0&&cand->getEmcInd()>-1){
//       	        const HEmcCluster* emc = matcher->recalcEmc(cand);
//			Int_t s,pos,cell;
//			HGeomVector hit;
//                      vector<Int_t> vcells;
//			matcher->predictEmcCell(cand,hit,s,pos,cell); // which emc cell should this track fire?
//		    }
//		}
//	    } // end cand loop
//	} // end cand cat
//    } // end eventloop
//
//    //-------------------------------------------------
//    // added for the task
//    if(gHades)gHades->finalizeTasks();
//    //-------------------------------------------------
//
//    delete gHades;
//    return 0;
//}
//
/////////////////////////////////////////////////////////////

ClassImp(HParticleMetaMatcher)

HParticleMetaMatcher::HParticleMetaMatcher(const Text_t *name,const Text_t *title)
	: HReconstructor(name,title) {

    fCatRpcCluster  = NULL;
    fCatEmcCluster  = NULL;
    fCatTofCluster  = NULL;
    fCatTofHit      = NULL;

    fRpcGeometry    = NULL;
    fEmcGeometry    = NULL;
    fTofGeometry    = NULL;
    pSpecGeomPar    = NULL;

    DPlanesRpc = 0;
    fDebug = kFALSE;
}


const HGeomVector* HParticleMetaMatcher::getRpcCellGeom(Int_t s,Int_t col,Int_t cell)
{
    // returns null pointer if s,col,cell are invalid
    // returns HGeomVector* to first element of array of 4 HGeomVectors
    // for the shape of the cell in mod sys
    if(s < 0 || s > 5) return 0;
    if(col < 0 || col > 5) return 0;
    if(cell < 0 || cell > RPCMAXCELL-1) return 0;
    return &cellRPC[s][col][cell][0];
}

const HGeomVector* HParticleMetaMatcher::getTofCellGeom(Int_t s,Int_t mod,Int_t cell)
{
    // returns null pointer if s,mod,cell are invalid
    // returns HGeomVector* to first element of array of 4 HGeomVectors
    // for the shape of the cell in mod sys
    if(s < 0 || s > 5) return 0;
    if(mod < 0 || mod > 8) return 0;
    if(cell < 0 || cell > 8) return 0;
    return &cellRPC[s][mod][cell][0];
}

const HGeomVector* HParticleMetaMatcher::getEmcCellGeom(Int_t s,Int_t cell)
{
    // returns null pointer if s,cell are invalid
    // returns HGeomVector* to first element of array of 4 HGeomVectors
    // for the shape of the cell in mod sys
    if(s < 0 || s > 5) return 0;
    if(cell < 0 || cell > EMCMAXCELL-1) return 0;
    return &cellEMC[s][cell][0];
}


void HParticleMetaMatcher::calcSegPoints(TVector3& p1,TVector3& p2,Double_t phiseg,Double_t thetaseg,Double_t roseg,Double_t zseg)
{
    // in sector sys : calc p1 p2 points (not MDC Hit!) on MdcSeg

    Double_t Xseg[2],Yseg[2],Zseg[2];

    Xseg[0] = roseg*cos(phiseg+TMath::Pi()/2);
    Yseg[0] = roseg*sin(phiseg+TMath::Pi()/2);
    Zseg[0] = zseg;
    Xseg[1] = Xseg[0]+cos(phiseg)*sin(thetaseg);
    Yseg[1] = Yseg[0]+sin(phiseg)*sin(thetaseg);
    Zseg[1] = Zseg[0]+cos(thetaseg);

    p1.SetXYZ(Xseg[0],Yseg[0],Zseg[0]);
    p2.SetXYZ(Xseg[1],Yseg[1],Zseg[1]);
}

Bool_t HParticleMetaMatcher::findIntersectionLinePlane(TVector3 &pointIntersect,
					       const TVector3 &pos, const TVector3 &dir,
					       const TVector3 &planeCenter, const  TVector3 &planeNormal) {
    // Finds the intersection point of a straight line with any plane.
    // pointIntersect: the intersection point (return value).
    // pos:            a point on the straight line.
    // dir:            direction of the straight line.
    // planeCenter:    a point on the plane.
    // planeNormal:    normal vector of the plane.

    Double_t denom = planeNormal.Dot(dir);
    if (denom != 0.0) {
	Double_t t = ((planeCenter.x() - pos.x()) * planeNormal.x() +
		      (planeCenter.y() - pos.y()) * planeNormal.y() +
		      (planeCenter.z() - pos.z()) * planeNormal.z()) / denom;

	pointIntersect = pos + (t * dir);
	return kTRUE;
    } else {
	cout<<"Warning \"findIntersection()\" : , No intersection point found : (plane || track)"<<endl;
        return kFALSE;
    }
    return kFALSE;
}


Bool_t HParticleMetaMatcher::traceToMeta(const HParticleCand* cand,TVector3 &metaHit, const TVector3 &metaCenter, const TVector3 &metaNorm)
{
    // calculate intersection of outer MdcSeg (RK) straightline with META plane
    // in sector sys

    TVector3 p1;
    TVector3 p2;
    TVector3 dir;

    Double_t phiLab   = cand->getPhi2();    // outer MdcSeg (RK) 0-360 deg  lab sys

    Double_t phi = fmod(phiLab,60.F) + 60;  // sec sys

    Double_t theta = cand->getTheta2();  // deg
    Double_t r     = cand->getR2();      // mm
    Double_t z     = cand->getZ2();      // mm

    calcSegPoints(p1,p2,phi*TMath::DegToRad(),theta*TMath::DegToRad(),r,z);  // 2 points from segment in sec sys

    dir = p2 - p1;

    return  findIntersectionLinePlane(metaHit,p1,dir,metaCenter,metaNorm); // in sec system
}

Bool_t HParticleMetaMatcher::isInRpcCell(HGeomVector& vmod, Int_t s,Int_t col,Int_t c)
{
    //  check if vmodule (mod system) is inside cell (2D) Trapez
    //
    //       p1---------------p2
    //      b\                 /
    //        \               /
    //        p0-------------p3
    //              a
    //
    // checks if HGeomVector* vmodule


    HGeomVector& p0 = cellRPC[s][col][c][0];
    HGeomVector& p1 = cellRPC[s][col][c][1];

    if (p0.Y() > vmod.Y()) return kFALSE;   // first check y range
    if (p1.Y() < vmod.Y()) return kFALSE;

    // left side                            // x cut as function of y
    Double_t a = p1.X() - p0.X();
    Double_t b = p1.Y() - p0.Y();
    Double_t x = p0.X() + a * (( p0.Y() - vmod.Y())/b);

    if (x < vmod.X()) return kFALSE;

    HGeomVector& p2 = cellRPC[s][col][c][2];
    HGeomVector& p3 = cellRPC[s][col][c][3];

    // right side
    a = p2.X() - p3.X();
    b = p2.Y() - p3.Y();
    Double_t x1 = p3.X() + a * (( p3.Y() - vmod.Y())/b);

    if (x1 > vmod.X()) return kFALSE;

    if(fDebug){
	cout<<"isInRpcCell  s "<<s<<" col "<<col<<" c "<<setw(2)<<c
	    <<" p1 "<<setw(10)<<  p0.X() <<" , "<<setw(10)<< p0.Y()
	    <<" p2 "<<setw(10)<<  p1.X() <<" , "<<setw(10)<< p1.Y()
	    <<" p3 "<<setw(10)<<  p2.X() <<" , "<<setw(10)<< p2.Y()
	    <<" p4 "<<setw(10)<<  p3.X() <<" , "<<setw(10)<< p3.Y()
	    <<" hit "<<setw(10)<<vmod.X()<<" , "<<setw(10)<<vmod.Y()<<" calc x "<<setw(10)<<x<<" "<<x1
	    <<endl;
    }

    return kTRUE;
}
Bool_t HParticleMetaMatcher::isInEmcCell(HGeomVector& vmod,Int_t s,Int_t c)
{

    //  check if vmodule (mod system) is inside cell (2D) square
    //
    //        p1----p2
    //        |     |
    //        |     |
    //        p0----p3
    //
    //

    HGeomVector& p0 = cellEMC[s][c][0];
    HGeomVector& p2 = cellEMC[s][c][2];

    if (p0.Y() > vmod.Y()) return kFALSE;   // first check y range
    if (p2.Y() < vmod.Y()) return kFALSE;

    if (p0.X() < vmod.X()) return kFALSE;
    if (p2.X() > vmod.X()) return kFALSE;

    if(fDebug){
	HGeomVector& p1 = cellEMC[s][c][1];
	HGeomVector& p3 = cellEMC[s][c][3];
	Int_t cell = HEmcDetector::getCellFromPosition(c);
	cout<<"isInEmcCell  s "<<s<<" c "<<setw(3)<<cell<<" pos "<<setw(3)<<c
	    <<" p1 "<<setw(10)<<  p0.X() <<" , "<<setw(10)<< p0.Y()
	    <<" p2 "<<setw(10)<<  p1.X() <<" , "<<setw(10)<< p1.Y()
	    <<" p3 "<<setw(10)<<  p2.X() <<" , "<<setw(10)<< p2.Y()
	    <<" p4 "<<setw(10)<<  p3.X() <<" , "<<setw(10)<< p3.Y()
	    <<" hit "<<setw(10)<<vmod.X()<<" , "<<setw(10)<<vmod.Y()
	    <<endl;
        vector<Int_t> vcells;
	getEmcCellArray(s,cell,vcells);
	cout<<"neighboughrs: "<<flush;
	for(UInt_t k = 0; k < vcells.size(); k++){
	    if(k == 4)cout<<"|"<<vcells[k]<<"| "<<flush;
	    else      cout<<vcells[k]<<" "<<flush;
	}
        cout<<endl;
    }

    return kTRUE;
}

Bool_t HParticleMetaMatcher::isInTofCell(HGeomVector& vmod,Int_t s,Int_t m, Int_t c)
{

    //  check if vmodule (mod system) is inside cell (2D) square
    //
    //        p1----p2
    //        |     |
    //        |     |
    //        p0----p3
    //
    //

    HGeomVector& p0 = cellTOF[s][m][c][0];
    HGeomVector& p2 = cellTOF[s][m][c][2];

    if (p0.Y() > vmod.Y()) return kFALSE;   // first check y range
    if (p2.Y() < vmod.Y()) return kFALSE;

    if (p0.X() < vmod.X()) return kFALSE;
    if (p2.X() > vmod.X()) return kFALSE;

    if(fDebug){
	HGeomVector& p1 = cellTOF[s][m][c][1];
	HGeomVector& p3 = cellTOF[s][m][c][3];
	cout<<"isInTofCell  s "<<s<<" mod "<<m<<" c "<<setw(3)<<c
	    <<" p1 "<<setw(10)<<  p0.X() <<" , "<<setw(10)<< p0.Y()
	    <<" p2 "<<setw(10)<<  p1.X() <<" , "<<setw(10)<< p1.Y()
	    <<" p3 "<<setw(10)<<  p2.X() <<" , "<<setw(10)<< p2.Y()
	    <<" p4 "<<setw(10)<<  p3.X() <<" , "<<setw(10)<< p3.Y()
	    <<" hit "<<setw(10)<<vmod.X()<<" , "<<setw(10)<<vmod.Y()
	    <<endl;
    }

    return kTRUE;
}

void HParticleMetaMatcher::getEmcCellArray(Int_t s,Int_t cell,vector<Int_t>& vcells)
{
    // returns neighbour cell indices for a given cell
    // in the order
    //
    //  0   1    2
    //  3   4(cell) 5
    //  6   7    8
    //  into vcells (-1 if cell does not exist)
    vcells.clear();

    for(Int_t j = -18; j < 17; j += 17){ // 3 rows of 17 cells each
	for(Int_t i = 0; i < 3; i ++){   // 3 neigbouring cells in each row
	    if(HEmcDetector::getPositionFromCell(cell + j + i) == -1 ) vcells.push_back(-1);
	    else                                                       vcells.push_back(cell + j + i);
	}
    }
}

Bool_t HParticleMetaMatcher::init()
{
    // Get categories and coordinate transformations.
    // Call this after HADES has been initialized.

    if(!gHades) {
        Error("init()", "HADES not initialized.");
        return kFALSE;
    }

    HRuntimeDb *rtdb=gHades->getRuntimeDb();

    if(!rtdb) {
        Error("init()", "HADES runtime database not found.");
        return kFALSE;
    }

    fCatRpcCluster  = HCategoryManager::getCategory(catRpcCluster);
    fCatEmcCluster  = HCategoryManager::getCategory(catEmcCluster);
    fCatTofCluster  = HCategoryManager::getCategory(catTofCluster);
    fCatTofHit      = HCategoryManager::getCategory(catTofHit);

    if(!fCatEmcCluster) Warning("init()", "Category catEmcCluster not found.");
    if(!fCatRpcCluster) Warning("init()", "Category catRpcCluster not found.");
    if(!fCatTofCluster) Warning("init()", "Category catTofCluster not found.");
    if(!fCatTofHit)     Warning("init()", "Category catTofHit not found.");


    fRpcGeometry = (HRpcGeomPar*)    rtdb->getContainer("RpcGeomPar");
    pGeomCellPar = (HRpcGeomCellPar*)rtdb->getContainer("RpcGeomCellPar");
    pSpecGeomPar = (HSpecGeomPar*)   rtdb->getContainer("SpecGeomPar");
    fEmcGeometry = (HEmcGeomPar *)   rtdb->getContainer("EmcGeomPar");
    fTofGeometry = (HTofGeomPar *)   rtdb->getContainer("TofGeomPar");

    return kTRUE;
}

Bool_t HParticleMetaMatcher::reinit() {

    if(pGeomCellPar){
	DPlanesRpc  = pGeomCellPar->getDPlanes();
    }

    // Geometry transformation from lab to sector coordinate system.
    for(Int_t i = 0; i < 6; i++) {
        labSecTrans[i] = pSpecGeomPar->getSector(i)->getTransform();
    }

    //-------------------------------------------------------------
    // get RPC cell points
    {
	for(Int_t s = 0; s < 6; s++) {
            Int_t col = 0;
            Int_t cell = 0;
	    
	    HModGeomPar* fmodgeom = fRpcGeometry->getModule(s);
	    HGeomCompositeVolume* fMod    = fmodgeom->getRefVolume();
	    for(Int_t c = 0; c < fMod->getNumComponents(); c++) {

		HGeomVolume* fVol = fMod->getComponent(c);
		if(cell == 31) {
		    col++;
		    cell = 0;
                    continue;
		}
		if(0&& s == 0){

		cout<<" col "<<5-col<<" cell " <<cell<<"----------------------------------"<<endl;
		HGeomVector v = fVol->getTransform().getTransVector();
		cout<<c<<" mod  (x,y,z) "<<v.X()<<" "<<v.Y()<<" "<<v.Z()<<" "<<fVol->GetName()<<" "<<fVol->getShape()<<" "<<fVol->getNumPoints()
		    << " p0 "<<fVol->getPoint(0)->getX()<< " , "<<fVol->getPoint(0)->getY()
		    << " p1 "<<fVol->getPoint(1)->getX()<< " , "<<fVol->getPoint(1)->getY()
		    << " p2 "<<fVol->getPoint(2)->getX()<< " , "<<fVol->getPoint(2)->getY()
		    << " p3 "<<fVol->getPoint(3)->getX()<< " , "<<fVol->getPoint(3)->getY()
		    <<endl;
		}
		
		for(Int_t i = 0; i < 4; i++) {  // copy 4 points only
		    cellRPC[s][5-col][cell][i] = *fVol->getPoint(i);
		}
		cell++;
	    }
	}
    }

    //-------------------------------------------------------------
    // get TOF cell points
    {
	for(Int_t s = 0; s < 6; s ++) {
	    for(Int_t m = 0; m < 8; m ++) {

		HModGeomPar* fmodgeom = fTofGeometry->getModule(s,m);
		HGeomCompositeVolume* fMod    = fmodgeom->getRefVolume();
		for(Int_t c = 0; c < fMod->getNumComponents(); c++) {

		    HGeomVolume* fVol=fMod->getComponent(c);
                    HGeomVector v = fVol->getTransform().getTransVector();

		    for(Int_t i = 0; i < 4; i++) {  // copy 4 points only
		        cellTOF[s][m][c][i] = v + *fVol->getPoint(i);
		    }

		    if(0&& s == 0){
			cout<<" mod "<<m<<" c "<<c<<" mod  (x,y,z) "<<setw(8)<<v.X()<<" "<<setw(8)<<v.Y()<<" "<<setw(8)<<v.Z()<<" "<<fVol->GetName()<<" "<<fVol->getShape()<<" "<<fVol->getNumPoints()
			    << " p0 "<<setw(8)<<cellTOF[s][m][c][0].X()<< " , "<<setw(8)<<cellTOF[s][m][c][0].Y()
			    << " p1 "<<setw(8)<<cellTOF[s][m][c][1].X()<< " , "<<setw(8)<<cellTOF[s][m][c][1].Y()
			    << " p2 "<<setw(8)<<cellTOF[s][m][c][2].X()<< " , "<<setw(8)<<cellTOF[s][m][c][2].Y()
			    << " p3 "<<setw(8)<<cellTOF[s][m][c][3].X()<< " , "<<setw(8)<<cellTOF[s][m][c][3].Y()
			    <<endl;
		    }
		}
	    }
	}
    }
    //-------------------------------------------------------------
    // get EMC cell points
    {
	for(Int_t s = 0; s < 6; s++) {
	    HModGeomPar* fmodgeom = fEmcGeometry->getModule(s);
	    HGeomCompositeVolume* fMod = fmodgeom->getRefVolume();

            Int_t n = 0;
	    for(Int_t c = 0; c < fMod->getNumComponents(); c++) {
		HGeomVolume* fVol=fMod->getComponent(c);
		if(fVol == NULL || fVol->getNumPoints() != 8) {
		    continue;
		}
		HGeomVector v = fVol->getTransform().getTransVector();
		if(0&& s == 0){
		    cout<<c<<" "<<n<<" mod  (x,y,z) "<<v.X()<<" "<<v.Y()<<" "<<v.Z()
			<< " p0 "<<fVol->getPoint(0)->getX()<< " , "<<fVol->getPoint(0)->getY()
			<< " p1 "<<fVol->getPoint(1)->getX()<< " , "<<fVol->getPoint(1)->getY()
			<< " p2 "<<fVol->getPoint(2)->getX()<< " , "<<fVol->getPoint(2)->getY()
			<< " p3 "<<fVol->getPoint(3)->getX()<< " , "<<fVol->getPoint(3)->getY()
			<<endl;
		}
		for(Int_t i = 0; i < 4; i++) {  // copy 4 points only
		    cellEMC[s][n][i] = v + *fVol->getPoint(i);
		}
                if(0&& s == 0){
		    cout<<c<<" "<<n<<" mod  (x,y,z) "<<v.X()<<" "<<v.Y()<<" "<<v.Z()
			<< " p0 "<<cellEMC[s][n][0].getX()<< " , "<<cellEMC[s][n][0].getY()
			<< " p1 "<<cellEMC[s][n][1].getX()<< " , "<<cellEMC[s][n][1].getY()
			<< " p2 "<<cellEMC[s][n][2].getX()<< " , "<<cellEMC[s][n][2].getY()
			<< " p3 "<<cellEMC[s][n][3].getX()<< " , "<<cellEMC[s][n][3].getY()
			<<endl;
		}
                n++;
	    }
	}
    }

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

    for(Int_t iSec = 0; iSec < 6; iSec++) {
	if(fRpcGeometry) {
	    HModGeomPar *module = fRpcGeometry->getModule(iSec,0);
	    if(module) {
		// Transformation module->lab.
                HGeomTransform modTrans(module->getLabTransform());
                // Combine with transformation lab->sector
                // to get the transformation from module to sector.
                modTrans.transTo(labSecTrans[iSec]);

                modSecTransRpc[iSec] = modTrans;

                // Centre point plane 0
                HGeomVector r0_mod0(0.0, 0.0, -0.5*DPlanesRpc);  // plane col 0,2,4
                // Normal vector.
                HGeomVector rz_mod(0.0, 0.0, 1.0);
                HGeomVector nRpc = modTrans.transFrom(rz_mod) - modTrans.transFrom(r0_mod0);
                normVecRpc[iSec][0].SetXYZ(nRpc.getX(), nRpc.getY(), nRpc.getZ());
                HGeomVector cRpc = modTrans.transFrom(r0_mod0);
                centerVecRpc[iSec][0].SetXYZ(cRpc.getX(), cRpc.getY(), cRpc.getZ());

                // Centre point plane 1
                HGeomVector r0_mod1(0.0, 0.0, 0.5*DPlanesRpc);   // plane col 1,3,5

		nRpc = modTrans.transFrom(rz_mod) - modTrans.transFrom(r0_mod1);
                normVecRpc[iSec][1].SetXYZ(nRpc.getX(), nRpc.getY(), nRpc.getZ());
                cRpc = modTrans.transFrom(r0_mod1);
                centerVecRpc[iSec][1].SetXYZ(cRpc.getX(), cRpc.getY(), cRpc.getZ());

                HGeomVector r0_mod2(0.0, 0.0, 0);                 // plane between cols for cluster type 2

		nRpc = modTrans.transFrom(rz_mod) - modTrans.transFrom(r0_mod2);
                normVecRpc[iSec][2].SetXYZ(nRpc.getX(), nRpc.getY(), nRpc.getZ());
                cRpc = modTrans.transFrom(r0_mod2);
                centerVecRpc[iSec][2].SetXYZ(cRpc.getX(), cRpc.getY(), cRpc.getZ());

	    }
        }

	if (fEmcGeometry) {
	    HModGeomPar *pmodgeom = fEmcGeometry->getModule(iSec);
	    HGeomTransform modTrans(pmodgeom->getLabTransform());

	    modTrans.transTo(labSecTrans[iSec]);

	    modSecTransEmc[iSec] = modTrans;

	    HGeomVector r0_mod(0.0, 0.0, 0.);
	    HGeomVector rz_mod(0.0, 0.0, 1.);
	    HGeomVector nEmc = modTrans.transFrom(rz_mod) - modTrans.transFrom(r0_mod);
	    normVecEmc[iSec].SetXYZ(nEmc.getX(), nEmc.getY(), nEmc.getZ()) ;
	    HGeomVector cEmc = modTrans.transFrom(r0_mod);
	    centerVecEmc[iSec].SetXYZ(cEmc.getX(), cEmc.getY(), cEmc.getZ()) ;
	}


	if (fTofGeometry) {
	    for(Int_t iTofMod = 0; iTofMod < 8; iTofMod++) {
		HModGeomPar *module = fTofGeometry->getModule(iSec,iTofMod);
		if(module) {
		    HGeomTransform modTrans(module->getLabTransform());
		    modTrans.transTo(labSecTrans[iSec]);

		    modSecTransTof[iSec][iTofMod] = modTrans;

                    HGeomVector r0_mod(0.0, 0.0, 0.0);
                    HGeomVector rz_mod(0.0, 0.0, 1.0);
                    HGeomVector nTof = modTrans.transFrom(rz_mod) - modTrans.transFrom(r0_mod);
                    normVecTof[iSec][iTofMod].SetXYZ(nTof.getX(), nTof.getY(), nTof.getZ());
                    HGeomVector cTof = modTrans.transFrom(r0_mod);
                    centerVecTof[iSec][iTofMod].SetXYZ(cTof.getX(), cTof.getY(), cTof.getZ());
                }
            }
        }
    }
    return kTRUE;
}


const HRpcCluster* HParticleMetaMatcher::recalcRpc(HParticleCand* cand)
{
    // returns HRpcCluster pointer to an object owned by HParticleMetaMatcher
    // which has been reconstructed from an intersection of HParticleCand outer
    // segment of Runge Kutta with the META detector plane. The original META
    // hit position can be restorded using RK dx, dy from HParticleCand.
    // Works for candidates which have cand->isRpcClstUsed() set.
    // The hit point of RK on the META plane can be retrieved by
    // calling
    // const HGeomVector&  getTrackMetaMod()
    // const HGeomVector&  getTrackMetaSec()
    // const HGeomVector&  getTrackMetaLab()
    // directly after calling this function.


    if(!cand) return 0;
    if(cand->getOuterSegInd() == -1) return 0;
    if(!cand->isRpcClstUsed()) return 0;


    if(fDebug){ cout <<"matchRpc--------------------------------"<<endl;}
    Int_t sec   = cand->getSector();
    Int_t mod0  = cand->getMetaModule(0);
    Int_t mod1  = cand->getMetaModule(1);
    Int_t cell0 = cand->getMetaCell(0);
    Int_t cell1 = cand->getMetaCell(1);

    if(mod0 == -1) return 0;

    Short_t type = 0;
    if(mod0 > -1) type = 1;
    if(mod1 > -1) type = 2;

    Float_t dx = cand->getRkMetaDx();
    Float_t dy = cand->getRkMetaDy();

    if(fDebug){
	HRpcCluster* pRpc = 0 ;

	if(fCatRpcCluster) {
	    pRpc = (HRpcCluster*) fCatRpcCluster ->getObject(cand->getRpcInd());
	}

	if(pRpc){

	    Float_t x,y,z;
	    pRpc->getXYZLab(x,y,z);
	    cout<<"rpc sec "<<pRpc->getSector()<<" col "<<pRpc->getColumn1()<<" cell "<<setw(2)<<pRpc->getCell1()<<" type "<<type
		<<" ,pos mod "<<setw(10)<<pRpc->getXMod()
		<<" "<<setw(10)<<pRpc->getYMod()
		<<" "<<setw(10)<<pRpc->getZMod()
		<<" ,pos sec "<<setw(10)<<pRpc->getXSec()
		<<" "<<setw(10)<<pRpc->getYSec()
		<<" "<<setw(10)<<pRpc->getZSec()
		<<" ,pos lab "<<setw(10)<<x
		<<" "<<setw(10)<<y
		<<" "<<setw(10)<<z
		<<" ,theta "<<setw(10)<<pRpc->getTheta()
		<<" phi "<<setw(10)<<pRpc->getPhi()
		<<" dx "<<dx
		<<" dy "<<dy
                <<" type "<<pRpc->getClusterType()
		<<endl;
	}
    }

    TVector3 metaHit;
    Int_t ind = mod0%2; // finding the correct plane
    if(mod1 > -1) ind = 2;  // both cells, plane in middle

    traceToMeta(cand,metaHit,centerVecRpc[sec][ind],normVecRpc[sec][ind]);
    HGeomVector vsec(metaHit.X(),metaHit.Y(),metaHit.Z());    // hit point mdc on META sec sys

    trackMetaSec = vsec;

    HGeomTransform& TransSec = pSpecGeomPar->getSector(sec)->getTransform();
    HGeomVector vlab  = TransSec.transFrom(vsec); // lab sys

    trackMetaLab = vlab;

    HGeomTransform& modToLab = fRpcGeometry->getModule(sec,0)->getLabTransform();
    HGeomVector vmod = modToLab.transTo(vlab);  // mod sys

    trackMetaMod = vmod;

    vmod.setX(vmod.X()+dx);   // reconstruct the meta hit
    vmod.setY(vmod.Y()+dy);   // reconstruct the meta hit

    vlab = modToLab.transFrom(vmod); // lab sys
    vsec = TransSec.transTo(vlab);   // sec sys

    Double_t theta = TMath::RadToDeg() * TMath::ATan2(TMath::Sqrt(vlab.X()*vlab.X()+vlab.Y()*vlab.Y()),vlab.Z());
    Double_t phi   = TMath::RadToDeg() * TMath::ATan2(vlab.Y(),vlab.X());
    if (phi < 0.) phi += 360.;

    if(fDebug){
	cout<<"mdc sec "<<sec<<" col "<<mod0<<" cell "<<setw(2)<<cell0<<" type "<<type
	    <<" ,pos mod "<<setw(10)<<vmod.X()
	    <<" "<<setw(10)<<vmod.Y()
	    <<" "<<setw(10)<<vmod.Z()
	    <<" ,pos sec "<<setw(10)<<vsec.X()
	    <<" "<<setw(10)<<vsec.Y()
	    <<" "<<setw(10)<<vsec.Z()
	    <<" ,pos lab "<<setw(10)<<vlab.X()
	    <<" "<<setw(10)<<vlab.Y()
	    <<" "<<setw(10)<<vlab.Z()
	    <<" ,theta "<<setw(10)<<theta
	    <<" phi "<<setw(10)<<phi
            <<" type "<<type
	    <<endl;
    }
    rpccluster.setDetID1(sec,mod0,cell0);
    rpccluster.setDetID2(sec,mod1,cell1);
    rpccluster.setTheta(theta);
    rpccluster.setPhi(phi);
    rpccluster.setXYZLab(vlab.X(),vlab.Y(),vlab.Z());
    rpccluster.setRSEC(vsec.X(),vsec.Y(),vsec.Z());
    rpccluster.setCluster(cand->getTof(),1.,vmod.X(),vmod.Y(),vmod.Z());
    rpccluster.setClusterType(type);

    return &rpccluster;

}

const HTofCluster* HParticleMetaMatcher::recalcTof(HParticleCand* cand)
{
    // returns HTofCluster pointer to an object owned by HParticleMetaMatcher
    // which has been reconstructed from an intersection of HParticleCand outer
    // segment of Runge Kutta with the META detector plane. The original META
    // hit position can be restorded using RK dx, dy from HParticleCand.
    // Works for candidates which have cand->isTofClstUsed() or cand->isTofHitUsed() set.
    // The hit point of RK on the META plane can be retrieved by
    // calling
    // const HGeomVector&  getTrackMetaMod()
    // const HGeomVector&  getTrackMetaSec()
    // const HGeomVector&  getTrackMetaLab()
    // directly after calling this function.


    if(!cand) return 0;
    if(cand->getOuterSegInd() == -1) return 0;
    if(! (cand->isTofClstUsed() || cand->isTofHitUsed()) ) return 0;


    if(fDebug){ cout <<"matchTof--------------------------------"<<endl;}
    Int_t sec   = cand->getSector();
    Int_t mod0  = cand->getMetaModule(0);
    Int_t mod1  = cand->getMetaModule(1);
    Int_t cell0 = cand->getMetaCell(0);

    if(mod0 == -1) return 0;

    Short_t type = 0;
    if(mod0 > -1) type = 1;
    if(mod1 > -1) type = 2;

    Float_t dx = cand->getRkMetaDx();
    Float_t dy = cand->getRkMetaDy();

    if(fDebug){
	HTofCluster* pTof = 0 ;

	if(cand->isTofClstUsed() && fCatTofCluster) {
	    pTof = (HTofCluster*) fCatTofCluster ->getObject(cand->getTofClstInd());
	}
	if(cand->isTofHitUsed() && fCatTofHit) {
	    pTof = (HTofCluster*) fCatTofHit ->getObject(cand->getTofHitInd());
	}

	if(pTof){

	    Float_t x,y,z;
	    Float_t ph,th;
            pTof->getTheta(th);
            pTof->getPhi(ph);
	    pTof->getXYZLab(x,y,z);
	    cout<<"tof sec "<<(Int_t)pTof->getSector()<<" mod "<<(Int_t)pTof->getModule()<<" cell "<<setw(2)<<(Int_t)pTof->getCell()<<" type "<<type
		<<" ,pos mod "<<setw(10)<<pTof->getXpos()
		<<" ,pos lab "<<setw(10)<<x
		<<" "<<setw(10)<<y
		<<" "<<setw(10)<<z
		<<" ,theta "<<setw(10)<<th
		<<" phi "<<setw(10)<<ph
		<<" dx "<<dx
		<<" dy "<<dy
		<<endl;
	}
    }

    TVector3 metaHit;

    traceToMeta(cand,metaHit,centerVecTof[sec][mod0],normVecTof[sec][mod0]);
    HGeomVector vsec(metaHit.X(),metaHit.Y(),metaHit.Z());    // hit point mdc on META sec sys

    trackMetaSec = vsec;

    HGeomTransform& TransSec = pSpecGeomPar->getSector(sec)->getTransform();
    HGeomVector vlab  = TransSec.transFrom(vsec); // lab sys

    trackMetaLab = vlab;

    HGeomTransform& modToLab = fTofGeometry->getModule(sec,mod0)->getLabTransform();
    HGeomVector vmod = modToLab.transTo(vlab);  // mod sys

    trackMetaMod = vmod;

    vmod.setX(vmod.X()+dx);   // reconstruct the meta hit
    vmod.setY(vmod.Y()+dy);   // reconstruct the meta hit

    vlab = modToLab.transFrom(vmod); // lab sys
    vsec = TransSec.transTo(vlab);   // sec sys

    Double_t theta = TMath::RadToDeg() * TMath::ATan2(TMath::Sqrt(vlab.X()*vlab.X()+vlab.Y()*vlab.Y()),vlab.Z());
    Double_t phi   = TMath::RadToDeg() * TMath::ATan2(vlab.Y(),vlab.X());
    if (phi < 0.) phi += 360.;

    if(fDebug){
	cout<<"mdc sec "<<sec<<" mod "<<mod0<<" cell "<<setw(2)<<cell0<<" type "<<type
	    <<" ,pos mod "<<setw(10)<<vmod.X()
	    <<" ,pos lab "<<setw(10)<<vlab.X()
	    <<" "<<setw(10)<<vlab.Y()
	    <<" "<<setw(10)<<vlab.Z()
	    <<" ,theta "<<setw(10)<<theta
	    <<" phi "<<setw(10)<<phi
	    <<endl;
    }
    tofcluster.setSector(sec);
    tofcluster.setModule(mod0);
    tofcluster.setCell(cell0);
    tofcluster.setTheta(theta);
    tofcluster.setPhi(phi);
    tofcluster.setXYZLab(vlab.X(),vlab.Y(),vlab.Z());
    tofcluster.setXpos(vmod.X());
    tofcluster.setTof(cand->getTof());
    tofcluster.setEdep(cand->getTofdEdx());
    tofcluster.setClusterSize(type);

    return &tofcluster;

}

const HEmcCluster* HParticleMetaMatcher::recalcEmc(HParticleCand* cand)
{
    // returns HEmcCluster pointer to an object owned by HParticleMetaMatcher
    // which has been reconstructed from an intersection of HParticleCand outer
    // segment of Runge Kutta with the META detector plane. The original META
    // hit position can be restorded using RK dx dy from HParticleCand.
    // Works for candidates which have cand->getEmcInd()!=-1 set.
    // The hit point of RK on the META plane can be retrieved by
    // calling
    // const HGeomVector&  getTrackMetaMod()
    // const HGeomVector&  getTrackMetaSec()
    // const HGeomVector&  getTrackMetaLab()
    // directly after calling this function.
    //


    if(!cand) return 0;
    if(cand->getOuterSegInd() == -1) return 0;
    if(cand->getEmcInd() == -1) return 0;


    if(fDebug){ cout <<"matchEmc--------------------------------"<<endl;}
    Int_t sec   = cand->getSector();

    Short_t type = 0;

    Float_t dx = cand->getRkMetaDxEmc();
    Float_t dy = cand->getRkMetaDyEmc();

    if(fDebug){
	HEmcCluster* pEmc = 0 ;

	if(cand->getEmcInd() > -1 && fCatEmcCluster) {
	    pEmc = (HEmcCluster*) fCatEmcCluster ->getObject(cand->getEmcInd());
	}

	if(pEmc){

	    Float_t x,y,z;
	    pEmc->getXYZLab(x,y,z);
	    cout<<"emc sec "<<(Int_t)pEmc->getSector()<<" cell "<<setw(3)<<(Int_t)pEmc->getCell()<<" type "<<(Int_t)pEmc->getNCells()
		<<" ,pos mod "<<setw(10)<<pEmc->getXMod()
		<<" "<<setw(10)<<pEmc->getYMod()
		<<" ,pos lab "<<setw(10)<<x
		<<" "<<setw(10)<<y
		<<" "<<setw(10)<<z
		<<" ,theta "<<setw(10)<<pEmc->getTheta()
		<<" phi "<<setw(10)<<pEmc->getPhi()
		<<" dx "<<dx
		<<" dy "<<dy
		<<endl;
	}
    }

    TVector3 metaHit;

    traceToMeta(cand,metaHit,centerVecEmc[sec],normVecEmc[sec]);
    HGeomVector vsec(metaHit.X(),metaHit.Y(),metaHit.Z());    // hit point mdc on META sec sys

    trackMetaSec = vsec;

    HGeomTransform& TransSec = pSpecGeomPar->getSector(sec)->getTransform();
    HGeomVector vlab  = TransSec.transFrom(vsec); // lab sys

    trackMetaLab = vlab;

    HGeomTransform& modToLab = fEmcGeometry->getModule(sec,0)->getLabTransform();
    HGeomVector vmod = modToLab.transTo(vlab);  // mod sys

    trackMetaMod = vmod;

    vmod.setX(vmod.X()+dx);   // reconstruct the meta hit
    vmod.setY(vmod.Y()+dy);   // reconstruct the meta hit

    vlab = modToLab.transFrom(vmod); // lab sys
    vsec = TransSec.transTo(vlab);   // sec sys

    Double_t theta = TMath::RadToDeg() * TMath::ATan2(TMath::Sqrt(vlab.X()*vlab.X()+vlab.Y()*vlab.Y()),vlab.Z());
    Double_t phi   = TMath::RadToDeg() * TMath::ATan2(vlab.Y(),vlab.X());
    if (phi < 0.) phi += 360.;

    if(fDebug){
	cout<<"mdc sec "<<sec<<" cell "<<setw(3)<<0<<" type "<<type
	    <<" ,pos mod "<<setw(10)<<vmod.X()
	    <<" "<<setw(10)<<vmod.Y()
	    <<" ,pos lab "<<setw(10)<<vlab.X()
	    <<" "<<setw(10)<<vlab.Y()
	    <<" "<<setw(10)<<vlab.Z()
	    <<" ,theta "<<setw(10)<<theta
	    <<" phi "<<setw(10)<<phi
	    <<endl;
    }
    emccluster.setSector(sec);
    emccluster.setTheta(theta);
    emccluster.setPhi(phi);
    emccluster.setXYZLab(vlab.X(),vlab.Y(),vlab.Z());
    emccluster.setXYMod(vmod.X(),vmod.Y());
    emccluster.setTime(cand->getEmcTime());
    emccluster.setEnergy(cand->getEmcEnergy());

    return &emccluster;

}

Bool_t HParticleMetaMatcher::predictRpcCell(HParticleCand* cand,HGeomVector& hit0,HGeomVector& hit1,Int_t& s,Int_t& col0,Int_t& cell0,Int_t& col1,Int_t& cell1)
{
    // Reconstructs an intersection of HParticleCand outer
    // segment of Runge Kutta with the META detector plane.
    // 2 hits (hit0,hit2) on the Rpc planes of column (0,2,4)
    // and (1,3,5). Possible hit RPC cells are returned
    // by coordinates sector, (col0,cell0) (col1,cell1).
    // colX and cellX are -1 if no cell has been hit on this plane.
    // Works with all candidates which provide outer segments.


    if(!cand) return 0;
    if(cand->getOuterSegInd() == -1) return 0;

    if(fDebug){ cout <<"predictRpcCell--------------------------------"<<endl;}
    Int_t sec   = cand->getSector();


    if(fDebug && cand->getRpcInd() != -1){
	Int_t mod0  = cand->getMetaModule(0);
	Int_t mod1  = cand->getMetaModule(1);
	Int_t c0    = cand->getMetaCell(0);
	Int_t c1    = cand->getMetaCell(1);

	if(mod0 == -1) return 0;

	Short_t type = 0;
	if(mod0 > -1) type = 1;
	if(mod1 > -1) type = 2;


	HRpcCluster* pRpc = 0 ;

	if(fCatRpcCluster) {
	    pRpc = (HRpcCluster*) fCatRpcCluster ->getObject(cand->getRpcInd());
	}

	if(pRpc){

	    cout<<"rpc sec "<<pRpc->getSector()
		<<" col0 "<<mod0<<" cell0 "<<setw(2)<<c0
		<<" col1 "<<mod1<<" cell1 "<<setw(2)<<c1
		<<" type "<<type
		<<" ,pos mod "<<setw(10)<<pRpc->getXMod()
		<<" "<<setw(10)<<pRpc->getYMod()
		<<" "<<setw(10)<<pRpc->getZMod()
		<<endl;
	}
    }

    TVector3 metaHit;
    HGeomVector vmod[2];

    HGeomTransform& TransSec = pSpecGeomPar->getSector(sec)->getTransform();
    HGeomTransform& modToLab = fRpcGeometry->getModule(sec,0)->getLabTransform();

    for(Int_t i = 0; i < 2; i++){
	traceToMeta(cand,metaHit,centerVecRpc[sec][i],normVecRpc[sec][i]);
	HGeomVector vsec(metaHit.X(),metaHit.Y(),metaHit.Z());    // hit point mdc on META sec sys
	HGeomVector vlab  = TransSec.transFrom(vsec); // lab sys
	vmod[i] = modToLab.transTo(vlab);  // mod sys
    }

    hit0 = vmod[0];
    hit1 = vmod[1];
    s    = sec;
    col0 = col1 = -1;
    cell0= cell1= -1;

    Int_t ct = 0;
    for(Int_t col = 0; col < 6; col++){
	for(Int_t c = 0; c < RPCMAXCELL; c++){
	    HGeomVector v = vmod[col%2];
	    if(!isInRpcCell(v,sec,col,c)) continue;

	    if     (ct == 0) { col0 = col; cell0 = c;}
	    else if(ct == 1) { col1 = col; cell1 = c;}
	    else  {
		cout <<"predictRpcCell() : more than 2 Rpc cells found!"<<endl;
	    }
	    ct++;

	}
    }

    return ct > 0 ? kTRUE : kFALSE;

}

Bool_t HParticleMetaMatcher::predictTofCell(HParticleCand* cand,HGeomVector& hit0,HGeomVector& hit1,Int_t& s,Int_t& mod0,Int_t& cell0,Int_t& mod1,Int_t& cell1)
{
    // Reconstructs an intersection of HParticleCand outer
    // segment of Runge Kutta with the META detector plane.
    // 2 hits (hit0,hit2) on the TOF module planes cand be
    // returned. Possible hit TOF cells are returned
    // by coordinates sector, (mod0,cell0) (mod1,cell1).
    // colX and cellX are -1 if no cell has been hit on this plane.
    // The hit points will be 0,0,0 in this case.
    // Works with all candidates which provide outer segments.

    if(!cand) return 0;
    if(cand->getOuterSegInd() == -1) return 0;

    if(fDebug){ cout <<"predictTofCell--------------------------------"<<endl;}
    Int_t sec   = cand->getSector();



    if(fDebug){
	HTofCluster* pTof    = 0 ;

	if(cand->getTofClstInd() != -1 && fCatTofCluster) {
	    pTof = (HTofCluster*) fCatTofCluster ->getObject(cand->getTofClstInd());
	}
	if(cand->getTofHitInd() != -1 && fCatTofHit) {
	    pTof = (HTofCluster*) fCatTofHit ->getObject(cand->getTofHitInd());
	}

	if(pTof){
	    Int_t mod0  = cand->getMetaModule(0);
	    Int_t mod1  = cand->getMetaModule(1);
	    Int_t c0    = cand->getMetaCell(0);
	    Int_t c1    = cand->getMetaCell(1);

	    Short_t type = 0;
	    if(mod0 > -1) type = 1;
	    if(mod1 > -1) type = 2;

	    cout<<"tof sec "<<(Int_t)pTof->getSector()
		<<" mod0 "<<mod0<<" cell0 "<<setw(2)<<c0
		<<" mod1 "<<mod1<<" cell1 "<<setw(2)<<c1
		<<" type "<<type
		<<" ,pos mod "<<setw(10)<<pTof->getXpos()
		<<endl;
	}
    }


    TVector3 metaHit;
    HGeomVector vmod[8];

    HGeomTransform& TransSec = pSpecGeomPar->getSector(sec)->getTransform();

    for(Int_t i = 0; i < 8; i++){ // modules
	HGeomTransform& modToLab=fTofGeometry->getModule(sec,i)->getLabTransform();
	traceToMeta(cand,metaHit,centerVecTof[sec][i],normVecTof[sec][i]);
	HGeomVector vsec(metaHit.X(),metaHit.Y(),metaHit.Z());    // hit point mdc on META sec sys
	HGeomVector vlab  = TransSec.transFrom(vsec); // lab sys
	vmod[i] = modToLab.transTo(vlab);  // mod sys
    }

    s    = sec;
    mod0 = mod1 = -1;
    cell0 = cell1= -1;

    hit0.setXYZ(0,0,0);
    hit1.setXYZ(0,0,0);


    Int_t ct = 0;
    for(Int_t m = 0; m < 8; m++){
	for(Int_t c = 0; c < 8; c++){
	    if(!isInTofCell(vmod[m],sec,m,c)) continue;

	    if     (ct == 0) { mod0 = m; cell0 = c; hit0 = vmod[m];}
	    else if(ct == 1) { mod1 = m; cell1 = c; hit1 = vmod[m];}
	    else  {
		cout <<"predictTofCell() : more than 2 Tof rods found!"<<endl;
	    }
	    ct++;

	}
    }

    return ct > 0 ? kTRUE : kFALSE;

}

Bool_t HParticleMetaMatcher::predictEmcCell(HParticleCand* cand,HGeomVector& hit,Int_t& s,Int_t& pos,Int_t& cell)
{
    // Reconstructs an intersection of HParticleCand outer
    // segment of Runge Kutta with the META detector plane.
    // 1 hit on the EMC plane can be returned.
    // The possible hit cell returned  by coordinates sector, pos (0-162) , cell (0,254).
    // pos and cell are -1 if no cell has been hit on this plane.
    // Works with all candidates which provide outer segments.

    if(!cand) return 0;
    if(cand->getOuterSegInd() == -1) return 0;

    if(fDebug){ cout <<"predictEmcCell--------------------------------"<<endl;}
    Int_t sec   = cand->getSector();


    if(fDebug && cand->getEmcInd() != -1){

	HEmcCluster* pEmc = 0 ;

	if(fCatEmcCluster) {
	    pEmc = (HEmcCluster*) fCatEmcCluster ->getObject(cand->getEmcInd());
	}

	if(pEmc){

	    cout<<"emc sec "<<(Int_t)pEmc->getSector()<<" cell "<<setw(3)<<(Int_t)pEmc->getCell()<<" pos "<<setw(3)<<HEmcDetector::getPositionFromCell(pEmc->getCell())<<" type "<<(Int_t)pEmc->getNCells()
		<<" ,pos mod "<<setw(10)<<pEmc->getXMod()
		<<" "<<setw(10)<<pEmc->getYMod()
                <<" radius "<<cand->getMetaMatchRadiusEmc()
		<<endl;
	}
    }

    TVector3 metaHit;
    HGeomVector vmod;

    HGeomTransform& TransSec = pSpecGeomPar->getSector(sec)->getTransform();
    HGeomTransform& modToLab = fRpcGeometry->getModule(sec,0)->getLabTransform();

    traceToMeta(cand,metaHit,centerVecEmc[sec],normVecEmc[sec]);
    HGeomVector vsec(metaHit.X(),metaHit.Y(),metaHit.Z());    // hit point mdc on META sec sys
    HGeomVector vlab  = TransSec.transFrom(vsec); // lab sys



    vmod = modToLab.transTo(vlab);  // mod sys

    hit  = vmod;
    s    = sec;
    pos  = -1;
    cell = -1;

    for(Int_t c = 0; c < EMCMAXCELL; c++){
	if(!isInEmcCell(vmod,sec,c)) continue;
	pos = c;
        cell = HEmcDetector::getCellFromPosition(pos);
	break;
    }
    return pos > -1 ? kTRUE : kFALSE;

}

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